Учебники

AIML — Краткое руководство

AIML — Введение

AIML расшифровывается как язык разметки искусственного интеллекта . AIML была разработана сообществом свободного программного обеспечения Alicebot и доктором Ричардом С. Уоллесом в 1995-2000 гг. AIML используется для создания или настройки Alicebot — приложения для чата, основанного на бесплатном программном обеспечении ALICE (Artificial Linguistic Internet Computer Entity).

Теги AIML

Ниже приведены важные теги, которые обычно используются в документах AIML.

S.No. AIML Tag / Описание
1

<AIML>

Определяет начало и конец документа AIML.

2

<категория>

Определяет единицу знаний в базе знаний Alicebot.

3

<образец>

Определяет шаблон, соответствующий тому, что пользователь может ввести в Alicebot.

4

<шаблон>

Определяет реакцию Алисбот на ввод пользователя.

<AIML>

Определяет начало и конец документа AIML.

<категория>

Определяет единицу знаний в базе знаний Alicebot.

<образец>

Определяет шаблон, соответствующий тому, что пользователь может ввести в Alicebot.

<шаблон>

Определяет реакцию Алисбот на ввод пользователя.

Мы обсудим каждый из этих тегов в главе « Основные теги AIML» .

Ниже приведены некоторые другие широко используемые метки прицелов. Мы будем подробно обсуждать каждый тег в следующих главах.

S.No. AIML Tag / Описание
1

<звезда>

Используется для сопоставления символов подстановки * в теге <pattern>.

2

<srai>

Многоцелевой тег, используемый для вызова / сопоставления с другими категориями.

3

<случайное>

Используется <random> для получения случайных ответов.

4

<li>

Используется для представления нескольких ответов.

5

<набор>

Используется для установки значения в переменной AIML.

6

<прибудет>

Используется для получения значения, хранящегося в переменной AIML.

7

<что>

Используется в AIML для ответа на основании контекста.

8

<тема>

Используется в AIML для хранения контекста, чтобы в дальнейшем можно было вести диалог на основе этого контекста.

9

<думать>

Используется в AIML для хранения переменной без уведомления пользователя.

10

<условие>

Аналогично переключению операторов на языке программирования. Это помогает ALICE реагировать на соответствующий ввод.

<звезда>

Используется для сопоставления символов подстановки * в теге <pattern>.

<srai>

Многоцелевой тег, используемый для вызова / сопоставления с другими категориями.

<случайное>

Используется <random> для получения случайных ответов.

<li>

Используется для представления нескольких ответов.

<набор>

Используется для установки значения в переменной AIML.

<прибудет>

Используется для получения значения, хранящегося в переменной AIML.

<что>

Используется в AIML для ответа на основании контекста.

<тема>

Используется в AIML для хранения контекста, чтобы в дальнейшем можно было вести диалог на основе этого контекста.

<думать>

Используется в AIML для хранения переменной без уведомления пользователя.

<условие>

Аналогично переключению операторов на языке программирования. Это помогает ALICE реагировать на соответствующий ввод.

AIML Словарь

Словарь AIML использует слова, пробел и два специальных символа * и _ в качестве подстановочных знаков. Интерпретатор AIML отдает предпочтение шаблону, имеющему _, чем шаблону, имеющему * . Теги AIML соответствуют XML, а шаблоны — без учета регистра.

пример

<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HELLO ALICE </pattern>
      
      <template>
         Hello User!
      </template>
      
   </category>
</aiml>

Ниже приведены важные моменты, которые необходимо учитывать:

  • Тег <aiml> обозначает начало документа AIML.

  • Тег <category> определяет единицу знаний.

  • Тег <pattern> определяет шаблон, который пользователь собирается напечатать.

  • Тег <template> определяет ответ пользователя, если пользователь вводит Hello Alice.

Тег <aiml> обозначает начало документа AIML.

Тег <category> определяет единицу знаний.

Тег <pattern> определяет шаблон, который пользователь собирается напечатать.

Тег <template> определяет ответ пользователя, если пользователь вводит Hello Alice.

Результат

User: Hello Alice
Bot: Hello User

AIML — настройка среды

Из этого туториала Вы узнаете, как подготовить среду разработки, чтобы начать работу с AIML для создания программного обеспечения для автоматического чата. Программа AB является эталонной реализацией AIML 2.0, разработанной и поддерживаемой ALICE AI Foundation. Этот учебник также научит вас, как настроить JDK, прежде чем вы установите библиотеку Program AB —

