Учебники

AIML — тег

Тег <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

Проверьте результат

Вы увидите следующий вывод —