Yet another kana-kanji-converter on IBus, written in Rust.
統計的かな漢字変換による日本語IMEです。 Rust で書いています。
現在、開発途中のプロダクトです。非互換の変更が予告なくはいります
- akaza-default-model - デフォルト言語モデル
- jawiki-kana-kanji-dict - Wikipedia ベース SKK 辞書
いじりやすくて ある程度 UIが使いやすいかな漢字変換があったら面白いなと思ったので作ってみています。 「いじりやすくて」というのはつまり、Hack-able であるという意味です。
モデルデータを自分で生成できて、特定の企業に依存しない自由なかな漢字変換エンジンを作りたい。
- Rust で実装: UI/Logic をすべて Rust で書いてあるので、拡張が容易です
- 統計的かな漢字変換: 2gram 言語モデルを採用
- 言語モデルの生成元は日本語 Wikipedia と青空文庫です
- 形態素解析器 Vibrato で分析した結果をもとに構築
- 利用者の環境で 1 から言語モデルを再生成することが可能です
- 学習機能: ユーザー環境で、利用者の変換結果を学習します (unigram, bigram の頻度を学習)
- GUI 設定ツール: GTK4 ベースの設定ツールを提供
akaza-conf: キーマップ、辞書、モデルなどの設定akaza-dict: ユーザー辞書の編集
- SKK 辞書対応: SKK 形式の辞書ファイルを複数読み込み可能
- ibus 1.5+
- marisa-trie (libmarisa)
- GTK 4.0+ (設定ツール用)
- Rust 1.92.0+ (stable toolchain)
- Cargo
- pkg-config
- clang
- libibus-1.0-dev
- libmarisa-dev
- libgtk-4-dev
- libgirepository1.0-dev
- OS: Linux 6.0 以上
- IBus: 1.5 以上
Ubuntu/Debian の場合:
sudo apt-get update
sudo apt-get install ibus libgirepository1.0-dev libmarisa-dev clang libibus-1.0-dev libgtk-4-dev pkg-configcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup install stablegit clone https://github.com/akaza-im/akaza.git
cd akaza
make
sudo make installmake install により、モデルファイル(akaza-default-model)のダウンロードとインストールも自動で行われます。
ibus restart
ibus engine akazaまたは、IBus の設定画面から Akaza を追加してください。
インストール後、以下のコマンドで GUI 設定ツールを起動できます:
# 一般設定(キーマップ、辞書、モデルなど)
akaza-conf
# ユーザー辞書の編集
akaza-dictGUI ツールを使用すると、キーマップの選択、SKK 辞書の追加、モデルの切り替えなどが簡単に行えます。
設定ファイルは ~/.config/akaza/config.yml に保存されます。
Akaza は典型的には以下の順番で探します。
~/.local/share/akaza/keymap/{KEYMAP_NAME}.yml/usr/local/share/akaza/keymap/{KEYMAP_NAME}.yml/usr/share/akaza/keymap/{KEYMAP_NAME}.yml
このパスは、XDG ユーザーディレクトリ
の仕様に基づいています。
Akaza は Keymap を XDG_DATA_HOME と XDG_DATA_DIRS から探します。
XDG_DATA_HOME は設定していなければ ~/.local/share/ です。XDG_DATA_DIRS は設定していなければ /usr/local/share:/usr/share/ です。
ローマ字かなマップも同様のパスから探します。
~/.local/share/akaza/romkan/{ROMKAN_NAME}.yml/usr/local/share/akaza/romkan/{ROMKAN_NAME}.yml/usr/share/akaza/romkan/{ROMKAN_NAME}.yml
設定変更は akaza-conf の GUI で行うことを推奨します。
Model は複数のファイルからなります:
unigram.modelbigram.modelSKK-JISYO.akaza
以下のパスから読み込まれます:
~/.local/share/akaza/model/{MODEL_NAME}/unigram.model~/.local/share/akaza/model/{MODEL_NAME}/bigram.model~/.local/share/akaza/model/{MODEL_NAME}/SKK-JISYO.akaza
keymap, romkan と同様に、XDG_DATA_DIRS からも読むことができます。
流行り言葉が入力できない場合、jawiki-kana-kanji-dict の利用を検討してください。 Wikipedia から自動的に抽出されたデータを元に SKK 辞書を作成しています。 Github Actions で自動的に実行されているため、常に新鮮です。
一方で、自動抽出しているために変なワードも入っています。変なワードが登録されていることに気づいたら、github issues で報告してください。
必要な SKK 辞書を読み込んでください。
GUI での設定(推奨):
akaza-confを起動- 「辞書」タブから SKK 辞書ファイルを追加
手動での設定:
~/.config/akaza/config.yml の skk_dicts セクションに辞書パスを追加してください。
利用可能な SKK 辞書: https://skk-dev.github.io/dict/
このリポジトリは以下のクレートで構成されています:
- ibus-akaza: IBus エンジン本体
- libakaza: かな漢字変換エンジンのコアロジック
- akaza-conf: GUI 設定ツール (GTK4)
- akaza-dict: GUI 辞書編集ツール (GTK4)
- akaza-data: 言語モデル生成ツール
- ibus-sys: IBus の Rust バインディング
# すべてのクレートをビルド
cargo build --workspace
# リリースビルド
cargo build --workspace --release
# テスト実行
cargo test --workspacecargo fmt --allcargo clippy -- -D warningsMIT License
- ibus-uniemoji を参考に初期の実装を行いました
- 日本語入力を支える技術 を読み込んで実装しました。この本がなかったら実装しようと思わなかったと思います
- 形態素解析器 Vibrato を使用しています