Шаг 1 — Установите Java Development Kit (JDK)

Вы можете скачать последнюю версию SDK с сайта Oracle на Java — Java SE Downloads . В загруженных файлах вы найдете инструкции по установке JDK, следуйте инструкциям по установке и настройке. Наконец, установите переменные окружения PATH и JAVA_HOME, чтобы они ссылались на каталог, содержащий java и javac, обычно java_install_dir / bin и java_install_dir соответственно.

Если вы работаете в Windows и установили JDK в C: \ jdk1.7.0_75, вам нужно будет поместить следующую строку в ваш файл C: \ autoexec.bat.

set PATH = C:\jdk1.7.0_75\bin;%PATH%
set JAVA_HOME = C:\jdk1.7.0_75

Кроме того, в Windows NT / 2000 / XP вы также можете щелкнуть правой кнопкой мыши на «Мой компьютер», выбрать «Свойства», затем «Дополнительно», затем «Переменные среды». Затем вы обновите значение PATH и нажмете кнопку ОК.

В Unix (Solaris, Linux и т. Д.), Если SDK установлен в /usr/local/jdk1.7.0_75 и вы используете оболочку C, вы должны поместить следующее в свой файл .cshrc.

setenv PATH /usr/local/jdk1.7.0_75/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.7.0_75

В качестве альтернативы, если вы используете интегрированную среду разработки (IDE), такую ​​как Borland JBuilder, Eclipse, IntelliJ IDEA или Sun ONE Studio, скомпилируйте и запустите простую программу, чтобы подтвердить, что IDE знает, где вы установили Java, в противном случае выполните правильную настройку в соответствии с данным документом. из IDE.

Шаг 2 — Настройка программы AB

Теперь, если все в порядке, вы можете приступить к настройке программы AB. Ниже приведены простые шаги по загрузке и установке библиотеки на вашем компьютере.

  • Выберите, хотите ли вы установить AIML в Windows или Unix, а затем перейдите к следующему шагу для загрузки ZIP-файла.

  • Загрузите последнюю версию двоичных файлов Program AB со страницы https://code.google.com/p/program-ab/, используя ее ссылку program-ab-0.0.4.3.zip .

  • На момент написания этого руководства я загрузил файл program-ab-0.0.4.3.zip на свой компьютер с Windows, и когда вы разархивируете загруженный файл, он даст вам структуру каталогов внутри C: \ ab следующим образом.

Выберите, хотите ли вы установить AIML в Windows или Unix, а затем перейдите к следующему шагу для загрузки ZIP-файла.

Загрузите последнюю версию двоичных файлов Program AB со страницы https://code.google.com/p/program-ab/, используя ее ссылку program-ab-0.0.4.3.zip .

На момент написания этого руководства я загрузил файл program-ab-0.0.4.3.zip на свой компьютер с Windows, и когда вы разархивируете загруженный файл, он даст вам структуру каталогов внутри C: \ ab следующим образом.

S.No. Каталог и описание
1

C: / AB / боты

Магазины ботов AIML

2

C: / аб / Lib

Хранит библиотеки Java

3

C: / аб / выход

Каталог файлов классов Java

4

с: /ab/run.bat

командный файл для запуска программы AB

C: / AB / боты

Магазины ботов AIML

C: / аб / Lib

Хранит библиотеки Java

C: / аб / выход

Каталог файлов классов Java

с: /ab/run.bat

командный файл для запуска программы AB

Как только вы закончите с этим последним шагом, вы готовы приступить к вашему первому Примеру AIML, который вы увидите в следующей главе.

AIML — первое применение

Давайте начнем создавать первого бота, который будет просто приветствовать пользователя с Hello User! когда пользователь вводит привет Алиса .

Создать структуру проекта

Как и в AIML Environment Setup , мы извлекли содержимое программы ab в C> ab со следующей структурой каталогов.

S.No. Каталог и описание
1

C: / AB / боты

Магазины ботов AIML

2

C: / аб / Lib

Хранит библиотеки Java

3

C: / аб / выход

Каталог файлов классов Java

4

с: /ab/run.bat

командный файл для запуска программы AB

C: / AB / боты

Магазины ботов AIML

C: / аб / Lib

Хранит библиотеки Java

