AIML - тег <srai>
<srai>Тег - это универсальный тег. Этот тег позволяет AIML определять разные цели для одного и того же шаблона.
Синтаксис
<srai> pattern </srai>
Ниже приведены часто используемые термины, связанные с srai -
Символическое сокращение
Разделяй и властвуй
Разрешение синонимов
Обнаружение ключевых слов
Символическое сокращение
Техника символической редукции используется для упрощения паттернов. Это помогает уменьшить сложные грамматические шаблоны с помощью простых шаблонов.
Например, рассмотрим следующий разговор.
Human: Who was Albert Einstein?
Robot: Albert Einstein was a German physicist.
Human: Who was Isaac Newton?
Robot: Isaac Newton was a English physicist and mathematician.
Сейчас же What if вопросы поднимаются как
Human: DO YOU KNOW WHO Albert Einstein IS?
Human: DO YOU KNOW WHO Isaac Newton IS?
Вот, <srai> тег работает. Он может взять за образец выкройку пользователя.
Шаг 1. Создайте категории
<category>
<pattern>WHO IS ALBERT EINSTEIN?</pattern>
<template>Albert Einstein was a German physicist.</template>
</category>
<category>
<pattern> WHO IS Isaac NEWTON? </pattern>
<template>Isaac Newton was a English physicist and mathematician.</template>
</category>
Шаг 2. Создайте общую категорию с помощью тега <srai>
<category>
<pattern>DO YOU KNOW WHO * IS?</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
пример
Создайте srai.aiml внутри C > ab > bots > test > aiml и srai.aiml.csv внутри C > ab > bots > test > aimlif каталоги.
srai.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> WHO IS ALBERT EINSTEIN </pattern>
<template>Albert Einstein was a German physicist.</template>
</category>
<category>
<pattern> WHO IS Isaac NEWTON </pattern>
<template>Isaac Newton was a English physicist and mathematician.</template>
</category>
<category>
<pattern>DO YOU KNOW WHO * IS</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
</aiml>
star.aiml.csv
0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
Выполнить программу
Откройте командную строку. Перейти кC > ab > и введите следующую команду -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Проверить результат
Вы увидите следующий вывод -
Human: Do you know who Albert Einstein is
Robot: Albert Einstein was a German physicist.
Разделяй и властвуй
Divide and Conquer используется для повторного использования субпредложений при составлении полного ответа. Это помогает уменьшить необходимость определения нескольких категорий.
Например, рассмотрим следующий разговор.
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
Теперь ожидается ответ робота GoodBye! Когда пользователь говорит Bye в начале предложения.
Пусть здесь поработает тег <srai>.
Шаг 1. Создайте категорию
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
Шаг 2. Создайте общую категорию с помощью тега <srai>
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
пример
Обновить srai.aiml внутри C > ab > bots > test > aiml и srai.aiml.csv внутри C > ab > bots > test > aimlif каталоги.
srai.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> WHO IS ALBERT EINSTEIN </pattern>
<template>Albert Einstein was a German physicist.</template>
</category>
<category>
<pattern> WHO IS Isaac NEWTON </pattern>
<template>Isaac Newton was a English physicist and mathematician.</template>
</category>
<category>
<pattern>DO YOU KNOW WHO * IS</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
</aiml>
star.aiml.csv
0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
Выполнить программу
Откройте командную строку. Перейти кC > ab > и введите следующую команду -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Проверить результат
Вы увидите следующий вывод -
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
Разрешение синонимов
Синонимы - это слова со схожим значением. Бот должен таким же образом отвечать на похожие слова.
Например, рассмотрим следующий разговор.
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
Теперь ожидается ответ робота Development Center! всякий раз, когда пользователь говорит Factory или Industry.
Положим <srai> тег, чтобы работать здесь.
Шаг 1. Создайте категорию
<category>
<pattern>FACTORY</pattern>
<template>Development Center!</template>
</category>
Шаг 2. Создайте общую категорию с помощью тега <srai>
<category>
<pattern>INDUSTRY</pattern>
<template>
<srai>FACTORY</srai>
</template>
</category>
пример
Обновить srai.aiml внутри C > ab > bots > test > aiml и srai.aiml.csv внутри C > ab > bots > test > aimlif каталоги.
srai.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> WHO IS ALBERT EINSTEIN </pattern>
<template>Albert Einstein was a German physicist.</template>
</category>
<category>
<pattern> WHO IS Isaac NEWTON </pattern>
<template>Isaac Newton was a English physicist and mathematician.</template>
</category>
<category>
<pattern>DO YOU KNOW WHO * IS</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
<category>
<pattern>FACTORY</pattern>
<template>Development Center!</template>
</category>
<category>
<pattern>INDUSTRY</pattern>
<template>
<srai>FACTORY</srai>
</template>
</category>
</aiml>
star.aiml.csv
0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
0,FACTORY,*,*,Development Center!,srai.aiml
0,INDUSTRY,*,*,<srai>FACTORY</srai>,srai.aiml
Выполнить программу
Откройте командную строку. Перейти кC > ab > и введите следующую команду -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Проверить результат
Вы увидите следующий вывод -
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
Обнаружение ключевых слов
С помощью srai, мы можем вернуть простой ответ, когда пользователь вводит определенное ключевое слово, скажем, Школа, независимо от того, где в предложении присутствует слово «школа».
Например, рассмотрим следующий разговор.
Human: I love going to school daily.
Robot: School is an important institution in a child's life.
Human: I like my school.
Robot: School is an important institution in a child's life.
Здесь ожидается, что робот ответит на стандартное сообщение. 'School is an important institution in a child's life.' всякий раз, когда у пользователя есть school в предложении.
Положим <srai>тег, чтобы работать здесь. Здесь мы будем использовать подстановочные знаки.
Шаг 1. Создайте категорию
<category>
<pattern>SCHOOL</pattern>
<template>School is an important institution in a child's life.</template>
</category>
Шаг 2. Создайте общие категории с помощью тега <srai>
<category>
<pattern>_ SCHOOL</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>_ SCHOOL</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>SCHOOL *</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>_ SCHOOL *</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
пример
Обновить srai.aiml внутри C > ab > bots > test > aiml и srai.aiml.csv внутри C > ab > bots > test > aimlif каталоги.
srai.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> WHO IS ALBERT EINSTEIN </pattern>
<template>Albert Einstein was a German physicist.</template>
</category>
<category>
<pattern> WHO IS Isaac NEWTON </pattern>
<template>Isaac Newton was a English physicist and mathematician.</template>
</category>
<category>
<pattern>DO YOU KNOW WHO * IS</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
<category>
<pattern>FACTORY</pattern>
<template>Development Center!</template>
</category>
<category>
<pattern>INDUSTRY</pattern>
<template>
<srai>FACTORY</srai>
</template>
</category>
<category>
<pattern>SCHOOL</pattern>
<template>School is an important institution in a child's life.</template>
</category>
<category>
<pattern>_ SCHOOL</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>_ SCHOOL</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>SCHOOL *</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>_ SCHOOL *</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
</aiml>
star.aiml.csv
0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
0,FACTORY,*,*,Development Center!,srai.aiml
0,INDUSTRY,*,*,<srai>FACTORY</srai>,srai.aiml
0,SCHOOL,*,*,School is an important institution in a child's life.,srai.aiml
0,_ SCHOOL,*,*,<srai>SCHOOL</srai>,srai.aiml
0,SCHOOL *,*,*,<srai>SCHOOL</srai>,srai.aiml
0,_ SCHOOL *,*,*,<srai>SCHOOL</srai>,srai.aiml
Выполнить программу
Откройте командную строку. Перейти кC > ab > и введите следующую команду -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Проверить результат
Вы увидите следующий вывод -
Human: I love going to school daily.
Robot: School is an important institution in a child's life.
Human: I like my school.
Robot: School is an important institution in a child's life.