Рассмотрим следующий пример 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>
Человек: Я думаю, ты хороший бот.
Бот: Я хороший бот?
Человек: Да.
Бот: Не буду спорить.
