Top Banner
しミ し、。 109 自然言語処理 現在のところ、自然言語処理を応用した代表的なシステムとしては機械翻 訳システムがあげられる。また、 1970 年代に入ってから、自然言語インター フェースの研究が継続して行なわれている o 実は、機械翻訳システムは、人工知能という言葉が出現するよりも前から 研究されている。人工知能という言葉が初めて使われたダートマス会議が擢 されたのは、第 1 囲の機構翻訳国際会識が開催された1952 年の 4 年後のこと である。 1965 年以前に研究されていた機械翻訳システムは、単語の訳と語1 頂の変更 を組み合わせただけの単純な処理を行なっていた。そういった浅い処理に基 づいたシステムのほとんどは失敢に終わっている。その失敗は機械翻訳研究 にとってはかなり手厳しいものだ、った。特にアメリカ合衆国においては、長 い問機械翻訳に対する政府の資金接助がカットされた。 その失敗は、言語学や計算機科学における基礎研究の進展を促した。言語 学においてはチョムスキーの生成文法やフィルモアの格文法を初めとする文 法理論の提案がなされ、現在の機械翻訳システムにおける構文解析技術の基 礎にをった。計算機科学においては、文を理解するのに必要な知識を処理す る人工知能技術の出現が、システムにおける意味的情報の処理に貢献してい る。 しかし、そうした基嘩研究もまだ始まったばかりである。現在機械翻訳シ ステムは数多く発表されているにもかかわらず、ユーザーの評価は想像以上 に厳しい。 白熱言語処理のもう一つの応用分野である自撚言語インターフェースは、 コンビュータに日常使う言葉を理解させようとする試みである。 1970 年代は、 自然言語インターフェースの実現によって、それまで専門家だけの物であっ たコンピュータが、もっと身近な物になると考えられていた。 しかし、コンビュータを身近にする試みは、 JSIJ の方法で達成された。 1980
33

自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、...

Sep 02, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

しミ

し、。

109

自然言語処理

現在のところ、自然言語処理を応用した代表的なシステムとしては機械翻

訳システムがあげられる。また、 1970年代に入ってから、自然言語インター

フェースの研究が継続して行なわれているo

実は、機械翻訳システムは、人工知能という言葉が出現するよりも前から

研究されている。人工知能という言葉が初めて使われたダートマス会議が擢

されたのは、第 1囲の機構翻訳国際会識が開催された1952年の 4年後のこと

である。

1965年以前に研究されていた機械翻訳システムは、単語の訳と語11頂の変更

を組み合わせただけの単純な処理を行なっていた。そういった浅い処理に基

づいたシステムのほとんどは失敢に終わっている。その失敗は機械翻訳研究

にとってはかなり手厳しいものだ、った。特にアメリカ合衆国においては、長

い問機械翻訳に対する政府の資金接助がカットされた。

その失敗は、言語学や計算機科学における基礎研究の進展を促した。言語

学においてはチョムスキーの生成文法やフィルモアの格文法を初めとする文

法理論の提案がなされ、現在の機械翻訳システムにおける構文解析技術の基

礎にをった。計算機科学においては、文を理解するのに必要な知識を処理す

る人工知能技術の出現が、システムにおける意味的情報の処理に貢献してい

る。

しかし、そうした基嘩研究もまだ始まったばかりである。現在機械翻訳シ

ステムは数多く発表されているにもかかわらず、ユーザーの評価は想像以上

に厳しい。

白熱言語処理のもう一つの応用分野である自撚言語インターフェースは、

コンビュータに日常使う言葉を理解させようとする試みである。 1970年代は、

自然言語インターフェースの実現によって、それまで専門家だけの物であっ

たコンピュータが、もっと身近な物になると考えられていた。

しかし、コンビュータを身近にする試みは、 JSIJの方法で達成された。 1980

Page 2: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

11口 第 2部自然言語処理

年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、

ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

が考案されたのである。それにつれて、アプリケーションソフトウェアに自

然言語インターフェースを導入しようとする研究は、次第に目立たなくなっ

て来た。

とはいっても自然言語インターフェース研究が衰えたわけではない。むし

ろマンマシンインターフェースの選択肢が増えたために、他の研究に埋もれ

てしまったといった方が正確で、あろう。他の選択肢が出現したため、自然言

語インターフェースが万能ではない事が広く認識されるようになった。自然

言語を用いることによって、かえって意志疎通がつまくいかなくなる場合も

あるのである。現在、ポップアップメニューやアイコンでスムーズかつ簡単

にできる操作を、自然言語に置き換えたときの操作性は大幅に落ちるであろ

つ。

では、現時点で自然言語インターフェースの導入によって使いやすくなる

アプリケーション分野にはどのようなものがあるだろうか。現在 2つの解答

が挙がっている。一つはデータベース検索で、もう一つは CAIやオンライン

マニュアルなどの領域における質問応答システムである。しかし、いずれに

せよ解決しなければならない問題は山積している。

データベース分野への適用には一つ大きな問題がある。データの大規模な

蓄積が既になされているために、その内容を自然言語インターフェースに適

した形に変えることはできないのである。そのため、現時点での実用化を目

指す試みは、自然言語を SQLなどのデータベース言語に翻訳して、その結果

を従来のデータベース検索システムに送るという方法を取らざるを得ない。

そうした場合、自然言語の柔軟性と SQLなどのデータベース検索言語の厳

格性とのギャップが大きな障害となってくる。

また、 CAIなどの分野への自然言語インターフェースの導入が本格的に検

討されるには、やはりキーボード入力の煩雑さが障害になっている。その障

害を乗り越えるには、連続音声の認識技術と自然言語処理技術が結合する必

要があろう。

機械翻訳システムや自然言語インターフェースにおいて、解決しなければ

ならない共通の課題は、意味の処理である。例えば英語の

My brother is playing baseball.

私の兄が野球をしています

(私の兄は野球をする事です)

11日 第 2部自然言語処理

年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、

ポインティングディパイスなど新しいマンマシンインターフェースのやり方

が考案されたのである。それにつれて、アプリケーションソフトウェアに自

然言語インターフェースを導入しようとする研究は、次第に目立たなくなっ

て来た。

とはいっても自然言語インターフェース研究が衰えたわけではない。むし

ろマンマシンインターフェースの選択肢が増えたために、他の研究に埋もれ

てしまったといった方が正確であろう。他の選択肢が出現したため、自然言

語インターフェースが万能ではない事が広〈認識されるようになった。自然

言語を用いることによって、かえって意志疎通がつまくいかなくなる場合も

あるのである。現在、ポップアップメニューやアイコンでスムーズかつ簡単

にできる操作を、自然言語に置き換えたときの操作性は大幅に落ちるであろ

フ。

では、現時点で自然言語インターフェースの導入によって使いやすくなる

アプリケーション分野にはどのようなものがあるだろうか。現在 2つの解答

が挙がっている。一つはデータベース検索で、もう一つは CAIやオンライン

マニュアルなどの領域における質問応答システムである。しかし、いずれに

せよ解決しなければならない問題は山積している。

データベース分野への適用には一つ大きな問題がある。データの大規模な

蓄積が既になされているために、その内容を自然言語インターフェースに適

した形に変えることはできないのである。そのため、現時点での実用化を目

指す試みは、自然言語を SQLなどのデータベース言語に翻訳して、その結果

を従来のデータベース検索システムに送るという方法を取らざるを得ない。

そうした場合、自然言語の柔軟性と SQLなどのデータベース検索言語の厳

格性とのギャップが大きな障害となってくる。

また、 CAIなどの分野への自然言語インターフェースの導入が本格的に検

討されるには、やはりキーボード入力の煩雑さが障害になっている。その障

害を乗り越えるには、連続音声の認識技術と自然言語処理技術が結合する必

要があろう 。

機械翻訳システムや自然言語インターフェースにおいて、解決しなければ

ならない共通の課題は、意味の処理である。例えば英語の

My brother is playing baseball.

私の兄が野球をしています

(私の兄は野球をする事です)

Page 3: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

My hobby is playing baseball.

私の趣味は野球をする事です

(私の趣味が野球をしている)

111

の日本語訳が( )内にあるような誤訳にならないようにするには、特定の動

詞の主語がどういった意味カテゴリーにあるかをシステムが知らなければな

らない。日本語においても

医者の治療がうまい

患者の治療がうまい

風邪の治療がうまい

胃腸の治療がうまい

といった文に出て来る r_の」意味がそれぞれ異なる事を理解するには、語句

の意味のレベルにまで踏み込んで、いく必要がある。

また、以下に挙げる文

My dead father is looking for his glasses.

が、おかしい文で、あると理解するには、常識的な知識を保持していなければ

ならない。また、

彼はおなかがすいたのでレストランで食事した

という文章から

彼はレストランにはいったか?

ウェイトレスが注文をとりにきたか?

彼はウェイトレスに食事を注文したか?

といった質問に答えるには、レストランで人が食事をするときの、 一般的な

行為の流れについて、あらかじめシステムは知っていなければならない。

このように、意味の処理の問題は、語句の意味から文章の背景にある常識

的知識まで様々のレベルの物がある。そして、その問題のいずれも解決され

ていない。

第 2部では、こうした意昧の処理に対して正面からぶつかることは行なわ

ない。実用的なシステムにつながらない事と、パソコン上の Prologでは荷が

重すぎるというのがその理由である。その代わりにパソコン上で現時点での

技術でも処理できるシステムを 2つ紹介する。

第 5章では、「積木の世界」という限定された領域でユーザーの指令を理解

My hobby is playing baseball.

私の趣味は野球をする事です

(私の趣味が野球をしている)

111

の日本語訳が( )内にあるような誤訳にならないようにするには、特定の動

調の主語がどういった意味カテゴリーにあるかをシステムが知らなければな

らない。日本語においても

医者の治療がうまい

患者の治療がうまい

風邪の治療がうまい

胃腸の治療がうまい

といった文に出て来るr_の」意味がそれぞれ異なる事を理解するには、語句

の意味のレベルにまで踏み込んで、いく必要がある。

また、以下に挙げる文

My dead fa出eris looking for his glasses.

が、おかしい文であると理解するには、常識的な知識を保持していなければ

ならない。また、

彼はおなかがすいたのでレストランで食事した

という文章から

彼はレストランにはいったか?

ウェイトレスが注文をとりにきたか?

彼はウェイトレスに食事を注文したか?

といった質問に答えるには、レストランで人が食事をするときの、 一般的な

行為の流れについて、あらかじめシステムは知っていなければならない。

このように、意味の処理の問題は、語句の意味から文章の背景にある常識

的知識まで様々のレベルの物がある。そして、その問題のいずれも解決され

ていない。

第 2部では、こうした意味の処理に対して正面からぶつかることは行なわ

ない。実用的なシステムにつながらない事と、パソコン上の Prologでは荷が

重すぎるというのがその理由である。その代わりにパソコン上で現時点での

技術でも処理できるシステムを 2つ紹介する。

第 5章では、「積木の世界Jという阻定された領場で、ユーザーの指令を理解

Page 4: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

112 第 2部 自然言語処理

して動作するロボットのシミュレーションを紹介する。領域を限定するとい

う原則は、実用的な自然言語処理システムを構築する上で、現時点での最も

有効な戦略である。

第 6章では、既に確定した意味表現をもとに、その意味表現を表わす文章

を生成するシステムを紹介する。意味に関して暖味性がないために、文生成

では、意味処理に関する問題を避けて通ることが可能で、ある。そのため、文

章生成システムは、文章理解システムのように領域を限定しないでも、ある

程度実用的な物を作ることが可能である。

112 第 2部 自然言語処理

して動作するロボットのシミュレーションを紹介する。領域を限定するとい

う原則は、実用的な自然言語処理システムを構築する上で、現時点での最も

有効な戦略である。

第 6章では、既に確定した意味表現をもとに、その意味表現を表わす文章

を生成するシステムを紹介する。意味に関して暖昧性がないために、文生成

では、意味処理に関する問題を避けて通ることが可能である。そのため、文

章生成システムは、文章理解システムのように領域を限定しないでも、ある

程度実用的な物を作ることが可能で、ある。

Page 5: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

113

第員章 E調然醤藷イン$7,醐ー 工叩圃

この棄では、 Prologじよる滋然言語インタ…フぷースの構築を行なう。

ステムの扱う対象は「積木の世界」という、非常に限定された領域である。

. 1 ま

積木の世界を扱ったプログラムとしてはウィノグラードの SHRDLUとい

白熱富語理解に関ずる研究が最も潟、名である。

SHRDLUは1972年に作成されたプログラムで、自然言語理解に関しては

最も有名なプログラムのひとつである。 SHRDLUにおける機木には色だけ

なく大きさ令どの鱗性もあり、悉らにどラミッドや絡などもある。

SHRDLUではユーザーの入力を、 MICROPLANNERという処理系のステ

トメントに翻訳する。そうして、模本の世弊を記述したデータベ…ス

し、値をたずねたり、積木の位置を変えたりするのである。ユーザーの入力

して、筑間文、命令文、肯定交を解釈する撃がで謡、さらに代名詞に対十

る処理や文脈の参照、重文・複文による入力を受け付けることができる。

SHRDLUによる対話例の一部を図5-1次ベージ)に g本語いよって示そノ O

図5-]のようにかなり複雑な文の処理も、 SHRDLUには可能である。しか

し、残念な事に SHRDLUの紹介に出ている例は、うまくいったやり取り

よく態めたもので¥これだ、けでは性能を恋しく評摘することはで、きな

さらに、現在では SHRDLUの動作する処理系が存在しないためフ。ログラム

動かすこと此?きなく立っている。

初めて紹介されてから15年以上経った現在でも、 SHRDLUは文章理解と

融合した研究の代議的なシステム的地位にある。成功につなが

た最も大きな理由は、「積木の世界」というきわめて限定された領域を扱って

点に集約されている。現時点においても有効な白熱言語インタ…/エ

を持ったシステムを構築するには、領域を限定しなければならないという

原則は変わっていない。

出て来る積本的世界は、ウィノグラードらの「積フ!なの世界Jより

113

第日輩 苦言語インターフェース

この主主では、 Prologによる自然言語インターフェースの構築を行なう。シ

ステムの扱う対象は「積木の世界」という、非常に限定された領域である O

5.1 はじめに

積木の世界を扱ったプログラムとしてはウィノグラードの SHRDLUとい

う、自然言語理解に関する研究が最も有名である。

SHRDLUは1972年に作成されたブ。ログラムで、自然言語理解に関しては

最も有名なプログラムのひとつである。 SHRDLUにおける積木には色だけ

でなく大きさなどの属性もあり、さらにピラミッドや箱などもあるo

SHRDLUではユーザーの入力を、 MICROPLANNERという処理系のステ

ートメントに翻訳する。そうして、積木の世界を記述したデータベースに対

し、値をたずねたり、積木の位置を変えたりするのである。ユーザーの入力

として、質問文、命令文、肯定文を解釈する事ができ、さらに代名詞に対す

る処理や文脈の参月賞、重文・複文による入力を受け付けることができる。

SHRDLUによる対話例の一部を闇5-1(次ページ)に B本語によって示そう o

図5-1のようにかなり複雑な文の処理も、 SHRDLUには可能である。しか

し、残念な事に SHRDLUの紹介に出ている例は、うまくいったやり取りを

都合よく集めたもので、これだけでは性能を正しく評価することはできない。

さらに、現在では SHRDLUの動作する処理系が存在しないためフ。ログラム

を動かすことはできなくなっている。

初めて紹介されてから15年以上経った現在でも、 SHRDLUは文章理解と

問題解決を融合した研究の代表的なシステムの地位にある。成功につながっ

た最も大きな理由は、「襲木の世界」というきわめて臨定された領域を扱って

いる点に集約されている。現時点においても有効な自然言語インターフェー

スを持ったシステムを構築するには、領域を眼定しなければならないという

原郎は変わっていない。

この章に出て来る積木の世界は、ウィノグラードらの「積木の世界」よりも

Page 6: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

114 第 2部 自然言語処理

ユーザー:大きな赤いブロックを取れ

システム :OK.

ユーザー :箱の中には何があるか

システム:青いピラミッドと青いブロックがあります

ユーザー:ピラミッドの上にピラミッドを置けるか

システム :いいえ

ユーザー :2つの赤いブロックと青い立方体かピラミッドのどちらかを

積み上げろ

システム :OK.

ユーザー :ピラミッドの向こうに大きなフーロックがあるか

システム :はい

ユーザー:それは何色か

システム:赤です

ユーザー :それを取れ

システム :OK.

ユーザー :赤いピラミッドを取る前にピラミッドにさわったか

システム:はい、緑色のピラミッドにさわりました

匡]5-1 SHRDLUにおける対話の例

さらに小さい世界を扱っている。「小さな積木の世界」は様々な色の積木と、ロ

ボットの腕、テーブルから成り立っている。図5-2がその小さな積木の世界の

例である。

ユーザーはロボットのアームに対し積木を持ち上げたり、他の積木の上に

重ねたりする事を命令することができる。

積木を操作する命令は、意味解析によって Prologの述語に直接翻訳され

て実行される。例えば図5-2において「青い積木を黄色い積木の上に置け」とい

う命令の入力があった場合は、

goal (上下(青,黄))

114 第 2部 自然言語処理

ユーザー:大きな赤いブロックを取れ

システム :OK.

ユーザー:箱の中には何があるか

システム:青いピラミッドと青いブロックがあります

ユーザー:ピラミッドの上にピラミッドを置けるか

システム:いいえ

ユーザー 2つの赤いブロックと青い立方体かピラミッドのどちらかを

積み上げろ

システム :OK.

ユーザー:ピラミッドの向こうに大きなブロックがあるか

システム:はい

ユーザー:それは何色か

システム:赤です

ユーザー:それを取れ

システム :OK.

ユーザー:赤いピラミッドを取る前にピラミッドにさわったか

システム:はい、緑色のピラミッドにさわりました

図5-1 SHRDLUにおける対話の例

さらに小さい世界を扱っている。「小さな積木の世界」は様々な色の積木と、ロ

ボットの腕、テーブルから成り立っている。 国5-2がその小さな積木の世界の

例である。

ユーザーはロポットのアームに対し積木を持ち上げたり、他の積木の上に

重ねたりする事を命令することができる。

積木を操作する命令は、意味解析によって Prologの述語に直接翻訳され

て実行される。例えば図5-2において「青い積木を黄色い積木の上に置け」とい

う命令の入力があった場合は、

goal (上下(青,黄))

Page 7: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

