Introduzione all’ AIML cos’è e come si usa

AI, INTELLIGENZA ARTIFICIALE

L’AIML [Artificial Intelligence Markup Language] è un derivato di XML [Extensible Markup Language] che consente analisi di contenuto pattern-based, e implementa meccanismi di conoscenza stimolo-risposta. AIML è stato progettato per essere facilmente utilizzabile e consente anche una rapida estensione della rappresentazione di base del linguaggio. Garantisce l’interoperabilità con derivati dell’XML come XHTML. L’interprete AIML è il sistema che implementa il meccanismo di parsing dell’informazione e che la rende fruibile a terzi.

Categorie

Le categorie sono le unità fondamentali di una struttura di conoscenza nell’AIML. 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 è Alex.</template> 
 </category>

Quando viene caricata questa categoria, alla domanda “Qual è il tuo nome?” il sistema risponderà “Il mio nome è Alex.“.

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 ovvero : “qual è il tuo nome”. I pattern, però,  possono anche contenere wildcard, che possono sostituire una o più parole. Un pattern come ad esempio 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 è molto semplice e meno complessa delle espressioni regolari.

Template

Un template indica la risposta ad un pattern. Un template può contenere testo letterale, come Il mio nome è Alex, ma può anche usare delle variabili, come

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

che sostituisce il nome generalizzato nella frase ed identificato dal sistema Alex, oppure

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

che sostituisce nella frase l’età dell’utente (se è nota). Gli elementi del template comprendono

  • una formattazione di base del testo,
  • risposte condizionali
  • risposte casuali
  • reindirizzamento ad altri pattern

Nel caos del reindirizzamento si usa il tag <srai> che può essere usato per implementare i sinonimi, come nel seguente esempio:

<category>  
<pattern>QUAL È IL TUO NOME</pattern>  
 <template>
    Il mio nome è <nome 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. 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.

Lista TAG AIML

Di seguito riporto una lista di tag documentati e non che potrebbero essere usati nell’implementazione di un bot.

<star index=”N”/> – sostituito con il valore corrispondente di * nel modello

<that index=”M,N”/> – sostituito con il valore corrispondente della risposta precedente del bot

<input index=”N”/> – sostituito con il valore corrispondente dell’input dell’utente

<thatstar index=”N”/> – sostituito con il valore di * in “that”

<topicstar index=”N”/> – sostituito con il valore di * nell’argomento

<get name=”XXX”/> – sostituito dal valore della variabile specifica della conversazione

<bot name=”XXX”/> – sostituito dal valore della variabile specifica del bot

<sr/> – forma abbreviata per <srai><star/> <srai> (sostituito con risposta al valore di * dallo schema)

<person2/> – converte il testo (o <star />) tra la 1a e la 2a persona (Io <-> lui, ecc.)

<person/> – converte il testo (o <star />) tra la prima e la terza persona (Io <-> tu, ecc.)

<gender/> – converte il testo (o <star />) tra maschio e femmina (lui <-> lei)

<date/> – sostituito con la data e l’ora correnti, è supportato anche un attributo “formato”

<size/> – sostituito con la dimensione della memoria del bot

<version/> – sostituito con la versione del motore AI

<uppercase> – converte il testo in maiuscolo

<lowercase> – converte il testo in minuscolo

<formal> – converte tutte le parole nel testo in maiuscolo

<sentence> – converte la prima parola nel testo in maiuscolo

<condition name=”X” value=”Y”> – definisce una condizione “if” in base al confronto del valore di una variabile con un modello

<condition name=”X”> – istruzione case

<condition> – istruzione if / else a più valori

<random> – seleziona uno dei valori <li> nidificati a caso <li name = “X” value = “Y”> – utilizzato nei tag random e condition

<li value=”Y”> – utilizzato nei tag random e condition

<set name=”XXX”> – imposta il valore di una variabile

<gossip> – registra il testo

<srai> -valuta ricorsivamente il testo e lo sostituisce con la risposta

<learn> -carica un file AIML esterno, al momento non è consentito

<system> – esegue un comando OS, al momento non è consentito

<javascript> -esegue il codice JavaScript

seconda parte>>

Comments