首页 > 解决方案 > 获得独特的词频

问题描述

我正在编写以下代码以获取一组文件中最不常用的 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,stringrandom.

标签: python

解决方案


你可以做这样的事情,例如:

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

推荐阅读