Mi is az az AIML?
Az AIML, vagyis az Artificial Intelligence Markup Language (magyarul: mesterséges intelligencia leíró nyelv) az XML egy változata; mely csevegő-robotok (chatbot, chatterbot) tudásbázisát tartalmazza. Az első változatát Dr. Richard Wallace fejlesztette ki A.L.I.C.E. (Artificial Linguistic Internet Computer Entity) nevű internetes csevegő robotja egyszerű testreszabásához.
Később A.L.I.C.E. AIML készleteit elérhetővé tették a GNU GPL licensz alatt, így renget olyan A.L.I.C.E.-klón chatbot jöhetett létre, ami szintén az AIML-t használja; és sok szabadon felhasználható AIML készlet jelent meg az Interneten, különböző nyelveken. Sok segédprogram (pl.:AIML szerkesztők) és értelmező is készült, a legváltozatosabb programnyelveken, pl.: pascal, java, c++, lisp, php, perl, python, stb... Egy lista elérhető a következő címen: alicebot.org.
Az AIML elemei
Az aiml több elemet is tartalmaz, következzenek a legfontosabbak:
Category
A kategóriák az AIML-ben a tudás alapegységei. Legalább két további elemet tartalmaznak: a pattern és a template elemeket. Íme egy egy egyszerű kategória:
<category> <pattern>MI A NEVED</pattern> <template>Ada vagyok.</template> </category>
Ha ez a kategória be van töltve, akkor a "Mi a neved?" kérdésre a robot az "Ada vagyok." választ fogja adni.
Pattern
A minta egy karakterlánc, amelyre illeszkedhet egy vagy több felhasználó által begépelt szöveg. Az ilyen, szó szerinti minta
MI A NEVED
csak egy bemenetre illeszkedik, a "mi a neved" szövegre; de a minták tartalmazhatnak joker-karaktereket is, melyek egy vagy több szót is helyettesíthetnek. Az ilyen minták
MI A *
végtelen számú bemenetre illeszkednek, beleértve a "mi a neved", "mi a cipőméreted", "mi a kedvenc böngésződ", stb... A következő minta
*
minden bemenetre illeszkedik. Célszerű csinálni egy ilyen mintát tartalmazó kategóriát is, hogy a robot tudjon valamit válaszolni az egyéb mintákra nem illeszkedő kérdésekre is.
Az AIML pattern nyelvtana nagyon egyszerű, sokkal egyszerűbb a reguláris kifejezésekénél. Itt a csevegés a központi cél; és ennek megfelelően az AIML értelmezők csak egyszerűbb feladatokat tudnak ellátni: rövidítéseket oldanak fel, helyesírási, elgépelési hibákat javítanak, stb...
Template
A sablonok tartalmazzák a mintákra illeszkedő bemenetekre adandó válaszokat. Egy sablon lehet egy egyszerű szöveg:
A nevem Ada.
vagy akár változókat is tartalmazhat, ebben a példában
A nevem <bot name="name"/>.
be fogja helyettesíteni a robot nevét a mondatba, vagy itt
Azt mondtad, hogy <get name="user-age"/> éves vagy.
behelyettesíti a felhasználó korát (ha az ismert).
A sablonok tartalmazhatnak egyszerű szövegformázásokat, feltételes válaszokat (if-then, else) és véletlenszerű válaszokat is; továbbá átirányításokat más mintákra a srai elem segítségével. Használatával megvalósíthatók a szinonímák: több alakilag különböző, de hasonló jelentésű kérdésre ugyanaz a válasz adható. Pl.:
<category>
<pattern>MI A NEVED</pattern>
<template>Az én nevem <bot name="name"/>.</template>
</category>
<category>
<pattern>HOGY HÍVNAK</pattern>
<template>
<srai>mi a neved</srai>
</template>
</category>
Az első kategória egyszerűen visszaadja a "Mi a neved" kérdésre a robot nevét. A második kategória a "hogy hívnak" kérdésre átirányít a "mi a neved" mintát tartalmazó kategóriába, így a két kérdés azonos eredményre vezet.
Random
Nagyon hasznos lehetőség a véletlenszerű válaszok generálása. Emiatt a robot értelmesebbnek tűnhet, és válaszai kevésbé lesznek előre láthatóak:
<category>
<pattern>HOGY VAGY</pattern>
<template>
<random>
<li>Köszönöm, jól.</li>
<li>Semmi közöd hozzá!</li>
<li>Én jól, és te?</li>
</random>
</template>
</category>
Források:
Ezt a leírást főleg az angol nyelvű Wikipédiában található AIML cikk alapján készítettem. Mivel nem igazán tudok angolul, valószínűleg akad benne jópár hiba; szóval csak óvatosan. http://en.wikipedia.org/wiki/AIML http://www.alicebot.org/aiml.html
Utóljára módosítva: 2009.12.17, 15:32