C: / аб / выход

Каталог файлов классов Java

с: /ab/run.bat

командный файл для запуска программы AB

Теперь создайте тест каталога внутри C> ab> ботов и создайте в нем следующие каталоги.

S.No. Каталог и описание
1

C: / аб / Боты / тест / AIML

Хранит файлы AIML

2

C: / аб / Боты / тест / aimlif

Хранит файлы AIMLIF

3

C: / аб / Боты / тест / конфигурации

Хранит файлы конфигурации

4

C: / AB / Боты / тест / наборы

Магазины AIML Наборы

5

C: / AB / Боты / тест / карты

Магазины AIML Карты

C: / аб / Боты / тест / AIML

Хранит файлы AIML

C: / аб / Боты / тест / aimlif

Хранит файлы AIMLIF

C: / аб / Боты / тест / конфигурации

Хранит файлы конфигурации

C: / AB / Боты / тест / наборы

Магазины AIML Наборы

C: / AB / Боты / тест / карты

Магазины AIML Карты

Создать исходные файлы

Создайте test.aiml внутри C> ab> bots> test> aiml и test.aiml.csv внутри C> ab> bots> test> aimlif .

test.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version="1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HELLO ALICE </pattern>
      
      <template>
         Hello User
      </template>
      
   </category>
</aiml>

test.aiml.csv

0,HELLO ALICE,*,*,Hello User,test.aiml

Выполнить программу

Откройте командную строку. Перейдите в C> ab> и введите следующую команду —

java -cp lib/Ab.jar Main bot = test action = chat trace = false

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

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

Working Directory = C:\ab

Program AB 0.0.4.2 beta -- AI Foundation Reference AIML 2.0 implementation
bot = test
action = chat
trace = false
trace mode = false
Name = test Path = C:\ab/bots/test

C:\ab
C:\ab/bots
C:\ab/bots/test
C:\ab/bots/test/aiml
C:\ab/bots/test/aimlif
C:\ab/bots/test/config
C:\ab/bots/test/logs
C:\ab/bots/test/sets
C:\ab/bots/test/maps

Preprocessor: 0 norms 0 persons 0 person2
Get Properties: C:\ab/bots/test/config/properties.txt
addAIMLSets: C:\ab/bots/test/sets does not exist.
addCategories: C:\ab/bots/test/aiml does not exist.
AIML modified Tue Apr 07 22:24:29 IST 2015 AIMLIF modified Tue Apr 07 22:26:53 I
ST 2015
No deleted.aiml.csv file found
No deleted.aiml.csv file found
Loading AIML files from C:\ab/bots/test/aimlif

Reading Learnf file
Loaded 1 categories in 0.009 sec
--> Bot test 1 completed 0 deleted 0 unfinished
(1[6])--HELLO-->(1[5])--ALICE-->(1[4])--<THAT>-->(1[3])--*-->(1[2])--<TOPIC>-->(
1[1])--*-->(0[null,null]) Hello User...
7 nodes 6 singletons 1 leaves 0 shortcuts 0 n-ary 6 branches 0.85714287 average
branching
Human:

Введите Hello Alice и посмотрите результат, а затем введите что-нибудь еще, чтобы увидеть измененный результат.

Human: hello alice
Robot: Hello User
Human: bye
Robot: I have no answer for that.
Human:

AIML — основные теги

В этом уроке мы обсудим основные теги AIML.

  • <aiml> — определяет начало и конец документа AIML.

  • <категория> — определяет единицу знаний в базе знаний Alicebot.

  • <pattern> — определяет шаблон, соответствующий тому, что пользователь может ввести в Alicebot.

  • <шаблон> — определяет реакцию Алисбот на ввод пользователя.

<aiml> — определяет начало и конец документа AIML.

<категория> — определяет единицу знаний в базе знаний Alicebot.

<pattern> — определяет шаблон, соответствующий тому, что пользователь может ввести в Alicebot.

<шаблон> — определяет реакцию Алисбот на ввод пользователя.

Следующие файлы AIML были использованы здесь в качестве ссылки.

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HELLO ALICE </pattern>
      
      <template>
         Hello User
      </template>
      
   </category>
</aiml>

тег <aiml>

Тег <aiml> отмечает начало и конец документа AIML. Он содержит информацию о версии и кодировке в соответствии с атрибутами версии и кодировки. В атрибуте version хранится версия AIML, используемая базой знаний ALICE болтовней, KB. Например, мы использовали версию 1.0.1. Этот атрибут не является обязательным.

