2013-03-31 6 views
1

Я пытаюсь научиться AIML и не могу понять, где я пошло не так:AIML: не получить правильный ответ

<aiml> 
    <category> 
     <pattern>I LIKE * ROME</pattern> 
     <template> 
      I love talking about 
      <set name="topic">rome</set> 
      too! 
      <random> 
       <li>Did you know that slaves made up 40% of the population of Ancient Rome?</li> 
       <li>Did you know the Colosseum could sit 250'000 people?</li> 
      </random> 
     </template> 
    </category> 
    <topic name="rome"> 
     <category> 
      <pattern>No *</pattern> 
      <that>Did you know that slaves made up 40% of the population of Ancient Rome?</that> 
      <template>So I've taught you something!</template> 
     </category> 
    </topic> 
</aiml> 

Первая часть работает отлично, если я введу что-то вроде: «Я как история Рима », я получаю ожидаемый ответ по умолчанию и один из случайных ответов.

Но если он дает мне «рабский» случайный ответ, и я говорю «Нет, я этого не знал», он не дает мне «Так я тебя чему-то научил». ответ где-то еще в его коде, но, учитывая, что я поставил «тему» ​​и <, что> тег, я был весьма специфичны и следовало ожидать мой собственный ответ.

ответ

1

Существует

<pattern>No _</pattern> 

где-то в ваших файлах aiml.

0

ИспользованиеТег- это ваша точка затухания. Для какой картины стоит, я изменил ваш ответ в исходном шаблоне, и он сработал.

Что касается второго ответа бота. Если он используется, то категория в теме rome никогда не будет работать, потому что 40 $ 'ers в теге <that> должны быть последним ответом бота.

Возможно, возникла некоторая путаница в ответе бот-чата. Прежде чем тема всегда была изменена на «rome», но для того, чтобы шаблон в теме «rome» работал, бот-чат должен был говорить о 40%. Я только что объединил их, чтобы получить тот же результат.

Также обратите внимание, что знак вопроса в теге <that> не был размещен там. Бот отключит его и сохранит оставшийся результат.

<?xml version="1.0" encoding="UTF-8"?> 
<aiml> 
<category> 
    <pattern>I LIKE * ROME</pattern> 
    <template> 
    <random> 
     <li>Did you know that slaves made up 40% of the population of Ancient <set name="topic">Rome</set>?</li> 
     <li>Did you know the Colosseum in could sit 250'000 people?</li> 
    </random> 
    </template> 
</category> 
<topic name="rome"> 
    <category> 
    <pattern>No *</pattern> 
    <that>Did you know that slaves made up 40% of the population of Ancient Rome</that> 
    <template> 
     So I've taught you something! 
    </template> 
    </category> 
</topic> 
</aiml> 
0

Вы можете использовать групповые символы (*) в <that> тега, так что вы можете соответствовать только часть ответа бота (например «ЗНАЕТЕ ЛИ ВЫ, ЧТО Рабы СОСТАВИЛ»).

Также обратите внимание, что эта тема может быть установлена ​​внутри тега <think>, который не отображает его содержимое.

Я проверил следующий код с интерпретатором Python AIML. Он работает так, как ожидалось, но когда имя и содержание темы <that> и <pattern> теги были строчными, это не сработало.

<aiml> 
<category> 
    <pattern>I LIKE * ROME</pattern> 
    <template> 
     I love talking about Rome too! 
     <think><set name="topic">ROME</set></think> 
     <random> 
      <li>Did you know that slaves made up 40 of the population of Ancient Rome?</li> 
      <li>Did you know the Colosseum could sit 250'000 people?</li> 
     </random> 
    </template> 
</category> 
<topic name="ROME"> 
    <category> 
     <pattern>NO</pattern> 
     <that>* DID YOU KNOW THAT SLAVES MADE UP *</that> 
     <template>So I've taught you something!</template> 
    </category> 
</topic> 
</aiml>