Тег <srai> является многоцелевым тегом. Этот тег позволяет AIML определять различные цели для одного и того же шаблона.
Синтаксис
<srai> pattern </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.
Что теперь, если вопросы поднимаются как
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.
Разделяй и властвуй
«Разделяй и властвуй» используется для повторного использования вложенных предложений при составлении полного ответа. Это помогает уменьшить определение нескольких категорий.
Например, рассмотрим следующий разговор.
Human: Bye Robot: GoodBye! Human: Bye Alice! Robot: GoodBye!
Теперь здесь робот должен ответить GoodBye! Всякий раз, когда пользователь говорит, пока в начале предложения.
Давайте добавим тег <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!
Теперь здесь робот должен ответить Центр разработки! всякий раз, когда пользователь говорит Фабрика или Промышленность .
Давайте добавим тег <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.
Здесь робот должен ответить на стандартное сообщение: «Школа является важным учреждением в жизни ребенка». всякий раз, когда у пользователя есть школа в предложении.
Давайте добавим тег <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
Проверьте результат
Вы увидите следующий вывод —