Nel 1965 un professore del MIT, Joseph Weizenbaum, creò un simulatore computerizzato di conversazione, chiamato ELIZA. La trascrizione più famosa di una conversazione con ELIZA fu pubblicata poco dopo in un articolo che Weizenbaum scrisse per il volume di Gennaio 1966 delle Communications of the ACM [la rivista della Association for Computing Machinery; ndTraduttore]. La trascrizione registra una conversazione avvenuta fra il programma e una giovane donna.

Le riposte date del programma sono in maiuscolo.

    Gli uomini sono tutti uguali.
    IN CHE SENSO
    Rompono sempre le scatole, per un verso o per un altro.
    FAI UN ESEMPIO SPECIFICO
    Beh, è stato il mio ragazzo a farmi venire qui.
    IL TUO FIDANZATO TI HA FATTA VENIRE QUI
    Dice che sono sempre depressa.
    MI DISPIACE SENTIRTI DIRE CHE SEI DEPRESSA
    Ma è così. Sono infelice.
    PENSI CHE ESSERE VENUTA QUI TI AIUTERA' A NON ESSERE INFELICE
    Sicuramente mi serve un aiuto.
    E COSA SIGNIFICA PER TE RICEVERE UN AIUTO
    Forse potrei imparare ad andare d'accordo con mia madre.
    DIMMI DI PIU' DELLA TUA FAMIGLIA
    Mia madre si prende cura di me.
    CHI ALTRO NELLA TUA FAMIGLIA SI PRENDE CURA DI TE
    Mio padre.
    TUO PADRE
    In un certo senso ti rassomiglia.
    CHE SOMIGLIANZE VEDI
    Non sei aggressiva, ma credo anche che tu non voglia che io me ne accorga.
    COSA TI FA PENSARE CHE IO NON SIA MOLTO AGGRESSIVA
    Tu non litighi con me.
    PERCHE' PENSI CHE IO NON LITIGHI CON TE
    Tu hai paura di me.
    TI FA PIACERE CREDERE CHE IO ABBIA PAURA DI TE
    Mio padre ha paura di tutti.
    CHE ALTRO TI VIENE A MENTE QUANDO PENSI A TUO PADRE
    I prepotenti.
    E COSA HA A CHE FARE CON IL FATTO CHE IL TUO RAGAZZO TI HA MANDATA QUI

Di solito si dà per scontato che "Eliza" sia semplicemente il nome di una psicoterapeuta con cui il "paziente" umano conversa, ma non è così. ELIZA in realtà è un sistema di conversazione generalista ideato da Weizenbaum, il cui nome è una citazione di un personaggio della classe operaia tratto dall'opera Pigmalione di George Bernard Shaw. Nell'opera questo personaggio impara a parlare con la dizione tipica delle classi alte, a discapito delle sue umili origini. La metafora consiste nel fatto che -grazie al software ELIZA- il computer è passato dalla dizione inflessibile tipica dei linguaggi di programmazione al linguaggio naturale parlato tutti i giorni.
ELIZA supporta "copioni" diversi, ognuno dei quali rappresenta un diverso personaggio. Il primo "copione" a essere stato sviluppato (nonché quello che ha generato la trascrizione di cui sopra e quello che tutti ci ricordiamo ancora oggi) era chiamato semplicemente "Dottore".

Joseph Weizenbaum

Nel film Rebel at Work, Weizenbaum descrive come arrivò a fare questa brillante scelta:

"E poi, di colpo, mi venne l'idea: lo psichiatra. Lo psichiatra infatti pone domande sulla base di ciò che dice il paziente. Possono anche essere domande parzialmente o totalmente irrilevanti, ma il paziente le interpreterà comunque sulla base della propria cornice mentale. Il paziente presuppone che lo psichiatra sappia qualcosa, che lui lo capisca, che ci sia sempre e comunque un qualche senso recondito nelle sue parole. 'Ancora non so cosa sia, ma di certo non sono parole prive di senso'. Ecco come è iniziato tutto - poi arrivò ELIZA.

'Beh," dice lo psichiatra, 'forse... Questo invece cosa ti ricorda?
'Mhm, molto arguto!' pensa il paziente. 'Questo psichiatra capisce davvero ciò che provo. Continuerò a venire alle sue sedute.'"



