Austro-Daimler
- 1 year ago
- 0
- 0
AIML (Artificial Intelligence Markup Language) — язык разметки для искусственного интеллекта . AIML — подмножество (диалект) XML , он предназначается для создания виртуальных собеседников .
Первым виртуальным собеседником была программа Элиза , разработанная в 1966 году . Её создатель, Джозеф Вейценбаум, построил её базу знаний по принципу шаблонных ответов (см. ). Подобный метод был использован в программе A.L.I.C.E. в 1995 году , но теперь база знаний стала более структурированной. Для построения такой базы как раз и был создан AIML. Этот язык разрабатывался Ричардом Уолессом — инициатором проекта ALICE — и всемирным сообществом свободного ПО с 1995 по 2002 год .
Версия AIML, используемая в ALICE, распространяется под лицензией GNU GPL , поэтому существует много свободных реализаций этого языка , а также программ, использующих этот язык ( интерпретаторов ). Наиболее активно используемая версия интерпретатора — , написанная на языке Java. Существуют также языка и , данная консорциумом W3C .
Категории (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 -теги).