python - 如何计算排序列表中单词的频率?
问题描述
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'}
解决方案
您可以在数据框上使用来自库集合的计数器,如下所示:
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}
推荐阅读
- jquery - 有条件的 CSS 媒体查询?
- c# - GetProduct(string code) 方法总是返回未找到的产品
- java - 如何使用 EWS JAVA api 搜索重定向的电子邮件?
- reactjs - Redux 操作未从 api (json) 获取数据
- asp.net - 使用 asmx Web 服务的基本身份验证
- typescript - 如何在 Typescript 接口中存储 objectID 属性?
- c# - 使用 DrawString 在 C# 中真正垂直居中文本
- javascript - 上传文件时CORS失败
- snakemake - Snakemake:如何在集群模式下最好地辨别各种类型的节点故障?
- javascript - 通过js onclick发送属性类