言葉の意味をどう定義するか

言葉の意味をどう定義するか

コンピュータが単語の意味を理解するとはどういうこと?

このエントリーをはてなブックマークに追加

自然言語処理で課題となってくるのは、単語の意味をどう定義するかです。
現在のAIの主流は、大量の文書データを統計的に解析し、関連する単語を結びつけて単語を定義する方法です。
この方法は、単に、単語同士の結びつきを管理しているだけです。
つまり、単語という記号の結びつきだけで、世界を把握しているわけです。
これでは、本当に単語の意味を理解できているとは言えません。

それでは、コンピュータが単語の意味を理解するとはどういうことでしょうか?
どのようなデータ構造で単語の意味を記述すれば、人間と同じように単語の意味を把握できるのでしょうか?

単語のデータ構造を決めるためにロボマインド・プロジェクトが行ったことは、自然な会話と不自然な会話を並べ、不自然な会話を抽出できるようなデータ構造を考えるという手法です。
いくつか、具体的な例を挙げながら説明していきます。

文の意味理解の段階で、最も低レベルのルールは文法です。
たとえば、「料理を食べる」という文で、「を」は助詞で、名詞につながります。
助詞「を」は名詞につながるというのが文法ルールです。
「を」は動詞につながらないから、「食べるを」という文は文法的に間違いです。
これは、文法ルールを理解していれば、コンピュータでも抽出できます。

では、「机を食べる」という文はどうでしょう?
これも助詞「を」は名詞につながりますが、おかしい文だと、人間ならすぐにわかるでしょう。
でも、文法ルールしか知らなければ、この文のおかしさを抽出できません。
この文がおかしいと感じるのは、「机」は食べ物でないからです。
「食べる」の目的語となるのは「食べ物」でないとおかしいというルールを知っているからです。

それでは、このことを抽出するには、どのようなデータ構造が必要でしょうか?
それは、「食べ物」という概念です。
「料理」という単語は、「食べ物」概念に含まれるといったデータ構造です。
さらに、「料理」概念の下には、「麺類」などの概念があり、その下には、「ラーメン」といった単語が含まれるといった概念のデータ構造です。

 

概念ツリー

 

概念の下に子の概念があり、さらに下に孫の概念があるといった親子関係で概念を定義します。
ロボマインド・プロジェクトでは、最上位の概念を「具体」と「抽象」の二つに分けます。
たとえば、「建物」や「動物」は具体概念に属し、「時間」や「曜日」といったものは抽象概念に属します。

「机の上に火曜日がある」といった文がおかしいと感じるのは、物の配置は、具体物同士で行われるというルールがあって、「具体物」の机に「抽象物」が配置されるのは配置のルール違反だからです。

ロボマインド・プロジェクトでは、概念ツリーという形で概念を定義し、全ての単語は、いずれかの概念に属します。
また、概念は、少なくとも一つの概念を親として持ち、複数の親を概念として持つことも可能です。
たとえば、「学校」という概念は、抽象概念以下の「教育機関」と具体概念以下の「建物」の両方に属します。

 

次は、「机の脚」という文について考えてみましょう。
「机の脚」は何も問題ないですが、「机の手」となると、おかしいと感じるでしょう。
これは、「机」は「脚」を持つが、「手」は持たないからです。
ここから、ある物は、ある物を持つという関係もデータ構造として持つ必要があります。
この関係をHas-aの関係と呼びます。
机は脚を持つ、自動車はエンジンを持つ、学校は階段を持つといった関係です。

ここで、先ほどの概念と、Has-aの関係に注目してみましょう。
「学校」という建物は「階段」を持ちますが、「学校」の上位概念である「建物」も階段を持ちます。
この場合、「学校」にも「建物」にも「階段」を持たすのは、データが重複するので効率が悪いです。
そこで、上位概念である「建物」に階段を持たすだけで、下位概念の「学校」も自動で階段を持つようなデータ構造にします。
このようにデータを持つことは、人間でも同じと思われます。

 

次は、「野原で上を見ると空が見えた。」と、「部屋で上を見ると天井が見えた。」という二つの文を考えてみましょう。
どちらも問題ないですよね。
上を見ると見えるものに空と天井がありますが、どんな時に空が見えて、どんな時に天井が見えるのでしょうか?

これを、コンピュータで管理しようとすると、「野原-空」、「部屋-天井」、「公園-空」、「教室-天井」と、あらゆる場所で、空が見えるか天井が見えるかをデータベースで管理しないといけません。
この方法だと、新しい場所が出てくるたびに、空か部屋かを登録しなければなりません。
しかしながら、人間は、そんな無駄なことはしていないですよね。

それでは、人間は、どうやって空が見えるか、天井が見えるか判断しているのでしょうか?
それは、その場所を思い浮かべているだけです。部屋の中にいるところを思い浮かべれば、上にあるのは天井ですし、野原にいるところを思い浮かべれば、上にあるのは空です。
つまり、3次元空間としてその場所を把握すればいいわけです。
全ての場所で、上が空か天井かを、いちいち記憶しているわけではありません。

それをコンピュータではどうやって実現すればいいでしょうか?
それは、3DCGモデルで扱えば可能です。
部屋の3Dモデルを用意しておき、部屋の中で上に向かえば天井に突き当たります。
これから、部屋の中で上を見れば、天井が見えるわけです。
野原で上に向かえば空に達するので、空が見えるわけです。

上には天井や空があるといった空間に関するデータは、「上‐天井」といった記号での組み合わせで管理しても、「上」の意味を理解したと言えません
「上」の意味を理解するには、3次元空間を理解する必要があります。
ロボマインド・プロジェクトでは、3次元空間を理解するために、3Dシミュレーターを使います。
人間が感じる空間と同じ空間を3DCGで再現し、その中で、重力と反対方向を「上」として定義します。
このように「上」を定義すると、「上」の意味は、もはや、単なる記号でなく、現実世界にリンクし、人間が頭の中でイメージするのと同じイメージをコンピュータの中で再現したことになります。

先ほど説明したHas-aも、「机が脚を持つ」という具体物の場合、どこに位置するかといった3次元空間での位置が必要となってきますので、位置関係、Has-a関係をまとめて、3Dモデルで把握します。
もし、言葉だけで「机」を定義しようとすれば、「机」は「天板」と「脚」を持ち、「脚」の上に「天板」があるといった表現となります。
こう表現すれば、「机の脚の上には何がありますか?」の質問には「天板」と答えることができますが、「天板の下には何がありますか?」と、質問の仕方を変えただけで答えられなくなります。
なぜなら、「脚の上に天板」としか定義されていないので、「天板の下」と表現を変えられると、それだけで意味がわからなくなるからです。
記号の結びつきだけで単語の意味を記述する従来のAIだと、少し、質問の仕方を変えられただけで答えられなくなってしまうというのは、こういうことが原因なのです。

ロボマインド・プロジェクトでは、単語の意味を、概念、Has-a、3Dモデルといったデータ構造で管理することで、人間が頭の中でイメージするものと同じ世界をコンピュータ内で再現できます。
これにより、人間と自然なコミュニケーションが可能となるわけです。

 

このエントリーをはてなブックマークに追加
 

コメントを残す