python - 以降序创建具有词频百分比的字典
问题描述
我创建了一个字典,将词频显示为值。首先,我需要将这些频率转换为百分比。单词的总数是 150482。其次,我需要按降序排列这个字典(基于作为键的单词的频率值),并将它与另一个包含频繁单词的字典进行比较。知道如何做这两件事:即以百分比形式更改值并将它们按降序排列在一个字典中(如果仅需要比较,则最后一部分),第二,将此字典与常用词字典进行比较。这是我需要将值更改为百分比的第一本字典。
di=dict()
with open('content.txt',encoding='utf8') as newtext:
for line in newtext:
line=line.rstrip()
words=line.split()
for word in words:
di[word]=di.get(word,0)+1
目标是找出频繁词词典中频繁词出现在 di 中的百分比(显示文本文件中词的频率)。第一个字典就像 {the:TRUE}。换句话说,没有价值。只是键是需要在文件文本中找到它们的出现及其相关频率百分比的单词。
解决方案
一个好的开始是使用collections.Counter
和它的most_common
方法:
from collections import Counter
with open('content.txt',encoding='utf8') as newtext:
c = Counter(word for line in newtext for word in line.rstrip().split())
by_count = c.most_common() # e.g. [('the', 123), ('a', 83), ...]
然后你可以操纵它来获得频率:
total = sum(c.values())
by_freq = [(k, v/total) for k, v in by_count]
# or in Python2:
# by_freq = [(k, float(v)/total) for k, v in by_count]
推荐阅读
- python - 在 Python 中安装 symfit 库时出错
- android - Xamarin Android - CrossGeeks - AzurePushNotificationPlugin - 如果应用程序位于前台则隐藏通知(android 和 ios)
- javascript - 在 "<%: %>" 中包含一个 JS 变量
- javascript - 确定渲染树中的元素
- python - 仅使用正则表达式查找最长子字符串的快速方法
- javascript - Material ui 使用主题全局更新选择样式
- r - R 包的作者与贡献者 - 小代码贡献的角色是什么?
- azure-storage - 如何在 Microsoft Azure 表存储查询编辑器中使用“like”等字符函数?
- python - 为什么 Python 中阶乘函数的尾递归版本这么慢?
- javascript - JS:异步函数