相互情報量!自然言語処理で類似度を計算!

こんにちは!
IT企業に勤めて、約2年間でデータサイエンティストになったごぼちゃん(@XB37q)です!

このコラムでは、自然言語処理で使用する単語同士の類似度を計算する指標を紹介します!

単語同士の類似度とは

自然言語処理では、単語同士の類似度を計算することにより、ある単語とある単語が類似しているかどうかを判断する場合があります。
例えば、「PC」と「パソコン」のように、類似している意味の単語を判断することにより、検索エンジンを効率化することなどに使うことが出来ます。

上記の類似度を計算する指標は複数ありますが、1番優れている指標は一概に存在しません。
それぞれの指標を踏まえて、場面によって指標を使い分けることが必要です!

この投稿では、コサイン類似度と相互情報量の2種類を紹介します。

コサイン類似度

コサイン類似度はコサイン距離とも呼ばれ、角度を計算して、類似度を計算する指標です。

コサイン距離については、他コラム「計算方法も解説!AIで使う距離5選!ユークリッド距離、コサイン距離、マハラノビス距離、マンハッタン距離、チェビシェフ距離」で紹介しています。

相互情報量

高頻度単語は共起回数が多くなる
高頻度単語は共起回数が多くなる

コサイン類似度は、2つの単語が共起した回数から類似度を計算します。
しかし、“生” の共起した回数で類似度を計算すると、「高頻度単語はどの単語とも類似度が高くなる」という欠点が発生します。

上記の問題を解決するため、相互情報量(Pointwise Mutual Information)と呼ばれる指標が存在します。

相互情報量は下記の式で定義されます。

相互情報量(PMI)
相互情報量(PMI)

P(x)はxが起こる確率、P(y)はyが起こる確率を表し、P(x,y)はxとyが同時に起こる確率を表します。
相互情報量は値が高いほど関連性が高いことを表す指標です。

相互情報量の例

相互情報量(PMI)の計算例
相互情報量(PMI)の計算例

全単語数N:10,000回
the:1,000回
car:20回
drive: 10回
theとcarの共起:10回
carとdrive:5回

PMIを用いることにより、「car」は「the」と比較して「drive」のほうが関連性を持つ結果になりました。

相互情報量の欠点

正の相互情報量(PPMI)
正の相互情報量(PPMI)

2つの単語で共起する回数が0の場合、log20=-∞となってしまうため、正の相互情報量が使われることもあります。

まとめ

  • “生” の共起回数の欠点
    • 類似度を計算すると、「高頻度単語はどの単語とも類似度が高くなる」という欠点
  • 相互情報量
    • 値が高いほど関連性が高いことを表す指標
    • 2つの単語で共起する回数が0の場合、log20=-∞となってしまうため、正の相互情報量が使われる

参考書籍