重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

line@のAPIを利用して、会話できるのボットを構築したいと考えています。

単語単位で反応するような仕組みはできたのですが
最終的には複数の会話のキャッチボールができるような仕組みを実現したいです。

例えばプロフィールを聞くようなボットの場合・・・・
------------------------------------
○あなたのお名前を教えてください
●山田太郎
○「山田太郎」さんですね、年齢はおいくつですか?
●27歳
○27歳ですね、性別も教えてください。
・・・・・・
------------------------------------
といったようなイメージです。

ここからが質問なのですが
この場合、私の思いつく方法では単純にひたすら長い条件分岐を
記載する方法しか思い浮かばないのですが、会話の内容が増えてくると非常に読みにくいというか、わかりにくいコードになりそうな気がしています。

イメージしているのは例えば以下のようなコードです
会話の進行状況を「status」にもたせておき、それに応じて会話を成り立たせていくような仕様です。
------------------
switch ($status) {
case 1:
$mes = 'あなたのお名前を教えてください';
 $status = 2;
break;

case 2:
$mes = '「{name}」さんですね、年齢はおいくつですか?';
 $status = 3;
break;

case 3:
$mes = '「{age}」ですね、性別も教えてください。';
 $status = 4;
break;

・・・・・・・・・・・

}
------------------

ざっくりとした質問で申し訳ないのですが
スマートな設計方法などあればご教示いただきたいです。


よろしくお願いします。

A 回答 (1件)

LINEのことはわかりません。


 チャットボットについてです。
 昔の人口”無能”の入門書で「恋するプログラムRuby」が刊行されたことがあります。
 一時期、絶版だったのですが読者からの強い要望で復刊されました。

>恋するプログラム―Rubyでつくる人工無脳 (プレミアムブックス版)
https://www.amazon.co.jp/%E6%81%8B%E3%81%99%E3%8 …

 質問で挙げられている手法では考えられるすべての組み合わせを条件判断しなければ成りません。
 これでは機能を拡張するには限界が見えるので、「辞書」を用意して文字列を比較してあげます。

 「自然言語処理」の部分に首を突っ込むとかなり難解(高度)かな?と思います。

 私のお薦め人工無能ソフト「エクサ」。

>トモックの電脳パーク
http://www.geocities.jp/tomock/

 辞書ファイルをテキストエディッタで読み込ませて中身をのぞけば手がかりになると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!