Skip to content

Latest commit

 

History

History

README.md

akaza-default-model

What's this?

Akaza のデフォルトのモデルデータ及び辞書データの作成レポジトリです。

How to build this?

Akaza を利用する上では、ユーザーは自分でビルドする必要はありません。 Github Releases からビルド済みファイルを取得してください。

自分でビルドしたい場合は以下のようにしてビルドできます。

make

リリース

GitHub Releases で配布しています。CalVer (YYYY.MMDD.PATCH) を採用しています。

例: v2026.0201.1

v* タグを push すると GitHub Actions が自動的にモデルをビルドし、akaza-default-model.tar.gzakaza-kana-preferred-model.tar.gz を Release に添付します。

Dependencies

  • wikiextractor
  • python3
  • wget
  • rust

How it works?

  1. 日本語版 wikipedia の jawiki-latest-pages-articles.xml.bz2 を取得
  2. bunzip2 で伸長
  3. wikiextractor で text/ 以下に展開する
  4. tokenize 処理する
  5. wfreq(単語の頻度ファイル)を作成する
  6. vocab(高頻度で出ている単語ファイル)を作成する
  7. unigram の単語頻度情報ファイルを作成する
  8. bigram の単語頻度情報ファイルを作成する
  9. skip-bigram(1語飛ばし bigram)の単語頻度情報ファイルを作成する
  10. コーパスの情報で補正する(Wikipedia/青空文庫をソースにしている関係上、偏りが強いため一般的に利用されるかな漢字変換エンジンとしてふさわしいように補正しています)
  11. システム辞書を作成(Akaza のシステム辞書は、コーパスに含まれる複合語を利用するためにつけているものであって、これだけで十分に変換ができるように設計されているわけではありません。SKK-JISYO.L などと併用することを想定しています)

データフォーマット

training-corpus/*.txt (学習コーパス)

漢字/よみ の形式でスペース区切り。;; で始まる行はコメント。

渡せない/わたせない のね/のね
僕/ぼく の/の 主観/しゅかん では/では そう/そう です/です

各単語が 表層形/読み のペアで、文全体がスペースで区切られています。 コーパスに書かれた単語はシステム辞書にも自動的に登録されます。

mecab-user-dict.csv (MeCab ユーザー辞書)

Vibrato (MeCab互換) のユーザー辞書 CSV フォーマット。トーカナイズに失敗する単語を追加します。

令和,1288,1288,5904,名詞,固有名詞,一般,*,*,*,令和,レイワ,レイワ

フィールド: 表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音

dict/SKK-JISYO.akaza (ベースシステム辞書)

SKK 辞書形式。SKK-JISYO.L に含まれない語彙を登録するためのもの。

きめつのやいば /鬼滅の刃/
かなにゅうりょく /かな入力/仮名入力/

フォーマット: よみ /候補1/候補2/.../(複数候補はスラッシュ区切り)

anthy-corpus/*.txt (評価用コーパス)

anthy-unicode 由来の評価用データ。各行は |区切りの読み列と漢字列のペア。

|さとう|」|です| |佐藤|」|です|
|あいての|ほうが|さきに|はんだんを|くだしていた| |相手の|方が|先に|判断を|下していた|

前半が読み(ひらがな)、スペースを挟んで後半が期待される変換結果。各文節は | で区切り。 corpus.4.txt は誤変換を収めたものなので評価には使いません。

bigram.model, unigram.model (生成物)

marisa-trie 形式のデータです。1gram, 2gram のデータが素直に格納されています。

フォーマットは、2gram の場合は以下のようになっています。

愛/あい\tは/は => -0.525252

浮動小数点数がスコアです。このスコアは、n-gram の確率の -log10 です。

skip_bigram.model (生成物)

marisa-trie 形式の skip-bigram(1語飛ばし bigram)データです。隣接する2単語ではなく、1語飛ばした単語ペア (w_{i-2}, w_i) の共起頻度を格納しています。

Viterbi DP の段階で grandparent ノードを参照し、skip-bigram コストを加算することで、隣接 bigram だけでは判別できない同音異義語の解消を補助します。例えば「夏は暑い」と「板は厚い」のように、助詞を挟んだ共起関係を捉えることができます。

data/SKK-JISYO.akaza (生成物)

ビルドで生成されるシステム辞書。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 を追加してください。

Wikipedia に出てこないような用例を追加したい

Akaza のデフォルトモデルは、Wikipedia/青空文庫に含まれる表現の統計情報を利用している関係上、それらに含まれない表現にはどうしても齢です。特に口語表現には弱い部分があります。

変換できない表現があった場合は、コーパスに追加することで対応できます。

training-corpus/should.txt に追加の PR を送ってください。 書き方は training-corpus/README.md に書いてあります。

Wikipedia に入っているはずなのにうまく変換できない。

複合語化が可能な場合は、複合語として辞書に登録してください。

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 コーパスにハードコードハック代替エントリを追加

skip-bigram による共起情報の活用

Akaza は単語 bigram に加えて、skip-bigram(1語飛ばし bigram)を Viterbi DP に統合しています。 これにより、隣接する2単語だけでなく、1語飛ばした単語ペアの共起関係も考慮されます。

例えば「夏/は/暑い」と「板/は/厚い」のように、助詞を挟んだ共起関係を捉え、同音異義語の解消を補助します。