解释CountVectorizer

时间:2017-05-27 21:29:16

标签: python pandas countvectorizer

我想创建一个包含我存储在名为top100的pandas对象中的电影文本的单词。我的pandas对象有3列:

  • '姓名'=电影的标题
  • '文字'=描述电影的约500字的文字
  • 'Genre'=电影的类型

我现在想使用sklearn中的CountVectorizer函数为我的数据框中的每部电影创建一个“文字”列的词袋:

from sklearn.feature_extraction.text import CountVectorizer

bow = CountVectorizer().fit(top100["Text"])
bow.vocabulary_

这会返回一个字典,其中所有单词都具有极值:

{u'raining': 6487,
 u'chieko': 1373,
 u'yellow': 9122,
 u'four': 3320,
 u'woods': 9058,
 u'hanging': 3748,
 u'francesca': 3330,
 u'increase': 4163,
 u'electricity': 2667,
 u'doppelg\xe4nger': 2495,
 u'lori': 4886,
 u'demoted': 2164,
 u'lord': 4883,
 u'immature': 4088,
.....

我尝试了各种各样的东西,但我不知道如何解释这个结果。即使我输入2个小句子并尝试创建一个单词云,它也会创建一个包含所有单词和一些高值的字典。

我真想让CountVectorizer返回

该函数不应为每部电影创建字典。这本词典的关键词应该是出现在所有组合文本中的所有单词。值应该是这些单词在这部特定电影的文本中出现的次数。

提前致谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

cv = CountVectorizer()
bow = cv.fit_transform(top100["Text"])
r = pd.SparseDataFrame(bow, columns=vect.get_feature_names(), 
                       index=top100.index, default_fill_value=0)

print(r)  # this will help you to undestand how CountVectorizer works...

注意:此解决方案需要Pandas 0.20.0+版本。