Vés al contingut

AIML

De la Viquipèdia, l'enciclopèdia lliure
AIML

Tipusllenguatge de marques Modifica el valor a Wikidata
Basat enExtensible Markup Language Modifica el valor a Wikidata
Versió inicial16 juliol 2001 Modifica el valor a Wikidata
Més informació
Lloc webaiml.foundation… (anglès) Modifica el valor a Wikidata
Stack ExchangeEtiqueta Modifica el valor a Wikidata

El llenguatge de marcatge d'intel·ligència artificial (AIML) és un dialecte XML per crear agents de programari en llenguatge natural.[1]

Història

[modifica]

El dialecte XML anomenat AIML va ser desenvolupat per Richard Wallace i una comunitat mundial de programari lliure entre 1995 i 2002. AIML va formar la base del que inicialment va ser una Eliza molt estesa anomenada "ALICE" ("Artificial Linguistic Internet Computer Entity"), que va guanyar el concurs anual Loebner Prize in Artificial Intelligence[2] tres vegades, i també va ser la campiona del Chatterbox Challenge[3] el 2004.

Com que el conjunt ALICE AIML es va publicar sota la GPL, i com que la majoria dels intèrprets AIML s'ofereixen sota una llicència gratuïta o de codi obert, s'han creat molts "clons d'Alicebot" basats en la implementació original del programa i la seva base de coneixement AIML. La comunitat d'usuaris ha desenvolupat i posat a disposició conjunts AIML gratuïts[4] en diversos idiomes. Hi ha intèrprets AIML disponibles en Java, Ruby, Python, C++, C#, Pascal i altres llenguatges. Hi ha disponibles una especificació semiformal[5] i un esquema XML del W3C per a AIM.[6] Noel Bush és l'autor de l'especificació formal, mentre que Richard S. Wallace figura com el creador d'AIML, i l'esborrany de treball inclou col·laboradors com Thomas Ringate, Anthony Taylor i Jon Baer.[7]

Des de principis del 2013, la fundació ALICE ha estat treballant en un esborrany d'especificació per a AIML 2.0.[8]

Elements de l'AIML

[modifica]

L'AIML conté diversos elements. Els més importants es descriuen amb més detall a continuació.

Categories

[modifica]

Les categories en AIML formen la unitat fonamental del coneixement. Una categoria consta d'almenys dos elements més: els elements patró i plantilla. Aquí teniu una categoria senzilla:

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

Quan es carrega aquesta categoria, un bot AIML respondrà a l'entrada "Quin és el teu nom?" amb la resposta "Em dic Michael NS Evanious".

Patrons

[modifica]

Un patró és una cadena de caràcters destinada a coincidir amb una o més entrades de l'usuari. Un patró literal com

COM ET DIUS?

només coincidirà amb una entrada, ignorant majúscules i minúscules: "com et dius". Però els patrons també poden contenir comodins, que coincideixen amb una o més paraules. Un patró com

QUIN ÉS EL TEU *

coincidirà amb un nombre infinit d'entrades, com ara "com et dius", "quina és la teva talla de sabata", "quin és el teu propòsit a la vida", etc.

La sintaxi de patrons AIML és un llenguatge de patrons molt simple, substancialment menys complex que les expressions regulars i, per tant, inferior al nivell 3 de la jerarquia de Chomsky. Per compensar les simples capacitats de coincidència de patrons, els intèrprets AIML poden proporcionar funcions de preprocessament per ampliar abreviatures, eliminar errors ortogràfics, etc.

La sintaxi AIML en si mateixa és com a mínim tan complexa com les màquines d'estat finit i, com a tal, com a mínim del nivell 3 de la jerarquia de Chomsky. La raó és que un estat es correlaciona amb un tema. Per implementar aquest comportament, el tema hauria de tenir un patró "*" per assegurar-se que l'estat no es deixi accidentalment. S'implementa un trànsit estatal amb el <think><set name="topic">state2</set></think> Etiqueta. D'aquesta manera, el bot podrà "recordar" el tema tractat o fins i tot els privilegis d'usuari que s'obtenen durant el xat.

Plantilles

[modifica]

Una plantilla especifica la resposta a un patró coincident. Una plantilla pot ser tan simple com un text literal, com ara

Em dic Joan.

Una plantilla pot utilitzar variables, com ara l'exemple

Em dic <bot name="name"/>.

que substituirà el nom del bot a la frase, o

Em vas dir que tens <get name="user-age"/> anys.

que substituirà l'edat de l'usuari (si es coneix) a la frase.

Els elements de la plantilla inclouen formatació de text bàsica, resposta condicional (if-then/else) i respostes aleatòries.

Les plantilles també poden redirigir a altres patrons, utilitzant un element anomenat srai (Reducció Simbòlica en Intel·ligència Artificial). Això es pot utilitzar per implementar la sinonímia, com en aquest exemple (on s'utilitza CDATA per evitar la necessitat d'escapament XML):

La primera categoria simplement respon a la pregunta "com et dius?" amb el nom del bot. La segona categoria, però, diu que l'entrada "com et dius?" s'ha de redirigir a la categoria que coincideix amb l'entrada "com et dius?"; en altres paraules, diu que les dues frases són equivalents.

Les plantilles poden contenir altres tipus de contingut, que poden ser processats per qualsevol interfície d'usuari a través de la qual es comuniqui el bot. Així, per exemple, una plantilla pot utilitzar etiquetes HTML per al format, que poden ser ignorades pels clients que no admeten HTML.

Referències

[modifica]
  1. ↑ Marietto, Maria; Aguiar, Rafael; Barbosa, Gislene; Botelho, Wagner; Pimentel, Edson «Artificial Intelligence Markup Language: A Brief Tutorial». International Journal of Computer Science & Engineering Survey, 4, 30-06-2013, p. 1–20. DOI: 10.5121/ijcses.2013.4301.
  2. ↑ «loebner.net - Informationen zum Thema loebner.» (en anglès). loebner.net, 26-10-2007. Arxivat de l'original el 30 December 2010. [Consulta: 10 novembre 2010].
  3. ↑ «Chatterbox Challenge» (en anglès). chatterboxchallenge.com. Arxivat de l'original el 25 March 2006. [Consulta: 10 novembre 2010].
  4. ↑ «Free AIML sets - aitoold.org» (en anglès). aitools.org, 17-05-2006. Arxivat de l'original el 9 October 2006.
  5. ↑ «AIML 1.0.1 (A.L.I.C.E. AI Foundation)» (en anglès). alicebot.org, 13-10-2011. Arxivat de l'original el 18 November 2013. [Consulta: 1r desembre 2013].
  6. ↑ «AIML.xsd» (en anglès). aitools.org. Arxivat de l'original el 17 March 2006. [Consulta: 10 novembre 2010].
  7. ↑ “AIML 1.0.1 Working Draft Specification (rev 006),” A.L.I.C.E. AI Foundation, October 2001 — Noel Bush (Author); Richard Wallace (Creator); Thomas Ringate, Anthony Taylor, Jon Baer (Contributors).
  8. ↑ «AIML 2.0 draft specification released» (en anglès). alicebot.blogspot.com, 16-01-2013. Arxivat de l'original el 18 May 2013. [Consulta: 19 juny 2014].