📜  从文件中找到k个最常见的单词(1)

📅  最后修改于: 2023-12-03 15:36:18.838000             🧑  作者: Mango

从文件中找到k个最常见的单词

概述

本文介绍如何通过 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 模块实现。