AIML

linguaggio di markup

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

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

Storia modifica

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 modifica

Categorie modifica

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 modifica

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 modifica

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 modifica

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 modifica

Collegamenti esterni modifica

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