日本語入力システムSumibiの開発 part13: モードレスなMozc + Local LLM
はじめに
前回、OpenAIなどのリモートAPIに接続できない環境でも「Sumibi」を使えるようにMozcをバックエンドの変換エンジンとして利用できるようにした話を紹介しました。
現在、Mozcの変換候補から文脈にマッチした候補を選定するための補助として、Local LLMを利用する機能を実装中です。
GitHub issue #87
Sumibiとmozc.elを統合したときの課題
mozc.elを利用しているといっても、mozc.elの全機能を利用できているわけではありません。
mozc.elはmozc-serverとのキーイベントのやり取りをベースに動作しています。一方、sumibi.elはモードレスのIMEであるため、mozc.elと同じ操作を利用することはできません。
具体的には、「nihongo nyuuryoku」のようなローマ字の羅列を、キーボードからmozc.elに入力したと仮定して変換します。その変換候補をsumibi.elで利用する形になります。
この仕組みの制約として、周辺の文脈に応じた変換候補の選択ができていません。そのため、変換候補はかなりの確率で文脈にそぐわない同音異義語が選択されてしまいます。
Local LLMにより変換候補選択のアシスト
課題の解決策として、文脈に合わせた適切な変換候補の選択だけをLocal LLMに依頼するという方法を試しています。
変換候補の選択という限定的なタスクであれば、Local LLMで十分処理可能です。そのため、巨大なパラメータ数を持つLLMを使わなくても、それなりの精度で処理できます。
ベンチマーク結果
精度とレスポンスタイムを計測してみました。
現代日本語への適合性を高めるため、Livedoorニュース・コーパスを使用しています。
文章の一部にローマ字とmozc.elから得られた変換候補を与えて、正しい語彙が選択されるかどうかを見ています。
全部で112問あるうち、何問正解したかが正答率になります。

- 例題:
日本人として、負けてられないな、と気持ちも**[furui]**立たされることもあります
- mozc.elが返した変換候補
ふるい, 旧い, 振るい, 奮い, 震い, 篩い
- 期待結果:
日本人として、負けてられないな、と気持ちも奮い立たされることもあります
計測に使用したハードウェア
Local LLMのサーバーはML Studioを使用しました。hardware1とhardware2のスペックは以下の通り。
| 項目 | hardware1 | hardware2 |
|---|---|---|
| CPU | 11th Gen Intel Core i5-11400F @ 2.60GHz | AMD Ryzen 7 5700X 8-Core Processor |
| RAM | 15.9 GB | 31.9 GB |
| GPU | NVIDIA GeForce GTX 1650 | NVIDIA GeForce RTX 4060 Ti |
| VRAM | 4.0 GB | 8.0 GB |
| Compute Capability | 7.5 | 8.9 |
最後に(ベンチマーク結果の所感)
変換精度は十分ですが、レスポンスタイムが実用レベルに達していません。実用的なレスポンスタイムを得るには、2025年10月現在でも高スペックなGPUが必要であり、ノートPCでの運用は困難と考えられます。将来、LLMにブレークスルーが起きて少ない計算資源で高速なレスポンスが得られるようになれば実用化の可能性があります。今回の実装は、その時が来るまでお蔵入りとなりそうです。
Discussion