📌 项目地址:togatoga/karukan | ⭐ 560 颗星 | 🔧 Rust | 📜 未标注
为什么你需要一个“会学习”的日语输入法
现有的主流日语输入法(Mozc、Google IME、ATOK)大多基于统计模型或规则,转换结果往往缺乏对上下文的感知。例如输入“わたしははしをわたる”,传统输入法可能给出“私は橋を渡る”或“私は箸を渡る”,但很难根据前文“川”自动选择“橋”。karukan 使用 GPT-2 模型通过 llama.cpp 进行推理,具备上下文理解能力:
- 实时转换(ライブ変換):输入过程中自动推进转换,无需按空格。可通过
Ctrl+Shift+L开关。 - 用户学习:记忆你选择的候选,未来优先显示;同时支持预测转换(前方一致)。
- 表情输入:支持かな読み(
ぴえん→ 🥺)和 Slack 风格:smile→ 😄。
对于 Linux fcitx5 用户和 macOS 用户,karukan 提供了原生前端,而非通用 IME 框架的变通方案。
实际用法:安装与初次体验
安装
根据操作系统选择对应子模块的 README:
- Linux (fcitx5):参阅 karukan-fcitx5/README.md(编译安装或使用预构建包,具体命令见官方文档)
- macOS:参阅 karukan-macos/README.md
首次启动
注意:初回起動時に Hugging Face からモデルをダウンロードするため、初回の変換開始までに時間がかかります。
模型约数百 MB,下载后缓存在本地。后续启动无需重新下载。
使用示例
- 基本罗马字输入:输入
konshuu no doyoubi,实时显示“今週の土曜日”。 - 表情输入:输入
きんにく→ 💪;输入:smile→ 😄。 - 候选重写:Mozc 移植的重写器自动生成半角カタカナ、数字的各种进制表示(16進数、2進数)、全角半角英字等,注附带来源注释(如“半角カタカナ”)。(详见 karukan-engine)
CLI 工具
karukan-cli 提供了字典构建、Sudachi 词典生成、字典查看器、AJIMEE-Bench 以及 HTTP 服务器。若需自定义系统字典或进行基准测试,可参考其子目录说明。
与同类工具的区别
| 项目 | 基础技术 | 上下文感知 | 实时转换 | 用户学习 | 跨平台 |
|---|---|---|---|---|---|
| karukan | GPT-2 + llama.cpp | ✅ | ✅(可开关) | ✅ | Linux (fcitx5), macOS |
| Mozc | 条件随机场 + 统计 | 有限(前 n-gram) | ❌ | ✅ | Linux, macOS, Windows |
| Google IME | 云端模型 | ✅(依赖服务器) | ❌ | ✅ | Windows, macOS, Android |
| SKK | 规则 + 词典 | ❌ | ❌ | ✅ | 众多 |
karukan 的独有特性:
– 神经网络完全本地:无需联网,隐私友好。
– Mozc 候选重写器移植:直接沿用 Mozc 的丰富笔记(半角、全角、数字多进制等),同时避免 Mozc 的专利/许可证问题(Mozc 为 BSD-3)。
– 系统词典基于 SudachiDict:可配合 Sudachi 分词器使用,提供细粒度语素分析。
– 实时转换 + 用户学习:Mozc 也有学习但无实时转换,karukan 将两者结合。
需要注意的坑
- 首次启动延迟:模型下载耗时,且第一次推理时需加载模型到内存。若网络环境不佳,可能需数分钟。
- 性能开销:GPT-2 推理在 CPU 上(llama.cpp 对 ARM/x86 均优化),但相比 Mozc 仍有明显延迟。连续快速输入时可能跟不上语速。
- 平台限制:目前仅支持 Linux (fcitx5) 和 macOS。无 Windows 和 Wayland 原生支持(fcitx5 是 X11/Wayland 的 IME 框架)。
- 许可证混合:项目为 MIT/Apache-2.0 双许可,但 karukan-engine/data/ 下的 Mozc 派生数据采用 BSD-3 Clause 许可。衍生引用时需注意。
- 功能成熟度:项目 GitHub Star 560,仍处于早期阶段。可能缺少一些高级功能(如手写输入、句末语气调整等)。社区活跃度一般。
总结
karukan 是第一个将 GPT-2 通过 llama.cpp 植入本地日语输入法的尝试。如果你熟悉 Rust、fcitx5 或 macOS InputMethodKit,并且不介意首次部署的等待和中等性能损耗,它值得一试——尤其是需要上下文实时转换的场景(如编剧、翻译、脚本创作)。对于追求稳定高打字的常规用户,Mozc 目前仍是更成熟的选择。