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

Розробка ред.

Першим віртуальним співрозмовником була програма Еліза, створена у 1966 році. Її розробник, Джозеф Вейценбаум, побудував базу знань програми за принципом шаблонних відповідей. Подібний метод також був використаний у програмі A.L.I.C.E. в 1995 році, але тепер база знань стала структурованою. Для побудови такої бази якраз і була створена мова розмітки AIML. AIML розробив Річард Воллес, ініціатор проекту ALICE, і всесвітнім співтовариством вільного програмного забезпечення з 1995 по 2002 рік.

Версія AIML, яка використовується в ALICE, розповсюджується під ліцензією GNU GPL, тому існує багато вільних реалізацій цієї мови та різноманітних інтерпретаторів.

Елементи AIML ред.

Категорії ред.

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

 <category>
   <pattern>Як вас звуть?</pattern>
   <template>Я - Олег</template>
 </category>

Якщо ця категорія міститься в базі знань, інтерпретатор на питання «Як вас звуть?» відповідатиме «Я — Олег».

Зразки ред.

Зразок — символьний рядок, відповідний одному або декільком призначеним для користувача запитам. Такі зразки як:

 ЯК ВАС ЗВУТЬ

співвідноситимуться тільки з одним питанням (причому без урахування регістра). Проте зразки можуть містити символи узагальнення, що замінюють одне або декілька слів. Зразок:

 ЯК ВАС *

відповідатиме безлічі питань, наприклад: «Як вас звуть», «Як вас величати» і т. д.

Подібний синтаксис набагато простіший, ніж регулярні вирази. Він відповідає потребам програм-співбесідників, а якщо все ж таки його не вистачає, самі інтерпретатори можуть надати додаткові функції по обробці запитів.

Шаблони ред.

Шаблони позначають відповіді на розпізнані зразки. Шаблон може бути простим:

  Моє ім'я - Олег.

а може й містити змінні:

  Моє ім'я - <bot name="ім'я"/>.
  Ви сказали, що Вам <Get name="вік користувача"/> років.

У першому випадку інтерпретатор підставить своє «ім'я», а в другому — вік користувача (якщо вік відомий).

Посилання ред.