MASC-CSC (Mechanism-Aware Selective Collaboration for Chinese Spelling Correction) 是一个用于中文拼写纠错(CSC)的高级双层协同框架。
本项目致力于解决大语言模型(LLM)在拼写纠错任务中容易**“过度纠正”和“随意改写”**的问题。通过引入多模态小模型作为前端“报错传感器”,结合动态路由机制与受限的 LLM 解码策略,实现了纠错准确率与推理成本的最佳平衡。
本系统由四个高度协同的模块组成:
chinese-macbert-base。SelectiveRouterMLP 动态评估句子风险。低风险句子直接输出前端结果,仅高风险句子触发 LLM 验证,大幅降低 API/算力开销。LogitsProcessor,从底层严格限制 LLM 的输出格式(仅限字母选项或单个汉字),彻底消除 LLM 的废话与幻觉。MASC-CSC/
├── models/
│ ├── multimodal_frontend.py # 多模态小模型前端实现
│ └── common.py # 基础网络组件
├── masc_csc/
│ ├── pipeline.py # 核心协同管线串联
│ ├── mechanism.py # 音形错误机制推断
│ ├── candidate_generator.py # 机制感知候选生成
│ ├── selective_escalation.py # 基于 MLP/规则的风险路由
│ └── llm_verifier.py # 三阶段本地大模型验证器
├── scripts/
│ ├── data_process.py # 数据预处理
│ ├── run_pipeline.py # 管线测试运行脚本
│ └── run_masc_csc.py # 单句测试脚本
├── utils/ # 训练工具、评价指标等
├── train.py # 前端模型训练脚本
└── train_router.py # Router MLP 门控网络训练脚本
建议环境:Python >= 3.8, PyTorch >= 2.0
pip install -r requirements.txt
# 确保安装了 pypinyin, transformers, lightning, peft 等依赖
你可以直接使用预置的脚本测试 MASC-CSC 管线:
# 使用本地 LLM (如 Baichuan-7B) 进行协同纠错
python scripts/run_pipeline.py \
--sentence "我喜换吃平果,逆呢?" \
--use_llm \
--llm_path "baichuan-inc/Baichuan-7B" \
--router_ckpt "./ckpt/router.ckpt"
本项目支持拆分训练前端模型与 Router 门控网络:
训练多模态前端:
python train.py --model multimodal_frontend --datas train.csv --batch-size 32
训练 Selective Router (MLP):
python scripts/train_router.py --train_data ./data/train_features.pt
微调本地 LLM (LoRA): 项目中提供了针对大语言模型的 LoRA 微调脚本:
sh scripts/train_llm_lora.sh
前端模型与验证集需要以下 CSV 格式数据:
src,tgt
我喜换吃平果,我喜欢吃苹果
今田天气很好,今天天气很好
(要求:src 与 tgt 必须等长,且不可包含半角逗号)
llm_verifier.py 默认适配本地加载的因果语言模型(如 Baichuan, Qwen 等),通过 HuggingFace API 配合自定义的 LogitsProcessor 工作。NoOpVerifier,回退为高性能、纯小模型的纠错模式。1 commits
Python
89.7%
Jupyter Notebook
6.0%
Shell
3.9%
MASC-CSC (Mechanism-Aware Selective Collaboration for Chinese Spelling Correction) 是一个用于中文拼写纠错(CSC)的高级双层协同框架。
本项目致力于解决大语言模型(LLM)在拼写纠错任务中容易**“过度纠正”和“随意改写”**的问题。通过引入多模态小模型作为前端“报错传感器”,结合动态路由机制与受限的 LLM 解码策略,实现了纠错准确率与推理成本的最佳平衡。
本系统由四个高度协同的模块组成:
chinese-macbert-base。SelectiveRouterMLP 动态评估句子风险。低风险句子直接输出前端结果,仅高风险句子触发 LLM 验证,大幅降低 API/算力开销。LogitsProcessor,从底层严格限制 LLM 的输出格式(仅限字母选项或单个汉字),彻底消除 LLM 的废话与幻觉。MASC-CSC/
├── models/
│ ├── multimodal_frontend.py # 多模态小模型前端实现
│ └── common.py # 基础网络组件
├── masc_csc/
│ ├── pipeline.py # 核心协同管线串联
│ ├── mechanism.py # 音形错误机制推断
│ ├── candidate_generator.py # 机制感知候选生成
│ ├── selective_escalation.py # 基于 MLP/规则的风险路由
│ └── llm_verifier.py # 三阶段本地大模型验证器
├── scripts/
│ ├── data_process.py # 数据预处理
│ ├── run_pipeline.py # 管线测试运行脚本
│ └── run_masc_csc.py # 单句测试脚本
├── utils/ # 训练工具、评价指标等
├── train.py # 前端模型训练脚本
└── train_router.py # Router MLP 门控网络训练脚本
建议环境:Python >= 3.8, PyTorch >= 2.0
pip install -r requirements.txt
# 确保安装了 pypinyin, transformers, lightning, peft 等依赖
你可以直接使用预置的脚本测试 MASC-CSC 管线:
# 使用本地 LLM (如 Baichuan-7B) 进行协同纠错
python scripts/run_pipeline.py \
--sentence "我喜换吃平果,逆呢?" \
--use_llm \
--llm_path "baichuan-inc/Baichuan-7B" \
--router_ckpt "./ckpt/router.ckpt"
本项目支持拆分训练前端模型与 Router 门控网络:
训练多模态前端:
python train.py --model multimodal_frontend --datas train.csv --batch-size 32
训练 Selective Router (MLP):
python scripts/train_router.py --train_data ./data/train_features.pt
微调本地 LLM (LoRA): 项目中提供了针对大语言模型的 LoRA 微调脚本:
sh scripts/train_llm_lora.sh
前端模型与验证集需要以下 CSV 格式数据:
src,tgt
我喜换吃平果,我喜欢吃苹果
今田天气很好,今天天气很好
(要求:src 与 tgt 必须等长,且不可包含半角逗号)
llm_verifier.py 默认适配本地加载的因果语言模型(如 Baichuan, Qwen 等),通过 HuggingFace API 配合自定义的 LogitsProcessor 工作。NoOpVerifier,回退为高性能、纯小模型的纠错模式。1 commits
Python
89.7%
Jupyter Notebook
6.0%
Shell
3.9%