项目根目录
文件/目录 | 作用 |
---|
.github/
| GitHub 配置文件目录,包含 CI/CD 工作流(如自动测试、构建发布等)。 |
docs/
| 项目文档目录,包含使用说明、模型原理和 API 文档(如 .md 文件)。 |
examples/
| 示例代码:各模型的使用示例(如 macbert 、t5 、gpt 等模型的训练和预测脚本)。 |
pycorrector/
| 核心代码:项目的主要实现模块,包含纠错模型、工具函数和数据处理逻辑。 |
scripts/
| 工具脚本:数据预处理、模型训练辅助脚本(如数据下载、格式转换)。 |
tests/
| 单元测试:模块功能的测试用例,确保代码健壮性。 |
README.md
| 项目总览文档,包含功能介绍、模型效果对比、安装和使用说明。 |
requirements.txt
| 依赖包列表,用于 pip install -r requirements.txt 安装环境。 |
setup.py
| 项目打包和安装脚本,支持 pip install . 安装到本地环境。 |
LICENSE
| 开源协议(Apache 2.0),允许商业使用。 |
核心代码目录 pycorrector/
1. 纠错模型实现
文件/模块 | 功能 |
---|
corrector.py
| KenLM 统计模型:基于语言模型和混淆集的纠错(如音似、形似错误)。 |
macbert_corrector.py
| MacBERT 模型:基于预训练模型的中文拼写纠错(支持错误检测和纠正)。 |
t5_corrector.py
| T5 模型:使用 Seq2Seq 架构的生成式纠错模型(支持多字、少字错误)。 |
gpt_corrector.py
| GPT 模型:基于 ChatGLM3/Qwen 等大模型的纠错实现(支持复杂语法错误)。 |
ernie_csc_corrector.py
| ERNIE-CSC 模型:基于百度文心的纠错模型(适配中文拼写任务)。 |
deepcontext.py
| DeepContext 模型:基于上下文的纠错模型(参考 Stanford NLC 模型)。 |
convseq2seq.py
| ConvSeq2Seq 模型:基于卷积神经网络的序列到序列纠错模型。 |
2. 工具模块
文件/模块 | 功能 |
---|
utils/
| 工具函数: - text_utils.py :文本处理(简繁转换、同音字生成等) - eval_utils.py :评估指标计算(F1、准确率等) - io_utils.py :数据读写工具 |
data_reader.py
| 数据集加载和预处理,支持 JSON、TXT 格式。 |
confusion.py
| 混淆集管理,支持自定义白名单和纠错规则。 |
language_model.py
| KenLM 语言模型的加载和调用接口。 |
3. 配置文件
文件/模块 | 功能 |
---|
config.py
| 全局配置参数(如默认模型路径、超参数)。 |
__init__.py
| 模块导出定义,暴露外部可调用的类和函数。 |
示例代码目录 examples/
子目录/文件 | 功能 |
---|
macbert/
| MacBERT 模型训练和预测示例(如 train.py , predict.py )。 |
t5/
| T5 模型训练脚本,支持 fine-tuning 自定义数据集。 |
gpt/
| GPT 模型(ChatGLM3/Qwen)的微调和预测示例。 |
ernie/
| ERNIE-CSC 模型的 PaddlePaddle 实现示例。 |
gradio_demo.py
| 基于 Gradio 的交互式 Web 演示(可本地运行或部署到服务器)。 |
测试目录 tests/
文件/模块 | 功能 |
---|
test_corrector.py
| 对 corrector.py (KenLM 模型)的单元测试。 |
test_macbert.py
| 对 MacBERT 模型的预测和训练流程测试。 |
test_utils.py
| 工具函数(如文本处理、评估指标)的测试用例。 |
关键配置文件
文件 | 作用 |
---|
requirements-dev.txt
| 开发环境依赖(包含测试和文档生成工具)。 |
.gitignore
| Git 版本控制忽略规则(如临时文件、模型权重)。 |
Dockerfile
| Docker 镜像构建文件,支持快速部署容器化服务。 |
pycorrector/data
pycorrector/data/
├── common_char_set.txt # 中文常用字符集
├── same_pinyin.txt # 同音字, 汉字拼音映射表,支持音似错误检测(如“因该”→“应该”)
├── same_stroke.txt # 形似字
├── word_freq.txt # 词频统计文件,用于存储词语及其相关统计信息。 format: 词语 词频 词性(n(名词)、v(动词)、adj(形容词))
├── stroke.txt # 形似字数据,汉字笔画相似度数据,支持形似错误检测(如“末”→“未”)
├── custom_confusion.txt # 用户自定义混淆集,补充默认模型未覆盖的常见错误
├── person_name.txt # 知名人名词典 format: 词语 词频
├── place_name.txt # 地名词典 format: 词语 词频
├── proper_names.txt # 专有名词列表 包括成语、俗语、专业领域词等(如人名、品牌名),防止误纠。 format: 词语
├── common_confusion.txt # 内置通用混淆集
├── zh_giga.no_cna_cmn.prune01244.klm # KenLM语言模型
├── people2014corpus_chars.klm # 轻量版语言模型
└── stopwords.txt # 停用词列表,停用词列表(如“的”、“了”),在部分场景下忽略对这些词的纠错
扩展说明
自定义模型:
若要添加新模型(如 BERT 变体),可在 pycorrector/
下新建模块(如 my_model_corrector.py
),实现 detect()
和 correct()
方法,并在 __init__.py
中导出。
自定义数据集:
通过 data_reader.py
加载符合格式的 JSON 文件(需包含 original_text
和 correct_text
字段)。
性能优化:
评论