1


この会話に一致する AIML をどのように作成すればよいか考えていました。

User: What's my name?
Bot:  Right now I don't know. Tell me, what's your name?
User: Gandalf.
Bot:  Hello Gandalf.

そこで、この 2 つのカテゴリを使用しようとしました。

<category>
    <pattern>WHAT'S MY NAME?</pattern>
    <template>
        <condition name="name_set" value="S"> <get name="name"/></condition>
        <condition name="name_set" value="">Right now I don't know.Tell me, what's your name?</condition>
    </template>
</category>
<category>
    <pattern>*</pattern>
    <that>Right now I don't know.Tell me, what's your name?</that>
    <template><think><set name="name"><star/></set><set name="name_set">S</set></think>Hello <srai>WHAT'S MY NAME?</srai>.</template>
</category>

しかし、この最後に定義されたパターンを選択する代わりに、私のボットは常にデフォルトの回答に回答しています。これは、* パターンを使用して別のカテゴリに設定されていますが、そのタグはありません。私が間違っていることは何ですか?

おまけの質問: おそらく、name_set グローバル変数を使用して、ユーザーの名前を保存しているかどうかを確認していることにお気づきでしょう。は NO を意味し、Sは YES を意味します。このエスカモタージュを使用しているのは、Program-O ボットで AIML バリデーターがexists属性の使用を許可していないためです。誰かが問題を解決するために何か知っているか、何か提案があれば、私のゲストになってください.

ありがとうございました。

4

1 に答える 1

1

<that>カテゴリの が間違っているようです。私が正しければ、それはボットの出力の最後の文を指しています。次に、これはおそらくあなたにとってよりうまくいくでしょう。

<category>
    <pattern>*</pattern>
    <that>Tell me *</that>
    <template>
      <think>
       <set name="name"><star/></set>
       <set name="name_set">S</set>
      </think>
      Hello <srai>WHAT'S MY NAME?</srai>.
    </template>
</category>
于 2017-01-26T20:44:21.173 に答える