意味のある「文」を生成してみよう 動詞と概念ツリー

意味のある「文」を生成してみよう 動詞と概念ツリー

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

さて、今回から、いよいよ、「文」を生成していきます。
動くアプリも用意しましたので、実際に動かしてみてください。

最初に、これから何を作っていくかを説明しておきます。
目指すのは、「意味のある文章」を自動で生成するプログラムです。
「意味のある文章」とは、複数の文からなり、全体として、何らかの言いたいことが存在するものです。
「言いたいこと」とは、ロボマインド・プロジェクトで「認知パターン」と定義しているものと同じです。

そして、最低限の条件として、生成する文は、単語(名詞、動詞、助動詞など)から生成するものとします。
用意された文は使いません。
(理由については、「自然言語処理への提言1」をご覧ください)

そのうえで、まず目指すのは、「おかしくない文」の生成です。
たとえば、

花子はラーメンを食べる。

これは、おかしくない文です。
それでは、「おかしな文」とはどういう文かというと、

昼休みが緑色を食べる

これが、おかしな文です。
「おかしくない文」を作るのは、簡単そうで、意外と難しいのです。
なぜかというと、コンピュータは、常識を持っていないからです。
一言で常識といっても、さまざまな見方があり、一つの手法で解決できるものではありません。
そこで、今回は、「概念」を使って解決していきます。

その前に、まずは、「文」について考えます。
「文」は、述語を中心に組み立てられます。

花子はラーメンを食べる。

の場合、述語は動詞の「食べる」です。
「食べる」の目的語は「ラーメン」です。
「食べる」という動詞は、目的語として取れるのは、ラーメンだけに限らず、料理なら何でもいいわけです。
ラーメンは、料理概念に属する単語となります。

ここで、「概念ツリー」について説明します。
「概念ツリー」については、「言葉の意味をどう定義するか」で詳しく説明していますので、簡単に説明します。
ロボマインド・プロジェクトでは、全ての単語を概念ツリーで管理しています。
概念は上下関係があり、下位の概念はより具体的であり、上位の概念はより抽象的となります。
たとえば、「料理」概念の下には「麺類」概念があり、「料理概念」の上には、「飲食物」概念があります。
最も具体的なものは単語で、たとえば「ラーメン」です。そして、ラーメンは、「麺類」概念に属します。

最上位の概念は、あらゆる言葉を表す「単語」概念です。
「単語」概念の直ぐ下には「具体」概念と「抽象」概念があります。
「単語」概念から「ラーメン」までを並べると

単語-具体-無生物-飲食物ー料理-麺類:ラーメン

となります。

これを概念ツリーと呼んでいます。
概念ツリーの中身は、ロボマインド・プロジェクトで独自に作成していて、適宜、書き換えています。

つぎに、「花子」の概念ツリーは、

単語-具体-生物-動く生き物-知的生命体-人名-名-女性名:花子

となります。

 

 

概念ツリーは名詞だけでなく、動詞も存在します。
動詞の場合は、「抽象」概念以下となります。
したがって、「食べる」の概念ツリーは以下のようになります。

単語-抽象-行為・動作・状況等-身体の動作-顔の動き-口の動作-飲食:食べる

 

さて、話は「文」に戻ります。

花子はラーメンを食べる。

この文を概念で書き直してみます。すると、

「知的生命体」は「料理」を「食べる」

となります。
これが、登録される「文パターン」となります。
そして、概念の部分に、その概念に属する単語をランダムに設定すれば、文が生成されます。
「知的生命体」の一例が、「花子」であり、「料理」の一例が「ラーメン」となるわけです。

概念以下の単語をランダムに設定する
ここが今回のポイントです。
指定された概念に属する単語を設定すれば、「おかしくない文」となる。
このルールが、一種の常識となるわけです。

 

今回のプログラムについて、もう少し解説します。
動詞「食べる」は、「行為・動作・状況等」概念の下位概念となります。
「行為・動作・状況等」概念を使った文パターンとして、

「暦・季節・日時」に、「動く生き物」が、「場所」で、「行為・動作・状況等」(する)。

というものがあります。
平たく言えば、「いつ、どこで、誰が、何をする」という文パターンです。
この文パターンと、「食べる」の文パターンを合成すると、

「暦・季節・日時」に、「知的生命体」が、「場所」で、「料理」を、「食べる」

となります。
さらに、これらをすべて出力するのでなく、何を出力するかランダムに選びます。
すると、たとえば、

「暦・季節・日時」に、「知的生命体」が、「料理」を、「食べる」

となり、その上で、概念に単語を設定していきます。
そうすると、たとえば、

クリスマスに、総理大臣が、ざるそばを食べる。

といった文が生成されます。
念のため言っておきますが、今回は、面白い文を生成しようとしているわけではないです。
逆に、面白くとも何ともない、当たり前の文を生成するのが目的です。
じつは、それが結構難しいのですが。

それでは、さっそく、文を生成してみましょう。
以下の「文生成」ボタンを押してみてください。

文が生成されるとともに、その下には、使われた文パターンと、単語の概念ツリーが表示されます。
なお、単語は複数の概念に属することができますので、2行、または3行の概念ツリーが表示されることがあります。
概念ツリーは右に行くほど上位概念となっていて、一番右は、必ず「単語」となります。
単語の右に表示される数字は単語のIDです。ここではあまり気にする必要はありません。
不自然な文も生成されると思いますが、今後、少しずつ改良していく予定です。
では、ゆっくりお楽しみください。

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

コメントを残す