Artificiell intelligens Markup Language
Filnamnstillägg |
.aiml
|
---|---|
Utvecklad av | Dr Richard S. Wallace |
Initial release | 16 juli 2001 |
Senaste släppningen | 2.1 (rev 1.0.2.22 [ citat behövs ] ) 20 juni 2018 |
Typ av format | Artificiell intelligens |
Förlängt från | XML |
Öppna format ? | Ja |
Hemsida |
|
Artificial Intelligence Markup Language ( AIML ) är en XML- dialekt för att skapa programvaruagenter för naturligt språk .
Historia
XML -dialekten kallad AIML utvecklades av Richard Wallace och en världsomspännande fri mjukvarugemenskap mellan 1995 [ behövd hänvisning ] och 2002. AIML utgjorde grunden för vad som från början var en mycket utökad Eliza kallad " ALICE " ("Artificial Linguistic Internet Computer Entity") , som vann den årliga Loebner-pristävlingen i artificiell intelligens tre gånger, och var även Chatterbox Challenge Champion 2004.
Eftersom ALICE AIML-uppsättningen släpptes under GNU GPL , och eftersom de flesta AIML-tolkar erbjuds under en fri eller öppen källkodslicens, har många "Alicebot-kloner" skapats baserat på den ursprungliga implementeringen av programmet och dess AIML-kunskapsbas. Gratis AIML-set på flera språk har utvecklats och gjorts tillgängliga av användargemenskapen. Det finns AIML-tolkar tillgängliga i Java , Ruby , Python , C++ , C# , Pascal och andra språk (se nedan [ död länk ] ). En semi-formell specifikation och ett W3C XML-schema för AIML finns tillgängliga.
Sedan början av 2013 har ALICE-stiftelsen arbetat med ett utkast till specifikation för AIML 2.0.
Delar av AIML
AIML innehåller flera element. De viktigaste av dessa beskrivs mer i detalj nedan.
Kategorier
Kategorier i AIML utgör den grundläggande kunskapsenheten. En kategori består av minst två ytterligare element: mönstret och mallelementen . Här är en enkel kategori:
<category> <pattern> VAD ÄR DITT NAMN </pattern> <template> Jag heter Michael NS Evanious. </template> </category>
När den här kategorin är laddad kommer en AIML-bot att svara på inmatningen "Vad är ditt namn" med svaret "Mitt namn är Michael NS Evanious."
Mönster
Ett mönster är en sträng av tecken som är avsedda att matcha en eller flera användarinmatningar. Ett bokstavligt mönster som
VAD HETER DU
matchar endast en inmatning, ignorerar skiftläge: "vad heter du". Men mönster kan också innehålla jokertecken, som matchar ett eller flera ord. Ett mönster som
VAD ÄR DIN *
kommer att matcha ett oändligt antal ingångar, inklusive "vad heter du", "vad är din skostorlek", "vad är ditt syfte med livet", etc.
AIML-mönstersyntaxen är ett mycket enkelt mönsterspråk, betydligt mindre komplext än reguljära uttryck och som sådant mindre än nivå 3 i Chomsky-hierarkin . För att kompensera för de enkla mönstermatchningsmöjligheterna kan AIML-tolkare tillhandahålla förbearbetningsfunktioner för att utöka förkortningar, ta bort felstavningar, etc.
Själva AIML-syntaxen är minst lika komplex som finita tillståndsmaskiner och som sådan åtminstone på nivå 3 i Chomsky-hierarkin . Detta beror på att ett tillstånd korrelerar till ett ämne . För att implementera det beteendet bör ämnet ha ett "*"-mönster för att säkerställa att tillståndet inte lämnas av misstag. En statlig transitering implementeras med taggen <think><set name= "topic" > state2 </set></think> .
På så sätt kommer boten att kunna "komma ihåg" ämnet som talas om eller till och med användarprivilegier, som erhålls under chatten.
Mallar
En mall anger svaret på ett matchat mönster. En mall kan vara så enkel som en bokstavlig text, till exempel
Mitt namn är John.
En mall kan använda variabler, som exemplet
Mitt namn är .
som kommer att ersätta botens namn i meningen, eller
Du sa att du är det år gammal.
som kommer att ersätta användarens ålder (om känd) i meningen.
Mallelement inkluderar grundläggande textformatering, villkorligt svar (om-då/annan) och slumpmässiga svar.
Mallar kan också omdirigera till andra mönster med hjälp av ett element som kallas srai (Symbolic Reduction in Artificial Intelligence). Detta kan användas för att implementera synonymi, som i det här exemplet (där CDATA används för att undvika behovet av XML-escape ):
<category> <pattern> VAD ÄR DITT NAMN </pattern> <template> <![CDATA[Mitt namn är <bot name="name"/>.]]> </template> </category> <category> < mönster> VAD HETER DU </pattern> <template> <srai> vad heter du </srai> </template> </category>
Den första kategorin svarar helt enkelt på en inmatning "vad är ditt namn" med en uppgift om botens namn. Den andra kategorin säger dock att inmatningen "vad heter du" ska omdirigeras till den kategori som matchar inmatningen "vad heter du" — med andra ord, det säger att de två fraserna är likvärdiga.
Mallar kan innehålla andra typer av innehåll, som kan bearbetas av vilket användargränssnitt som boten pratar genom. Så till exempel kan en mall använda HTML-taggar för formatering, som kan ignoreras av klienter som inte stöder HTML.