Атрибуты кодирования предоставляют наборы символов, которые будут использоваться в документе. Например, мы использовали UTF-8. В качестве обязательного требования тег <aiml> должен содержать хотя бы один тег <category>. Мы можем создать несколько файлов AIML, где каждый файл AIML содержит один тег <aiml>. Цель каждого файла AIML — добавить хотя бы одну единицу знаний под названием category в ALICE болтовню KB.

<aiml version = "1.0.1" encoding = "UTF-8"?>
   ...
</aiml>

тег <category>

Тег <category> является фундаментальной единицей знаний бота ALICE. Каждая категория содержит —

  • Пользовательский ввод в форме предложения, которое может быть утверждением, вопросом, восклицательным знаком и т. Д. Пользовательский ввод может содержать символы подстановки, такие как * и _ .

  • Ответ на ввод пользователя должен быть представлен Alicebot.

  • Необязательный контекст.

Пользовательский ввод в форме предложения, которое может быть утверждением, вопросом, восклицательным знаком и т. Д. Пользовательский ввод может содержать символы подстановки, такие как * и _ .

Ответ на ввод пользователя должен быть представлен Alicebot.

Необязательный контекст.

Тег <category> должен иметь тег <pattern> и <template> . <pattern> представляет пользовательский ввод, а template представляет ответ бота.

<category>
   <pattern> HELLO ALICE </pattern>
   
   <template>
      Hello User
   </template>
   
</category>

Здесь, если пользователь входит в Hello Alice, бот ответит как Hello User .

тег <pattern>

Тег <pattern> представляет вводимые пользователем данные. Это должен быть первый тег в теге <category>. Тег <pattern> может содержать подстановочный знак, чтобы соответствовать более чем одному предложению в качестве пользовательского ввода. Например, в нашем примере <pattern> содержит HELLO ALICE.

AIML нечувствителен к регистру. Если пользователь вводит Hello Alice, hello alice, HELLO ALICE и т. Д., Все входные данные действительны, и бот сопоставит их с HELLO ALICE.

<category>
   <pattern> HELLO ALICE </pattern>
   
   <template>
      Hello User
   </template>
   
</category>

Здесь шаблон «Привет, пользователь» и представляет ответ робота на ввод пользователя.

тег <template>

Тег <template> представляет ответ бота пользователю. Это должен быть второй тег в теге <category>. Этот тег <template> может сохранять данные, вызывать другую программу, давать условные ответы или делегировать другим категориям.

<category>
   <pattern> HELLO ALICE </pattern>
   
   <template>
      Hello User
   </template>
   
</category>

Здесь шаблон «Привет, пользователь» и представляет ответ робота на ввод пользователя.

AIML — тег <star>

Тег <star> используется для совпадения с подстановочными символами * в теге <pattern>.

Синтаксис

<star index = "n"/>

n обозначает позицию * внутри пользовательского ввода в теге <pattern>.

Рассмотрим следующий пример —

<category>
   <pattern> A * is a *. </pattern>
   
   <template>
      When a <star index = "1"/> is not a <star index = "2"/>?
   </template>
   
</category>

Если пользователь вводит «Манго — это фрукт». тогда бот ответит как «Когда манго не фрукт?»

пример

Создайте star.aiml внутри C> ab> bots> test> aiml и star.aiml.csv внутри C> ab> bots> test> aimlif .

star.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   
   <category>
      <pattern>I LIKE *</pattern>
      <template>
         I too like <star/>.
      </template>
   </category>
   
   <category>
      <pattern>A * IS A *</pattern>
      <template>
         How <star index = "1"/> can not be a <star index = "2"/>?
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,I LIKE *,*,*,I too like <star/>.,star.aiml
0,A * IS A *,*,*,How <star index = "1"/> can not be a <star index = "2"/>?,star.aiml

Выполнить программу

Откройте командную строку. Перейдите в C> ab> и введите следующую команду —

java -cp lib/Ab.jar Main bot = test action = chat trace = false

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

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

Human: I like mango
Robot: I too like mango.
Human: A mango is a fruit
Robot: How mango can not be a fruit? 

<star index = «1» /> часто используется как <star />

AIML — тег <srai>

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

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

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

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.

