首页 > 解决方案 > 以降序创建具有词频百分比的字典

问题描述

我创建了一个字典,将词频显示为值。首先,我需要将这些频率转换为百分比。单词的总数是 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}。换句话说,没有价值。只是键是需要在文件文本中找到它们的出现及其相关频率百分比的单词。

标签: pythonword-frequency

解决方案


一个好的开始是使用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]

推荐阅读