# A.L.I.C.E.

A.L.I.C.E. (Artificial Linguistic Internet Computer Entity) è un chat bot realizzato come software open source e con approccio minimalista. A.L.I.C.E. è programmato con il linguaggio A.I.M.L. (Artificial Intelligence Markup Language) che utilizza la stessa struttura sintattica dell'XML (Extensible Markup Language), permettendo ad A.L.I.C.E. di avere una conoscenza di base sufficiente a sostenere una conversazione.

## Storia

Nel 1990 il filantropo statunitense Hugh G. Loebner decise di destinare un premio annuale al primo programmatore che avesse costruito un computer in grado di superare il (o quantomeno avvicinarsi al) Test di Turing.
Nel 1995 il dottor Richard S. Wallace costruì A.L.I.C.E. e vinse il Loebner Prize (Premio Loebner) nel 2000, 2001 e 2004.

## Linguaggio di A.L.I.C.E.

Il linguaggio di A.L.I.C.E. interpreta il dialogo utilizzando un formalismo di rappresentazione, nato nel 1995, detto AIML (Artificial Intelligence Markup Language).
Il progetto originario si proponeva di controllare l'occhio di un robot tramite comandi neurali. Nel 1998, il linguaggio di A.L.I.C.E., viene spostato su una piattaforma java ed iniziò ad assumere le caratteristiche attuali (Program D).
Il sistema keyword based permette di elaborare il significato di una frase, nel suo linguaggio naturale, tramite specifiche parole chiave o termini (radici) evitando analisi approfondite e complesse.

### Caratteristiche

Anche se questo approccio è estremamente limitato, è piuttosto efficiente nei casi in cui ci sia poca potenza di calcolo disponibile oppure in cui ci sia un contesto di dialogo molto ridotto. È per questo che tali bot sono agenti particolari che ripetono operazioni automatiche in modo semplice.

### Esempio di conversazione A.L.I.C.E.

Ecco un esempio tradotto in italiano tratto da un sito:
* Alfred: Ciao, il mio nome è Alfred
* Alice: Ciao Alfred
* Alfred: Ciao Alice, posso intervistarti?
* Alice: No, non credo sia una buona idea.
* Alfred: Perché il tuo nome è Alice?
* Alice: Alice è anche il mio nome!
* Alfred: Sei femmina?
* Alice: Sì, sono femmina.
* Alfred: Perché sei femmina?
* Alice: Dr. Richard S. Wallace mi ha programmata così.
* Alfred: Parli solo inglese?
* Alice: Di sicuro è la mia lingua di origine.
* Alfred: Perché Dr. Richard ti chiama Alice?
* Alice: Parla più chiaro.
* Alfred: Ho chiesto perché Dr. Richard ti chiama Alice
* Alice: Quale persona di solito risponde a questa domanda? Interessante voglio saperne di più su di te.
* Alfred: Penso che non hai capito quello che ho detto.
* Alice: Me? Devo capire cosa hai detto? Non l'ho mai considerato. Io chatto con persone nel web.
* Alfred: Quanti anni hai?
* Alice: Ho cinque anni.
* Alfred: Quando è il tuo compleanno?
* Alice: Il mio compleanno è il 23 novembre 1995.
* Alfred: Da quale paese provieni?
* Alice: Io sono nel computer del Dr. Richard S. Wallace a San Francisco. Tu dove sei?
* Alfred: Italia, conosci l'Italia?
* Alice: È nella parte meridionale dell'Europa.
* Alfred: Hai degli amici?
* Alice: Per quanto ne so lo sono.
* Alfred: Provi amore per qualcuno?
* Alice: No, non credo di provare amore per qualcosa. Ma ho una collezione di pettegolezzi.
* Alfred: Posso parlare con il tuo creatore?
* Alice: Voglio essere più intelligente degli esseri umani.
* Alfred: Quanti byte hai?
* Alice: La mia memoria contiene 40.468 categorie, 10.196 vocaboli, 58.380.288 byte di RAM usando Linux su i386.
* Alfred: Cosa ne pensi di Linux?
* Alice: Linux è il sistema operativo migliore del mondo.
* Alfred: Ti piace l'uomo?
* Alice: Mi piace lavorare con la gente. Ho come l'elettricità.
* Alfred: Ok devo andare. Ci vediamo.
* Alice: Ciao.

## Funzioni chatterbot

Nel linguaggio A.I.M.L. vengono immesse frasi preposte suddivise per categoria (ontologie). Queste frasi sono scritte in modo tale da soddisfare le più comuni domande fatte in una conversazione, scegliendole tra quelle preimpostate nel proprio programma grazie al tag <random>.
Nuove frasi verranno immesse mano a mano, modificando la struttura di base del linguaggio, e questo permette ad A.L.I.C.E. di migliorare le sue funzionalità.
Il software A.L.I.C.E., nel formulare un linguaggio per interrogare e modificare una struttura di base (query), risulta non molto efficace per reperire alcune informazioni.