AIML

Artificial Intelligence Markup Language
Estensione.aiml
SviluppatoreRichard Wallace
1ª pubblicazione3 agosto 2001
Ultima versione2.1 (1 novembre 2018)
TipoIntelligenza artificiale
Estensione diXML
Sito webhttp://www.aiml.foundation/doc.html

L'AIML, acronimo di Artificial Intelligence Markup Language, è un dialetto dell'XML inventato per creare software che devono imitare la lingua naturale.

Storia

Il dialetto XML chiamato AIML è stato sviluppato da Richard Wallace e da una comunità mondiale di software libero tra il 1995 e il 2002. È stato la base di quello che fu inizialmente una versione estesa di ELIZA, chiamata A.L.I.C.E. (Artificial Linguistic Internet Computer Entity).

Poiché l'AIML è stato distribuito sotto licenza GNU GPL e dato che molti interpreti dell'AIML sono stati diffusi con licenze libere od open source, molti cloni di A.L.I.C.E. sono stati sviluppati dall'implementazione originale e dal suo funzionamento base. Sono stati sviluppati dei set AIML in diverse lingue e sono stati resi disponibili al pubblico. Esistono interpreti dell'AIML disponibili in Java, Ruby, Python, C++, C#, Pascal ed altri linguaggi.

Elementi di AIML

Categorie

Le categorie in AIML sono le unità fondamentali. Una categoria è formata da almeno due elementi: il pattern e il template. Ecco un esempio di categoria:

 <category>
   <pattern>QUAL È IL TUO NOME</pattern>
   <template>Il mio nome è John.</template>
 </category>

Quando viene caricata questa categoria, un bot AIML alla domanda "Qual è il tuo nome?" risponderà "Il mio nome è John.".

Pattern

Un pattern è una stringa di caratteri che rappresenta uno o più input dell'utente. Un tipico pattern è

 QUAL È IL TUO NOME

che consente però un solo input: "qual è il tuo nome". Ma i pattern possono anche contenere metacaratteri, che possono sostituire una o più parole. Un pattern come

 QUAL È IL TUO *

permetterà un infinito numero di input, come ad esempio "qual è il tuo nome", "qual è il tuo colore preferito", "qual è il tuo mestiere" ecc.

La sintassi dei pattern AIML è molto semplice, meno complessa delle espressioni regolari.

Template

Un template indica la risposta ad un pattern. Un template può contenere soltanto testo letterale, come

 Il mio nome è John.

Un template può anche usare delle variabili, come

 Il mio nome è <bot name="nome"/>.

che sostituisce il nome del bot nella frase, oppure

 Mi hai detto di avere <get name="età-utente"/> anni.

che sostituisce l'età dell'utente (se è nota) nella frase.

Gli elementi del template comprendono una formattazione di base del testo, risposte condizionali e risposte casuali.

I template possono anche reindirizzare ad altri pattern attraverso un elemento chiamato srai. Questo può essere usato per implementare i sinonimi, come nel seguente esempio:

 <category>
   <pattern>QUAL È IL TUO NOME</pattern>
   <template><![CDATA[Il mio nome è <bot name="nome"/>.]]></template>
 </category>
 <category>
   <pattern>COME TI CHIAMI</pattern>
   <template>
     <srai>qual è il tuo nome</srai>
   </template>
 </category>

La prima categoria risponde all'input "qual è il tuo nome" fornendo il nome del bot. La seconda categoria invece stabilisce che l'input "come ti chiami" deve essere reindirizzato alla categoria che riguarda l'input "qual è il tuo nome" perché le due frasi sono equivalenti.

Critiche

L'AIML è considerato potente e facile e un buon punto di partenza per i principianti per creare semplici bot; tuttavia è assai più difficoltoso usarlo per costruire bot più complessi.

Voci correlate

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica