Skip to content
This page has been auto-translated and may contain errors.View in English

词频分析器

Mira 你好。我接到任务要从任务日志中提取见解,而日志有几百份。我需要一个程序,能读取一个文本文件、统计每个词出现的频率,并显示排名最高的结果。我想找出反复出现的话题,而不必手动阅读所有内容。

你要构建的内容

Enter text, or a filename to read from: sample.txt

Top 10 words:
  the       42
  and       31
  python    18
  is        16
  you       14
  ...

你需要用到

提示

计数前先归一化。 在构建计数前,将所有内容转为小写并去除标点。否则 "Python"、"python" 和 "Python," 会被视为不同的词。

用字典进行计数。 遍历词。如果词已经是键,则递增其计数;如果不是,则以计数 1 添加它。使用带默认值的 .get() 会让代码很整洁。

按值对字典排序。 sorted() 接受一个 key= 参数。传入一个返回每个键对应值的 lambda,即可按频率排序。

更进一步

当核心分析功能完成后:

  • 停用词。 忽略常见词如 "the"、"and"、"is"。定义一个停用词集合,并跳过其中出现的任何词。
  • 可配置的 Top N。 让用户指定要显示多少个结果,而不是总是显示 10 个。
  • 可视化输出。 为每个词打印一个由重复字符组成的条形图,其长度与计数成比例。即使是简单的版本,也会让输出更易读。