AIML - AIML

Язык разметки искусственного интеллекта
Расширение имени файла
.aiml
Разработано Д-р Ричард С. Уоллес
Первый выпуск 16 июля 2001 г . ; 19 лет назад ( 2001-07-16 )
Последний релиз
2.1 (версия 1.0.2.22)
(9 марта 2018 г . ; 3 года назад ) ( 2018-03-09 )
Тип формата Искусственный интеллект
Расширен с XML
Открытый формат ? да
Веб-сайт http://www.aiml.foundation/doc.html

AIML или язык разметки искусственного интеллекта - это диалект XML для создания программных агентов на естественном языке .

История

XML диалект называется AIML был разработан Ричард Уоллес и во всем мире свободного программного обеспечения между 1995 и 2002 AIML легли в основу того, что было первоначально сильно растянут Элиза называется « ЭЛИС » . («Искусственный лингвистический Интернет-компьютерный объект»), который трижды выигрывал ежегодный конкурс Лебнера в области искусственного интеллекта , а также был чемпионом Chatterbox Challenge в 2004 году.

Поскольку набор ALICE AIML был выпущен под лицензией GNU GPL , и поскольку большинство интерпретаторов AIML предлагаются по бесплатной лицензии или лицензии с открытым исходным кодом , многие «клоны Alicebot» были созданы на основе исходной реализации программы и ее базы знаний AIML. Бесплатные наборы AIML на нескольких языках были разработаны и предоставлены сообществом пользователей. Существуют интерпретаторы AIML, доступные на Java , Ruby , Python , C ++ , C # , Pascal и других языках (см. Ниже ). Доступны полуформальная спецификация и схема W3C XML для AIML.

С начала 2013 года фонд ALICE работает над проектом спецификации AIML 2.0.

Элементы AIML

AIML содержит несколько элементов. Наиболее важные из них более подробно описаны ниже.

Категории

Категории в AIML образуют фундаментальную единицу знаний. Категория состоит как минимум из двух дополнительных элементов: шаблона и элементов шаблона . Вот простая категория:

<category>
  <pattern>WHAT IS YOUR NAME</pattern>
  <template>My name is Michael N.S Evanious.</template>
</category>

Когда эта категория загружена, бот AIML ответит на ввод «Как вас зовут?» Ответом «Меня зовут Майкл Н.С. Эваниус».

Узоры

Шаблон - это строка символов, предназначенная для соответствия одному или нескольким пользовательским вводам. Буквальный образец вроде

WHAT IS YOUR NAME

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

WHAT IS YOUR *

будет соответствовать бесконечному количеству входных данных, включая «как вас зовут», «какой у вас размер обуви», «какова ваша цель в жизни» и т. д.

Синтаксис шаблонов AIML - это очень простой язык шаблонов, существенно менее сложный, чем регулярные выражения, и поэтому ниже уровня 3 в иерархии Хомского . Чтобы компенсировать возможности простого сопоставления с образцом , интерпретаторы AIML могут предоставлять функции предварительной обработки для расширения сокращений, удаления орфографических ошибок и т. Д.

Сам синтаксис AIML по крайней мере такой же сложный, как и конечные автоматы, и как таковой, по крайней мере, уровня 3 в иерархии Хомского . Это потому, что состояние соотносится с одной темой . Чтобы реализовать такое поведение, тема должна иметь шаблон «*», чтобы убедиться, что состояние не было оставлено случайно. Государственный транзит реализуется с помощью тега. Таким образом, бот сможет «запомнить» обсуждаемую тему или даже привилегии пользователя, полученные во время чата. <think><set name="topic">state2</set></think>

Шаблоны

Шаблон определяет ответ на совпавший шаблон. Шаблон может быть таким же простым, как буквальный текст, например

My name is John.

В шаблоне могут использоваться переменные, например, в примере

My name is <bot name="name"/>.

который подставит имя бота в предложение, или

You told me you are <get name="user-age"/> years old.

который подставит в предложение возраст пользователя (если он известен).

Элементы шаблона включают базовое форматирование текста, условный ответ (if-then / else) и случайные ответы.

Шаблоны также могут перенаправлять на другие шаблоны, используя элемент, называемый srai (символическое сокращение в искусственном интеллекте). Это можно использовать для реализации синонимии, как в этом примере (где CDATA используется, чтобы избежать необходимости экранирования XML ):

<category>
  <pattern>WHAT IS YOUR NAME</pattern>
  <template><![CDATA[My name is <bot name="name"/>.]]></template>
</category>
<category>
  <pattern>WHAT ARE YOU CALLED</pattern>
  <template>
    <srai>what is your name</srai>
  </template>
</category>

Первая категория просто отвечает на ввод «как вас зовут?» С указанием имени бота. Вторая категория, однако, гласит, что ввод «как вас зовут» должен быть перенаправлен в категорию, которая соответствует вводу «как вас зовут» - другими словами, в нем говорится, что эти две фразы эквивалентны.

Шаблоны могут содержать другие типы контента, которые могут обрабатываться любым пользовательским интерфейсом, через который общается бот. Так, например, шаблон может использовать HTML-теги для форматирования, которые могут игнорироваться клиентами, не поддерживающими HTML.

Рекомендации