对于教程,我想手动实现 TfidfVectorizer 正在做什么,只是为了显示后台发生的事情。在这个 Stack Overflow article 中,我发现了 TfidfVectorizer 是如何工作的。有了这个,以天真的方式实现它就很简单了,并且矢量化器的正确参数设置,输出确实是一样的。都好。

但是,现在我有点困惑: TfidfVectorizer 使用 tf 计算词频 CountVevtorizer 。这意味着 tf 只是一个整数,表示一个术语在文档中出现的次数。但通常文档 tf(t,d) 中词项 t 的词频 d 定义为:

tf(t,d) = (#occurrences of t in d) / (#terms in d)

所以词频是一个介于 0 和 1 之间的值。

这如何配合?为什么根据定义使用 TfidfVectorizer 术语计数而不是(标准化)频率。我认为这没什么大不了的,但我会理解它。

最佳答案

通常, TfidfVectorizer 用作下一个构造:

from sklearn.feature_extraction.text import TfidfVectorizer
features = ['1', '2', '3', '4', '5']
data = ['string1', 'string2', 'string3', 'string4', 'string5']
tfidfve = TfidfVectorizer()
tfidfve.fit_transform(data, features)

关于python - TfidfVectorizer 与 tf-idf 的定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48561247/

10-12 22:52