📅  最后修改于: 2023-12-03 15:36:18.838000             🧑  作者: Mango
本文介绍如何通过 Python 从文件中找到出现频率最高的 k 个单词。
读入文件内容,并将所有单词存储到一个列表中。接着,使用 Counter 对列表中的每个单词进行计数。最后,使用 Counter.most_common(k) 方法找到出现频率最高的 k 个单词。
from collections import Counter
import re
def get_top_k_words(filename: str, k: int) -> List[str]:
# 读入文件内容
with open(filename, "r") as f:
data = f.read().replace("\n", " ")
# 将字符串转换为单词列表
words = re.findall(r'\b\w+\b', data)
# 计算每个单词的出现次数
cnt = Counter(words)
# 返回出现频率最高的 k 个单词
return [w[0] for w in cnt.most_common(k)]
from collections import Counter
import re
首先需要导入需要的模块,collections
模块中的 Counter
类可以帮助我们轻松计算每个单词的出现次数,re
模块则用于正则表达式操作。
def get_top_k_words(filename: str, k: int) -> List[str]:
get_top_k_words
函数需要接收两个参数,第一个是文件路径,第二个是需要返回的单词数量。
with open(filename, "r") as f:
data = f.read().replace("\n", " ")
使用 with
语句打开文件,并将文件内容读取到变量 data
中,并将原始字符串中的换行符替换为空格,避免分割单词时出现问题。
words = re.findall(r'\b\w+\b', data)
使用正则表达式从字符串 data
中查找单词,该正则表达式用于匹配符合单词定义的字符串,\b
表示单词边界,\w+
表示一个或多个单词字符。
cnt = Counter(words)
使用 Counter
对单词列表 words
中的每个单词进行计数,cnt
变量将保存每个单词的出现次数。
return [w[0] for w in cnt.most_common(k)]
返回出现频率最高的 k 个单词,cnt.most_common(k)
将返回一个列表,其中包含 k 个元组,每个元组包含一个单词和其出现次数,使用列表推导式将这些元组转换为只包含单词的列表。
本文介绍了使用 Python 统计文件中出现频率最高的 k 个单词的方法,该方法可以通过正则表达式和 collections
模块实现。