-1

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

  • '名称' = 电影的名称
  • '文本' = 描述电影的大约 500 个单词的文本
  • '流派' = 电影的流派

我现在想使用 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 返回的内容

该函数不应该为每部电影创建一个字典。这本词典的key应该是mobies的所有文本中出现的所有单词。值应该是这些词在这部电影的文本中出现的次数。

提前致谢!

4

1 回答 1

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+ 版本。

于 2017-05-27T21:41:08.687 回答