第 5章 自然言語インターフェース 115

ト己

青 II 白

赤 II 黄

図5-2 小さな積木の世界

という Prologの述語を生成する。このプログラムは、 青い積木を取る前に、

黄色い積木の上の白い積木を他へ移すといった、簡単なプランニング機能を

持っている。プランに応じたロボットの腕の動作や積木の移動はアニメーシ

ョンで表示することにした。

5.2 r小さな積木の世界」のインプリメント

5.2.1 プランニングとアニメーション表示

図5-3が小さな積木の世界の意味解析部を除いたプログラムである。

まず、積木の世界の記述について解説しよう 。積木の世界の記述は

世界初期化

という述語の後半部で行なわれる。まずロボットのアームは、 X座標を引き

数として記述される。積木の位置関係は、テーブル上にある場合は

テープル上(赤い積木)

テーフ'ル上(黄色い積木)

という述語で記述される。積木の上にある場合は (p.126へ続く)

Page 8: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

116 第 2部 自然言語処理

Z主主主主主主本字主主主主主主主主本主主主意主主ZZ トップレベル z Z主宰主主主主主主主主主主主主主本本主主主主客本Ztop:-

世界初期化,

repeat, 読み込み (Bun,Bunl),

入力文解析 (Bun,Eval),解析結果の実行 (Bunl,Eval).

読み込み (Bun,Bun1)ascread(Bunl), d_knj(Bunl,Bun),

入力文解析 (Bun,Eval)spacecutter(Bun,Bunl),

入力文 (Bunl,[], Eval)

Eval =失敗

解析結果の実行(ー, end)

解析結果の実行 (Bun,失敗〉....rite('入っている意味が分かりません, ) ,

n I , bufins(Bun), ! ,fa i 1.

解析結果の実行〈ー, Eval)I ist....rite(['解析結果は, ,Eva 1, 'です, ]) ,

call(Eval), ! ,fa i I .

2主主主宰主主主主主本宰本孝章本主主主孝章寺本幸孝章本毒事本主主ZZ 積木の世界初期化 z % X座標, Y座標 z Z本主主主本主主主主主主主主主主主主主本主本主主客本本主主主主主Z世界初期化

abol ish(アーム, 2), abolish(上下, 2),

abol ish(テーブル上,1),

abol ish(手の中,1), abol ish(積木, 3),

abol ish(history,1), abol iSh(plan,1),

g_screen(3,O,O,1),

g_cls, d_clear, 辞書読み込み,

Z本字本本主主主主主主主本主主主主主主主主主本主Zz 積木の位置 Z Z主主主主主本主主主主主主主主主主本主主主主主主Z

Page 9: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

assertaCアーム〈位置 ,25)),

assertaC上下(青い積木,赤い積木)),

assertaCテープル上〈赤い積木)),

assertaC上下〈白い積木,黄色い積木)),

assertaCテープル上〈黄色い積木)),

主主主主主本主主主主主主主寺本主本主主主意寺本主ZZ 積木の属性 Z Z本主主主主主主主本主主主主主本意字本字本主主主1

assertaC積木(赤い積木 ,色, [赤, 2J)),

assertaC積木(赤い積木,位置, [5,5J)),

assertaC積木〈青い積木,色, [青, 1 J)), assertaC積木(青い積木,位置, [5,15])),

第5章 自然言語インターフェース 117

assertaC積木〈黄色い積木,色, [黄色,6J)),

assertaC積木(黄色い積木,位置,[15,5J)),

assertaC積木〈白い積木,色, [白, 7J)) ,

assertaC積木(白い積木,位置,[15,15J)),

redraw, initmsg.

Z主主主主主主主主主主主宰主主主主主主主主主主主主主主主主主主主zz パーサーの読み込み z Z主主主主主主主主主主本主主主主主主主主主主主主本主主主主主主主Z辞書読み込み

writeC'辞書ファイル名を入れて下さい'), w r i teC' C読み込まないときは rnu11J) '),

input(Fi leName), nameCF,Fi leName), C F = nu 1 1・〉

true;

consu 1 t(F)). 2主主本主主主本主主主主主主主主主主主主主主主主Z% stack % Z本主主主宇主主主主主主主主主主主主主主主主主主ZstackCObject,Support):-

/本積木の移動本/

retractCアーム(位置, Xarm)),

retractC積木 CObject,位置, [Xo,45J)),

積木 CSupport,位置, [Xs,YsJ),

blockmoveCObject,Xo,45,Xs,45),

blockmoveCObject,Xs,45,Xs,Ys+10),

armmoveCXs,Ys+25,Xs,60),

assertaCアーム(位置, Xs)),

assertaC積木 CObject,位置, [Xs,Ys+10J)),/本 積木の位置関係 本/

1 i stwr i teC[Object,'を', Support,'の上に積みました, J),

retract(手の中 CObject)),assertaC上下 CObject,Support)).

Z主主本本主主本本企本主主字本主主本本主主主主主本主主客本主主主主主主本主主主本本主主主主主孝章Z% unstackC上下関係は成立) % Z本本意本本主主主主主主主本主主本主主客本主主主主主本主主本主主本主意本主主主主主主主主主主事本ZunstackCObject,Support):ー

/本積木の移動本/

retractCアーム〈位置, Xarm)),

Page 10: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

118 第 2部 自然言語処理

retract(積木 (Object,位置, [Xo, Yo])),

armmove(Xarm,60,Xo,60), armmove(Xo,60,Xo,Yo+15), blockmove(Object,Xo,Yo,Xo,45), asserta(アーム〈位置, Xo)),asserta(積木 (Object,位置, [Xo,45])),/本積木の位置関係 本/

1 istwrite([Object,'を', Support,'の上からとりました・ J) • retract(上下(Object,Support)).asserta(手の中 (Object)).

1主主主主主主主主主主事主主主主主主主主主主牢主主主主主主主主主主主主主主主主主主主主主本主主主Z% p ckup(対象はテープル上) % Z主主主主主主本主主主主主主本本主本主主字本主主本企本主主主主主主主主主主主主主本主主主主主主主Ep i ckup(Obj ec t): -

/本積木の移動本/

ret ract(アーム〈位置 .Xarm)),retract(積木 (Object.位置, [Xo,5J)),

armmove(Xarm.60.Xo.60), armmove(Xo.60,Xo,20), blockmove(Object.Xo.5,Xo,45), asserta(アーム(位置, Xo)),asserta(積木 (Object,位置 .[Xo,45]))./本積木の位置関係 企/

1 i stwr i te( [Object, ・を、テープル上から取りました, J),

retractCテープル上 (Object)),asserta(手の中 (Object)).

1主主主主主本主主本主主主主主主主主主主主主主主Z% putdown % Z主主本主主主主主本主主主主主主主主主主主主主主Zputdown(Object):-

/本積木の移動本/findspace(Xtable), retract(アーム(位置 .Xarm)),retract(積木 (Object.位置 .[Xo,45])).blockmove(Object.Xo.45.Xtable.45). blockmove(Object,Xs.45.Xtable.5). armmove(Xs,20.Xtable.60). asserta(アーム(位置 .Xtable)),asserta(積木 (Object,位置 .[Xtable,5])),

/本積木の位置関係 主/

1 i stwr i te([Object,'を、テープル上に置きました']),

retract(手の中 (Object)), asserta(テープル上 (Object)).

2本主主主主孝章本主主主主主主主主主主主本主主主主主主主主主主主Z% f ndspace % Z本主主主毒事孝章本主主主客主主孝章本主主事主主本主主主孝章主主Zfindspace(Xtable):・

kai_listCX. 〈テープル上 (Object).積木 (Object,位置よし-])),

List). member(Xtable,[5,15,25,35]), V+member(Xtable,List),

Page 11: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

Z本主主主主主本主主主主本主主主主主主主主主主主主主主主主主主主zz ゴール実行トップレベル Z Z主主主主主主事本主主字本主主主主主主主主主主主主主主主主主主本Zgoal(Goal):-

goa I (Goa 1, PI an), abol ish(plan,l), asserta(plan(Plan)),

Z孝章本寺本孝章主主主本主主主本本主主主主客本寺本主主主孝章孝章本寺本主主主主客Zz 上下 (Object,Support)がゴール Z Z主主主主主主主主主主主本主主主主主主主本主主主主主本主本本主主主主主主事主主主Zgoal(上下 (Object,Support),Plan):-

上下 (Object,Support),

第 5章 自然言語インターフェース 119

I istwrite(['すでに.', Object,'は, ,Support,'の上にあります']), plan(Plan).

goal(上下 (Object,Support),[[上下 (Object,Support),stack(Object,Support)]]) : -

干+(上下 (X,Support)),手の中 (Object),

stack(Object,Support). goal(上下 (Object,Support),T):-

上下〈ー, Support),

goaIO+(上下〈ー, Support)),Tl),goal(上下 (Object,Support),T2),append(Tl, T2, T).

goal(上下 (Object,Support),T):-干+(手の中 (Object)),

goal(手の中 (Object), T1), goal(上下 (Object,Support),T2),append(Tl,T2,T).

z主主主主主主主主主主宰主主主本主主主本主本主主主主主主主主主主ZZ 上下 1(Support)がゴール zz字本主主主主宇主主主主本主主主主主主主主主本主主主主主主主主主Zgoal(上下 1(Support),Plan):-

干+手の中〈ー),

