我在阅读关于scikit-learn的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)权重。如你在第二个向量中看到的:
[ 0. 0.68091856 0. 0. 0.51785612 0.51785612 0. 0. 0. 0. 0. ]
第五个元素得分为0.51785612 – ‘Julie’的tf-idf得分。关于Tf-Idf评分的更多信息,请阅读这里:http://en.wikipedia.org/wiki/Tf%E2%80%93idf