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 外无其他依赖,使任何输入法的集成变得简单。

相关

  • 项目
  • 项目
  • 项目
  • 项目