listwrite(['手の中に何も持っていません']), plan(Plan).

goal(上下 1(Support),Plan):-手の中 (Object),

goal(上下 (Object,Support),Plan).2主主主主主主主主主主主主主主本主主主主主主主主主主孝章本主本主主主主主主主主主主主主主主主主主Zz テープ)¥;上 (Object)がゴール z z主主主主主主主主主主主主主主主主主主主主主主主主本主主宰主主主主主主本主主主主主本主主主主字本Zgoal(テープル上 (Object),Plan):-

テープル上 (Object),

Page 12: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

120 第 2部 自然言語処理

1 istwrite(['すでに',Object,'はテープルの上にあります, ]) , plan(Plan).

goal(テープル上 (Object),[[テープル上(Object),putdown(Object)]]):-手の中 (Object),

putdown(Object). goal(テープル上 (Object),T):ー

干+(手の中 (Object)),

goal(手の中 (Object),Tl),goal(テープル上 (Object),T2),append(Tl,T2,T).

Z本本主主主主主主本主主主主主主主主主主主主主主主主主主主主主主主主主主主主意本11 テープル上 1がゴール z Z主主主主宇主主本主主本主主主主本主主主本主主主主主主主主主主本本主主主主主主本Zgoal(テ}プル上 1,Plan):-

v+手の中(ー),

1 istwrite(['手の中に何も持っていません']),

plan(Plan). goal(テープル上 1,[[テープル上(Object),putdown(Object)]]):・

手の中(Object),

pu tdown(Object). Z本主主本主主主主本主主主主主主主主主主主主主主主主主宰主主主主ZZ 手の中(X)がゴール Z Z主主本主主主主主主主主主主主主意本主主キキ本本主主主主主主主主zgoal(手の中 (Object),Plan):-

手の中(Object),

listwrite(['すでに',Object,'を持っていますっ),

plan(Plan). goal(手の中 (Object),[[手の中 (Object),unstack(Object,Support)]]):ー

上下 (Object,Support),h上下(ー,Objed),

干+(手の中(ー)),

unstack(Object,Support). goal(手の中 (Object),[[手の中 (Object),pickup(Object)]]):ー

テーブル上 (Object),

干+上下〈ー,Object), 干+(手の中〈ー)),

pickup(Object). goal(手の中 (Object),T):ー

手の中(X),? . .. goal0+(手の中 (X)),Tl),goal(手の中 (Object),T2),

append(Tl, T2, T). goal(手の中 (Object),T):-

上下仁,Object),

Page 13: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

goal(干+(上下〈ー,Object)),Tl),goal(手の中(Object),T2),append(Tl,T2,T).

2主主主主本主主主主主主主主主主主主主主主主主主主主主主宰主主主Zz 手の中 1がゴール Z Z本本主主主主幸孝章本主主主主主主主主主主主本主主主主本主主主主Zgoal(手の中 1,Plan):ー

第 5章 自然言語インターフェース 121

listwrite(['どの積木をとればいいのかわかりません']), plan(Plan).

Z本孝章本本主主主主主主主主本主本孝章本主主字本主主主主主意主主本主主主主主主主Z% Y+(上下〈ー,Support))がゴール Z Z主主主主主意孝章主主主主字本主主主本主主主主本主主主字本企本主主主主事主主主意Zgoal(干+(上下(ー,Support)),[]):-

V+(上下仁,Support)),

goal(干+(上下(ー,Support)),[[干+上下(Object,Support),unstack(Object,Support)]]):-

上下 (Object,Support),h上下(ー,Object),干+(手の中(ー)),

unstack(Object,Support). goal(干+(上下(ー,Suppo r t)) , T) : -

手の中〈ー), T . , goalげ+(手の中仁)),Tl),goal(干+(上下〈ー,Support)),T2),append(Tl, T2, T).

goal げ+(上下〈ー,Support)),T):-上下 (Object,Support),上下〈ー,Object),

goalげ+(上下(ー,Object)),Tl),goal(干+(上下〈ー,Support)),T2),

append(Tl, T2, T). 1孝章孝章孝章孝章本客字本主主本主主事主主本孝章主主主本本本企本ZI 干+(手の中〈ー))がゴール z z本本本章毒事孝章本主主主主主主主主主本主主主主主主主本本主孝章Zgoal(干+(手の中〈ー)),Plan):-

干+(手の中〈ー)),

1 istwrite(['何も持っていません']), plan(Plan).

goal(干+(手の中(ー)),[口+手の中 (Object),putdown(Object)]]):-手の中(Object),

pu tdown(Object). Z本本主主本主主孝章本主主本主主孝章孝章本孝章孝章本本主主孝章本Z% y+手の中 1がゴール Z Z毒事本主主主客孝章本本牢本毒事孝章孝章主主主本主主客本本孝章本Zgoal(干+手の中 1,Plan):鍋

干+(手の中〈ー)),

1 istwrite(['何も持っていません']),

Page 14: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

122 第 2部 自然言語処理

plan(Plan). goal(干+手の中 1,[ [干+手の中 (Object),putdown(Object)]]):・

手の中 (Object),

putdown(Object). 2本主主主本主主主主意本本主主主本主主本主主主主ZZ 積木を消す Z % X座標, Y座標 Z z主主主主主主主主主主本主主主主主主主主主主主主Zblockcls(X,Y):-

gg_box(X-5,Y-5,X+5,Y+5,O). 1主主主主本主本主主主主本寺本主主字本主主本主主主主主字本主主本zZ 積木を描く Z Z 積木名, X座標, Y座標 Z z字本主主主主主主字本主主主主主主主主主主主主主主主主本主主主主zblockdraw(Name,X,Y):-

積木 (Name,色,C,Color]),gg_box(X-5,Y-5,X+5,Y+5,Color).

Z本字主主主主主主主主本主主主主主主主主主主主主本主主主主主主本主主本主主主主主主主主主主主主意ZZ 積木を 1移動する z Z 積木名, X座標, Y座標, X方向, Y方向 Z Z主主主主主本主主主本主主本主主本主主主主主主主主主寺本本主主主主主本主主主主主主主主本主主主主Zblockwarp(Name,X,Y,DX,DY):-

blockcls(X,Y), blockdraw(Name,X+DX,Y+DY).

Z主主主主主主主主主主孝主主主本主主主本主主主主主主主客本本主主主宰本主主主主主意本主主主主主主Zz 積木とアームを移動する z Z 積木名, X座標, Y座標, X座標, Y座標 Z Z本主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主主Zblockmove(Name,X,SY,X,DY):司

SY =V= DY, (SV > DY->

Step = -2; Step = 2),

for(I,SY,DY-Step,Step),

fa i I .

blockwarp(Name,X, I ,O,Step), armwarp(X,I+15,O,Step),

blockmove(Name,SX,Y,DX,Y):-

sx =干= DX, (SX > DX ・〉

Step = -2; Step = 2),

for( I ,SX, DX-Step,Step),

blockwarp(Name, I ,Y,Step,O),

armwarp(I,Y+15,Step,O), fa i I •

