あなたの名前、認識されますか?
1.辞書にない名前は認識できない
音声認識を使われたことがおありでしょうか? 近頃は、テレビなどで目にする機会も多くなりました。CMなどにも使われているように「あなたに頂いたべったら漬け、とてもおいしかった。」とマイクに向かって話すと、コンピュータの画面にかな漢字混じりの文が表示される連続音声認識技術は、最近身近な生活にも入り込んできました。目新しさや物珍しさが先行し、アミューズメント的なユーザインタフェースとして急速に広まった感もある音声認識ですが、実用化に際しては、解決しなければならない課題も数多く残されています。そうした課題の一つに未登録語の問題があります。
未登録語とは、文字どおり、辞書に登録されていない単語のことです。音声認識では通常、単語をその読みとともに「単語辞書」に格納し、単語に基づく処理を行っています。普段目にする音声認識結果は、かな漢字混じりの「文字」列ですが、実際には「単語」列として得られる認識結果を並べて表示したものです。音声認識が、文字ではなく単語を単位として行われる、という点が肝要です。つまり、音声認識とは、単語辞書に含まれる単語を並べて、音声との照合を行う処理に他なりません。この結果、1)単語並びの文法的な適切さと、2)並べた単語列の読みと入力音声との音響的な近さ、とを総合的に判断して、最適な単語並びを選んでいるのです。このことからも、未登録語は決して認識結果として得られないことがわかります。試しに認識させてみましょう。「名前はカトリシンゴです」。幸か不幸か、私たちの認識システムでは、カトリもシンゴも単語辞書に登録されていません。認識結果は、「名前はカトウ氏もです」となってしまいました。
もちろん、未登録語では困る単語なら、辞書に登録すれば済む話です。カトリやシンゴが認識されずに困るのなら、マウスをクリックしてキーボードを少し叩くだけで、苦もなく設定が終わるかもしれません。パーソナルユースの音声認識なら、さして問題とはならないでしょう。しかし、音声認識を実タスク上で運用し、サービスの自動提供を図るとなると話は違ってきます。特に、人名を始めとする固有名詞の類は、全てを網羅して辞書に登録しておくことは本質的に困難です。一方で、そうした固有名詞は、タスク達成上重要な情報であることが多く、未登録語の問題は深刻です。さらに悪いことには、音声認識では、未登録語が発声されたのか、それともたまたま発音の仕方が悪かっただけなのか、を識別することすら至難の業なのです。では、どうしたら未登録語の問題を解決できるのでしょうか?
こうした未登録語の問題は、単語が静的なリストとして格納されていることに起因すると考えられます。つまり、認識処理中に「適切な位置」に「適切な読み」を持つ単語を動的に生成することができれば、問題は解決されます。先ほどの認識失敗例「名前はカトウ氏もです」では、本来単語辞書にあるべきカトリとシンゴが登録されていなかったため正しく認識されなかったものでした。そこで、日本人姓でカトリという読みを持つ単語と、日本人名でシンゴという読みを持つ単語をそれぞれ生成して文中に埋め込んでみましょう。
「名前はカトリ(日本人姓) シンゴ(日本人名) です」埋め込んだ「位置の適切さ」は、「名前は(日本人姓)(日本人名)です」という並びが適切かどうかを、既存の認識文法で評価することができます。では、カトリやシンゴが日本人姓や名として「適切な読み」であるかを評価するにはどうしたらよいのでしょう。どんな読みが日本人の姓らしい、あるいは名らしい、といえるのでしょうか?
2.「名前らしさ」を特徴付ける要素
私たちが普段見聞きする日本人の姓や名は、その読み(振り仮名)に関して、次のような特徴が持つことが経験的に予測できます。
1. 長さに関する特徴: 姓ではスズキ、サトウ、タカハシなど、名では、タケシ、トオル、イチロウなど、振り仮名にして3〜4文字程度が一般的と思われます。
2. 読みの構成単位に関する特徴: 日本人の姓・名は基本的に漢字の並びで構成されるため、振り仮名にしたときにも、姓ではヤマ、ムラ、ナカなど、名ではロウ、イチ、ヒロといった単位が高頻度で見受けられると思われます。
これらの予測を統計的に裏付ける分析結果を以下に挙げておきます。いずれも、市販の人名辞典に掲載されている日本人姓・名、30万人分の読みと我々が収集した旅行会話中の延べ115万単語(日本人姓・名は除去)の読みとを比較したものです。
図1は単語の長さの分布を示しています。ここでは、長さの単位として「モーラ」数を使っています。モーラとは、概ね仮名書きしたときの一文字相当の単位です(ただし拗音ヒャ、ビャ、ピャなどは1モーラと数えます)。このグラフから、日本人姓・名の長さは、3、4モーラを中心に非常に偏った分布を取ることがわかります。3モーラと4モーラを合わせると、姓、名、ともに約9割の人名が該当することになります。
次に、図2は単語のモーラ並びに関する統計を示しています。ヤマ、ムラといった、高頻度の2モーラ連鎖を姓・名・旅行会話それぞれからN種類抽出したとき、それが、姓・名・旅行会話それぞれの単語で使われるモーラ並び全体に対し、どの程度の割合を占めているか調べたものです。例えば、日本人姓・名ともに、高頻度1000種類のモーラ2連鎖だけで、姓・名モーラ並び全体の8割以上を占めていることがわかります。
以上の結果から、日本人の姓・名の読みが、その長さと構成単位において、特徴的な傾向を持つことがわかりました。これらの特徴に基づいた読みのモデルを構築することで、読みの「日本人姓らしさ」「日本人名らしさ」を評価することが可能になります。
3.「名前らしさ」を評価するモデル
それでは、単語の読みの「日本人姓らしさ」「日本人名らしさ」を評価するモデルを作ってみましょう。それぞれ、姓の読みモデル、名の読みモデル、と呼ぶことにします。モデルの構築には、先ほど分析に用いた30万人の日本人姓・名リストを用います。このリストを用いるのは、30万人の統計を求めるためではなく、そこに無い姓・名に対しても一般化できそうな読みの統計的傾向を知識として抽出するためです。30万人集めても無い姓・名はたくさんあるのですから!
名の読みモデルは、ある単語が日本人名であったとき、その読みが、例えばシンゴとなる確率を評価するモデルです(姓の読みモデルも同様)。この確率は、次の二つの確率の積で求めることができます。1)日本人名の読みが3モーラとなる確率、2)3モーラの日本人名の読みが、実際にシンゴという並びになる確率。
1)の確率を推定するには、図1の頻度分布を直接用いることも可能ですが、ガンマ分布という確率分布に置き直すことで、データ量に対する信頼性を高くすることができます。ガンマ分布は、正規分布に代表される連続分布の一種です。正規分布の定義域が(-∞,
∞)であるのに対し、ガンマ分布の定義域は(0, ∞)となります。
一方、2)の確率の推定には、N-gramと呼ばれる確率モデルを用いることで、少ないデータからも比較的良い近似値を得ることができます。N-gramでは、系列中でシンボルが生起する確率を、直前のN-1個のシンボル系列から推定します。系列全体としての生起確率は、各シンボルに対するN-gram確率の積で求められます。ところで、日本人姓・名の読みには、それぞれに典型的な構成単位があることは前述のとおりです。そこで、シンゴの場合は「シ、ン、ゴ」とせず、「シン、ゴ」のようなシンボル系列としてN-gram化することで優れたモデルを構築できることが実験からもわかっています[1]
。
実際にこの方法で構築した姓・名の読みモデルを用いて音声認識実験を行ったところ、単語辞書に登録して認識した場合とほぼ同じ精度で、未登録語である日本人姓・名の読み、姓・名の区別、位置、を正しく同定できることがわかりました[2]
。さらに、この方法で同定された未登録語は、読みとカテゴリ(姓、名)がわかるため、登録語と同等に翻訳を行うことが可能になりました。もはや、コンピュータがカトリシンゴ君を知っているか心配する必要はなくなりそうです。
4.おわりに
音声認識において、辞書に無い単語を認識するための手法を紹介しました。この方法は、事前に全てを列挙することが困難な固有名詞に対して有効と考えられます。今後、姓・名以外の未登録語を始め、略語、造語なども認識できるよう、さらなる研究を進めていく予定です。
Copyright(c)2002(株)国際電気通信基礎技術研究所