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>
Если эта категория содержится в базе знаний, интерпретатор на вопрос «Какое ваше имя?» будет отвечать «Моё имя — Олег».
Образцы
Образец — символьная строка, соответствующая одному или нескольким пользовательским запросам. Такие образцы, как:
КАКОЕ ВАШЕ ИМЯ
будут соотноситься только с одним вопросом (причём без учёта регистра). Однако образцы могут содержать символы обобщения, заменяющие одно или несколько слов. Образец:
КАКОЕ ВАШЕ *
будет соответствовать бесчисленному множеству вопросов, например: «Какое ваше имя», «Какое ваше отчество», «Какое ваше мнение об этом» и т. д.
Подобный синтаксис намного проще, чем регулярные выражения. Он соответствует потребностям программ-собеседников, а если всё же его не хватает, сами интерпретаторы могут предоставить дополнительные функции по обработке запросов.
Шаблоны
Шаблоны обозначают ответы на распознанные образцы. Шаблон может быть и простым:
Моё имя - Олег.
а может и содержать переменные:
Моё имя - <bot name="имя"/>.
Вы сказали, что Вам <get name="возраст пользователя"/> лет.
В первом случае интерпретатор подставит своё «имя», а во втором — возраст пользователя (если возраст известен).
Шаблоны могут содержать базовое текстовое форматирование, условные и случайные части. Возможны также перенаправления (задаются элементом srai). Это может использоваться для обозначения синонимии и эквивалентности фраз:
<category>
<pattern>КАКОЕ ВАШЕ ИМЯ</pattern>
<template>Моё имя - <bot name="имя"/>.</template>
</category>
<category>
<pattern>КАК ВАС ЗОВУТ</pattern>
<template>
<srai>какое ваше имя</srai>
</template>
</category>
Шаблоны могут содержать форматирование, нацеленное на специфический пользовательский интерфейс, и обрабатываемое конкретным интерпретатором (например, HTML-теги).
См. также
Ссылки
- www.alicebot.org — сайт, посвящённый ALICE.