【问题标题】:How is TF calculated in SklearnSklearn中的TF是如何计算的
【发布时间】:2016-03-08 19:54:45
【问题描述】:

我一直在尝试使用 sklearn 的 Tfidfvectorizer。 我只关心TF,不关心idf,所以我的设置有use_idf = FALSE 完整的设置是:

vectorizer = TfidfVectorizer(max_df=0.5, max_features= n_features,
                         ngram_range=(1,3), use_idf=False)

我一直在尝试复制.fit_transform 的输出,但到目前为止还没有成功,希望有人可以为我解释计算结果。

我的玩具例子是:

document = ["one two three one four five",
            "two six eight ten two"]

from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
n_features = 5
vectorizer = TfidfVectorizer(max_df=0.5, max_features= n_features,
                             ngram_range=(1,3), use_idf=False)

X = vectorizer.fit_transform(document)

count = CountVectorizer(max_df=0.5, max_features= n_features,
                             ngram_range=(1,3))
countMat = count.fit_transform(document)

我假设来自 Count Vectorizer 的计数将与 Tfidf Vectorizer 中使用的计数相同。所以我试图改变 countMat 对象以匹配 X。

【问题讨论】:

    标签: python-2.7 nlp scikit-learn


    【解决方案1】:

    我错过了文档中的一行

    每一行都被归一化为具有单位欧几里得范数

    所以回答我自己的问题 - 答案是:

    for i in xrange(countMat.toarray().__len__()):
        row = countMat.toarray()[i]
        row / np.sqrt(np.sum(row**2)) 
    

    虽然我确信有一种更优雅的方式来对结果进行编码。

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 1970-01-01
      • 2018-03-16
      • 2017-08-30
      • 2020-02-11
      • 2016-09-03
      • 2017-04-21
      • 2015-04-17
      • 2019-02-14
      相关资源
      最近更新 更多