ベース技術:当社とチャットボットとの関わり

本章の構成は以下のようになっている。
  1. 日本語版の積み木の世界、英日翻訳システム、後ろ向き推論・前向き推論システムをprolog言語により開発
  2. prolog言語について、パソコンワールド誌で2年間の連載を持ち、その内容の一部を書籍化した 「Prologで学ぶAI手法」(啓学出版・絶版)Prologで学ぶAI手法 を著わすなど、第一人者として活躍していた。
    その頃の成果として、テリー・ウィノグラードの積み木の世界(SHRDLU(シュルドゥルー))を日本語化し公開。さらに英日翻訳システムのプロトタイプをprologで開発するなどした。
  3. prologマシン向けエキスパートシステム、ベストセラー日英翻訳システムのルールコンパイラをprolog言語で開発
  4. Prologマシン向けのアプリケーションを電力会社向けに開発。当時ベストセラーとなった日英翻訳システムのルールコンパイラ(文脈自由文法からC言語によるチャートパーサープログラムを生成)の開発をprolog言語で開発
  5. prolog言語によるロボット会話システムの開発
  6. 国内向けに1万台以上販売した、日本語会話機能のついたロボットの英語版展開に伴う英語chatbotの開発(ロボットの海外販売計画の中止に伴い中断)。
  7. prologによる算数文章題の解法提示チャットボットの開発
  8. 今回ChatGPTの推論部分として利用する

日本語版の積み木の世界、英日翻訳システム、後ろ向き推論・前向き推論システムを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
(1)赤い積み木の上の黄色い積み木をつかむ (2)赤い積み木の上の黄色い積み木を空いている床に移動する (3)赤い積み木の上の緑の積み木をつかむ
積み木の世界4 積み木の世界5 積み木の世界6
(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才って知ってた?
* そうだね、ところでワールドカップとか興味ある?
ルールのX,Yはアトム変数
"*"は全ての文字列にマッチする(文字列無しにもマッチする)。 ako(X,Parent)はX is a kind of Parentならば真
member(Y,Listt)はYがListの要素の一つとマッチするならば真
数字の1,2はステータスを表している
上記のテンプレートマッチングルールがあると以下のようなチャットが成り立つ。
ユーザー システム
ワールドカップ放送見た? 見た見た どっち応援してた?
開催国のカタール 残念だったね
できるだけシステムが得意な分野に話題を持って行こうとする。
ユーザー システム
NHK杯見た? 見てないけど。ところでサッカーに興味ある?
ないけど 興味ない人もいるよね。ところで平野レミが75才って知ってた?
どのルールにもマッチしないときは、ランダムに話題を得意な分野に持って行こうとする。
ユーザー システム
昨日の朝ドラ面白かったね そうだね。ところでワールドカップとか興味ある?

プログラマーでなくてもチャットの対象ドメインに詳しい人が記述することができる。

システム側に、挨拶や天気に関するQAなどのルールが数万と用意されており、当たり障りの無い会話をするだけのルールは提供される。 そこに専門分野のルールを追加することで不自然な応答をできるだけ少なくすることができるようになっている。

AIMLのような誰でも利用できる簡単なツールから本格的な業務に利用できる有料システムまで幅広く存在する
  • 2017年に市販ロボットによるチャットボット開発プロジェクト完了
  • 2015年より2年ほどの開発を経て。プロジェクトは終了した。

    戻る

    prolog言語による算数文章題解決システムの開発

    2017年に算数文章題チャットボットを開発。その時点では趣味で開発したもの。
    戻る