blockmove(ー,噌'ー, -, -) . 1本本主主主孝章孝章本主主主主主主孝章孝章孝章本21 アームを消す z % X座標, Y座標 Z Z本主主主主本企孝章主主本主主主主主主孝章主主主Z

Page 15: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

armcls(X,Y):-gg_box(X-2,Y-10,X+2,Y+50,O).

2主主主主主主主本主主主主主主主主本主主主主主主Zz アームを描く Z % X座標, Y座標 z Z主主主本主主主主主主主主主主主主本主主主主主主Zarmdral.'(X,Y):-

gg_box(X-2,Y-10,X+2,Y+50,4). Z主主主主主キキ本*本字本主主主主主主主本主主主主主主本主主字本主主主主主主本主Zz アームを 1移動ずる , % % x座標, Y座標, X方向, Y方向 z Z本本主主主主主主主主主主主主主本主主主主主主主事主主主主主本主主主主主主本主主Zarml.'arp(X,Y,DX,DY):-

armcls(X,Y), armdral.'(X+DX,Y+DY).

2主主孝章本主主主主主主本主主主主主主主主主主主主客主主主主主本主主本企本意字本Zz アームを移動ずる Z % X座標, Y座標, X座標, Y座標 z Z主主主主主主主主主主主主主主主主主主主本主主主主主本主主主本主主主主主主主主主Zarmmove(X,SY,X,DY):-

SY =干= DY, (SY > DY->

Step = -2; Step = 2),

for(I,SY,DY-Step,Step), arml.'arp(X, I ,O,Step),

、、,,,

nu ,

nv

'由、

、、,,,

ETb

nvp、以

EV'

+bV・

.,,F

3

'

q4

、3J'l'

-hJゐnur,,、、

-wnド

==ιし「

¥u

。nw

-

n

v

n

v

-

u

w

lv白」VXハ閉

、3〆

&

4

L

n

u

r

v

y

V

A

C

M

F

3

a

'nUV八

V八

V

A

n

H

u

n

b

nu=

.,UT〉

11

E1・uv・--

〆6、、

l

'

V

r

a

v人

V

A

p

b

o

干E

C

J

F

3

f

t

ε

l

,,‘、ρu uv

hv mm

mm v' 笥帥

fa i I .

WAwbwb

φ

A

V

&号

品るる孟す

&

A

T

£

A

'

φ令・

6令

A

v

w

e

.

Bノ

X

T

-

F

A

E

ふXT・4aるゐ.

.

、BJFEL

必ゐ・ユ品ゐ

.

B

J

n

H

r

s

&

M

U

v

r

i

必令『7

6

-

r

t

H

u

。a

・&令14e令

.

.

&

u

n

'

&

4

L

-

e

r

k

-φ令

JVA--

D

R

H

a

'命令エる令

:

v・

/

k

r

-

t

,ιb

-や令

ζJφ令、J

E

l

e

w

-

-

.

l

r

r

'φ令・φ令守」

V

A

&

b

1

E

a

D

E

e

-G令

M

φ

r

E

L

l

S

A

U

-

-

s

l

n

u

Q

U

'必令

L

f

K

2

1

t

r

-

'

'

n

u

a

V

A

S

-&品-wv&ふ・白lvnH白LUW'lnv'hrr、FT・-inr/1Ga

ff、、必み・

6ゐ

-

A

T

u

i

T

u

f

f

t

i

T

U

ρ・、や品する令i'

a

'

'

l

'

l

Q

U

V↓

v

r

r

'

l

U

A

V

U

W

U

W

9

qasl

mや

4

b

A

L

-

-

mmやA

I

φ

s

s

r

r

・l

r

-

a

E

I

-

n

v

n

v

q

a

aqhmwbqAt

a

-

-

e

l

s

'

L

M

H

第 5章 自然言語インターフェース 123

Page 16: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

124 第 2部 自然言語処理

、,ノ

,,、,J

1ノ

¥J1J

、,Jq'u

、,ノ

uy

,ヮL

〆z、uyfs、.

0.

,,.、』,,

a

1

J

a

、J

L帆

V入

iknH

f¥FEL

,s‘、

p'

ι・U

〆z

、qAHHU

LJ円UAEuwAIν

HT'

EW--

r

o

b

e

n

k

、J

ふbnveo〆t

、nv

'

'

e

p

s

・-

e

J

u

r

・p'g曲。

AW免帥

&

b

n

H

n「〆t

卜k

p

b

'

F巴

/

k

r

t

'

n

u

I

'

4

L

A

U

1

4

C

n

a

a

F

ι

・t

-

r

'

n

v

r

r

4

b

4

b

e

a

o

e

r

ι

L

4

b

'

t

r

a

p

b

F

3

7

4L

QM ,

,,、、FE nv at

fai 1. for(I,Start,End,Step):-

Step > 0, Start > End,

fa i 1 . for(Start,Start,End,Step). for(I,Start,End,Step):ー

Startl is Start+Step, for(I,Startl,End,Step).

input(A) ttygetO(C), inputl(C,A),

i nputl(31 ,[]). inputl(C,[CIR])

input(R). append([],X,X). append([AIX],Y,[AIZ]):-

append(X,Y,Z). member(A,[AI_]). member(X,[YIZ]):司

member(X,Z). gg_box(X,Y,Xl,Yl,C):-

Nx is X本3+100+1,Ny is 200・y本3-1,Nxl is Xl本3+100・1, Nyl is 200・Yl本3+1,g_box(Nx,Ny,Nxl,Nyl,C,ー).

redraw: g_1 ine(100,20,219,20,4,ー), g_box(100,200,219,210,4,ー), アーム(位置,Xarm),armdraw(Xarm,60), 積木 (Name,位置,[X,Y]),

blockdraw(Name,X,Y), fai 1.

、BJ

EJ,

の向口

、色黄

、車一同

、赤ヲ」ー上の・レ.,,

''-

りりテ

1

;

'AUrB』

-na孟,t

,,、,s

、oiv

''lr・&L

r'lo--

V

0

3

p

'

ρlvF'p

・uw

t『

pbHUAL

P-uQUFLed

-jnuAHUJnM

・E

-qb

UWP3

。a剛剛

PE

且YμV

AU---

oivnH

"'i'

Page 17: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

第 5章 自然言語インターフェース 125

、、,,、、,,,、、,,,

1412J

l

J

'

,J

λ

λ

λ

'つ

'積'い'わ'下、ん例

λ

λ

mW4的

;'''''''''';;l-

nU「LnurLnU「LnurLnurLAU「LAUF-LnurL

,:

nuτr、n吐

r、nuτr、nU1r、A‘r、nuτ

〆K4ar、nuτr、AU、J

〆ke

〆ke

r

t

e

f

k

e

r、efte〆te

r

、e

〆t、司J

F'z?bF,.,bpl+bFE+む伊1

・Tb伊ES?bF'・Tb

'a+む伊・・FEE』

0

・lAVito--olo--oi『

AV--lOlo'

s

r

s

r

s

r

s

r

s

r

s

r

s

r

s

r

S

14

r・uwv'MWPEUwv'υ"r'uwp'uwr'uwv'uwr'FEL

HU且

TU

HUAIUHU41w

HuayuHU17uv

HU且

TUHUAIU

HUAIUHU〆,、、

pivcup-veop~edFEMeopLQdp」

coplv

。OFivedpb

1

--EE--at--E-B'-it--a'-

・''一-a'-OL

Au--JOts-JOIEJ日

1・Ju--Jul・Jul・JOIEjnu且

TUAL

HU F」

白bpiV

9帥nv

c一

v

-

-

-

-

-

-

-

、3ノ.、‘ノ.、2

.

.

.

.

v・、J

V・、,JUY

、J1ノ、J

、ノ

'uy'uy'UY1JUW

V

、3・'

1」,、J

'1」

'

u

w

'

'

'

1」

I」

VAV八V八V八V八

V八l'7L

J

e

v

l

irt-E/也、

ll

〆KVAf、

、Je

A

u

l

'

T

a

oOFSPOPE『

tr'rlLrE

V八

AUAV

ρu-

Bl

nuτeA吐

e

n吐

e

'

e

'

/

1

0

円し

Au、,JU

Y

4

t

4

t

4

t

1

t

、Jk

C

〆t

o

v

r

L

o

n44bqA4b勺

4+b7L+b-v'C/-K1i

・Fし/、、,

qu

qd

HuqJ川

uqd

HullHu

--rt、気抽

円UAU

、3ノ「l』

AU

、1」'l

-

C

C

-

C

V

C

S

ι

U

4

b

a

可」

'

a

T

l

「L

e

r

L

e

r

L

e

「L

e

、ノ

n

y

-

e

e

「L

e

e

-

-

t

=

「、

c

fke

f-

c

f

k

C

「」

・l

e

-

-

9

0

r

'

Aur1ノ

qA〉

r

a

r

a

r

ara-vypy--K

UJC

1AG

C

-JVA

envenvenvenv

、3ノ'

l

u

-

、3Jibs-qJFし

srL''I'

4LS4LS4LS4LS1JV八

ιuAUV八

&La--〆kfta''iVAT-

4

b

&

L

4

L

+

i

u

「-L「L

f

I'I

l」VA

H

U

H

U

H

U

H

u

f

t

、、ft、

A

U

A

U

A

U

「l」「l』

p

i

v

p

u

p

u

p

u

QUQJV

t、/札、

e

e

e

e

n

n

e

e

e

i

J

J

pivhLPL

「し

v

'

E

B

-

P

E

P

-

r

'

nHnH

a

a

a

a

e

t

c

-

C

C

C

ゎnLMH

n

H

n

v

n

v

h

H

-

H

U

H

U

O

u

e

o

e

d

-

-

s

s

s

s

h

u

l

o

a

a

a

A

U

A

U

・EEE-qL

V入

品En

o

phd h4

る令、B

ノ口6q'-

11

1

VA

f、、

4

・・・

•• 791J¥ノ、j

nO中

11JT'

『,・中lTi申

1

2

,T

つd中

111T1

・〆t、V八

/

-EEdwPEE』・・Edv

s

n

'

n

iskH1」

LK

-巾

l

-

UYAu--AU

UE円

「L

ft、

.EEJV

nH LK

AU

図5-3 小さな積木の世界のプログラムリスト

Page 18: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

126 第 2部 自然言語処理

上下(青い積木,赤い積木)

上下(白い積木,黄色い積木)

と記述される。積木の属性については、色と位賓の 2つの属性が記述される。

色の属性は

[赤,2J

のように、色の名前と Prologにおける色コードの 2要素のリストで記述さ

れる。位置は、

[X座標,Y座標]

という 2要素のリストで記述される。

図5-3の最初にある述語がトップレベルの述語である。積木の世界の初期設

定の後に

文の読み込み

入力文解析

解析結果の実行

の順で、ユーザーが終了コマンド「ばいばい」を入力するまでループを続ける。

文の読み込みは漢字仮名交じり文で行なう。通常の入力では漢字や仮名は 2

バイト文字として扱われる。このプログラムでは漢字や仮名をシフト JISコ

ードに変換する。入力文は文字コードのリストとして保持されるために、シ

フト]ISコードに変換することでリストの長さが半分になる。リストの長さ

が短くなるために、解析スピードは速くなる。無論解析辞書の方も、文字列

をシフト]ISコードで、持っていなくてはならない。

また解析に失敗したときに

bufins/l

という述語を実行しているがこれは、キーボードバッファに解析に失敗した

文字列をセットする述語である。この述語によって解析に失敗したときは、

前の入力文の再編集という形で入力を継続できる。

文の解析については5.2.2で詳しく解説する。ここでは入力文の構文解析と

意味解析を同時に行なって、直接実行可能な Prologプログラムを生成する。

解析結果の実行は、文字通り解析結果の述語をコールするだけである。命

令文の解析結果は

Page 19: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

第 5章 自然言語インターフェース 127

goal/l

の形をとっている。 goal/l述語はすぐ goa1/2述語を呼び出す。 goa1/2の中で

は、プランの生成と実行を同時に行なっている。 1番目の引き数には解析結

果が入札 2番目の引き数にはプランが返るようになっている。この 2番目

の引き数はアサートされる。プログラムを「なぜ~したのかJrどうやって~し

たのか」といった、動作の履歴に関する質問に答えられるように拡張するとき

はこのプランを参照する。

プランニングは、第3章で紹介したシステムよりも単純なものである。第

3章のシステムでは複合ゴールを扱つことができるが、このシステムでは単

一のゴールしか扱えない。各goal述語は、命令の内容を渡されたあと最初に

制約条件を満たしているかどうかをチェックする。例えば赤い積木の上に青

い積木が乗っている場合に、「赤い積木を取れ」という命令が入力された場合

は、まず最初に青い積木を取り除かなければならない。

制約条件を満たした場合は、以下に挙げる 4つの作用素のいずれかが実行

される。

① stack/2

他の積木の上に積木を重ねる。

② unstack/2

他の積木の上から積木を取る。

③ pickup/l

テーブルの上から積木を取る。

④ putdown/l

アームでっかんでいる積木をテーブル上に置く。",

いずれの述語も、まず世界の記述を変更し、その後でロボットの腕の動作を

アニメーション表示した上で、メッセージを合成して出力する。世界の記述

の変更は第3章でも示したように、作用素の削除リストの内容を retractし

て、追加リストの内容を a田ertする。 putdown/lではテープツレ上の空いてい

る位置を捜す述語

findspace/l

がコールされる。この findspace/lの中で用いられている

kai_list/3

は、第2引き数で指定された述語のパックトラックで得られる全ての解をリ

Page 20: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

128 第 2部 自然言語処理

ストで返す。例えば

?-kaL list (X, append (X,ー, [a,b,c]),List).

は、

List = [[], [aJ.[a,bJ.[a,b,c]]

を返す。

グラフィック述語の中ではアニメーション表示を行なうために、積木を描

く、消す、少し移動して描く・・・という処理を繰り返している。その述語

の中では

for/4

が呼ばれている。この述語を用いると、 for/4述語と failの聞の一連の述語

を、 BASICのFOR-NEXT構文と同様に用いる事ができる。第 1引き数は

ループ制御変数、第2引き数と第3引き数はループ制御変数の初期値、終値、

第4引き数はステップ数である。当然、ループ制御変数をループの中の述語

で利用することも可能である。例えば

?-for (I ,1,10,2) ,write (I) ,tab (1) ,fail.

を実行すると

13579

を画面に出力する。

5.2.2 入力文の解析

ロボットに命令をする時の位置指定ではr_の上Jr-の下」を意味する表現

のみが許される。r_の右Jr-の左」という位置指定はできない。命令では、積

木を取ったり、他の積木やテーブルの上に置いたりする事を指示できる。

ユーザーが入力した命令文を解析するためにはどのような辞書を持ってい

る必要があるだろうか。例えば以下のような文をシステムは理解しなければ

ならない。

① ある積木を他の積木の上に重ねる

赤い積木を黄色い積木の上に置け

(赤い積木を既に持っている場合)黄色い積木の上に置け

②他の積木の上あるいはテープルの上から積木を取る

Page 21: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

赤い積木を取れ

③積木をテーブルの上に置く

赤い積木を置け

第 5章 自然言語インターフヱース 129

しかし、ユーザーは以上のような命令を様々の表現を使って行なうであろう。

まず同じ意味の文を別の構文で言う場合を考えよう o 日本語の場合は語)i展の

自由度が大きいので、

赤い積木を黄色い積木の上に置け

黄色い積木の上に赤い積木を置け

のどちらの方法でも同じ意味表現を得られなくてはならない。また、

赤い積木を取って黄色い積木の上に置け

のように、接続調で結合した文も扱う必要がある。

次に文を構成する各単語の言い換え、すなわち同義語について考える。名

詞のレベルで、は「積木」の同義語として

箱 はこ

フ事ロック ぶろつく

つみき

などを登鉢しておく必要があるだろう。テーブルや位置に関する名詞も同様

である。名詞句のレベルでも「赤い積木」と「赤Jf赤いのJは同じ意味を表わす

ものとして解析できることが求められる。

動調については、「置け」の代わりに「下ろせ」、「動かせ」の代わりに「移動し

ろJr移せJf持っていけ」を入力した場合も理解しなければならない。また、命}

令形であることを伝えるための動詩句の語尾についても、

置け

置いて

置いてください

置きなさい

は全て命令(あるいは依頼)を表わすものと考える。

さて、こうした同義文や同義語を組み合わせた入力文のパターンは膨大な

ものになる。それらを一つ一つ記述するわけにはいかない。そこである基準

でまとめることのできる語や文をカテゴリー名の元にまとめて、そのカテゴ

リー名のレベルで入力文のパターンを記述していくことになる。

Page 22: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

130 第 2部 自然言語処理

語や文をまとめる基準には多くの場合、名調、動調、形容詞といった品詞

を用いることが多い。品調を用いた基準は一般性が高く、どのような領域に

も適用できるという利点がある。機械翻訳システムのように広い領域を対象

とした自然言語処理システムには、こうした品詞を用いたカテゴリ一分類が

用いられる。

しかし、こうした品詞のレベルでカテゴリ一分けした場合、入力文から抽

出する情報は品調の並ぴ方に関するものだけになる。自然言語インターフェ

ースとして必要な情報を得るにはさらに、各品調を構成する語の意味を参照

しながら係受け関係をもとに意味解析をしなければならない。さらに、意味

解析の結果を、システムが理解(実行)できる形に変換する必要も出てくる。

積木の世界における命令文の場合は、まず最初に

赤い積木を黄色い積木の上に置け

という文が文法にマッチしているかをチェックすると同時に

形容詞(赤い) 名詞(積木) 助調(を)

形容調(黄色い) 名詞(積木) 助詞(の) 名詞(上) 助詞(に)

動詞(置く,活用形(命令形))

といった、品調レベルでの情報を抜き出す。その後に助詞を手がかりに係受

け関係を調べて、意味表現を得る。

置く(

目的格(修飾(積木,赤い)) ,

場所格(上,修飾(積木,黄色い))

さらに、積木の世界のプログラムが実行可能な形式に翻訳して、ょうやくロ

ボットの動作のプランニングに取りかかることができる。

しかし、こうした品調を基準とした解析は処理の子順が多く、複雑で、ある。

また、構文解析は領域に依存しない一般的なものであるが、そのかわり意味

解析については領域ごとに異なる物を用意しなければならない。さらに、同

じ文法カテゴリーに属するものが多くあるため、解析途中でのパックトラッ

クの回数が多くなり、処理時間も長い。積木の世界のように、限定された領

域に対する自然言語インターフェースを作成する場合は、他のやり方を考え

るべきであろう。

この章で用いたカテゴリ一分けの基準は、積木の世界特有の意味単位であ

る。特定の積木を指定するには、積木の色さえ分かればよい。積木が名詞で

Page 23: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

第 5章 自然言語インターフェース 131

あることや目的語であることは、積木の世界のプログラムは知る必要はない

のである。 f追って

赤い積木

赤いブロ ック

赤いの

といった一連の同義語に対し

積木(赤い積木)

といったカテゴリーを与える。また動詞については、積木の世界のフoログラ

ムが処理することのできる述語と 1対 1に対応するカテゴリーを与える。例

えば

取る

つかむ

取り上げる

は、単に「動調」というカテゴリーでまとめるのではなく、「把握動調」というよ

り具体的なカテゴリーで分類する。

上記のような意味を基準としたカテゴリ一分けを用いると

赤い積木を取れ

赤いのを取り上げろ

赤いブロックをつかみなさい

といった同義文は全て

積木(赤い積木)+を+把握動詞(命令形)

という、カテゴリーの列で記述できてしまう 。しかも、上記のカテゴリ一列

goal (手の中(赤い積木))

という、積木の世界のプログラムが直接実行することのできる述語と 1対 1

に対応している。こうした意味カテゴリーを基準とした文法記述の手法は、

意味文法と呼ばれている。意味文法を用いた文章の解析には以下に挙げるよ

うな特長が指摘されている。

① カテゴリーが細分化されているので、パックトラックの回数が少なくて

Page 24: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

132 第 2部 自然言語処理

すみ高速な解析ができる。

② 構文解析と意味解析を一度に行なってしまっので、あとで余分な処理を

しないで、も、解析結果をそのまま意味表現として利用できる。

③ 構文解釈で生じる複数の解釈の衝突をさけ、一意的な解釈が容易に達成

できる。

④ 文法は領域に応じた意味を元に記述するので、品詞や構文に関する専門

的知識を持っていなくても簡単に記述することができる。

図5-4がこうした意味カテゴリーを基準に した文法記述を用いた入力文解

析フ。ログラムである。

入力文に対しては

spacecutter /2

という述語で前処理を行なっている。 spacecutter/1でiま、スペースや句読点

の除去を行なっている。解析法によってはスペースや句読点、助詞を解析の

際の重要な手がかりとすることがあるが、このプログラムでは無視して解析

を行なう。

意味文法は OCGによって記述をした後に Prologプログラムに変換した。

DCGについては、たいていの Prologの入門書に出ているのでそちらを参照

してもらいたい。

Page 25: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

第 5章 自然言語インターフヱース 133

、、,,,11

EEJ

、、,,

EEE

't-n斗ゐ

-nu

'

nu

1ノ

21

つd

AU

e

n

u

z

ρ

O

Q

U

R

U

AUnu

n,4qA

q〈

υqd

p

i

d

-

-

-

,、,ノ'

、J

/

ftiqL

S

T

U

E

T

U

E

T

U

『,,

-n川U

A宝

-

u

n

ν

h

u

n

nu'nu

、1ノ

'

'

'

4

L

4

・u

q

,白、1」円4

ハU

1ノ、

J

uhυhqtu'iqu

q

4

n

口山

+

b

ιし

4

L

4

L

1

j

、、ノ、、ノ

'

'

-

q

u

k

E

、、ノ

ν

n

r

r

r

4

L

4

L

4

l

'

ll

'

五日

A

4

'

o

o

o

u

h

v

n

u

h

+

b

みし

noqA守

f

'

'

v

h

¥

J

p

p

n

'

'

'

c

c

p

o

q

L

q

J

H

n

u

m

A

L

P

O

-

P

、J

J

e

e

n

u

n

u

n

u

d

o

、,ノ

C

u

'

H

u

'

u

'

4

L

'

4

'

4

L

'

'

J

i

J

n

4

n

,LqA

n

u

-

Pし

L

'

e

'

F

D

,、】ノ

-F3、3ノ'・

Pコ,

、3J

・「、】ノ・

r

、3ノ「¥ノ

ιu'

・ι

u

'

・qJqJqJ

G

1,ノ,、ノ

C、Jijv、ノ,、F44L¥ノ

'4L、ノ、ノ,、ノ

4lu、ノ

04し、ノ

0

4む

04bnu、ノ、ノ

nu

、ノ、ノ---

J・J

-

]

-

tttrttrttddλ町

d

t

tt'''

be-〈

A白

Aeep'up'u'p-up'・上

e

A

Ammm

-nh〉命〉|-〉連

0

J〉ロ

J〉

JJP1・JPJ1JJ用

plsplS〉

P〉

S

P〉〉レ

J'IL'J1000

)

