AIML - AIML

Język znaczników sztucznej inteligencji
Rozszerzenie nazwy pliku
.aiml
Opracowany przez Dr Richard S. Wallace
Pierwsze wydanie 16 lipca 2001 ; 19 lat temu ( 2001-07-16 )
Najnowsze wydanie
2.1 (rev 1.0.2.22)
(9 marca 2018 ; 3 lata temu ) ( 2018-03-09 )
Rodzaj formatu Sztuczna inteligencja
Rozszerzony z XML
Otwarty format ? tak
Stronie internetowej http://www.aiml.foundation/doc.html

AIML lub sztuczna inteligencja Markup Language to dialekt XML do tworzenia agentów oprogramowania w języku naturalnym .

Historia

Dialektem XML nazywa aiml została opracowana przez Richarda Wallace'a i ogólnoświatowej społeczności wolnego oprogramowania w latach 1995 i 2002. aiml tworzą podstawę do tego, co było początkowo bardzo rozszerzony Eliza nazwie „ Alice ”. („Artificial Linguistic Internet Computer Entity”), który trzykrotnie wygrał doroczny konkurs Loebner Prize w dziedzinie sztucznej inteligencji , a także był zwycięzcą Chatterbox Challenge w 2004 roku.

Ponieważ zestaw ALICE AIML został wydany na licencji GNU GPL i ponieważ większość interpreterów AIML jest oferowana na wolnej lub otwartej licencji , wiele „klonów Alicebota” zostało stworzonych w oparciu o oryginalną implementację programu i jego bazę wiedzy AIML. Bezpłatne zestawy AIML w kilku językach zostały opracowane i udostępnione przez społeczność użytkowników. Interpretery AIML są dostępne w językach Java , Ruby , Python , C++ , C# , Pascal i innych (patrz poniżej ). Dostępna jest półformalna specyfikacja i schemat XML W3C dla AIML.

Od początku 2013 roku fundacja ALICE pracuje nad projektem specyfikacji dla AIML 2.0.

Elementy AIML

AIML zawiera kilka elementów. Najważniejsze z nich zostały szczegółowo opisane poniżej.

Kategorie

Kategorie w AIML stanowią podstawową jednostkę wiedzy. Kategoria składa się z co najmniej dwóch dalszych elementów: elementów wzorca i szablonu . Oto prosta kategoria:

<category>
  <pattern>WHAT IS YOUR NAME</pattern>
  <template>My name is Michael N.S Evanious.</template>
</category>

Po załadowaniu tej kategorii bot AIML odpowie na dane wejściowe „Jak masz na imię” odpowiedzią „Nazywam się Michael NS Evanious”.

Wzory

Wzorzec to ciąg znaków przeznaczony do dopasowania jednego lub więcej danych wejściowych użytkownika. Dosłowny wzór, taki jak

WHAT IS YOUR NAME

dopasuje tylko jedno wejście, ignorując wielkość liter: "jak masz na imię". Ale wzorce mogą również zawierać symbole wieloznaczne, które pasują do jednego lub więcej słów. Wzór jak

WHAT IS YOUR *

dopasuje nieskończoną liczbę danych wejściowych, w tym „jak masz na imię”, „jaki jest twój rozmiar buta”, „jaki jest twój cel w życiu” itp.

Składnia wzorców AIML jest bardzo prostym językiem wzorców, znacznie mniej złożonym niż wyrażenia regularne i jako taki niższy niż poziom 3 w hierarchii Chomsky'ego . Aby zrekompensować proste możliwości dopasowywania wzorców , interpretery AIML mogą udostępniać funkcje przetwarzania wstępnego, które rozszerzają skróty, usuwają błędy ortograficzne itp.

Sama składnia AIML jest co najmniej tak złożona jak skończone maszyny stanowe i jako taka jest co najmniej na poziomie 3 w hierarchii Chomsky'ego . Dzieje się tak, ponieważ stan jest powiązany z jednym tematem . Aby zaimplementować to zachowanie, temat powinien mieć wzorzec "*", aby upewnić się, że stan nie zostanie przypadkowo pozostawiony. Tranzyt stanowy jest realizowany za pomocą tagu. W ten sposób bot będzie mógł "zapamiętać" poruszany temat, a nawet przywileje użytkownika, które zdobywa podczas czatu. <think><set name="topic">state2</set></think>

Szablony

Szablon określa odpowiedź na pasujący wzorzec. Szablon może być tak prosty jak dosłowny tekst, na przykład

My name is John.

Szablon może wykorzystywać zmienne, takie jak przykład

My name is <bot name="name"/>.

który zastąpi nazwę bota w zdaniu, lub

You told me you are <get name="user-age"/> years old.

który zastąpi w zdaniu wiek użytkownika (jeśli jest znany).

Elementy szablonu obejmują podstawowe formatowanie tekstu, odpowiedź warunkową (jeśli-to/inaczej) oraz odpowiedzi losowe.

Szablony mogą również przekierowywać do innych wzorców, używając elementu zwanego srai (Symboliczna redukcja w sztucznej inteligencji). Można to wykorzystać do zaimplementowania synonimii, jak w tym przykładzie (gdzie CDATA jest używany w celu uniknięcia potrzeby ucieczki 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>

Pierwsza kategoria po prostu odpowiada na dane wejściowe „jak masz na imię” z podaniem nazwy bota. Druga kategoria mówi jednak, że dane wejściowe „jak się nazywasz” powinny zostać przekierowane do kategorii, która odpowiada wpisowi „jak masz na imię” — innymi słowy, oznacza to, że te dwie frazy są równoważne.

Szablony mogą zawierać inne rodzaje treści, które mogą być przetwarzane przez dowolny interfejs użytkownika, przez który rozmawia bot. Na przykład szablon może używać znaczników HTML do formatowania, które mogą być ignorowane przez klientów nieobsługujących HTML.

Bibliografia