
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件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
LINEのことはわかりません。
チャットボットについてです。
昔の人口”無能”の入門書で「恋するプログラムRuby」が刊行されたことがあります。
一時期、絶版だったのですが読者からの強い要望で復刊されました。
>恋するプログラム―Rubyでつくる人工無脳 (プレミアムブックス版)
https://www.amazon.co.jp/%E6%81%8B%E3%81%99%E3%8 …
質問で挙げられている手法では考えられるすべての組み合わせを条件判断しなければ成りません。
これでは機能を拡張するには限界が見えるので、「辞書」を用意して文字列を比較してあげます。
「自然言語処理」の部分に首を突っ込むとかなり難解(高度)かな?と思います。
私のお薦め人工無能ソフト「エクサ」。
>トモックの電脳パーク
>http://www.geocities.jp/tomock/
辞書ファイルをテキストエディッタで読み込ませて中身をのぞけば手がかりになると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのheader("Location:#pos")...
-
セッション関数を使わずにファ...
-
SplFileObject を利用したとき...
-
フォームで戻った際に入力済み...
-
PHP8でWarning:Undefined varia...
-
PHPで画像の渡しが上手く行きま...
-
composerをインストールしたい...
-
$filePath = './user_img/' . $...
-
php ラジオボタン
-
phpの問い合わせフォームを作っ...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
VBプログラムをEXCEL VBAに移植...
-
C言語のHP-UXからLinuxへのポ...
-
VB.net エラーメッセージを英文...
-
小中学校でプログラミングなん...
-
SNMPトラップ情報をC#.netで作...
-
printf系の書式「w」ってなに?
-
C言語プログラミング 逆行列を...
-
スクエニ バグ
-
Windows と WindowsVista の違...
-
無料のクリックカウンターない...
-
ニンテンドーDS用、自作プロ...
-
会話ができるLINEボットの設計...
-
ランチャーの作り方について教...
-
<python> main():関数
-
Ryzen 3700(無印)はWin11に対応...
-
Cプログラムの解析(関数の呼び...
-
AIなんて所詮人間のプログラ...
-
PICのI2C通信のプログラムについて
-
このプログラミング誰か教えて...
おすすめ情報