9〉,〉

O〉,

(

b

t叶「

btbbu-bub-bb車-uykuJK4ut(U3tlib-/-111jb-222

0

M

m州

J

AのJAωJJLωJJLωJJJL1CML1仁

J

A

1ぷ

LAプJ2-Lプ

3-JLJJJ

mJ代パ

αロω

パ1-の2

一1一手

2-l-下3-2-(一下

3-2-(-下

4一3-2一(一下

2-(一下

3一2-1-下

JJI--3-nh(-一七

2-〈-仇

Ahnh

MJnhul--uLU2-L手

LLhqhnh上

Ahhh詞上

nhnh詞上

LAh丸詞上向山詞上ム丸町山上

phnhLテ

nh(-詞

(-L詞凶凶閃

,1iFbo

,。,。,-,一

-'一-'-

-もH

--ゐH

---品。

-出羽

---'

---

-QM川市山

,QM-hリq4qAh4

1-og2g2g3(1(〈

l((1〈

3

1

(〈

5

1〈

(

5

1〈重

1〈

(fkl(〈

(

1

(

一重

17tE333

Lhノりロしく-しく-し(-尾

LJ詞

Lo--詞人

o-s-載

s-o-載

0一詞

s-載

s-載

o-s-詞

LS一o-詞

O-ル

o-載

L

L

L

2-(-LL句

3-き動

3-き動

Jき

4-き

5-き

3-き積

5-き

5-き

4-き

4-ブ

(

(

(

(

Z乍

2乍

3作

(

(

(

(

(

MM尾

MA叩一夜

-Fれ操制操依一向つ把何つ積何つつ移何つつ移何つ把つ移何つ移何つつ積何つつ積何つテ移何テつ例一糊蹄一闘

A

f.

Page 26: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

134 第 2部 自然言語処理

、、,,,l

J-

E

A

.

、、,,

一、

PJ

V入

1

1

4

L

'

n性

C'I

Q

u

e

-

nu

,J'

q

A

h

U

1」

q

u

n

u

n

4

1

j

、ノ、J

、ノ、J

¥

/

、ノ、ノ可ノ、J

-

-

-

'

-

V

A

V

V

A

V

V八

V八

V

A

V

V

A

V

.. ,

..

, .. 「lJ1l

J

,,

、J

3ノ

f

'

I

t

1

A

1

A

1

A

・I

・-1

A

'

i

1

A

1

4

1

A

1

ノaTU

1

ノ+u

、3ノよし

f

1J

-nHU

-

-

-

-

-

-

-

-

-

-

a

T

U

+

u

r

t

u

r

nuiLtlnu

'

'

'

'

'

'

'

'

'

'

・r・ハv

'

r

・A

v

'

F

'

n

v

、‘ノ.、3J

'

'

つ臼

CρbqL

l

J

1

」可」

1

4

1

J

J

1

J

1

J

1

J

1

」.、J

O

P

、J0

0

・、ノ

O

P

V八、J

V

八¥ノ.、J

、J

-

J

e

--q

J

q

L

q

L

q

4

q

4

q

,a

勺4

・qA-qA-q・

4

q

L

-

-V八nvp-q4

・nvnγqJ-

・nvnv

・'

V

八'V八・・,勺4

・・.,qL

.

.

.

-

t

J

n

u

-

-

-

-

-

-

-

、3ノ

-、】〆-、3J

'nvHu

-、、ノnvHu-

、3ノnvHu

、3'''i''i

,、,J

-

、3ノ、,J

-

、,J

、,,,

'huq4'

・i'

・1B

・1』

・ll

・Il--'V八11V八lEV八l'

・l,

.、j

'

l

u

qM

'

21

U

Q

M

'

1iucJ'A-1--'A¥jqa

''A1Jqυ''i

、ノ勺G

Qunuqdq,白、ノpb

、joO

可ノ4‘、JqL-JFD1jq4

,h,G

,口u

,O01ノqJ

、ノV八-Qu

,qo-F3'qd

-

F

3

'

-

'

-

'

:

i

-

q

u

-

'

i

-

q

a

-

'

i

-

p

b

'

・ロU

VA

Fb

v

八FhdV八FUV八ρOV八氏UV八Fb1Aq・

41iGU--QUVAn吐

V八'''司υ

-

'

'つd

-

'

'

qL

'n4

'

q

A

,-

-,

-'-,

-,

nu--rLnu'QU

,nu'QU'nu

,勾バョ

,n

U

E

q,L-RU-nu

,nu

,tIq41i-/kq41・-r、勺4'l-qL-n4-qL'nuE/K

勺G'nuτJkqL'qu

?臼

-'q414マ514q4'lau--qL1iQUTiq,“,QU

,oo

,q41iQU'i--

-

'

-

-

,・:-

-

'-/K

-/k-n官

-

-

n

せ-・2

-

q

d

-

ML-リ日し日

L-Nし日丸一円丸山一しいり日け日け-M丸山

しqh一戸臥ム

ω川町臥ム…リパ航ふけ-相同相同杭災いれ川町肌以-MU郎氏いれ

O一き亦'atL

相仁引く-引く-U帆

fしれ(-飢一引一

vH一一れfk-

引〈-れ動引きe

助引き

e

助引き助制動制動レ-ブe

L-プe

L-プ

目きみ勤

5動

5動

5射

5動

5釘

5動下駅下新下新寸断可抗放き-み

V

置き-み

V

置き-み置費動積載列

-v置列

-v置円一

O

O

1移

o位

o位

.

{

{

Page 27: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

第 5章 自然言語インターフェース 135

位置助詞 C2,_1). つみき ([-28465,-269201_1],ー 1). つみさ ([-32062,-32035,-320851_1],_1).つみきく[-274881_1],_1).つみき([-32051 , -32079 1 _ 1 ] , _ 1 ) . つみき ([-31883,-31859,-31902,-319221_1],ー1) . つみきく[-32044,-32021,-32063,-320831ー1],_1).つみき([ー320521_1],_1).つみき ([-32030,-320621_1],_1).つみき C3,_1,赤い積木)

赤C3,_2,終止), つみき C2,_1).

つみき C2,_1,赤い積木〉

赤C2,_1).つみき C3,_1,青い積木〉

青C3,_2,終止), つみき C2,_1).

つみきく_2,_1 ,青い積木)青C2,_1).

つみきく_3,_1,白い積木〉

白C3,_2,終止), つみき C2,_I).

つみき C2,_1,白い積木)自C2,_1).

つみき C3,_1,黄色い積木〉黄色C3,_2,終止), つみきく_2,_1).

つみきく 2,_1,黄色い積木〉黄色C2,_1).

o v e r 1 ([-32052,-32092,-320901_1],_1). overl([ー32052,-287011_1],_1).位置助詞([-320551_1],_1).位置助詞([-320421_1],_1).位置助詞([-320591_1],_1).o v e r 2 ([-32074,-32027,-320921_1],_1). o v e r 2([-287011一1],_1).テープル ([-31899,129,91,-31883,-318611ー1],_1).テープル([-32060,129,91, -32044, -320231_1],ー1). テーブル ([-~99611_1J , _I).テーブル ([-32062,-32083,-320901_1],ー1). テープル([・281881_1J,_I).テープル ([-32066,-320941_1],_1).赤([司32096,-320871_1],ー1).

赤([-284601_1J,一1).赤C3,_I,Kt)

赤 C3,_2),形容詞語尾C2,_I,Kt).

青 ([-32096,-320881_1],_1).青 ([-284781_1],ー1). 青C3,ー1, K t)

青 C3,_2),形容 詞 語尾C2,ーl, Kt).

"

Page 28: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

136 第 2部 自然言語処理

白([-32075,-320211ー1],_1).白([-275021_1],_1).白C3,_1,Kt)

白C3,_2),形容詞語尾C2,_I,Kt).

黄色 ([-32085,-32094,-320211ー1],_1).黄色 ([-30295,-286021_1],_1).黄色 C3,ー1, K t)

黄色C3,_2),形容詞語尾C2,ー 1,K t) .

形容詞語尾 ([-32087,-320211_1],_1,未然). 形容詞語尾 ([-320831_1],ー1,連用). 形容詞語尾 ([-32087,-320631_1],_1,連用音便).

形容詞語尾 ([-320941_1],_1,終止). 形容詞語尾 ([-320941ー1], _1 ,連体). 形容詞語尾([司32081,-320221_1],_1,仮定). 移動動詞([ー32092,-32078,-320871_2],ー1,X)

さ 5C2,_1,X).移動動詞([-27730,-320871_2],ー1,X)

さ 5C2,_l, X).

移動動詞([-32092,-320621_2],ー1,X) さ 5C2,_1,X).

移動動詞 ([-305021_2],_1,X)さ 5(ー2,_I,X).

移動動詞([-32094,-32057,-320921_2],_I,X)

さ変( 2実 _1,X).移動動詞([-30502,-277301_2],_1,X)

さ変C2,_I,X).さ 5([-320771_1],_1,未然).

さ 5([-320691_1],_1,未然 5). さ 5([-320751_1],_1,連用).

さ 5([-320731_1],_1,終止).

さ 5([-320731_1],_1,連休). さ 5([-320711_1],_1,仮定).

さ 5([-320711_1],_1,命令). さ変 ([-320771_1],_1,未然).

さ変 ([-320751ー1], _1 ,未然). さ変 ([-320751_1],_1,連用). さ変 ([-32073,司320231_1],_1,終止).

さ変 ([-32073,-320231_1],ー1,連体). さ変 ([-32073,-320221_1],ー1,仮定).

さ変 ([-32071,-320261_1],_1,命令). さ変 ([-32075,-320211_1],_1,命令).

ま5([-320361_1],_1,未然). ま5([司320321_1], _1,未然 5). ま5([-320351_1],_1,連用). ま5([司320151_1],_1,連用音便). ま 5([-320341_1],_1,終止).

ま5([-320341_1],_1,連体). ま5([-320331_1],_1,仮定).

ま5([ -320331ー1],_1,命令). さ下一 ([-320711_1],ー 1,未然).

Page 29: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

さ下一 ([-320711_1],_1,連用).

さ下一 ([-32071,-320231_1],_1,終止).

さ下一 ([-32071,-320231ー1], _1 ,連体).

さ下一 ([-32071,-320221_1],_1,仮定).

さ下一 ([-32071,-320211_1],_1,命令).

さ下一([ー32071,-320261_1],ー 1,命令 ).

か 5([-320871_1],_1,未然). か5([-320791ー1], _1 ,未然 5). か5([司320851_1],_1,連用).

か5([-320631_1],_1,連用音便).

か 5([-320941_1],_1,連用音便).

か 5([-320831_1],_1,終止).

か 5([-320831ー1] , _1 ,連休).

か 5([-320941_1],_1,連休).

か5([ー320811_1],_1,仮定).

か5([・320811 _1 ] , _ 1 ,命令). 解放動詞 ([-32051,-320561_2],_1,X)

さ 5C2,_1,X).

解放動詞 ([-267171_2],_1,X)さ 5C2,_l,X).

