tfidfvectorizer根据所有单词打印结果

时间:2017-03-31 08:38:42

标签: python scikit-learn nlp tf-idf

虽然有六个不同的词。结果中只打印了5个单词。如何根据所有单词(6列向量)得到结果?

from sklearn.feature_extraction.text import TfidfVectorizer
sent=["This is a sample", "This is another example"]
tf = TfidfVectorizer(analyzer='word', ngram_range=(1,1), min_df = 0)
tfidf_matrix =  tf.fit_transform(sent)
print tfidf_matrix.toarray()
  

[[0. 0. 0.50154891 0.70490949 0.50154891] [   0.57615236 0.57615236 0.40993715 0. 0.40993715]]

还有如何打印列详细信息(功能(单词))和行(文档)?

1 个答案:

答案 0 :(得分:2)

您正在使用默认的token_pattern,它只选择2个或更多char的标记。

  

token_pattern:

     

“token”,仅在analyzer =='word'时使用。默认的正则表达式选择   2个或更多字母数字字符的标记(标点符号完全是   被忽略并始终被视为标记分隔符)

如果您定义了一个新的token_pattern,您将获得'a'字符,例如:

from sklearn.feature_extraction.text import TfidfVectorizer
sent=["This is a sample", "This is another example"]
tf = TfidfVectorizer(token_pattern=u'(?u)\\b\\w+\\b')
tfidf_matrix =  tf.fit_transform(sent)
print tfidf_matrix.toarray()
tf.vocabulary_

[[0.57615236 0. 0. 0.40993715 0.57615236 0.40993715]  [0. 0.57615236 0.57615236 0.40993715 0.40993715]]

tf.vocabulary_

{u'a':0,你的例子':4,你的另一个':1,你不是':5,你是':3,你的例子':2}