AIML (AIML)

Перейти к навигации Перейти к поиску

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

Разработка

[править | править код]

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

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

Элементы AIML

[править | править код]

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

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

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

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

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

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

 КАКОЕ ВАШЕ *

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

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

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

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

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

  Моё имя - <bot name="имя"/>.
  Вы сказали, что Вам <get name="возраст пользователя"/> лет.

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

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

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

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