AIML

AIML (Artificial Intelligence Markup Language) został opracowany w latach 1995 – 2000 przez dr Richarda S. Wallace na potrzeby projektu A.L.I.C.E. Służy do budowy baz wiedzy programów konwersacyjnych. Dr Wallace, tworząc AIML, przyjął następujące założenia:

  • język powinien być łatwy do nauki,
  • język powinien dostarczać minimalną funkcjonalność konieczną do utworzenia systemu zdolnego do interakcji z użytkownikiem,
  • język powinien być kompatybilny z XML,
  • programy przetwarzające AIML powinny być nieskomplikowane w tworzeniu,
  • obiekty języka powinny być czytelne dla człowieka,
  • specyfikacja AIML powinna być ścisła i formalna,
  • stosowanie języka AIML nie powinno pociągać za sobą użycia innych języków programowania.

Baza wiedzy stworzona w języku AIML opiera się na metodzie słów kluczowych. Program wyszukuje w treści wpisanej przez użytkownika odpowiednich słów kluczowych i znajduje w swojej bazie reakcje na te słowa. Podstawową jednostką bazy wiedzy jest kategoria (category). Każda kategoria składa się z wypowiedzi użytkownika zwanej wzorcem (pattern) i odpowiedzi chatterbota na ten wzorzec nazwanej szablonem (template). W ramach jednej kategorii może wystąpić tylko jeden wzorzec.

Przykład prostej bazy wiedzy, składającej się z jednej tylko kategorii znajduje się poniżej. Analizując ją można zauważyć, że jeśli użytkownik napisze do wirtualnego rozmówcy „Witaj” program odpowie mu „Cześć”.

<aiml>

<category>

       <pattern>WITAJ</pattern>

       <template>Cześć</template>

</category>

</aiml>

W bazie wiedzy utworzonej w języku AIML może być nieograniczona liczba kategorii. Aby ułatwić tworzenie bazy wiedzy AIML zawiera szereg dodatkowych znaczników. Niektóre z nich wraz z ich znaczeniem zawarto w tabeli 1.

Tabela 1

Wybrane znaczniki języka AIML

Znacznik

Znaczenie

<aiml>

rozpoczyna i kończy dokument AIML

<category>

oznacza jednostkę bazy wiedzy

<pattern>

zawiera wzorzec wypowiedzi użytkownika

<template>

zawiera odpowiedź bota na dany wzorzec

<srai>

pozwala na definiowanie synonimów

<star/>

pozwala pobrać fragment wypowiedzi użytkownika i umożliwiający stosowanie go w treści wypowiedzi chatterbota

<input>

pozwala do sięgnięcia do wcześniejszych odpowiedzi użytkownika

<random>

umożliwia losowe wybranie jednej z kilku odpowiedzi chatterbota

<that>

pozwala na sprawdzenie kontekstu wypowiedzi

<set>

przypisuje do zmiennej fragment wypowiedzi użytkownika

<get>

pozwala na umieszczenie w dowolnym miejscu zapisanej wcześniej wypowiedzi użytkownika

<think>

powstrzymuje program przed wypisaniem na wyjście umieszczonych pomiędzy nim działań chatterbota

<topic>

pozwala grupować kategorie w grupy tematyczne

<condition>

umożliwia stosowanie wyrażeń warunkowych

<formal>

formatuje tekst w taki sposób, że każde słowo rozpoczyna się wielką literą

<sentense>

różnicuje wypowiedzi chatterbota na zdania