2017-01-25 14 views
1


私はこの会話に一致するAIMLを作成することができますどのように思っていました: AIML 1.0 - *パターン

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

は、だから私はこの二つのカテゴリーを使用しようとしました。

<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> 

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

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

ありがとうございます。

答えて

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> 
+0

[解決済み]私はあなたのトリックを使って別の方法で解決しました。 タグは と同じ*教えてください* ありがとうございます。 – enriquo