title: AIML
text: # AIML
  
  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:
  
  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 è
  
  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
  
  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
  
  Un template può anche usare delle variabili, come
  
  che sostituisce il nome del bot nella frase, oppure
  
  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:
  
  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.
  
  