解放動詞 ([-271421_2],ー1,X) さ 5C2,_1,X).

解放動詞([-32088, -320211_2],ー1, X)

さ 5C2,_1,X).解放動詞 ([-29314,-320211_2],_1,X)

さ 5C2,_1,X). 解放動詞([-30278, -320211_2],ー 1,x)

さ 5C2,_1,X).ら5([-320251ー1],_1,未然).

ら5([-320211_1],_1,未然 5). ら5([-320241_1],_1,連用).

ら5([-320631_1],_1,連用音便 ).

ら5([-320231_1],_1,終止).

ら 5([-320231_1],_1,連体).

ら5([-320221_1],_1,仮定). ら 5([-320221_1],_1,命令).

か変 ([-320791ー1], _1,未然). か変 ([-320851ー1], _ 1 ,連 用).

か変 ([-32083,-320231_1],_1,終止).

か変 ([-32083,-320231_1],_1,連休).

か変 ([-32083,ー320221_1],_1,仮定).

か変 ([-32079,ー320941_1],ー 1,命令).

図5-4 入力文解析プログラム

第 5章 自然言語インターフェース 137

Page 30: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

138 第 2部 自然言語処理

5.3 実行例と解説

図5-3のプランニングとアニメーション表示を行なうプログラムを、図5-4

