Skip to content

lna-lab/LNAIME

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LNAIME(リナイム)

完全ローカルの日本語入力+校正IME。 出版編集者の実務に耐える品質を、原稿が一歩も外に出ない形で。

LNAIME は Lna-Lab が開発する、ニューラルかな漢字変換と日本語校正を一体化した日本語入力メソッド(IME)です。名称は Lna-Lab + IME。Google日本語入力やATOKのように、入力デバイスのすぐ近くに常駐し、あらゆるアプリで動くことを目指します。

なぜ LNAIME か

  • 完全ローカル。 すべての処理が手元のマシンで完結し、書きかけの原稿が外部サーバへ送られることは一切ありません。未公開原稿を扱う編集者にとって、これは機能ではなく「信頼」です。
  • ひとつの辞書が、変換と校正を同時に動かす。 固有名詞や用語を一度登録すれば、それが ①ライブ変換のバイアス ②再変換の候補 ③表記ゆれ校正の「正しい表記」 のすべてに効きます。
  • 再現可能な校正。 表記ゆれ・用字用語・送り仮名・ら抜きなどは決定的なルール(textlint / prh / Sudachi / 内閣告示)で検出し、各指摘が根拠を示します。文脈依存の誤用だけを、明示ラベル付きのAI提案として補います。

主な機能(目標)

  • ⌨️ ニューラルなローマ字ライブ変換(変換キー不要)
  • 📚 固有辞書の登録(作品・媒体ごとに切替)
  • 🔁 確定済みテキストの再変換
  • 🩹 入力時のその場校正(ATOK風の下線指摘)— 登録表記ゆれ/用字用語/送り仮名/ら抜き
  • 📄 文書スキャン校正 — 離れた箇所の表記ゆれ・一括校正
  • 🤖 文脈校正(ローカルLLM、最小編集・著者の声を書き換えない)

設計

ローカルの「校正+変換サーバ(脳)」が、ひとつの固有辞書とルール群・ニューラルモデルを保持し、IMEフロントエンドへ供給します。

  • L0 共有固有辞書 — 単一の master レコードから、変換辞書と校正ルールを自動生成(このコンパイラが製品の核)
  • L1 文字正規化 — 全角半角・長音などの決定的な整形
  • L2 決定的ルール層 — textlint / prh / Sudachi正規化 / 内閣告示 / JTFスタイル(再現可能・引用可能)
  • L3 ニューラル層 — 文脈依存の誤用・言い換えのみ(最小編集の差分、AI提案として明示)

「正しい表記」の出所は常に L0 の登録正規形と内閣告示であり、形態素解析器の既定正規化を表示にはそのまま用いません。

ロードマップ

  1. — 固有辞書 + コンパイラ + 決定的校正(表記ゆれ検出) ← 開発中
  2. 常駐IME — Fcitx5 ベースのライブ変換 + 固有辞書 + 再変換 + その場校正
  3. 文書スキャン校正 — 文書スコープの表記ゆれ・一括校正
  4. 文脈校正(ニューラル) + 入稿エクスポート(docx / PDF)

技術スタック

  • 変換エンジン:azooKey Zenzai / zenz(GPT-2系ニューラルかな漢字変換、ローカルGGUF)
  • IME基盤:Fcitx5 + Hazkey
  • 校正:Sudachi / textlint / textlint-rule-prh / 内閣告示・JTFスタイル
  • 文脈校正:ローカルLLM(LFM2.5系)

状況(v0.1.0)

完全ローカルで動作する v0.1.0

  • 校正 /check:表記ゆれ・ら抜き・用字用語・全角英数
  • 変換 /convert:ローマ字ベタ打ち入力 → ハイブリッド(生成の品質 + 読み忠実ゲート + Zenzai ラティス保証)
  • 常駐トレイapp:GNOMEトップバーに常駐し、どのアプリでも変換/校正

zenz は Blackwell GPU で 1変換 約 9–21ms。辞書コンパイラ(master レコード → 変換辞書+校正ルールの同期生成)が稼働。

使ってみる(PoC)

校正の「脳」をコンテナで起動し、/check を叩きます(完全ローカル・host環境を汚しません)。

docker compose up -d --build
curl -s http://127.0.0.1:8077/check \
  -H 'content-type: application/json' \
  -d '{"text":"弊社のサーバを増設。新しいサーバーは高速です。"}'

dict/master.yaml に用語を一度登録すると、変換辞書(Sudachi / azooKey)と校正ルール(prh)が compiler/compile_dict.py で生成され、同じ辞書が校正でも「正しい表記」として効きます(登録表記ゆれ/文書内表記ゆれ)。/dict/reload で辞書の再読込。

かな漢字変換(ニューラル・GPU)も同じ脳から叩けます。登録した固有名詞は変換にも効きます。

docker compose --profile gpu up -d convert      # zenz を GPU で起動
curl -s http://127.0.0.1:8077/convert \
  -H 'content-type: application/json' \
  -d '{"reading":"ぼくはゆきがだいすきです"}'
# → {"converted":"僕はユキが大好きです"}   ← 辞書に登録した「ユキ」が変換でも選ばれる

読み忠実モード(読みを構造的に破らない)— "faithful": true を付けると、azooKey Zenzai のラティス変換convert-faithful サービス)を使います。

docker compose up -d convert-faithful   # Swift Zenzai ラティス(CPU)
curl -s http://127.0.0.1:8077/convert \
  -H 'content-type: application/json' \
  -d '{"reading":"けんとゆきはなかよし","faithful":true}'
# → {"converted":"ケンとユキは仲吉","faithful":true,"engine":"lattice"}
  • model-only(GPU, 速度優先):概ね正確、稀に読みを破る → 読み忠実ゲートで検出
  • faithful(CPU, Zenzai ラティス):候補の読み連結=入力カナのみ採用=読み忠実を構造的に保証。登録固有名詞は lattice に自動注入。

常駐トレイアプリ(最終形・v0.1.0)

GNOMEのトップバーに常駐し、ローマ字 → 変換/校正をどのアプリでも。

# 1) 脳とエンジンを起動(校正 + ハイブリッド変換 + 読み忠実lattice)
docker compose --profile gpu up -d

# 2) 常駐トレイを起動(※ VS Code 内蔵端末ではなく通常の端末で。snap環境だとGTKが壊れます)
./tray/run.sh

トップバーのアイコン → 変換… にローマ字(例 bokuhayukigadaisukidesu)→ 変換 → 「僕はユキが大好きです」→ コピー校正… で表記ゆれ等を検出。読み忠実保証(lattice) にチェックで純ラティス変換。

  • 自動起動:cp tray/lnaime-tray.desktop ~/.config/autostart/
  • 必要環境:GNOME/Wayland(AppIndicator対応)、python3-gi / gir1.2-ayatanaappindicator3-0.1 / wl-clipboard

ライセンスと注意

  • 校正の規範には、著作権フリーの内閣告示・JTFスタイル・prh 公開辞書を用います。商用の用語集(各社レギュレーション)は同梱せず、利用者が自分の辞書をインポートする設計です。
  • 変換器 zenz の重みおよびデータセットは CC-BY-SA-4.0(派生物の再配布には継承条件があります)。

クレジット

Lna-Lab(ケン & YUKI)開発。 先行実装の azooKey / Zenzai、WorksApplications Sudachitextlint / prh コミュニティに深く敬意を表します。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors