Question

(let ((g (* 2 (or (gethash word good) 0)))
      (b (or (gethash word bad) 0)))
   (unless (< (+ g b) 5)
     (max .01
          (min .99 (float (/ (min 1 (/ b nbad))
                             (+ (min 1 (/ g ngood))   
                                (min 1 (/ b nbad)))))))))
Était-ce utile?

La solution

Quel est le problème? Il est l'anglais presque simple:

Soit g à la valeur du word dans la Hashtable good (ou 0 sinon inexistante là-bas) fois 2

(let ((g (* 2 (or (gethash word good) 0)))

et b la valeur de word dans la Hashtable bad (ou 0 sinon inexistante là-bas).

      (b (or (gethash word bad) 0)))

Avec cela à l'esprit, et sous la présomption que la somme des g et b est pas inférieur à 5

   (unless (< (+ g b) 5)

retourner le maximum soit de 0,01 ou

     (max .01

soit le minimum de 0,99 ou

          (min .99 

b / nbad divisé par la somme des b / nbad et g / ngood (comme une valeur en virgule flottante, et ces quotients individuels doit être au plus 1).

               (float (/ (min 1 (/ b nbad))
                         (+ (min 1 (/ g ngood))   
                            (min 1 (/ b nbad)))))))))

Autres conseils

On dirait qu'il essaie de calculer un score en fonction de la présence de word dans les tables de hachage good et bad.

Si le mot n'existe pas dans une table de hachage, il est donné une valeur de 0, sinon si elle existe dans la bonne table, il est pondéré par 2 (doublé).

Si le score est inférieur à 5 calculer le score (partie ci-dessous unless) comme suit:

score = min(1, b/nbad) / (min(1, g/ngood) + min(1, b/nbad))
max(0.01, min(0.99, score))

Je ne sais pas ce que ngood et nbad sont, mais alors n me indique qu'ils sont probablement compte. Il semble aussi que le code est conserve le score calculé ci-dessous 5. Il ressemble également dans le calcul du score le dénominateur sera maintenu à un maximum de 2 garder la limite inférieure du score à 0,5.

D'après les balises que vous avez utilisé, je suppose (et il est juste une supposition) qu'il tente de calculer une pondération pour mot basé sur une sorte de comptage de fréquence (?) Du mot en bon contre mauvais email.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top