项目根目录​

文件/目录

作用

.github/

GitHub 配置文件目录,包含 CI/CD 工作流(如自动测试、构建发布等)。

docs/

项目文档目录,包含使用说明、模型原理和 API 文档(如 .md 文件)。

examples/

示例代码​:各模型的使用示例(如 macbertt5gpt 等模型的训练和预测脚本)。

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_textcorrect_text 字段)。

  • 性能优化​:

    • 使用 GPU 加速深度学习模型(需安装 PyTorch GPU 版本)。

    • 对 KenLM 模型,可替换为轻量级语言模型(如 people2014corpus_chars.klm)。