2020年9月7日月曜日

IPAdic から頻出熟語を生成してみた

以前作った熟語ジェネレーター は、n-gram ベースでした。 他の作り方として IPAdic を使った方法もわかっていたので、作ってみました。

実際に作ってみた結論としては、
  1. IPAdic には読みデータが付いているメリットがある
  2. IPAdic のほうが低頻度領域のノイズは強い
  3. その一方で頻度分布自体が不正確なので n-gram のほうが利用しやすい
  4. カタカナ熟語は IPAdic だとやや不安定
  5. カタカナ熟語は IPAdic だとインターネット語に弱い
4 はわかりにくいので例を挙げます。 例えば「カタログ」で grep を掛けると、「カタログプロシージャ」「カタログデータ」などがヒットします。 これは熟語として使えるかというと、正直使いにくいと思います。 データとかプロシージャといった言葉はあらゆる単語に連接可能だからです。 つまりカタカナ熟語の生成は IPAdic を使っても微妙で、目視できちんと排除するしかありません。 このとき頻度情報が問題で、よく使うような熟語のコスト値も 3999 (低頻度) に分類されてしまっています。 n-gram 方式のように、頻度順に目視で対処というのが難しくなってます。 よって用例も多く、正確な頻度順にまとまっている n-gram 方式のほうが扱いやすそうという結論になります。

漢字に関しては、生成されたデータを目視で確認した限り、数が多ければ IPAdic でも問題ありません。 ただ数が少なくなってくると IPAdic はあまり使わない熟語が生成されやすい傾向は見て取れ、データ量の少なさによって生じる頻度問題を感じます。 n-gram 方式のほうがより良い熟語が取れるように思います。 とはいえ IPAdic には読みが付いているメリットがあるので、読みを活用したい場合には IPAdic が良さそうです。

まー n-gram に Mecab などで読みを付与する方法もあるとは思うんですが、エラー訂正面倒なので…。 それやるともはや形態素解析器の重み計算をやり直すようなものなので、今回はパス。 ちなみに IPAdic / n-gram どちらの場合もフィルターを付けないと、熟語として使いにくいことは変わりません。 これは n-gram からの熟語生成 と同様のフィルターを流用すると、いい感じでした。

IPAdic を使った熟語生成も コードを公開 しました。

0 件のコメント: