とても「?」問題



1.コンピュータに言葉を教える
 タイトルを読まれて???と思われた方がほとんどだと思います。その上いきなりみなさんに問題です。次の「?」の部分にはどんな言葉が入るでしょうか。
 1.とても 「?」
 2.「?」 問題
いかがでしょうか。いくつかの言葉を思い浮かんだと思います。では続いて、
 3.とても 「?」 問題
1.の答えとしては「美しい」、「大きい」、「難しい」など、2.の答えとしては「環境」、「この」、「難しい」などがあてはまります。3.の答えは簡単ですね。1.と2.の両方にあてはまるものということになります。
 この問題は音声認識で必要な言葉と言葉のつながりを表す情報の使い方を表しています。人間は音声を聞き取るとき、もしうまく聞き取れない部分があったとしても、前後の言葉から推測してうまく補います。上の3.の例でいえば、「?」の部分がうまく聞き取れなかったとしても「難しい」(あるいは「やさしい」)という具合に補えるでしょう。そして、コンピュータに音声を聞き取らせるときもこれと同じようなことが利用できます。つまり、「とても」の後にはどんな言葉がどの程度くるかとか、「問題」の前にはどんな言葉がどの程度くるかという知識(これを言語モデルと言います)をあらかじめコンピュータに教えこませておいて、それを利用するわけです。

2.言葉と言葉のつながりをうまく表す
 それではコンピュータに教えておく言葉の知識としてはどんなものが良いでしょうか。以前音声認識で良く用いられていた知識として文法がありました。しかしながら、まず人間が文法を考えてやらなければなりません。書き言葉ならばともかく、話し言葉では非常にさまざまな言い回しが現われますので、その文法を正確に記述することは専門家の間でさえ非常に難しい問題です。そこで、これに代って最近よく用いられている方法として「単語N-gram」があります。ここで、Nは何個の言葉のつながりを考えるかを表し、隣どうしの言葉だけを考える場合はN=2なので、2-gramと言います。この方法は実際に書かれた、あるいはしゃべられた文からどの言葉の後(あるいは前)にどの言葉がどのくらい現われたかを調べることによって、言葉と言葉のつながりやすさを計るというものです。具体的には「とても」の後には「美しい」が100回、「難しい」が70回、「早い」が50回、という具合です。この場合「とても」の後には「美しい」がもっともつながりやすく、その次は「難しい」だということが数値で分かります。この方法の優れた点は、実際の文さえたくさん集めれば後は統計的に(つまり自動的に)行えるため、人手がかからないところです。
 しかしながら、この方法にも問題点があります。それは言葉と言葉のつながりを数値で表しているため、「言葉の数」×「言葉の数」だけの数値をコンピュータに教えておく必要があります。この数は言葉の数が千個の場合でも百万通りになってしまいますので、いくら最近のコンピュータのメモリが大きくなったからと言っても深刻な問題です。この問題を解決するための方法としては、つながり具合のよく似た言葉どうしをまとめて一つのグループとして(このグループを「クラス」と呼びます)グループ間のつながりで言葉どうしのつながりを表す「クラスN-gram」があります。この方法ですと、「単語N-gram」で必要だった「言葉の数」×「言葉の数」だけの数値は「クラスの数」×「クラスの数」という具合に大幅に減らすことができます。

