Cálculo da distância de Kullback-Leibler (KL) entre documentos de texto usando numpy

Meu objetivo é calcular a distância KL entre os seguintes documentos de texto:

1)The boy is having a lad relationship
2)The boy is having a boy relationship
3)It is a lovely day in NY

Primeiramente, eu vectorizei os documentos para aplicar facilmente numpy

1)[1,1,1,1,1,1,1]
2)[1,2,1,1,1,2,1]
3)[1,1,1,1,1,1,1]

Eu então apliquei o seguinte código para calcular a distância KL entre os textos:

import numpy as np
import math
from math import log

v=[[1,1,1,1,1,1,1],[1,2,1,1,1,2,1],[1,1,1,1,1,1,1]]
c=v[0]
def kl(p, q):
    p = np.asarray(p, dtype=np.float)
    q = np.asarray(q, dtype=np.float)
    return np.sum(np.where(p != 0,(p-q) * np.log10(p / q), 0))
for x in v:
    KL=kl(x,c)
    print KL

Aqui está o resultado do código acima:[0.0, 0.602059991328, 0.0]. Os textos 1 e 3 são completamente diferentes, mas a distância entre eles é 0, enquanto os textos 1 e 2, que são altamente relacionados, têm uma distância de0.602059991328. Isso não é exato.

Alguém tem uma idéia do que eu não estou fazendo no que diz respeito à KL? Muito obrigado por suas sugestões.

questionAnswers(3)

yourAnswerToTheQuestion