2

チャットボットを作りたいのですが、aiml で単一のパターンに対して複数の方法で応答するにはどうすればよいでしょうか? たとえば、ユーザーが次に何を尋ねた場合、チャット ボットはステップ 1 に応答する必要があります。

4

4 に答える 4

2

テンプレートで「that」タグを使用できます。これは、最後のボット ステートメントを記憶し、それに応じて応答しますが、これにより 1 レベルの制御しかできなくなります。より多くのレベルが必要な場合は、"think" タグを使用してトピックを設定し、最初に使用されるトピック固有のテンプレートを定義することをお勧めします。

于 2015-03-27T10:26:57.367 に答える
0
  <category> 
      <pattern>TEST SPLIT</pattern> 
      <template> 
        I don't want to talk about that now. 
        <split/> 
        I would rather talk about you. 
      </template> 
    </category>

<split/> 出力 参照を行う

于 2019-07-22T14:51:34.140 に答える
0

まず、ステップを認識し、定義された形式で回答を返すカテゴリが必要です。私の例では、フォーマットは

MAKE TOAST STEP * *

ここで、最初の星はステップ番号で、2 番目の星は返されたテキストの残りを表します。カテゴリは次のとおりです。

<category>
         <pattern>MAKING TOAST STEP *</pattern>
         <template>
             <set var="step"><star/></set>
             <condition var="step">
                 <li value="1">Make toast step 1, get some bread</li>
                 <li value="2">Make toast step 2, put the bread in the toaster</li>
                 <li value="3">Make toast step 3, wait until it pops up</li>
                 <li>Make toast step 4, eat the toast</li>
             </condition>
         </template>
</category>

次に、前の回答が乾杯の質問であった場合にのみ、次のステップを呼び出すカテゴリが必要です。このカテゴリは、そのタグを使用して、乾杯の会話中にのみアクティブ化されるようにします。thatstarを使用して前のステップ番号を取得し、ステップ番号に 1 を追加します。

<category>
         <pattern>WHAT IS NEXT</pattern>
         <that>MAKE TOAST STEP * *</that>
         <template>
             <set var="step"><calculate><thatstar/>+1</calculate></set>
             <srai>MAKING TOAST STEP <get var="step"/></srai>
         </template>
</category>

次に、シーケンス全体を開始するためのカテゴリが必要です。

<category>
         <pattern>HOW DO I MAKE TOAST</pattern>
         <template>
             <srai>MAKING TOAST STEP 1</srai>
         </template>
</category>

このアプローチの注意点は、(1)標準の AIML ではないが、非常に簡単にコーディングする必要があるcalculateタグを使用することです。(2) getsetで使用される変数など、AIML v2 要素を使用します。(3) 私はそれをテストしていませんが、プロセスがうまくいくはずだと確信しています.

于 2017-02-13T13:47:48.853 に答える