3.言葉を効率よくグループ化する
 それでは言葉をどうやってグループ化すればうまくつながりを表すことができるでしょうか。よく用いられる方法は文法等で用いられる品詞、活用形に基づく方法です。しかしこの方法は二つの問題があります。
 一つ目は実はあまり効率の良いグループ化ではない、ということです。「とても」の後には「難しい」がつながりますが、同じように「難しく」も「難しけれ」もつながりますし、つながりやすさの点でも区別の必要はありません。ところが、これらは活用形が異なりますのでわざわざ別々のグループにする必要があり、余計な組み合わせを増やすだけの結果になります。今の例は後に来る言葉を予想する場合ですが、前に来る言葉を予想する場合でも同じことが起こります。「ば」の前に来る言葉としては「難しけれ」、「走れ」などが考えられます。しかしながらこれらはそれぞれ品詞が形容詞、動詞と異なるため別々のグループにする必要があります。本来、後に来る言葉を予想する場合には活用形は気にしなくても良く、前に来る言葉を予想する場合には活用形のみを気にすれば良いわけです。つまり後に来る言葉を予想する場合と前に来る場合ではグループ化の基準を変えた方が効率が良いことが分かります。そこで私たちはそれぞれの言葉を二つの(前と後の)グループに同時に所属させることを考えました。言い方を変えれば前と後の二つのクラスを持たせるということになります。このように従来一つだけだんだ所属クラスが複数になりますので、この複数のクラスのことを「多重クラス」、「多重クラス」を使ったN-gramのことを「多重クラスN-gram」と呼ぶことにしました。
 品詞、活用形に基づいたグループ化の二つ目の問題は言葉の意味によるつながりがうまく表せない点です。例えば「難しい」も「早い」も同じ形容詞ですが、「難しい問題」とは言いますが、「早い問題」とはほとんど言わないでしょう。「難しい」と「早い」を形容詞ということで同じグループにしてしまうと、もうこの違いが表現できません。このため、私たちは品詞情報ではなく、実際に文の中でどのような言葉が前(後)に現われたかに基づいてグループ化することにしました。この情報は実際に話された文から調べることができます。そして、同じ言葉に同じようにつながっている言葉どうしを同じグループにするわけです。この方法の利点はグルーピングを自動で(品詞情報の場合にそれぞれの言葉に品詞情報を人手で与えてやる必要があります)行えること、そして大まかなグループ化から細かなグループ化まで、グループの数を自由に決められるところにあります。
 この二つの方法を用いて作られた言葉のつながりの情報、すなわち言語モデルの性能を図1に示しました。横軸はクラス数、すなわちグループの数で、実際にコンピュータに覚えさせる値はこれの組み合わせである、クラス数の自乗になります。また、縦軸のPerplexityは言語モデルの性能を表す指標の一つで、次につながる平均的な言葉の異なりであり、その値が低いほど性能の良いモデルであることを示します。図1では「多重クラス2-gram」の他に比較の対象として従来の方法である「単語2-gram」と「品詞クラス2-gram」の結果を示してあります。また「単語2-gram」のクラス数は約7,000に相当します。この図から「多重クラス2-gram」が両者に比べて非常に小さく(400クラスで7,000クラス相当の単語2-gramと同じ)、良い性能の(品詞クラス2-gramの70%のPerplexity)モデルであることがお分かりいただけると思います。

4.長いフレーズを考慮する
 「多重クラス2-gram」は非常に性能の良いモデルですが、まだまだ問題はあります。それは話し言葉には決まった長いフレーズが良く現われます。ところが「多重クラス2-gram」は「2」という数字が表すように、隣どうしの言葉のつながりしかみていません。ですから、いくつかの言葉がつながったフレーズに対しては効果が期待薄です。そこで私たちは長いフレーズをあたかも一つの言葉のように取り扱うことによって、さらに「多重クラス2-gram」を拡張することを考えました。では、この長いフレーズの前にはどんな言葉が来やすいでしょうか。実はこれはフレーズの先頭の言葉で決まってしまいます。「お願いいたします」も「お願い」も前に来る言葉は同じですね。同じように後に来る言葉はフレーズの最後の言葉で決まります。つまり、長いフレーズのために新しくグループを用意してやる必要がないのです。従って長いフレーズを新しい言葉として導入してもモデルの大きさは変りません。このモデルのことを「多重クラス複合N-gram」と呼ぶことにしました。図1に示されるようにこのモデルは「多重クラス2-gram」よりさらに性能が上がっています。また、実際にこのモデルを用いて音声認識を行った場合でも、従来の「単語2-gram」で単語誤り率が31%であったのに対し24%となり、誤りの数を従来の方法に比べ20%以上減らすことができました。

5.おわりに
 言葉と言葉のつながりをうまく表すモデルとして、「多重クラス複合N-gram」を紹介いたしました。しかしながらこのモデルの作成のためには多くのデータ(文の実例)を必要とします。このため現在は少量のデータでも性能の良いモデルが作成できる方法を研究しています。


参考文献


Copyright(c)2002(株)国際電気通信基礎技術研究所