の入力文解析フ。ログラムをコンサルトして

?-top.

と入力すると、小さな積木の世界の図が表示されて命令文の入力待ちとなる。

図5-5が、小さな積木の世界の初期状態である。(図5-1を再録)

ト白

青 II 白

赤 II賞

図5-5 小さな積木の世界の初期状態

ここで

赤い積木を黄色い積木の上に置け

と入力する。積木の世界のプログラムは入力文を解析して

goal (上下(赤い積木,黄色い積木))

という述語を生成する。この述語を実行することでプランが生成され、ロボ

ットのアームが動き出す。まず、アームは黄色い積木の上にある 白い積木を

テーフ.ルの上に移動する。これは赤い積木を載せるためのスペースを黄色い

積木の上に確保するための動作である。図~-6がその時の状態である。

次に赤い積木を取ろうとするが、赤い積木の上には青い積水カ補記っている。

そこで、ロボットのアームは青い積木もテーブル上へ移す。 図5-7がその時の

Page 31: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

第 5章 自然言語インターフェース 139

ロボットのアーム

図5-6 黄色い積木の上にスペースを確保するために

白い積木をテーブル上に移したところ

移動

図5-7 赤い積木をつかめるように、青い積木を

移動している途中

状態である。

赤い積木の上にも、黄色い積木の上にも何も置かれていないので、後は赤

い積木を黄色い積木の上に移動するだけである(図5-8)。

Page 32: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

140 第 2部 自然言語処理

l

図5-8 入力された命令文を遂行したところ

5.4 システムの評価意味文法による自然言語インタフェースは、汎用性が欠ける代わりに、慣

れてくればそう多くない工数で解析システムを構築することができる。また

解析スピードもパソコン上の Prologでも十分高速である。

プログラムにはメモリ的にまだ余裕があるので、積木の位置関係やロボッ

トの動作の履歴に関する質問文の処理などの機能の追加が可能で、あろう。

今回のインプリメントで考慮、した、 自然言語インターフェースの満たすべ

き要件には以下のようなものが挙げられる。

①べた書き日本語による入力を扱える

実験的なシステムでは文節ごとにスペースを挿入するものがあるが、実

用レベルの物はべた書きの入力が可能であることが望ましい。この章で紹

介したシステムでも対応している。

②応答スピードが早い

入力文の解析に何秒もかかり、挙げ句の果てに「入力文の意味が分かりま

せん」では実用にならない。特に解析失敗時には早く復帰することが望まし

い。この章で紹介したシステムでは、文法記述の工夫により解析は瞬時に

行なわれる。

③ 入力の表現に気を使わなくてもよい

同義語の辞書を充実させ、漢字でも平仮名でも入力できることが求めら

Page 33: 自然言語処理 - az-prolog.com · 11 口第2部自然言語処理 年代に入ると、ディスプレイの性能が上がり、マルチウインドーやアイコン、 ポインティングデイノfイスなど新しいマンマシンインターフェースのやり方

第 5章 自然言語インターフェース 141

れる。この章で紹介したシステムでは、入力文のパターンが少ないために

その分同義語辞書を充実させることができる。漢字仮名混じり入力にも対

応している。

④ 省略表現が可能

rA氏の年齢はいくつで、すか」という質問も rA氏の年齢」でも同じように

扱える。この章で紹介したシステムでも、

「黄色い積木Jと「黄色」

は同様に扱われる。

⑤解析失敗時の対応の仕方を示唆できる

「入力文の意味が分かりません」だけでなく、どの単語が分からないのか

を指摘してくれる。少なくとも解析に失敗した入力文を再編集できる機能

がほしい。この章で紹介したシステムでは、辞書にない単語の指摘はでき

ないが、解析に失敗した場合は、その文の再編集という形で続けることが

できる。

今回のシステムがパソコン上でも十分機能した理由には、積木の世界とい

った限定された領域を対象とした事と、入力文の解析に意味文法を採用した

事が挙げられる。この 2つの原則が適用できる領域であれば、他の分野でも

自然言語インターフェースを有効に生かしたアプリケーションを作成するこ

とができるだろう。