Come lo stesso Weizenbaum ha avuto cura di specificare nel suo articolo, ELIZA non comprende un bel niente, da nessun punto di vista, di ciò che dice il suo interlocutore. È semplicemente un elaborato motore di generazione di testo, che va alla ricerca di schemi fra le parole che l'utente ha inserito, per poi utilizzarli come aggangi da manipolare e ricombinare in una risposta sensata. L'idea geniale del "copione del Dottore" è che questo è esattamente ciò che fa uno psicoterapeuta durante una sessione (almeno dal punto di vista dell'uomo comune).
Weizenbaum preparò anche qualche altro copione, ad esempio quello dello schizzofrenico paranoico (tanto per restare in tema di sanità mentale...), ma questi non avevano la stessa magia e oggi sono in buona parte dimenticati.
AGGIORNAMENTO: A dire il vero, come Nick ci ha fatto notare nei commenti sul blog, non abbiamo nessuna prova che Weisenbaum abbia scritto altri copioni oltre a quello del "Dottore".

Anche limitandoci al "Dottore", la famosa trascrizione che ho riportato è in realtà una specie di scenario ottimale. Weizenbaum, che di solito ha un atteggiamento piuttosto misurato quando si tratta di queste cose, ha distorto un po' la verità nel definirla una "conversazione tipica". In ogni sessione di una certa lunghezza  arriva infatti inevitabilmente un momento in cui il programma dice qualcosa che ci rivela con chiarezza che in realtà si tratta solo di un elaborato trucco di prestigio. Questi fallimenti di ELIZA sono frequenti almeno quanto le numerose risposte appropriate che vengono riportate nella trascrizione di cui sopra.  

Weizenbaum ha programmato ELIZA in Lisp, un linguaggio di programmazione sviluppato al MIT per applicazioni di intelligenza artificiale e di elaborazione del linguaggio naturale.
AGGIORNAMENTO: In realtà il linguaggio di programmazione si chiamava MAD-SLIP, ideato in origine all'Università del Michigan. Al riguardo vi invito a leggere i commenti di Nick nel blog.
Tuttavia il suo dettagliato articolo per la Association for Computing Machinery svolse la stessa funzione che dieci anni dopo ebbe il codice sorgente di Adventure meticolosamente commentato da Don Woods, rendendo la conversione di ELIZA per altre piattaforme e altri linguaggi un compito relativamente semplice.
Nel frattempo l'idea originale di Weizenbaum di creare un engine per conversazioni generalistiche fu dimenticata, e "il sistema ELIZA" divenne "Eliza, la psicoteraputa". Creative Computing pubblicò una versione in BASIC convertita da Jeff Shrager e Steve North nel numero di Luglio/agosto 1977. North ci riferisce che: "Anche se il programma è una imitazione di qualità inferiore all'originale, funziona." Le sue limitazioni, rispetto all'originale di Weizenbaum, derivano dal fatto di essere scritto in BASIC e dalla necessità di farlo funzionare con soli 16 K di RAM. Nonostante questo resta comunque un risultato impressionante, che per tutto il decennio successivo si è rivelato un trampolino di lancio per un numero infinito di seguiti e di altri titoli derivativi.
È come se, negli anni '70 e '80, uno non potesse possedere un microcomputer senza avere una qualche variante di Eliza da qualche parte nella sua raccolta di software.

Se volete provare questa versione di Eliza su un TRS-80 virtuale, potete farlo usando l'emulatore SDLTRS e questo file di stato.

1. Assicuratevi che il file della ROM Level 2 e il NewDOS boot disk siano nella root directory dell'emulatore e che il file di stato sia in una cartella a voi nota.
2. Avviate l'emulatore.
3. Mettete il blocco alle maiuscole.
4. Premente ALT-L per caricare il file di stato.
5. Navigate fino alla cartella con il file di stato e caricatelo.

Vi ritroverete al prompt READY del BASIC, da cui potrete fare il LIST del programma, da cui lo potrete editare, oppure lanciare con RUN. (Ebbene sì, è molto, molto lento. Ma del resto così era la vita quando si doveva fare un sacco di "string processing" in BASIC su una macchina a 1,78 MHz...)
Digitate "SHUT" al prompt per chiudere il programma e ricordate: dovete avere il blocco maiuscole perché vi "comprenda".

Per finire, per coloro che sanno di cosa sto parlando, ho preparato anche il file "tokenized" di Eliza per il BASIC del TRS-80.

Quindi, avendovi parlato di ciò che è ELIZA, ora possiamo occuparci delle domande più interessanti: come funziona e cosa ha significato - e perché mi sono sentito in dovere di tornare così indietro nel tempo per parlarvene.

Postscriptum (17 Giugno 2011):
Sono rimasto deluso dall'emulatore SDLTRS e da qui in poi ho deciso di usare quello incluso nel progetto MESS. Questo è un file di stato da usare con quell'emulatore. Leggete il mio recente post su come emulare il TRS-80 per maggiori informazioni su come far funzionare un TRS-80 virtuale sotto il MESS.

The Digital Antiquarian è un blog, scritto da Jimmy Maher, che si occupa di storia e di cultura del videogioco partendo dall'analisi di singoli videogiochi. OldGamesItalia è lieta di presentarvi la traduzione italiana, autorizzata dall'autore!
Se anche voi apprezzerete questo interessantissimo blog, non mancate di visitare la pagina ufficiale (in lingua inglese) e di sostenerlo tramite Patreon!

Articoli precedenti:
- Sulle tracce di The Oregon Trail
- In difesa del BASIC
- A Caccia del Wumpus
- L'Avventura di Crowther
- TOPS-10 in a Box
- L'Avventura completata
- Tutto il TRaSh del TRS-80

Il sito ufficiale di The Digital Antiquarian


Discutiamone insieme sul forum di OldGamesItalia!