Skip to content

誤変換かな?と思ったら

Tokuhiro Matsuno edited this page Jan 16, 2023 · 5 revisions

大前提として、かな漢字変換エンジンは、完全にユーザーがほしい結果を常に出せるわけではありません。同音異義語などが多数あるからです。 とはいえ、チューニングによって精度を上げられる余地はもちろんあります。以下ではチューニングの方法について述べます。

ユーザー辞書による誤変換でないかを確認する

ユーザー辞書による学習によるものの可能性があります。

cd akaza-data/ && make && cargo run -- check せんたくもの のようにして、検索結果がユーザー辞書によるものではないことを確認してください。

対応方法

ある単語が他の単語より優先されるべきだ、という場合

少ない言語資源を元に統計データをとっている関係上、Wikipedia では数多くでてくるが一般的な日本語での発現頻度とは違うな、と感じるケースが多々あります。 たとえば は Wikipedia では多数出ますが一般的には「今日」のほうがよく出るでしょう。

このように、Wikipedia コーパスベースのコストがおかしいという場合は↓このへんをいじってください。

https://github.com/tokuhirom/akaza/blob/master/akaza-data/src/subcmd/make_stats_system_unigram_lm.rs#L77

「Wikipedia コーパスベースのコストが一般的な現代日本語書き言葉と乖離がある」と判断するにはどうすればよいのでしょうか。

国立国語研究所 の提供している 現代日本語書き言葉均衡コーパス(BCCWJ) の少納言を利用すれば、用例の数がすぐにわかります。

BCCWJ で「今日」は 36178 件、「卿」は 1633 件なので、「今日」のスコアが高いのは妥当である、と判断できます。

同形異音語がある単語が候補に出ない

たとえば "日本"というワードに対して、mecab, vibrato などの形態素解析機は常に同じ読みを返します。"日本/にほん" ばっかり帰ってくるので、"日本/にっぽん"の方はスコアがつかないということになります。

ここは手でチューニングする必要があります。↓このへんに同系異音語辞書がありますから、登録してください。

https://github.com/tokuhirom/akaza/blob/master/akaza-data/src/subcmd/make_stats_system_unigram_lm.rs#L57

形態素解析に失敗している

ipadic での形態素解析に失敗していてスコア付与に失敗しているケースもあります。 現在、ipadic を利用しているのであたらしめの単語は形態素解析器に登録されていないことがあるので、単語の登録を行うと良いです。

https://github.com/tokuhirom/akaza/blob/master/akaza-data/mecab-user-dict.csv

メモ

↑コードの特定の場所を指定させるよりも、ちゃんと CSV ファイルかなにかにかけるようにした方がよい。