自然语言处理中经常涉及到创建词典或者词频统计,这里分享一个小程序,希望能给大家提供一点帮助,也欢迎各位指点我的程序,哪怕再小的程序也值得不断完善。
词频统计问题可以描述如下:
用Python实现函数count_words(),该函数输入字符串s和数字n,返回s中n个出现频率最高的单词。返回值是一个元组列表,包含出现次数最高的n个单词及其次数,即[(<单词1>, <次数1>), (<单词2>, <次数2>), ... ],按出现次数降序排列。
假设所有输入都是小写形式,并且不含标点符号或其他字符(只包含字母和单个空格)。如果出现次数相同,则按字母顺序排列。那么可以有以下程序:
"""统计词频"""
def count_words(s, n):
"""返回字符串s中出现频率最高的n个词."""
s_list = s.lower().split(' ') # 单词统一转换为小写形式,并以空格进行切分
# 统计字符串s中每个单词出现的次数
top_n_dict = {}
for word in s_list:
if word in top_n_dict:
top_n_dict[word] += 1
else:
top_n_dict[word] = 1
# 按照出现频次对单词进行排序,如果出现频次相同,则按字母顺序排序
word_frequency = []
values = sorted(list(set(top_n_dict.values()