首页 > 解决方案 > 如何计算排序列表中单词的频率?

问题描述

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

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

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

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

npl.count('coffee')    

使用上面的代码可以,但它只适用于一个词

预期的输出是这样的:

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

标签: pythonpython-3.x

解决方案


您可以在数据框上使用来自库集合的计数器,如下所示:

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

但是因为你有一个列表,你可以直接将它应用到列表中:

word_counter = Counter("your list")

在您可以循环通过索引并根据需要删除一些停用词之后。您还可以通过执行查看最常见的word_counter.most_common(10)

但请注意,由于房屋或房屋等多次写作,您的结果不会完美。最好的办法是先标记化并应用词干分析器。

编辑1

如果你想要一个最常见的字典,你可以这样做:

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}

推荐阅读