○File No.6

自然言語へのアプローチ


日本語を読み解く

 ユーザから受け取った文字列を人工無脳的に解釈する方法を考えてみよう.人工無脳のココロIIIではフォームを使って答えを受け取る例を考えたが,入力された日本語を直接解釈するのが人工知能や無脳の本質ともいえるので,避けて通れないテーマである.が,それを完全に行っている例は今だ存在しないので,どこまで簡単なシステムでそれらしい挙動ができるかを考えなければならない.

 さて,人間が日常的にしゃべっている言語は,自然言語と呼ばれている.CやPascalのようなコンピュータ用の言語と違って構造が不完全で省略が多く,あいまいである.そのため機械的なパース(構造の解析)が不可能になり,パース自身も研究テーマとして成立している.このような研究はもちろん英語圏でも行われているが,単語がスペースで区切られている英語と違って日本語の場合は形態素解析とよばれる,文を要素ごとに区切る操作が前段階の処理として必要になる.次に英語の場合では文を基本5文型に分類するなどして構造を明らかにしてゆくが,自然言語はニュアンスがシチュエーションによって変化するので機械的な構文解析だけでは100%押さえられない.その例を二つ示す.
Aがなくなった』
『人工無脳は単純で,高速な辞書を利用している』
前者の場合Aが普通の名詞か,人名なのかによって意味が変わる.後者の場合は単純でが人工無脳にかかるのか,辞書にかかるのか決めることができない.

 以上のことからわかるように,自然言語の解析は簡単に答えの出る問題ではない.




Fig.1 チャットにおける一行の長さの分布
 人工知能の研究で対象となっている日本語は,構文が整っていて丁寧な文語表現ばかりである。ところがわれわれのチャットの経験を思い出してみると,実際の会話は口語であるうえに文法的解釈できないようなケースも多そうである.そこで人工無脳的自然言語解釈の方針を決めるために,まず人工無脳が対象とする日本語がどのようなものかを観察する.
 無作為に選んだいくつかのチャットのログから人間の発言だけを500行ほど取り出して,その長さの分布を調べた (Fig. 1).その結果長さの平均は19.8文字,文の80%は29文字以下で,最も頻度が高いのは18文字付近であることがわかる.したがって長さだけから見れば20文字以下の単純な日本語に焦点を絞って,30文字を超える文については考慮しなくてよいといえる.




Fig. 2 ひとつの話題の長さ
 次にひとつの話題が何行にわたって続くかを見る.(Fig. 2)平均の長さは3.19行である.一行で終わって何の返事も求めない文は出現頻度が高いものの,あまり会話的ではない.それなりに会話らしいのは5〜8行にわたる会話で,それ以上に長い会話は三人以上のユーザによる会話やマルチスレッドな会話であった.したがって,人工無脳は平均3〜4行,最大8行前までの内容を把握していなければならないといえる.



Fig. 3 内容の分類
 つぎにそれぞれの文の内容を大まかに分類するとFig. 3のようになる.質問は,行末が?で終わっているものとし,挨拶は前後の文と関係なく挨拶として読めるものだけを選んだ.「そのほか」をさらに細かく分類しようとしたが,文脈依存が強く単文での区別はつけにくかった.
 このことから,人工無脳でも人間からの返事はここであげた挨拶,質問,そのほかにくわえて YES, NO を認識する程度で,内容の追跡よりは文脈の追跡に重点をおいて考えたほうが便利である.
 
 以上の観察結果をまとめて人工無脳による自然言語解釈の方針を示す

  • 形態素解析しない
  • 20文字程度の文を仮定する
  • 3行前(最大8行前)までの内容を考慮する
  • 挨拶,質問,yes,noを認識し,それ以外はいいかげんに処理する
  • 文の内容を解釈しない


  • スタック:最初に格納したものが最後に出てくる(First In Last Out)バッファ.

    スタックを使った会話モデル

     人間の会話のパターンを考えてみる.まず質問からスタートする会話では,
  • 質問1
    • 質問2:質問1についてのより詳しい質問
      • 答え2:質問2に対する答え
  • 答え1:答え2を踏まえた質問1に対する答え

    このように質問と答えを積み重ねながら複雑な概念を少しづつ伝達してゆく.すなわちスタックを取り入れることで一見複雑な会話も単純なやり取りの組み合わせで解決できる.
     前述の方針と会わせると,3〜8の深さを持つスタックを用意すればいいことになる.しかし,この部分は非常に複雑であり,まだ簡潔なモデルを思いつかないため,しばらく棚に上げておくことにする。



  • 人工無脳の言葉づかい

     さて,自然言語による会話文の不完全性については関連性理論(そのあらまし)という考え方が興味深い。
     これまでのセクションでは自然言語は構造が不完全で省略が多く,あいまいであると考えてきた。そしてその不完全さ故に解釈が困難であるとした。実際にわれわれは日常会話で相手に伝えたいことのすべてを符号化してはいない:
    A:今日コンパがあるんだけど来れる?
    B:明日テストがあるから
     ところが,Bは『コンパに行かない』とは言っていないにもかかわらず,われわれはそれを正しく理解できる。これは聞き手が常識やシチュエーションをもとに答えを想定しているからである。このような答えの想定は, 「話し手が聞き手にとって最も "関連性のある" 情報(≒知る価値の高い情報)を、最も効率的な方法で伝えている」という前提があるからである。

     単純に考えて話し手の台詞が短ければ短いほど,それは効率的といえる。すなわち省略が多く,構文の不完全なせりふほど,実はあいまいさがなく解釈に手間がかからないわけである。人工知能が自然言語を解釈するときにも必然的にこの問題が生じ,わずかな情報から人工知能は多くのことを推論しなければならない。逆に人工知能が得意とするような完全な構文,完全な記述に基づくせりふは人間にとって最も関連性が低く解釈に手間がかかる,集中と苦痛を伴うコミュニケーションとなってしまう。

     このことを逆手にとって,おきらく会話プログラムである人工無脳は関連性が高そうな会話をするようにこだわらなければならない。できるだけ短く,暗黙の了解を前提とした言葉を選び,そのような台詞に反応できなければならない。
     
     関連性理論では「ことばのあや」についても注目している。
    1.税金を引かれると手取りはこれだけ。有難い話だ。
    2.時給300円? そりゃ少し安いよ。
     1.を読んで,『有難い』が文字通りの意味だと解釈する人はいないだろう。2.でも同様に「少し」はここでは「とても」の意味であるが,だれもが正しく理解できる。これらの例はそれが実際とは逆の意味を持つことを強調して,短い表現で伝えるという働きを持つ。オリジナルのサイトを見ると他にも参考になる考え方を見つけることができる。

     「相手が推論によって作り上げたテンプレートにできるだけ沿った返答を心がける」 という戦略は人工無脳の自然言語解釈で常に留意する価値があるだろう。


    [PREV] 人工無脳のココロ III 会話のアルゴリズム[NEXT]