文本词频统计项目实战
上一篇:文件、JSON、CSV 与异常处理 返回:Python 基础学习索引
1. 项目目标
读取 article.txt,清理多余空白,统计总词数、不同词数、最高频词及每个词的出现次数,最后保存为 JSON。
项目位置:
1 | F:\AAAAA\python\text-analyzer\ |
2. 项目结构
1 | text-analyzer/ |
| 文件 | 职责 |
|---|---|
main.py |
组织读取、清洗、统计和保存流程 |
file_utils.py |
读取文本、创建输出目录、保存 JSON |
text_utils.py |
清洗文本、统计词频 |
article.txt |
输入数据 |
result.json |
输出结果 |
3. 数据流
1 | article.txt |
4. 文本工具
1 | def clean_text(text): |
text.split() 把字符串切成单词列表," ".join(...) 用一个空格重新连接。dict.get(word, 0) 让第一次出现的单词从 0 开始计数。
5. 文件工具
1 | import json |
6. 主流程
1 | from pathlib import Path |
max() 默认遍历字典的键,key=lambda word: word_count[word] 表示根据每个键对应的次数比较。
7. 当前输入和正确结果
输入:
1 | Python LLM RAG |
输出:
1 | { |
8. 实际遇到的错误
模块没有保存
text_utils.py 在编辑器里写了代码,但磁盘文件仍为 0 字节,导入时出现:
1 | ImportError: cannot import name 'clean_text' |
运行前按 Ctrl + S,确保标签旁的未保存白点消失。
把 join 写成 json
错误:
1 | " ".json(text.split()) |
正确:
1 | " ".join(text.split()) |
split() 传入文件对象
错误:
1 | content.split(file) |
split() 的分隔符必须是字符串或不传。正确写法:
1 | content.split() |
路径依赖终端位置
错误路径 text-analyzer/data/article.txt 会随着终端位置变化。使用 BASE_DIR 从 main.py 自身定位。
计数变量未初始化
直接执行 dict_words += 1 会触发 NameError。更简单的写法是:
1 | unique_words = len(word_count) |
词频键写死
只统计 Python、LLM、RAG、Agent 会漏掉新单词。应遍历所有单词动态更新字典。
9. 独立复现与验收
- 自己建立项目目录和三个 Python 文件。
- 不看原代码写出
read_text()、clean_text()、count_words()、save_json()。 - 运行
python main.py。 - 检查 JSON 是否为总词数
10、不同词数4、最高频词Python。 - 在输入中增加
Docker,确认程序能自动统计新单词。
能够解释每个函数的输入、输出和职责,并独立排查路径与导入错误,即完成本阶段。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Mortal!