如何计算已排序列表中单词的出现频率?

时间:2018-07-28 18:36:53

标签: python python-3.x

npl = []
for i in df2['Review']:
    npl.extend(tb(i).noun_phrases)

这是我用来生成列表的代码,而且很长。

['omg',
 'populus scramble',
 'coffee',
 'hack',
 'snagged',
 'burpple',
 'ice cream melts',
 'sweet prize ',
 ...]

基本上,我如何开发将循环列表以计算单词出现频率并显示单词的代码?类似于Counter。我花了几个小时浏览这个网站,试图找到适合我的代码,但无济于事。

npl.count('coffee')    

使用上面的代码有效,但仅适用于一个单词

预期的输出是这样的:

 {'coffee', '45'
  'snagged', '23'
  'ice cream melts', '13'}

1 个答案:

答案 0 :(得分:1)

您可以按照以下步骤在数据帧上使用“库”集合中的计数器:

word_counter = Counter()
df2['Review'].str.split(" ").apply(word_counter.update)

但是有了列表,您可以将其直接应用于列表:

word_counter = Counter("your list")

之后,您可以循环遍历索引并删除一些停用词(如果需要)。您还可以通过执行word_counter.most_common(10)

来查看最常见的

但是要小心,由于房屋或房屋之类的多种文字,您的结果将不会是完美的。最好的方法是先标记化并应用词干分析器。

Edit1

如果您想要最常见的词典,您可以这样做:

dict(word_counter .most_common(10))

这是我的摘录:

from collections import Counter

inp = list("abcaddabcabadbcabdabdcbaziyutoigkfdshjkbvaoiuhgbgjkvd^giohdfb")
word_counter = Counter(inp)

dict(word_counter.most_common(4)) => {'a': 9, 'b': 10, 'c': 4, 'd': 8}