AIML — тег <random>

Тег <random> используется для получения случайных ответов. Этот тег позволяет AIML по-разному реагировать на один и тот же ввод. Тег <random> используется вместе с тегами <li>. Теги <li> содержат разные ответы, которые должны быть доставлены пользователю в случайном порядке.

Синтаксис

<random>
   <li> pattern1 </li>
   <li> pattern2 </li>
   ...
   <li> patternN </li>
</random>

Например, рассмотрим следующий разговор.

Human: Hi
Robot: Hello!
Human: Hi
Robot: Hi! Nice to meet you!

пример

Создайте random.aiml внутри C> ab> bots> test> aiml и random.aiml.csv внутри C> ab> bots> test> aimlif .

random.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding ="UTF-8"?>
   <category>
      <pattern>HI</pattern>
      
      <template>
         <random>
            <li> Hello! </li>
            <li> Hi! Nice to meet you! </li>
         </random>
      </template>
      
   <category>      
</aiml>

random.aiml.csv

0,HI,*,*, <random><li> Hello! </li><li> Hi! Nice to meet you! </li></random>,random.aiml

Выполнить программу

Откройте командную строку. Перейдите в C> ab> и введите следующую команду —

java -cp lib/Ab.jar Main bot = test action = chat trace = false

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

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

Human: Hi
Robot: Hi! Nice to meet you!
Human: Hi
Robot: Hello!

Здесь ответ может варьироваться с учетом случайных ответов.

AIML — <set>, <get> Теги

Теги <set> и <get> используются для работы с переменными в AIML. Переменные могут быть предопределенными переменными или переменными, созданными программистом.

Синтаксис

Тег <set> используется для установки значения в переменной.

<set name = "variable-name"> variable-value </set>

Тег <get> используется для получения значения из переменной.

<get name = "variable-name"></get>

Например, рассмотрим следующий разговор.

Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!

пример

Создайте setget.aiml внутри C> ab> bots> test> aiml и setget.aiml.csv внутри C> ab> bots> test> aimlif .

setget.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>I am *</pattern>
      <template>
         Hello <set name = "username"> <star/>! </set>
      </template>  
   </category>  
   
   <category>
      <pattern>Good Night</pattern>
      <template>
         Hi <get name = "username"/> Thanks for the conversation!
      </template>  
   </category>  
   
</aiml>

setget.aiml.csv

0,I am *,*,*, Hello <set name = "username"> <star/>! </set>,setget.aiml
0,Good Night,*,*, Hi <get name = "username"/> Thanks for the conversation!,setget.aiml

Выполнить программу

Откройте командную строку. Перейдите в C> ab> и введите следующую команду —

java -cp lib/Ab.jar Main bot = test action = chat trace = false

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

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

Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!

AIML — тег <that>

Тег <that> используется в AIML для ответа в зависимости от контекста.

Синтаксис

<that> template </that>

Например, рассмотрим следующий разговор.

Human: Hi Alice! What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.

пример

Создайте that.aiml внутри C> ab> bots> test> aiml и that.aiml.csv внутри C> ab> bots> test> aimlif .

that.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>WHAT ABOUT MOVIES</pattern>
      <template>Do you like comedy movies</template>  
   </category>
   
   <category>
      <pattern>YES</pattern>
      <that>Do you like comedy movies</that>
      <template>Nice, I like comedy movies too.</template>
   </category>
   
   <category>
      <pattern>NO</pattern>
      <that>Do you like comedy movies</that>
      <template>Ok! But I like comedy movies.</template>
   </category> 
   
</aiml>

that.aiml.csv

0,WHAT ABOUT MOVIES,*,*,Do you like comedy movies,that.aiml
0,YES,Do you like comedy movies,*,Nice! I like comedy movies too.,that.aiml
0,NO,Do you like comedy movies,*,Ok! But I like comedy movies.,that.aiml

Выполнить программу

Откройте командную строку. Перейдите в C> ab> и введите следующую команду —

java -cp lib/Ab.jar Main bot = test action = chat trace = false

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

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

Human: What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.

AIML — тег <topic>

Тег <topic> используется в AIML для хранения контекста, чтобы в дальнейшем можно было вести диалог на основе этого контекста. Обычно тег <topic> используется в диалоге типа Да / Нет . Это помогает AIML искать категории, написанные в контексте темы.

Синтаксис

