ベース技術:当社とチャットボットとの関わり
本章の構成は以下のようになっている。- 日本語版の積み木の世界、英日翻訳システム、後ろ向き推論・前向き推論システムをprolog言語により開発 prolog言語について、パソコンワールド誌で2年間の連載を持ち、その内容の一部を書籍化した 「Prologで学ぶAI手法」(啓学出版・絶版)Prologで学ぶAI手法 を著わすなど、第一人者として活躍していた。
- prologマシン向けエキスパートシステム、ベストセラー日英翻訳システムのルールコンパイラをprolog言語で開発 Prologマシン向けのアプリケーションを電力会社向けに開発。当時ベストセラーとなった日英翻訳システムのルールコンパイラ(文脈自由文法からC言語によるチャートパーサープログラムを生成)の開発をprolog言語で開発
- prolog言語によるロボット会話システムの開発 国内向けに1万台以上販売した、日本語会話機能のついたロボットの英語版展開に伴う英語chatbotの開発(ロボットの海外販売計画の中止に伴い中断)。
- prologによる算数文章題の解法提示チャットボットの開発 今回ChatGPTの推論部分として利用する
その頃の成果として、テリー・ウィノグラードの積み木の世界(SHRDLU(シュルドゥルー))を日本語化し公開。さらに英日翻訳システムのプロトタイプをprologで開発するなどした。
日本語版の積み木の世界、英日翻訳システム、後ろ向き推論・前向き推論システムをprolog言語により開発
本稿の著者は第五世代コンピュータプロジェクトの最中(さなか)である1985年に社会に出て前回のAIブームに深く関わってきた。16bit版全盛の頃で、32bitパソコンが出現する前に、32bit版のprolog言語(独自OS上のprolog専用マシン)を利用して、ルールベースのAIであるエキスパートシステムなどの研究開発を行っていた。
また、パソコンワールド誌に、16bitのPC98シリーズで動作するprolog言語(京都大学のProlog-KABA)上で様々なAIシステムを実現するプログラムを2年にわたって連載していた。
「高野真」名義で雑誌連載した内容を書籍化した「Prologで学ぶAI手法」(啓学出版・絶版)Prologで学ぶAI手法 は、現在ではpdf形式で、az-prologのホームページで公開している。
その後の第五世代コンピュータプロジェクトを含む第2次AIブームは収束し、2006年にジェフリー・ヒントン博士が深層学習に関する論文を発表するまでAIは冬の時代を迎えた。
ちなみにジェフリー・ヒントン博士は、第2次AIブームでもニューラルネットワーク研究を牽引しており、AI冬の時代にもコツコツと研究を続けて、現在は第3次AIブームに火を付けた「深層学習の父」と呼ばれている。
当社が関わってきた(設立前に社長がかかわったものを含む)チャットボットは3つある。それに加えて英日・日英翻訳システムにも深く関わってきた。
一つ目は「Prologで学ぶAI手法」にあるテリー・ウィノグラードの積み木の世界(SHRDLU(シュルドゥルー))を日本語化したものである。
二つ目は、国内販売されたロボットの持つ日本語チャット機能を、海外向けに英語化するプロジェクト。会話プロトコルの分析やチャットボット開発ツールの製作を行った。
三つめは小学校の文章題を解くチャットボットである。このチャットボットをChatGPTを利用して強化することが、本稿のテーマとなっている。
1986年~1988年 日本語 SHRDLU(積み木の世界)
アメリカのAI研究者ウィノグラードTerry Winograd(1946-)は、1978年から1980年にかけて「積み木の世界」で人間とコンピューターが対話するSHRDLUというシステムを構築した。来談者中心療法のセラピストのシミュレーションであるEliza(1968年)と双璧をなす初の本格的chatbotである。Elizaはテキストだけのやり取りだが、SHRDLUでの返答はテキストではなく、 ロボットあるいはアニメーションで、散らかった積み木を片づけたり積み上げたりする点が異なる。
本稿の著者は、SHRDLUの初の日本語化を1980年代にProlog言語上において行った。当初は「パソコンワールド誌」で「Prologで学ぶAI手法」の連載として、パソコン(PC9801/16bit/128KBメモリ)上のProlog処理系であるProlog-KABA上で構築した。
音声認識・音声合成はサポートしていないが、日本語キーボード入力による指示を解釈して、プランニング(計画)を行って、結果をロボットアームが積み木を動かすアニメーションで表示するというシステムである。
1988年に啓学出版から高野真名義で連載と同じ「Prologで学ぶAI手法」というタイトルで書籍化している。
今世紀に入って、「積み木の世界」の日本語版はprolog処理系にも移植され、また某商用ロボットが、音声の指示通りに積み木をロボットアームで操作するというデモンストレーションとしても採用された。
「Prologで学ぶAI手法」書籍データはここ
簡略化した積み木の世界(実際には積み木の形状、大きさも異なっている) | ||
---|---|---|
赤い積み木を青い積み木の上に乗せてちょーだい | ||
(1)赤い積み木の上の黄色い積み木をつかむ | (2)赤い積み木の上の黄色い積み木を空いている床に移動する | (3)赤い積み木の上の緑の積み木をつかむ |
(4)黄色い積み木の上に緑の積み木を移動する | (5)赤い積み木をつかむ | (6)赤い積み木を青い積み木の上に移動する |
1988年 英日翻訳システムをパソコンワールド誌で発表
積み木の世界では、入力された日本語を「文脈自由文法」ルールで解析していた。文脈自由文法では、ルールの数が百数十(小規模チャットボット)~数千(機械翻訳システムなど)におよぶ。 文の解析に失敗したときに、原因が辞書にあるのかルールにあるのかを特定するのが困難である。特にルールの数が数百~数千のオーダーになると、デバッグが「非常に」困難となる。筆者が開発した英日翻訳システムでは、HPSGという当時の最先端の言語理論に基づく辞書記述を行った。HPSGではルールの数が数個しかない。文の係受け情報は全て辞書に記述する。
文の解析に失敗したときに、数個しかないルールに問題がある可能性はほぼゼロである。解析に失敗した原因は、ほぼ100%失敗した文に使われているワードの辞書記述にある。
このようにHPSGは、メンテナンスが簡単であるという非常に強力な特長を持っていたが、日本に紹介されたばかりということもあり、それほどの反響は生まなかった。
連載では文の解析で生成された中間表現に対応する日本語文生成エンジンを組み合わせることで、英語から日本語に至る翻訳を完遂することができたが、パソコン雑誌への連載という制約から メモリ空間の狭い16ビットパソコン上のprologで動かす必要があった。最終的にインプリメントしたものは辞書が100語程度の実験的なシステムにとどまった。
現在は64bitで動作するprologがあるので、HPSGで実用システムを作ることも可能であろう。しかし、深層学習による大規模言語モデルが発表された現在では、一つ一つ辞書記述をしなければならないような 自然言語処理プロジェクトに意味があるとは思えない。
戻る
prologマシン向けエキスパートシステム、ベストセラー日英翻訳システムのルールコンパイラをprolog言語で開発
第五世代コンピュータ計画の一環として、第二次AIブームの真っ只中。パソコンといえば16bit版全盛の頃である。32bitパソコンであるwindows 95が発売される5年以上前に、32bit CPU上に独自OSとprologコンパイラを載せたprologマシンを開発し、prolog言語アプリケーションの開発を 行っていた。電力会社向けのルールベースのエキスパートシステムの開発や教育用のprologマシンを販売するなどの実績はあったが、第二次AIブームの終焉とともに prologマシン自体の開発や販売も終了した。
機械翻訳の会社において、ベストセラーとなった日英翻訳システムのルールコンパイラを開発した。
ルールコンパイラは、文脈自由文法で記述したルールと辞書を32bit prolog言語(32bitパソコンが出る以前のDOSエクステンダという32bit仮想環境ソフト上で実行)上でインタプリタ実行し、 動作確認後に、C言語のチャートパーサーを組み込んだソースとして出力するコンパイラである。prolog言語上でラピッドプロトタイピング、C言語によって高速実行するという2段階の 開発環境である。
その後20年ほどprolog言語からは遠ざかり社業としては文書画像認識専業となった。
戻る
prolog言語によるロボット会話システムの開発
2015年にprolog関連でお世話になった企業から、ロボット会話システムの開発に誘われる。開発言語は、ロボットのOS上で動作するprologだった。
当時word2vecやdoc2vecという、単語や文を多次元ベクトルに変換するプログラムが話題になっており、seq2seqという深層学習モデルによる翻訳やチャットボットが出始めた頃であった。
2015年時点では深層学習を利用したチャットボットは、まだ実用レベルに達していないという判断から、ルールベースのチャットボットやAIMLのようなマークアップツールによるチャットボット (ELIZAの仕組みに似ている)を参考にして開発を進めていた。
AIMLの"ML"はHTMLのMLと同じ"markup language"の略で、正規表現のようなマッチング文字列にマッチしたときに、どのように応答するかのルールを大量に記述してチャットボットとする
ユーザー | システム |
---|---|
*X見た | if(ako(X,サッカー)) 1:"見た見た どっち応援してた?" else 2:"見てないけどXに興味ある?" |
1:*Y* : if(member(Y,[カタール])) | "残念だったね" |
1:*Y* : if(member(Y,[エクアドル])) | "エクアドル強かったね" |
2:*ある* or *うん* | どんなところに? |
2:*ない* or まったく or *全然* | 興味ない人もいるよね。ところで平野レミが75才って知ってた? |
* | そうだね、ところでワールドカップとか興味ある? |
"*"は全ての文字列にマッチする(文字列無しにもマッチする)。 ako(X,Parent)はX is a kind of Parentならば真
member(Y,Listt)はYがListの要素の一つとマッチするならば真
数字の1,2はステータスを表している
上記のテンプレートマッチングルールがあると以下のようなチャットが成り立つ。
ユーザー | システム |
---|---|
ワールドカップ放送見た? | 見た見た どっち応援してた? |
開催国のカタール | 残念だったね |
ユーザー | システム |
---|---|
NHK杯見た? | 見てないけど。ところでサッカーに興味ある? |
ないけど | 興味ない人もいるよね。ところで平野レミが75才って知ってた? |
ユーザー | システム |
---|---|
昨日の朝ドラ面白かったね | そうだね。ところでワールドカップとか興味ある? |
プログラマーでなくてもチャットの対象ドメインに詳しい人が記述することができる。
システム側に、挨拶や天気に関するQAなどのルールが数万と用意されており、当たり障りの無い会話をするだけのルールは提供される。 そこに専門分野のルールを追加することで不自然な応答をできるだけ少なくすることができるようになっている。
AIMLのような誰でも利用できる簡単なツールから本格的な業務に利用できる有料システムまで幅広く存在する
戻る
Development of an arithmetic word problem solving system using prolog language
In 2017, a chatbot for arithmetic word problems was developed. At that time, it was developed as a hobby.- In 2017, a prototype program was created to analyze elementary school word problems and teach how to solve them A summary of what can be done with the prototype
- 2017: Transformer is born
- 2018: GPT is born
- 2020: GPT-3 is born
- 2022: "Chain of Thought" prompt engineering gains attention
- 2022: ChatGPT service launches in November
- 2023: Research begins to improve the accuracy of inference, search, and planning in ChatGPT. Development is focused on solving arithmetic word problems and providing solution strategies.
Version 0.1 | |
Acceptable Word Problems | Answer |
---|---|
There are a total of 80 cranes and turtles. When the sum of their legs is 200, how many cranes and turtles are there respectively? | There are 60 cranes and 20 turtles. |
There are a total of 8 cranes and turtles, and the sum of their legs is 26. How many cranes and turtles are there? Although the second half of the sentence after "however" fails in syntactic analysis, the first half is understood, so it is not a problem. |
There are 3 cranes and 5 turtles. |
There are a total of 10 cranes and turtles, and there are a total of 28 legs. How many cranes are there? | There are 6 cranes.(Cranes must always use "羽" as a counter word) |
There are a total of 12 turtles and cranes, and there are a total of 28 legs. How many turtles and cranes are there? | There are 2 turtles and 10 cranes.(Cranes must always use "羽" as a counter word) |
There are 12 cranes and turtles. If there are 30 legs, how many cranes are there? | There are 9 cranes.The "crane" in the question is used. |
Version 0.2 | |
Incorporate a database of the number of legs in general organisms. Only problems regarding the number of legs remain. | |
Version 0.1 + Additional Acceptable Word Problems | Answer |
There are a total of 12 octopuses and squids. If there are 104 legs, how many octopuses and squids are there? | There are 8 octopuses and 4 squids. |
There are a total of 7 ladybugs and spiders. If there are 44 legs, how many spiders are there? | There is 1 spider. |
Version 0.3 | |
In addition to the number of legs, correspond to the number of petals and stamens & explain the solution method | |
Version 0.2 + Additional Acceptable Word Problems | Answer |
There are 15 cherry blossoms and radish flowers. If there are 70 petals, how many cherry blossoms are there? | There are 10 cherry blossoms. |
Please tell me why. | If they are all radish flowers, there are 15 radish flowers and 60 petals. Since there are actually 70 petals, 10 petals are missing. If 10 radish flowers become one cherry blossom, 10 missing petals will be filled. Therefore, there are 5 fewer radish flowers, and there are 10 cherry blossoms. |
Version 0.4 (This is as far as I actually made) | |
Expand to include price, distribution of objects, and distribution of points | |
Version 0.3 + Additional Acceptable Word Problems | Answer |
I bought a total of 14 50 yen stamps and 80 yen stamps and paid 1000 yen. How many 50 yen stamps and 80 yen stamps did I buy? | I bought 4 50 yen stamps and 10 80 yen stamps. |
There are a total of 8 adults and children. When distributing 20 sheets of colored paper to each adult and 15 sheets to each child, there are a total of 150 sheets of colored paper. Answer the number of adults and children. | There are 6 adults and 2 children. |
Version 0.5 (Discontinued) | |
Extended distribution for general things that can be counted, such as steps | |
Planned for acceptance in version 0.4+ added text questions | |
Throw a coin, move 3 steps forward if it lands on heads, and move 2 steps back if it lands on tails. After throwing the coin 20 times, you were 30 steps ahead from the starting point. Answer how many times heads and tails landed. To go from home to the library, you initially walked at a speed of 60 meters per minute, then started running at a speed of 100 meters per minute and it took 20 minutes. When the distance walked was 400 meters more than the distance ran, answer the distance from home to the library. Person A's running speed is 120 meters per minute, and walking speed is 70 meters per minute. How many minutes does he need to run in order to advance 1200 meters in 10 minutes? |