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
Проверьте результат
Вы увидите следующий вывод —