TfidfVectorizer的实现是通过CountVectorizer和TfidfTransformer共同实现的。
其中TfidfTransformer实现了每个词的tfidf值的计算。
下图是官方文档中,对tfidf值计算的说明:
可以看出默认的计算方法是
i d f ( d , t ) = log [ ( 1 + n ) 1 + d f ( d , t ) ] + 1 idf(d,t) = \log\bigg[ \frac{(1+n)}{1+df(d,t)}\bigg] +1 idf(d,t)=log[1+df(d,t)(1+n)]+1
其中:
如果公式最后没有 + 1 +1 +1的话,如果某个词在所有文档中都出现,且 log 1 = 0 \log1 = 0 log1=0改词的逆文档频率将为0,从而导致改词被忽略。