scikit学习TfidfVectorizer的含义



我读到了关于scikit学习的TfidfVectorizer实现,我不明白该方法的输出是什么,例如:

new_docs = ['He watches basketball and baseball', 'Julie likes to play basketball', 'Jane loves to play baseball']
new_term_freq_matrix = tfidf_vectorizer.transform(new_docs)
print tfidf_vectorizer.vocabulary_
print new_term_freq_matrix.todense()

输出:

{u'me': 8, u'basketball': 1, u'julie': 4, u'baseball': 0, u'likes': 5, u'loves': 7, u'jane': 3, u'linda': 6, u'more': 9, u'than': 10, u'he': 2}
[[ 0.57735027  0.57735027  0.57735027  0.          0.          0.          0.
   0.          0.          0.          0.        ]
 [ 0.          0.68091856  0.          0.          0.51785612  0.51785612
   0.          0.          0.          0.          0.        ]
 [ 0.62276601  0.          0.          0.62276601  0.          0.          0.
   0.4736296   0.          0.          0.        ]]

什么是?(例如:u'me':8):

{u'me': 8, u'basketball': 1, u'julie': 4, u'baseball': 0, u'likes': 5, u'loves': 7, u'jane': 3, u'linda': 6, u'more': 9, u'than': 10, u'he': 2}

这是矩阵还是矢量?,我不明白是什么告诉我输出:

[[ 0.57735027  0.57735027  0.57735027  0.          0.          0.          0.
   0.          0.          0.          0.        ]
 [ 0.          0.68091856  0.          0.          0.51785612  0.51785612
   0.          0.          0.          0.          0.        ]
 [ 0.62276601  0.          0.          0.62276601  0.          0.          0.
   0.4736296   0.          0.          0.        ]]

有人能更详细地向我解释这些输出吗?

谢谢!

TfidfVectorizer-将文本转换为可以用作估计器输入的特征向量。

vocabulary_是一个字典,它将矩阵中的每个标记(单词)转换为特征索引,每个唯一的标记都得到一个特征索引。

什么是?(例如:u'me':8)

它告诉您,令牌"me"在输出矩阵中表示为特征编号8。

这是一个矩阵还是一个向量?

每个句子都是一个向量,你输入的句子是由3个向量组成的矩阵。在每个向量中,数字(权重)表示特征tf idf得分。例如:"julie":4-->告诉你,在每一句"julie"中,你都会有非零(tf-idf)权重。正如你在2'nd矢量中看到的:

[0。0.68091856 0。-0.51785612 0.517856120。0。0.]

第5个元素的得分为0.51785612,这是"朱莉"的tf idf得分。有关Tf-Idf评分的更多信息,请阅读此处:http://en.wikipedia.org/wiki/Tf%E2%80%93idf

因此,tf idf从整个文档集创建了一组自己的词汇表。这可以在输出的第一行看到。(为了更好地理解,我对其进行了分类)

{u'baseball': 0, u'basketball': 1, u'he': 2, u'jane': 3, u'julie': 4, u'likes': 5, u'linda': 6,  u'loves': 7, u'me': 8, u'more': 9, u'than': 10, }

以及当解析文档以获取其tf idf时。文件:

他看篮球和棒球

及其输出

[5.57735027 0.57735027 0.5 7735027 0。0。00。0.0.]

相当于,

[棒球篮球他简朱莉喜欢琳达爱我胜过

由于我们的文件中只有这些单词:棒球、篮球、他,从词汇表中创造出来。文档矢量输出的值仅为这三个单词的tf idf,并且位于相同的排序词汇表位置。

tf-idf用于对文档进行分类,在搜索引擎中进行排名。tf:术语频率(文档中出现的单词数),idf:文档频率的倒数(单词对每个文档的重要性)。

该方法解决了不应平等加权所有单词的事实,使用权重来指示文档中最独特的单词,并最好用于表征文档。

new_docs = ['basketball baseball', 'basketball baseball', 'basketball baseball']
new_term_freq_matrix = vectorizer.fit_transform(new_docs)
print (vectorizer.vocabulary_)
print ((new_term_freq_matrix.todense()))

{'basketball': 1, 'baseball': 0}
    [[ 0.70710678  0.70710678]
     [ 0.70710678  0.70710678]
     [ 0.70710678  0.70710678]]
new_docs = ['basketball baseball', 'basketball basketball', 'basketball basketball']
new_term_freq_matrix = vectorizer.fit_transform(new_docs)
print (vectorizer.vocabulary_)
print ((new_term_freq_matrix.todense()))
{'basketball': 1, 'baseball': 0}
    [[ 0.861037    0.50854232]
     [ 0.          1.        ]
     [ 0.          1.        ]] 
new_docs = ['basketball basketball baseball', 'basketball basketball', 'basketball 
basketball']
new_term_freq_matrix = vectorizer.fit_transform(new_docs)
print (vectorizer.vocabulary_)
print ((new_term_freq_matrix.todense())) 

{'basketball': 1, 'baseball': 0}
[[ 0.64612892  0.76322829]
[ 0.          1.        ]
[ 0.          1.        ]]

相关内容

  • 没有找到相关文章

最新更新