【发布时间】:2016-09-24 04:57:08
【问题描述】:
我正在使用scikit-learn 来查找tf-idf 值。
我有一组documents 喜欢:
D1 = "The sky is blue."
D2 = "The sun is bright."
D3 = "The sun in the sky is bright."
我想创建一个这样的矩阵:
Docs blue bright sky sun
D1 tf-idf 0.0000000 tf-idf 0.0000000
D2 0.0000000 tf-idf 0.0000000 tf-idf
D3 0.0000000 tf-idf tf-idf tf-idf
所以,我在Python 中的代码是:
import nltk
import string
from sklearn.feature_extraction.text import TfidfVectorizer
from nltk.corpus import stopwords
train_set = ["sky is blue", "sun is bright", "sun in the sky is bright"]
stop_words = stopwords.words('english')
transformer = TfidfVectorizer(stop_words=stop_words)
t1 = transformer.fit_transform(train_set).todense()
print t1
我得到的结果矩阵是:
[[ 0.79596054 0. 0.60534851 0. ]
[ 0. 0.4472136 0. 0.89442719]
[ 0. 0.57735027 0.57735027 0.57735027]]
如果我手动计算,那么矩阵应该是:
Docs blue bright sky sun
D1 0.2385 0.0000000 0.0880 0.0000000
D2 0.0000000 0.0880 0.0000000 0.0880
D3 0.0000000 0.058 0.058 0.058
我的计算就像说blue 为tf = 1/2 = 0.5 和idf 为log(3/1) = 0.477121255。因此tf-idf = tf*idf = 0.5*0.477 = 0.2385。这样,我正在计算其他 tf-idf 值。现在,我想知道,为什么我在手算矩阵和 Python 矩阵中得到不同的结果?哪个给出正确的结果?我的手算有问题还是我的 Python 代码有问题?
【问题讨论】:
标签: python matrix machine-learning tf-idf