metasequoiaime/chinese-ime-lm
面向中文输入法的语言模型:语料、n-gram 统计、字级神经模型,以及判断它们好坏的评测集
解决的问题
中文输入法在用户输入拼音时,通常需要选择正确的汉字。本项目构建了语言模型,通过结合传统的 n-gram 统计方法和现代神经网络,帮助提高选择的准确性。它还提供了一个共享评估集,以便公平地比较不同的方法。
工作原理
该项目包含两条并行流水线,用于为给定的拼音从候选字符中做出决策。
- n-gram 路径:将原始文本清洗为纯中文分词,使用 KenLM 构建 1/2/3-gram 计数,并使用 Viterbi 算法进行解码。
- 神经路径:获取干净、可重新分发的语料库(C4 和 LCCC),训练一个字符级 Transformer 来对候选列表进行重排序,并导出小型 int8 模型。
两条流水线均使用相同的评估集(25,119 个词级案例和 60 个句级案例)进行衡量。该评估集经过精心设计,旨在捕捉两个微妙的测量陷阱,将主观变化转化为数值分数。
神经模型非常小:4.5 MB 和 25.5 MB。在与更大的开源模型(Qwen 0.6B/0.8B)在相同候选池上的正面测试中,小型模型在排序质量上持平或超过了它们,且差异在统计学上不显著。真正的优势在于尺寸和延迟——小型模型运行速度快得多,且内存占用极低。
适用人群
本项目适用于开发中文输入法或拼音转汉字转换系统的开发者,以及研究亚洲文本输入语言模型的研究人员。如果您需要一个可以在手机或低资源设备上运行的小型、快速重排序器,它也是一个有用的参考。
亮点
- 两种完整且可比较的方法:经典的 n-gram + Viterbi 和现代 Transformer 重排序器。
- 严谨的评估集,包含 25,119 个词级和 60 个句级案例,并记录了测量陷阱。
- 极其紧凑的神经模型(4.5 MB 和 25.5 MB),在排序质量上媲美大型开源模型,同时体积缩小了 140–380 倍,速度提升了一个数量级。
- 项目仅分发脚本;不包含语料库和训练好的权重。干净、可重新授权的语料库通过
corpus/fetch.py获取,训练好的权重在 Hugging Face 上以 Apache-2.0 协议发布。 - 一个 Rust 参考实现 (
reference/),无 unsafe 代码,除 serde 外无其他依赖,使任何输入法的集成变得简单。
相关
- 项目
- 项目
- 项目
- 项目