python - 获得独特的词频
问题描述
我正在编写以下代码以获取一组文件中最不常用的 10 个单词:
import os
data_directory = "/pubmed/"
file_list = os.listdir(data_directory)
string_freq = {}
for file in file_list:
f = open(data_directory + file, 'r')
ftext = f.read()
new_text = ftext.replace("\n", "")
string_list = new_text.split(" ")
for word in string_list:
if word in string_freq:
string_freq[word] += 1
else:
string_freq[word] = 1
f.close()
for word in sorted (string_frequency, key = string_frequency.get, reverse=False)[:10]:
print(word, string_freq[word])
现在,事情是这样的:我得到了一个包含 10 个单词的列表,但它们的频率计数都是 1。结果如下所示:
Evaluation 1
reviews 1
decision 1
ankle 1
knee 1
postreduction 1
shoulder 1
nursemaid's 1
elbows 1
Thermal 1
如何跳过具有相同频率的单词,使结果看起来像:评估 1、其他单词 2、第三单词 3、第四单词 4 等?我真的不想使用除了os
,string
或random
.
解决方案
你可以做这样的事情,例如:
string_frequency = {'one': 1, 'two': 1, 'three': 1, 'four': 2, 'five': 2, 'six': 3, 'seven': 3, 'eight': 3}
words = sorted(string_frequency, key=string_frequency.get, reverse=False)
word_frequencies = {string_frequency[word]: word for word in words}
for frequency in sorted(word_frequencies):
print(frequency, word_frequencies[frequency])
输出
1 three
2 four
3 seven
推荐阅读
- debugging - Visual Studio Code - 使用 Chrome 进行调试 - 断点在开始时运行,而不是在遇到时
- python - 在 SQLAlchemy 中插入数据库(db_session 不工作)后查询失败
- javascript - VueJs - 在重定向到页面之前获取数据
- excel - VBA .End(xlDown) 在空白单元格处停止
- modelica - Dymola中求解DAE的过程
- c++ - collect2.exe:错误:ld 返回 1 退出状态没有创建 DLL
- pine-script - 有人可以帮我将以下策略转换为学习吗
- puppeteer - 为什么有时不使用 puppeter 收集信息?
- java - 如何在一个简单的 Java 计算器程序中使“RESULT”代表先前的结果(双变量)?
- c# - 如何在 ASP.NET Core 3.1 中使用 EF Core Cosmos 提供程序