Pergunta

(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)))))))))
Foi útil?

Solução

Qual é o problema? É quase inglês quase claro:

Deixar g ser o valor de word na hashtable good (ou 0 se não existir lá) vezes 2

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

e b o valor de word na hashtable bad (ou 0 se não existir lá).

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

Com isso em mente, e sob a presunção de que a soma de g e b não é menor que 5

   (unless (< (+ g b) 5)

Retorne o máximo de 0,01 ou

     (max .01

o mínimo de 0,99 ou

          (min .99 

b/nbad dividido pela soma de b/nbad e g/ngood (como valor de flutuação, e esses quocientes individuais devem ser no máximo 1).

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

Outras dicas

Parece que está tentando calcular uma pontuação com base na presença de word nas mesas de hash good e bad.

Se a palavra não existir em uma tabela de hash, ela receberá um valor 0, caso contrário, se existir na tabela boa, será ponderada por 2 (dobrado).

Se a pontuação for menor que 5, calcule a pontuação (parte abaixo unless) do seguinte modo:

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

Não tenho certeza do que ngood e nbad são mas n indica para mim que provavelmente são contagens. Também parece que o código é mantém a pontuação calculada abaixo de 5. Também parece no cálculo da pontuação que o denominador será mantido no máximo 2, mantenha o limite inferior da pontuação para 0,5.

Com base nas tags que você usou, eu acho (e é apenas um palpite) que está tentando calcular uma ponderação para o Word com base em algum tipo de frequência (?) Contagem da palavra em e -mail bom versus ruim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top