Akaza のデフォルトのモデルデータ及び辞書データの作成レポジトリです。
Akaza を利用する上では、ユーザーは自分でビルドする必要はありません。 Github Releases からビルド済みファイルを取得してください。
自分でビルドしたい場合は以下のようにしてビルドできます。
make
GitHub Releases で配布しています。CalVer (YYYY.MMDD.PATCH) を採用しています。
例: v2026.0201.1
v* タグを push すると GitHub Actions が自動的にモデルをビルドし、akaza-default-model.tar.gz と akaza-kana-preferred-model.tar.gz を Release に添付します。
- wikiextractor
- python3
- wget
- rust
- 日本語版 wikipedia の jawiki-latest-pages-articles.xml.bz2 を取得
- bunzip2 で伸長
- wikiextractor で text/ 以下に展開する
- tokenize 処理する
- wfreq(単語の頻度ファイル)を作成する
- vocab(高頻度で出ている単語ファイル)を作成する
- unigram の単語頻度情報ファイルを作成する
- bigram の単語頻度情報ファイルを作成する
- skip-bigram(1語飛ばし bigram)の単語頻度情報ファイルを作成する
- コーパスの情報で補正する(Wikipedia/青空文庫をソースにしている関係上、偏りが強いため一般的に利用されるかな漢字変換エンジンとしてふさわしいように補正しています)
- システム辞書を作成(Akaza のシステム辞書は、コーパスに含まれる複合語を利用するためにつけているものであって、これだけで十分に変換ができるように設計されているわけではありません。SKK-JISYO.L などと併用することを想定しています)
漢字/よみ の形式でスペース区切り。;; で始まる行はコメント。
渡せない/わたせない のね/のね
僕/ぼく の/の 主観/しゅかん では/では そう/そう です/です
各単語が 表層形/読み のペアで、文全体がスペースで区切られています。
コーパスに書かれた単語はシステム辞書にも自動的に登録されます。
Vibrato (MeCab互換) のユーザー辞書 CSV フォーマット。トーカナイズに失敗する単語を追加します。
令和,1288,1288,5904,名詞,固有名詞,一般,*,*,*,令和,レイワ,レイワ
フィールド: 表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音
SKK 辞書形式。SKK-JISYO.L に含まれない語彙を登録するためのもの。
きめつのやいば /鬼滅の刃/
かなにゅうりょく /かな入力/仮名入力/
フォーマット: よみ /候補1/候補2/.../(複数候補はスラッシュ区切り)
anthy-unicode 由来の評価用データ。各行は |区切りの読み列と漢字列のペア。
|さとう|」|です| |佐藤|」|です|
|あいての|ほうが|さきに|はんだんを|くだしていた| |相手の|方が|先に|判断を|下していた|
前半が読み(ひらがな)、スペースを挟んで後半が期待される変換結果。各文節は | で区切り。
corpus.4.txt は誤変換を収めたものなので評価には使いません。
marisa-trie 形式のデータです。1gram, 2gram のデータが素直に格納されています。
フォーマットは、2gram の場合は以下のようになっています。
愛/あい\tは/は => -0.525252
浮動小数点数がスコアです。このスコアは、n-gram の確率の -log10 です。
marisa-trie 形式の skip-bigram(1語飛ばし bigram)データです。隣接する2単語ではなく、1語飛ばした単語ペア (w_{i-2}, w_i) の共起頻度を格納しています。
Viterbi DP の段階で grandparent ノードを参照し、skip-bigram コストを加算することで、隣接 bigram だけでは判別できない同音異義語の解消を補助します。例えば「夏は暑い」と「板は厚い」のように、助詞を挟んだ共起関係を捉えることができます。
ビルドで生成されるシステム辞書。dict/SKK-JISYO.akaza、コーパスの語彙、vibrato の vocab から、SKK-JISYO.L に含まれる語彙を除いたものが登録されます。フォーマットは dict/SKK-JISYO.akaza と同一です。
学習データの制約やモデルの原理的な限界については ルート README の「現状の制約」セクション を参照してください。
変換候補がそもそも出てこない場合は、辞書を追加してください。
SKK-JISYO.L や SKK-JISYO.jinmei などの、SKK の公式の辞書を設定に追加して解決すればそれが良いです。
芸能人の名前などの固有名詞が出てこない場合は、jawiki-kana-kanji-dict を追加してください。
Akaza のデフォルトモデルは、Wikipedia/青空文庫に含まれる表現の統計情報を利用している関係上、それらに含まれない表現にはどうしても齢です。特に口語表現には弱い部分があります。
変換できない表現があった場合は、コーパスに追加することで対応できます。
training-corpus/should.txt に追加の PR を送ってください。 書き方は training-corpus/README.md に書いてあります。
複合語化が可能な場合は、複合語として辞書に登録してください。
vibrato がトーカナイズに失敗してるな、と思った場合は mecab-user-dict.csv に単語を追加する PR を送ってください。
make evaluate による anthy-corpus に対する再現率の推移。
| 日付 | 再現率 | Good | Bad | 備考 |
|---|---|---|---|---|
| 2026-02-11 | 93.27% | 6719 | 3930 | skip-bigram 活用コーパスチューニング: 気/木, 資料/飼料, 機能/昨日, 身/見, 再/賽, 取/撮, 暑/厚/熱 |
| 2026-02-11 | 93.20% | 6657 | 4002 | corpus-stats v2026.0211.1: skip-bigram trie 同梱 + learn-corpus skip-bigram 学習 |
| 2026-02-11 | 93.11% | 6615 | 4039 | skip-bigram Viterbi DP 統合 (weight=0.2)、デフォルトコスト導入 |
| 2026-02-11 | 92.718% | 6428 | 4179 | corpus-stats v2026.0211.0: <NUM> トークン正規化(suffix-only)導入 |
| 2026-02-10 | 92.755% | 6457 | 4154 | corpus-stats v2026.0210.2: CC-100 重み付き統合 (weight=0.3) |
| 2026-02-10 | 92.170% | 6141 | 4381 | 変換不具合修正: オフ/オン/各ファイル/含まれてないか/こうなってて |
| 2026-02-09 | 92.178% | 6153 | 4370 | BAD 300件分類: accept.tsv +62, may.txt +30群, should.txt +12群, 辞書+3 |
| 2026-02-09 | 92.135% | 6132 | 4412 | BAD 200件分類: homophone 51組 may.txt, 口語崩壊/慣用句 should.txt, 表記揺れ accept.tsv, 退行修正(煮/診/聴/狩) |
| 2026-02-09 | 92.066% | 6097 | 4471 | BAD 100件分類: homophone 30組 may.txt, 口語崩壊/慣用句 should.txt, 表記揺れ accept.tsv |
| 2026-02-09 | 92.079% | 6119 | 4446 | 口語崩壊修正(使いもの/そういや)+bigram強化(ダウ/再/私用/党籍)+accept/ignore評価フィルタ追加 |
| 2026-02-08 | 91.646% | 5962 | 4630 | かね/よね/使用/以外/行って/ますね/ないん/時頃 パターン追加 |
| 2026-02-07 | 91.293% | 5713 | 5352 | qq.txt/op.txt 分析、分節解析補強、ましょう/飼いたい 等 |
| 2026-02-07 | 91.367% | 5749 | 5316 | 同音異義語の bigram 補強(2)(そう/総、正規/世紀、期待/機体 等) |
| 2026-02-07 | 91.274% | 5669 | 5396 | 同音異義語の bigram 補強(気/木、昨日/機能、各/書く 等) |
| 2026-02-07 | 91.227% | 5643 | 5422 | should.txt に口語・日常表現を追加 |
| 2026-02-07 | 91.150% | 5606 | 5459 | コーパスにハードコードハック代替エントリを追加 |
Akaza は単語 bigram に加えて、skip-bigram(1語飛ばし bigram)を Viterbi DP に統合しています。 これにより、隣接する2単語だけでなく、1語飛ばした単語ペアの共起関係も考慮されます。
例えば「夏/は/暑い」と「板/は/厚い」のように、助詞を挟んだ共起関係を捉え、同音異義語の解消を補助します。