AIML - AIML
Расширение имени файла |
.aiml
|
---|---|
Разработано | Д-р Ричард С. Уоллес |
Первый выпуск | 16 июля 2001 г . |
Последний релиз | 2.1 (версия 1.0.2.22) (9 марта 2018 г . ) |
Тип формата | Искусственный интеллект |
Расширен с | 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.