Язык AIML. Урок 2. Организация ссылок. Теги <srai><star><sr>

Как научить бота разговаривать. Говорящие боты для Second Life.

Язык AIML. Урок 2. Организация ссылок. Теги <srai><star><sr>

Postby sh on Thu Jan 15, 2009 7:28 pm

В AIML можно создавать ссылки из темплейтов на паттерны. Делается это с помощью тега <srai>.
Рассмотрим следующий пример AIML-кода:

Code: Select all
<category>
   <pattern>ПРИВЕТ</pattern>
   <template>
      <random>
         <li>приветик ...</li>
         <li>Здравствуйте!</li>
      </random>
   </template>
</category>

<category>
   <pattern>ПРИВЕТ *</pattern>
   <template><srai>ПРИВЕТ</srai></template>
</category>


В случае, если собеседник скажет "Привет", бот применит темплейт, соответствующий паттерну <pattern>ПРИВЕТ</pattern> и ответит либо "приветик ..." либо "Здравствуйте!".
Если же собеседник скажет, например, "Привет, как дела?" бот применит темплейт (соответствующий паттерну <pattern>ПРИВЕТ *</pattern>), в котором стоит ссылка на паттерн "ПРИВЕТ". Фактически, для бота в данном случае фраза "Привет, как дела?", как и любая другая фраза, начинающаяся со слова "Привет" будет равносильна слову "Привет". Таким образом, в ответ на "Привет, как дела?" бот так же ответит либо "приветик ..." либо "Здравствуйте!".
Как видно из примера, ссылка делается с помощью конструкции <srai>ПРИВЕТ</srai>.

Передразнивание. Тег <star/>.
Идем дальше, делаем разговор с ботом более интересным. Допустим, собеседник предлагает боту неизвестную тему для разговора: "Поговорим о пиве". Тем для разговора может быть много, знать их все боту нереально трудно, поэтому мы создаем лишь иллюзию того, что бот понимает о чем речь и принимает тему, отвечая: "Ок, о пиве так о пиве ...". Создать такую ответную реплику нам удается с помощью тега <star/>.

Code: Select all
<category>
   <pattern>ПОГОВОРИМ О *</pattern>
   <template>Ок, о <star/>, так о <star/></template>
</category>


<star/> - это та самая звездочка, которая стоит в паттерне. Таким образом то, что находится после "Поговорим о" будет вставлено в ответную реплику.

Человек: Поговорим о пиве?
Бот: Ок, о пиве, так о пиве
Человек: Поговорим о мыле?
Бот: Ок, о мыле, так о мыле

Идем дальше. Тег <sr/>.

Что же такое <sr/>? Очень просто: <sr/> это сокращенная запись <srai><star/></srai>, то есть ссылка на звездочку.
В качестве закрепления пройденного материала рассмотрим следующий блок AIML-кода и диалог с его использованием.

Code: Select all
<category>
   <pattern>Я ДУМАЮ *</pattern>
   <template><sr/></template>
</category>

<category>
   <pattern>ТЫ *</pattern>
   <template>Я <star/>?</template>
</category>

<category>
   <pattern>ДА</pattern>
   <template>Не буду спорить.</template>
</category>


Человек: Я думаю, ты хороший бот.
Бот: Я хороший бот?
Человек: Да.
Бот: Не буду спорить.

:P
User avatar
sh
 
Posts: 43
Joined: Sun Mar 09, 2008 4:58 pm

Return to Artificial Intelligence Markup Language (AIML)


Who is online

Users browsing this forum: No registered users and 1 guest

cron