title: 词频分析器 description: 读取一段文本并报告最常见的词语。
词频分析器
米拉 你好。我被分配了从任务日志中提取信息的工作,但有数百份日志。我需要一个工具来读取文本文件,统计每个词出现的次数,并显示我最高频的结果。我想在不手动阅读所有内容的情况下找出哪些主题经常出现。
你要构建的内容
输入文本或要读取的文件名: sample.txt
排名前10的词语:
the 42
and 31
python 18
is 16
you 14
...你需要的知识
- 字符串 - 将文本分割成词语、去除标点符号、转换为小写
- 字典 - 统计每个词出现的次数
- 列表 - 对最高频结果进行排序和切片
- 文件和异常 - 从文本文件中读取
- Lambda、推导式和 zip - 列表推导式和带有 key 的
sorted()在这里效果很好
提示
在计数前进行规范化。 在构建计数前,将所有内容转换为小写并去除标点符号。否则"Python"、"python"和"Python,"会被视为不同的词。
使用字典进行计数。 遍历所有词语。如果该词已是一个键,则将其计数加 1。如果不是,则添加它,计数设为 1。使用带有默认值的 .get() 可以使代码更简洁。
按值对字典进行排序。 sorted() 接受 key= 参数。传入一个返回每个键的值的 lambda 函数来按频率排序。
进一步扩展
一旦核心分析功能正常工作:
- 停用词。 忽略常见词语,如"the"、"and"、"is"。定义一个停用词集合,并跳过其中出现的任何词。
- 可配置的前 N 个结果。 让用户指定要显示的结果数量,而不是总是显示 10 个。
- 可视化输出。 打印每个词语,并在其旁边显示一个由重复字符组成的条形图,长度与其计数成正比。即使是简单的版本也会让输出更易读。

