PHAMSサーチエンジンの設計にあたって最も根本にあたる、各音素間の類似度についての参考文献をまとめる。音素間の類似度は、Phonetic Similarityというキーワードである程度まとまった数の論文が見つかった。

その中でも特に以下の論文が、関連分野全体を俯瞰する内容で、非常に役に立った。

Brett Kessler, “Phonetic Comparison Algorithms“, Transactions of the Philological Society, 2005

単語間の音の類似度については、これまであまり研究されていなかった、標準的な方法がまだ確立されていないということがまず書かれている。

Phonetics Similarityと一口に言っても、スピーチの音響的な特性の距離、調音(発音するときの舌の位置、のどの動かし方など) の仕方の距離、認知的な距離、実際の言語のコンテクストの中での距離、歴史的な距離.. どれを測るかによって大きく異なってくる。これまでの研究例をみると調音の距離を使うことが多いようだ。

まず簡単な例としては、音が同じかどうかによって0, 1のスコアを音列にあたえるBinary比較がある。非常に原始的にみえるが、対象とする問題が連続的ではない場合(似ているかどうかを判定するような場合)、より複雑な方法に比べてよい成績をあげるらしい。ただし、当然ながら、どの音とどの音を同じ音としてみるかという別の問題が付随してくる。たとえば、

- 子音を10個のカテゴリーに分類。同じカテゴリーに属するものに1をあたえるといった方法

- さらに有声/鼻音の区別を考慮する方法

もう少し複雑な例としては、調音の特徴を数値化する方法がある。

両唇音(1)から 唇歯音(2)… 声門音(7)までそれぞれ数値を与える。たとえば、/k/のような軟口蓋音(6)と口蓋音(5) /c/は近いが、軟口蓋音と両唇音/p/は大きく異なるといった数量化がなされている。(整数の番号付けにどれくらい意味があるのか疑問? 両唇音と唇歯音の差は、軟口蓋音と口蓋音の差と同じなのか??) さらに、音素の特徴をベクトル量として表し、その距離を測る方法が研究されている。ただし、Binary比較との性能の差は(応用分野にもよるが)それほど大きくはないようだ。

音列内での音素の位置による重みづけも必要。たとえば、同語族を調べたいときには第一音節のが同じであることが非常に重要になる(らしい)。そうした場合には、第一音節の違いに重みをつけることで、より目的に近い答えが得られる。音列全体の比較には、Levenshtein距離を使うのが標準的 (これに関しては別項に改めてまとめる)。

(追記: データベースの世界では、異なるスペルで発音の似た単語(たとえば、SmithとSmyth)を探すための簡単なアルゴリズムが広く使われているようだ。代表的なものとしては、次がある。

Soundex

Metaphone

いずれも英語のスペルに特化している、類似の判定が大雑把という問題があり今回のプロジェクトの用途にはそぐわない。)

Phonethicaは、インタラクティブなシステムを目指しているため、ユーザのクエリーに対して即座に(少なくともユーザがストレスを感じない程度の間に)答えを返すというリアルタイム性が要求される。そのため、検索の精度を多少犠牲にすることもやむをえない。実際にどういったアルゴリズムを採用するかは今後の実験にもよるが、まずは単純に各音素をBinary的に比較し、Levenshtein距離をとる方法を試すことにする。

* 以上は言語学/音声学/音韻学については全くの素人が書いているため、誤った記述が含まれている可能性が多分にあります。詳しい方に間違いを指摘していただけると幸いです。

(徳井)


No Responses to “Phonetic Similarity”  

  1. No Comments

Leave a Reply