Что такое `idf_` из sklearns TfidfVectorizer? - PullRequest
1 голос
/ 08 октября 2019

Я думал, что .idf_ - это обратная частота документов , то есть это будет

idf_(t) = log( N/ D(t)) with N=Documents in the corpus and D(t)=number of documents which have the term t

Так что для двух документов

["foo bar bar ist cool and so weiter "," Ich habe hier nichts so gesagt "]

Я бы для всех исключил значение 0.69 = math.log( 2 / 1), а для одного значение 0 = math.log(2 / 2).

Но Sklearn, похоже, использует его по-другому, потому что я получаю 1.406 и 1.0.

MVCE

from sklearn.feature_extraction.text import TfidfVectorizer
transformer = TfidfVectorizer()
transformer.fit(["foo bar bar ist cool und so weiter", "Ich habe hier nichts so gesagt"])
print(transformer.vocabulary_)
print(transformer.idf_)

Это дает

{'foo': 2, 'bar': 0, 'ist': 7, 'cool': 1, 'und': 10, 'so': 9, 'weiter': 11, 'ich': 6, 'habe': 4, 'hier': 5, 'nichts': 8, 'gesagt': 3}

[1.40546511 1.40546511 1.40546511 1.40546511 1.40546511 1.40546511
 1.40546511 1.40546511 1.40546511 1.         1.40546511 1.40546511]
...