AIML – Wikipédia
Artificial Intelligence Markup Language | |
Fejlesztő | Dr. Richard S. Wallace |
Kiterjesztése ennek | XML |
Weboldal | http://www.alicebot.org/TR/2005/WD-aiml/ |
Az AIML, más néven Artificial Intelligence Markup Language (Mesterséges Intelligencia Jelölőnyelv) az XML egy dialektusa, ami természetes nyelvi inputra reagáló számítógépes beszélgető programok, úgynevezett csevegőprogramok készítésére alkalmas. A nyelv és az arra épülő program az úgynevezett pattern-response (kérdés-válasz) modell alapján előre megírt lehetőségek közül választ, egy ügyes programozó így azt az érzetet keltheti a felhasználóban, hogy értelmes lénnyel beszélget.
Az AIML eredete
[szerkesztés]Az AIML XML-dialektust Richard Wallace fejlesztette ki 1995 és 2002 között. Eredetileg egy továbbfejlesztett és jelentősen kibővített Eliza program, az ALICE (Artificial Linguistic Internet Computer Entity) alapját képezte. A programmal Richard Wallace háromszor is megnyerte az évenként megrendezésre kerülő Loebner-díj versenyt, amelyet a legemberszerűbben kommunikáló számítógépes programnak ítélnek oda.,[1] és 2004-ben ő lett a Chatterbox challenge nyertese is.[2]
Az eredeti A.L.I.C.E. AIML halmaz (a beszélőprogram "agya") GNU Általános Nyilvános Licenc, és mivel a legtöbb AIML fordító szabad szoftver vagy nyílt forráskóddal rendelkező szoftver, sok különböző program és még több halmaz létezik, ezek az úgynevezett Alicebot-klónok. AIML fordítók számos programnyelven íródtak, pl. Java, Ruby, Python, C++, C#, Pascal.
Az AIML felépítése
[szerkesztés]Az AIML nyelv legfontosabb elemei a következők:
Category
[szerkesztés]A category - kategória elem a beszélő program tudásának legalapvetőbb építőköve. Egy kategória legalább két további elemből áll, ezek a pattern és template elemek. A pattern jelöli azt a karaktersort, ami inputként, kérdésként értelmezhető, ez az a szó vagy mondat amire a robot válaszként a template elemben meghatározott karaktersort adja vissza, ami így felfogható outputnak, vagy válasznak.
Példa egy egyszerű kategóriára:
<category> <pattern>MI A NEVED</pattern> <template>A nevem Bond.</template> </category>
A kategória betöltése után (ami a program indításakor, vagy a program futása közben is történhet) a program a Mi a neved? kérdésre azt fogja válaszolni: A nevem Bond.
Pattern
[szerkesztés]Egy pattern elem akkor aktiválódik, ha a felhasználó által megadott karaktersornak pontosan megfelel. Például a
MI A NEVED
pattern válaszát csak akkor kaphatjuk meg, ha pontosan ezt kérdezzük a géptől, és ha egyéb általánosító patternek nincsenek meghatározva, a Hogy hívnak? kérdésre nem fogunk választ kapni. Természetesen megoldható, hogy több különböző kérdésre is ugyanazt válaszolja a program, erről bővebben a template rész srai eleménél.
A pattern tartalmazhat helyettesítő elemet, ezt * (csillag) vagy _ (alsó vonás) jelöli. A következő pattern minden olyan inputra tud reagálni, ami "Mi a …" előtaggal kezdődik, és a "…" helyén levő karaktersorra van definiálva legalább egy válasz (kategória):
MI A *
Mi a kedvenc ételed? - Mi a neved? - Mi a mája muja? …
Ezekben az esetekben a program csak akkor fog tudni válaszolni, ha meg van határozva, hogy mit válaszoljon arra az inputra, hogy
KEDVENC ÉTELED - NEVED - MÁJA MUJA
Template
[szerkesztés]A template az a válasz, amit a program az adott pattern-re ad. Egy template lehet nagyon egyszerű - pl: A nevem Bond., vagy tartalmazhat változókat: "A nevem <bot name="name"/>.", ami a csevegőprogram tulajdonságait meghatározó "személyiség"-fájlból behelyettesíti a bot nevét, vagy "Azt mondtad a kedvenc színed a <get name="user-favcol"/>.", ami a felhasználó kedvenc színét helyettesíti be, feltéve, hogy meg van határozva ez a változó, és van értéke.
Egy template lehet szöveges, tartalmazhat lista elemeket, vagy akár random válaszokat is:
<category> <pattern>MONDJ EGY SZÁMOT</pattern> <template> <random> <li>1</li> <li>6</li> <li>327</li> <li>2178</li> <li>23</li> <li>57</li> <li>10638</li> <li>227</li> </random> </template> </category>
A legtöbb esetben egy kérdést (inputot) nem csak egyféleképpen lehet megfogalmazni, ilyenkor lehet segítségünkre a srai elem, ami egy másik kategóriára irányítja a programot:
<category> <pattern>MI A NEVED</pattern> <template>A nevem <bot name="name"/>.</template> </category> <category> <pattern>HOGY HÍVNAK</pattern> <template> <srai>mi a neved</srai> </template> </category>
Az első kategória a már ismert módon a bot tulajdonságai közül behelyettesíti a name (név) kategóriát. A Hogy hívnak kérdésre a program átirányítja magát a Mi a neved patternre, és az annak megfelelő választ adja. Ez különösen arra jó, hogy ha nem akarjuk ugyanazokat a válaszokat sokszor begépelni. példának álljon itt egy elköszönés:
<category> <pattern>VISZONTLÁTÁSRA</pattern> <template> <random> <li>Viszlát!</li> <li>Légy jó!</li> <li>Szia.</li> </random> </template> </category> <category> <pattern>VISZLÁT</pattern> <template><srai>VISZONTLÁTÁSRA</srai></template> </category> <category> <pattern>MOST MENNEM KELL</pattern> <template><srai>VISZONTLÁTÁSRA</srai></template> </category>
Bármelyik inputra (Viszontlátásra, Viszlát, Most mennem kell) a bot a következő három válasz közül véletlenszerűen választ majd egyet: Viszlát, Légy jó!, Szia..
Hivatkozások
[szerkesztés]- ↑ Loebner-díj. [2010. december 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. november 18.)
- ↑ Chatterbox Challenge. [2015. augusztus 3-i dátummal az eredetiből archiválva]. (Hozzáférés: 2016. november 16.)
külső kivatkozások
[szerkesztés]- aitools.org: AIML specifikáció, ingyenes AIML halmazok több nyelven, Program D
- alicebot.org: Richard Wallace "ALICE Foundation" nevű alapítványa
Szabad vagy nyílt forráskódú AIML programok
[szerkesztés]Jelenleg is fejlesztik:
- RebeccaAIML (C++, Java, .NET/C#, Python, Eclipse AIML editor plugin)
- Program D (Java, J2EE)
- ChatterBean (Java)
- Program R (Ruby)
- Program Q (C++, Qt)
- AIMLbot (Program #) (.NET/C#)
- Program W (Java)
- CHAT4D[halott link] edit and run (delphi) (french)
Jelenleg nem fejlesztik:
Néhány népszerű AIML alapú csevegőprogram
[szerkesztés]- Józsi Archiválva 2013. szeptember 2-i dátummal a Wayback Machine-ben Magyarul beszélő tanulásra képes chatbot(PHP)
- Az eredeti A.L.I.C.E.
- Dawnstar
- Ailysse
- Lilith
- Phile Knowledge
- Tina
- Cypher
- Chomsky - Wikipédia cikkeket is felhasználó csevegőprogram.
- iGod - Beszélgess Istennel.
- Kyle
- William Shakespeare
- Ailis
- Prelude - AIML alapú tanuló robot
- Mitsuku Archiválva 2008. december 5-i dátummal a Wayback Machine-ben
- [1] - AIML alapú Eliza
- Netsbrain - Avatar készítő csevegőprogram interfészekhez.[halott link]