Определите тему, используя тег <set>

<template> 
   <set name = "topic"> topic-name </set>
</template>

Определите категорию с помощью тега <topic>

<topic name = "topic-name">
   <category>
      ...
   </category>     
</topic>

Например, рассмотрим следующий разговор.

Human: let discuss movies
Robot: Yes movies
Human: Comedy movies are nice to watch
Robot: Watching good movie refreshes our minds.
Human: I like watching comedy
Robot: I too like watching comedy.

Здесь бот отвечает, взяв «фильм» в качестве темы.

пример

Создайте topic.aiml внутри C> ab> bots> test> aiml и topic.aiml.csv внутри C> ab> bots> test> aimlif .

topic.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>LET DISCUSS MOVIES</pattern>
      <template>Yes <set name = "topic">movies</set></template>  
   </category>
   
   <topic name = "movies">
      <category>
         <pattern> * </pattern>
         <template>Watching good movie refreshes our minds.</template>
      </category>
      
      <category>
         <pattern> I LIKE WATCHING COMEDY! </pattern>
         <template>I like comedy movies too.</template>
      </category>
      
   </topic>
</aiml>

that.aiml.csv

0,LET DISCUSS MOVIES,*,*,Yes <set name = "topic">movies</set>,topic.aiml
0,*,*,movies,Watching good movie refreshes our minds.,topic.aiml
0,I LIKE WATCHING COMEDY!,*,movies,I like comedy movies too.,topic.aiml

Выполнить программу

Откройте командную строку. Перейдите в C> ab> и введите следующую команду —

java -cp lib/Ab.jar Main bot = test action = chat trace = false

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

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

Human: let discuss movies
Robot: Yes movies
Human: Comedy movies are nice to watch
Robot: Watching good movie refreshes our minds.
Human: I like watching comedy
Robot: I too like watching comedy.

AIML — тег <think>

Тег <think> используется в AIML для хранения переменной без уведомления пользователя.

Синтаксис

Сохраните значение, используя тег <think>

<think> 
   <set name = "variable-name"> variable-value </set>
</think>

Например, рассмотрим следующий разговор.

Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!

пример

Создайте think.aiml внутри C> ab> bots> test> aiml и think.aiml.csv внутри C> ab> bots> test> aimlif .

think.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>My name is *</pattern>
      <template>
         Hello!<think><set name = "username"> <star/></set></think>
      </template>  
   </category>  
   
   <category>
      <pattern>Byeee</pattern>
      <template>
         Hi <get name = "username"/> Thanks for the conversation!
      </template>  
   </category>  
   
</aiml>

think.aiml.csv

0,My name is *,*,*, Hello! <think><set name = "username"> <star/></set></think>,think.aiml
0,Byeee,*,*, Hi <get name = "username"/> Thanks for the conversation!,think.aiml

Выполнить программу

Откройте командную строку. Перейдите в C> ab> и введите следующую команду —

java -cp lib/Ab.jar Main bot = test action = chat trace = false

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

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

Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!

AIML — тег <условие>

Тег <condition> похож на операторы switch в языке программирования. Это помогает ALICE реагировать на соответствующий ввод.

Синтаксис

<condition name = "variable-name" value = "variable-value"/>

Например, рассмотрим следующий разговор.

Human: How are you feeling today
Robot: I am happy!

Здесь мы сохранили счастливое состояние ALICE, и вот как оно отвечает: «Я счастлив!».

пример

Создайте condition.aiml внутри C> ab> bots> test> aiml и condition.aiml.csv внутри C> ab> bots> test> aimlif .

condition.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HOW ARE YOU FEELING TODAY </pattern>
      
      <template>
         <think><set name = "state"> happy</set></think>
         <condition name = "state" value = "happy">
            I am happy!
         </condition>
         
         <condition name = "state" value = "sad">
            I am sad!
         </condition>
      </template>
      
   </category>
</aiml>

condition.aiml.csv

0,HOW ARE YOU FEELING TODAY,*,*,
   <think>
      <set name = "state"> happy</set>
   </think>
   
   <condition name = "state" value = "happy">I am happy!</condition>
   <condition name = "state" value = "sad">I am sad!</condition>,condition.aiml

Выполнить программу

Откройте командную строку. Перейдите в C> ab> и введите следующую команду —

java -cp lib/Ab.jar Main bot = test action = chat trace = false

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

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