AIML
AIML (Artificial Intelligence Markup Language) – język znaczników oparty na języku XML, służący do tworzenia baz wiedzy chatterbotów, opracowany pierwotnie przez hakera, dr. Richarda S. Wallace’a, a później rozwijany również przez społeczność wolnego oprogramowania ALICE w latach 1995–2000.
Elementy języka AIML
[edytuj | edytuj kod]Język AIML zawiera kilka różnych elementów. Najważniejsze z nich są opisane poniżej.
Category
[edytuj | edytuj kod]Kategorie (<category>
) są najważniejszymi znacznikami AIML. Kategorie składają się z przynajmniej dwóch elementów: znacznika <pattern>
oraz znacznika <template>
. Poniżej znajduje się prosty przykład zastosowania znacznika <category>
:
<aiml version="1.0.1">
<category>
<pattern>HELLO</pattern>
<template>Witam.</template>
</category>
</aiml>
Baza wiedzy podana w przykładzie jest zgodna z wersją 1.0.1 dokumentacji języka AIML.
Pattern
[edytuj | edytuj kod]Wzorzec (<pattern>
) jest ciągiem znaków dopasowanych do jednego lub więcej zapytań użytkownika. Wzorzec w stylu:
ILE MASZ LAT
zawiera tylko jedno zapytanie, ignorując: „jak masz na imię”. Wzorce mogą również zawierać symbol wieloznaczny ('*'), który odpowiada jednemu lub kilku wyrazom. Wzorzec w stylu:
ILE MASZ *
dopasuje do skończonej liczby zapytań np.: „ile masz lat”, „ile masz zwierzaków”, „ile masz par butów” itd.
Pattern języka AIML jest prostszym i o wiele mniej skomplikowanym językiem dla wzorów niż wyrażenia regularne.
Template
[edytuj | edytuj kod]Szablony (<template>
) określają reakcje na wzorzec. Szablony mogą być całą odpowiedzią, np.
MAM NA IMIĘ ASIA.
W szablonach można używać również zmiennych np.
MAM NA IMIĘ <bot name="name"/>.
która zastąpi nazwę bota w zdaniu, lub
POWIEDZIAŁEŚ MI, ŻE MASZ <get name="user-age"/> LAT.
która zastąpi user-age (jeśli zostało to już wcześniej w rozmowie z botem podane) wiekiem użytkownika.
Znacznik template zawiera podstawowe elementy formatowania tekstu, odpowiedzi warunkowe (if-then/else) oraz losowe odpowiedzi.
Szablony mogą przekierowywać do innych wzorców przy użyciu znacznika <srai>
. Może być to wykorzystywane w przypadku synonimicznych wzorców, jak w przykładzie poniżej
<category>
<pattern>JAK MASZ NA IMIĘ</pattern>
<template>MAM NA IMIĘ <bot name="name"/>.</template>
</category>
<category>
<pattern>JAK SIĘ NAZYWASZ</pattern>
<template>
<srai>JAK MASZ NA IMIĘ</srai>
</template>
</category>
Pierwsza kategoria zawiera prostą odpowiedź na pytanie „jak masz na imię”, wstawiając w odpowiedzi nazwę bota. Druga kategoria przekieruje zapytanie „jak się nazywasz” do kategorii, zawierającej zapytanie „jak masz na imię” i zwróci odpowiedź. Oba wyrażenia są równoważne.
Linki zewnętrzne
[edytuj | edytuj kod]- http://www.aiml.foundation/doc.html – dokumentacja języka AIML
- www.alicebot.org – strona domowa projektu