📌 项目地址togatoga/karukan | ⭐ 560 颗星 | 🔧 Rust | 📜 未标注

为什么你需要一个“会学习”的日语输入法

现有的主流日语输入法(Mozc、Google IME、ATOK)大多基于统计模型或规则,转换结果往往缺乏对上下文的感知。例如输入“わたしははしをわたる”,传统输入法可能给出“私は橋を渡る”或“私は箸を渡る”,但很难根据前文“川”自动选择“橋”。karukan 使用 GPT-2 模型通过 llama.cpp 进行推理,具备上下文理解能力:

  • 实时转换(ライブ変換):输入过程中自动推进转换,无需按空格。可通过 Ctrl+Shift+L 开关。
  • 用户学习:记忆你选择的候选,未来优先显示;同时支持预测转换(前方一致)。
  • 表情输入:支持かな読み(ぴえん → 🥺)和 Slack 风格 :smile → 😄。

对于 Linux fcitx5 用户和 macOS 用户,karukan 提供了原生前端,而非通用 IME 框架的变通方案。

实际用法:安装与初次体验

安装

根据操作系统选择对应子模块的 README:

首次启动

注意:初回起動時に 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 将两者结合。

需要注意的坑

  1. 首次启动延迟:模型下载耗时,且第一次推理时需加载模型到内存。若网络环境不佳,可能需数分钟。
  2. 性能开销:GPT-2 推理在 CPU 上(llama.cpp 对 ARM/x86 均优化),但相比 Mozc 仍有明显延迟。连续快速输入时可能跟不上语速。
  3. 平台限制:目前仅支持 Linux (fcitx5) 和 macOS。无 Windows 和 Wayland 原生支持(fcitx5 是 X11/Wayland 的 IME 框架)。
  4. 许可证混合:项目为 MIT/Apache-2.0 双许可,但 karukan-engine/data/ 下的 Mozc 派生数据采用 BSD-3 Clause 许可。衍生引用时需注意。
  5. 功能成熟度:项目 GitHub Star 560,仍处于早期阶段。可能缺少一些高级功能(如手写输入、句末语气调整等)。社区活跃度一般。

总结

karukan 是第一个将 GPT-2 通过 llama.cpp 植入本地日语输入法的尝试。如果你熟悉 Rust、fcitx5 或 macOS InputMethodKit,并且不介意首次部署的等待和中等性能损耗,它值得一试——尤其是需要上下文实时转换的场景(如编剧、翻译、脚本创作)。对于追求稳定高打字的常规用户,Mozc 目前仍是更成熟的选择。

这篇文章对你有帮助吗?

发表回复