AIML

AIML (Artificial Intelligence Markup Language) — язык разметки для искусственного интеллекта. AIML — подмножество (диалект) XML, он предназначается для создания виртуальных собеседников.

Разработка 
Первым виртуальным собеседником была программа Элиза, разработанная в 1966 году. Её создатель, Джозеф Вейценбаум, построил её базу знаний по принципу шаблонных ответов (см. ниже). Подобный метод был использован в программе A.L.I.C.E. в 1995 году, но теперь база знаний стала более структурированной. Для построения такой базы как раз и был создан AIML. Этот язык разрабатывался Ричардом Уолессом — инициатором проекта ALICE — и всемирным сообществом свободного ПО с 1995 по 2002 год.

Версия AIML, используемая в ALICE, распространяется под лицензией GNU GPL, поэтому существует много свободных реализаций этого языка , а также программ, использующих этот язык (интерпретаторов). Наиболее активно используемая версия интерпретатора — Программа D, написанная на языке Java. Существуют также формальная спецификация языка и XML-схема, данная консорциумом W3C.

Элементы AIML

Категории 
Категории (category) в AIML — основная структурная единица. Категория состоит по крайней мере из двух элементов: образца (pattern) и шаблона (template). Простой пример:

  <category>
    <pattern>Какое ваше имя</pattern>
    <template>Моё имя - Олег</template>
  </category>

Если эта категория содержится в базе знаний, интерпретатор на вопрос «Какое ваше имя?» будет отвечать «Моё имя — Олег».

Образцы 
Образец — символьная строка, соответствующая одному или нескольким пользовательским запросам. Такие образцы, как:

  КАКОЕ ВАШЕ ИМЯ

будут соотноситься только с одним вопросом (причём без учёта регистра). Однако образцы могут содержать символы обобщения, заменяющие одно или несколько слов. Образец:

  КАКОЕ ВАШЕ *

будет соответствовать бесчисленному множеству вопросов, например: «Какое ваше имя», «Какое ваше отчество», «Какое ваше мнение об этом» и т. д.

Подобный синтаксис намного проще, чем регулярные выражения. Он соответствует потребностям программ-собеседников, а если всё же его не хватает, сами интерпретаторы могут предоставить дополнительные функции по обработке запросов.

Шаблоны 
Шаблоны обозначают ответы на распознанные образцы. Шаблон может быть и простым:

   Моё имя - Олег.

а может и содержать переменные:

   Моё имя - .

   Вы сказали, что Вам  лет.

В первом случае интерпретатор подставит своё «имя», а во втором — возраст пользователя (если возраст известен).

Шаблоны могут содержать базовое текстовое форматирование, условные и случайные части. Возможны также перенаправления (задаются элементом srai). Это может использоваться для обозначения синонимии и эквивалентности фраз:

  <category>
    <pattern>КАКОЕ ВАШЕ ИМЯ</pattern>
    <template>Моё имя - <bot name="имя"/>.</template>
  </category>
  <category>
    <pattern>КАК ВАС ЗОВУТ</pattern>
    <template>
      <srai>какое ваше имя</srai>
    </template>
  </category>

Шаблоны могут содержать форматирование, нацеленное на специфический пользовательский интерфейс, и обрабатываемое конкретным интерпретатором (например, HTML-теги).

См. также 
 Дублинское ядро

Ссылки 
 www.alicebot.org — сайт, посвящённый ALICE.

Языки разметки
Инженерия знаний
Обработка естественного языка