如何在Sklearn中计算TF

时间:2015-12-04 00:34:15

标签: python-2.7 nlp scikit-learn

我一直在尝试使用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.

1 个答案:

答案 0 :(得分:0)

我错过了文档中的一行

  

每一行都被标准化为具有单位欧几里德范数

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

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

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

相关问题