【发布时间】:2019-09-26 21:11:41
【问题描述】:
为了得到一个tfidf maxtrix,我通过sklearn.feature_extraction.text.TfidfVectorizer训练了50000个文档,
from sklearn.feature_extraction.text import TfidfVectorizer
vec = TfidfVectorizer(stop_words=stop_words_file_list,smooth_idf=True)
crops_vect = vec.fit_transform(crops).toarray()
我知道crops_vect行是每个文档,列是从整个语料库中提取的单词, 如crops_vect[document_id1]表示由语料库训练的tdidf构成的向量。 我的问题是, vec.transform(['america strong'].toarray() 是什么意思:
np.where(vec.transform(['america strong']).toarray())
>>>(array([0, 0]), array([112609, 195997]))
[i for i in vec.transform(['america strong']).toarray()[0] if i != 0]
>>>[0.675671442580281, 0.7372028904456914]
[i for i in vec.transform(['strong']).toarray()[0] if i != 0]
>>>[1]
我查看了语料库中“强”这个词的向量
np.array([i for i in crops_vect.T[195997].toarray()[0] ])
>>>array([0., 0., 0., ..., 0., 0., 0.])
np.where(np.array([i for i in crops_vect.T[195997].toarray()[0] ]))
>>>array([ 20, 239, 250, 272, 303, 786, 797, 836, 924,
1202, 1218, 1613, 1645, 1651, 1662, 1670, 1673, 1688,
1691, 1697, 1721, 1728, 1766, 1780, 1849, 1935, 1975,
1988, 1999, 2017, 2018, 2199, 2344, 2354, 2721, 2752,
2775, 2785, 2788, 2809, 2818, 2826, 2830, 2841, 2844,
.....]
我的问题是: 1)我知道 vec.transform(['strong']).toarray() != crop_vect.T[195997].toarray(), 什么是 vec.transform(['strong']).toarray()
2) vec.transform(['word1','word2']) 代表什么, 是不是相当于在之前训练好的tfidf矩阵中加入一个新的文档['word1','word2'],然后计算出新文档的新tdidf矩阵?
3)vec.transform(['word1','word2']) ,它内部是怎么计算的
谢谢
【问题讨论】:
-
我想我已经解决了。
标签: python scikit-learn tfidfvectorizer