Intelligenza artificiale: etaoin shrldu

di Piero Giuseppe Goletto

GPT3 non è davvero il primo esempio di chatbot. L’idea che si possa interagire con un computer attraverso una “interfaccia basata sul linguaggio naturale” è estremamente attraente per chi sviluppa software perché rende semplice il dialogo con l’utente.

Nel 1966 Joseph Weizembaum al MIT di Boston fa un esperimento. Il programma Eliza è in grado di “dialogare” con un utente simulando di essere uno psicanalista. O meglio: simulando alcuni dialoghi tra uno psicanalista e il suo paziente. Nel 1972 viene creato Parry, che simula un paziente affetto da schizofrenia paranoide. In entrambi i casi il trucco è molto semplice: riconoscimento di schemi, sostituzioni di frasi e ripetizioni delle parti più importanti della frase immessa. E tante frasi preconfezionate. Ad esempio, se l’utente umano diceva qualcosa del tipo “mi sento depresso per tutto il tempo” Eliza rispondeva “Mi spiace sentire che ti senti depresso”: Questo la faceva apparire dotata di qualità empatiche e per questo motivo fu coniata la defiinizione di “effetto Eliza” per tutte quelle situazioni n cui gli esseri umani attribuiscono a un programma tratti intelligenti o comunque simili a quelli “umani”. Ma Eliza e Parry hanno limiti enormi perché le frasi che emettono sono molto spesso preconfezionate.


Negli anni Novanta fu poi sviluppato Jabberwacky, un programma che aveva lo scopo di imitare l’interazione umana acquisendo un’ampia base di dati relativa a conversazioni entro cui cerca una risposta appropriata. Lo stesso sviluppatore, Rollo Carpenter, creerà nel 2008 Cleverbot, un agente conversazionale capace di apparire intelligente per imitazione tant’è che è stato affermato che "parlare con Cleverbot è un po' come parlare con la comunità Internet collettiva". Molto più interessante è andare indietro nel tempo e rivedere ETAOIN SHRLDU (ecco il perché del titolo). Torniamo al MIT di Boston negli anni 70. Qui Terry Winograd realizza la sua tesi di laurea su un programma che ha lo scopo di spostare oggetti in un mondo di blocchi impartendo al programma istruzioni in linguaggio naturale. Il tutto basandosi sulla manipolazione di simboli e sulla gestione dell’ambiguità che, spesso, il “nostro” modo di esprimersi implica.Per capirci: ETAOIN SHRLDU era in grado di interpretare frasi del tipo Find a block which is taller than the one you are holding and put it into the box Trova un blocco che sia più alto di quello che tieni [nel braccio robotico virtuale] e mettilo nella scatola. Se nello scenario erano presenti più piramidi ETAOIN SHRLDU era in grado di cogliere l’ambiguità insita in una domanda quale “Prendi la piramide”, alla quale non poteva che rispondere “Quale piramide?” Programmi come ETAOIN SHRLDU sono basati, fondamentalmente, su un parser cioè un modulo software che, presa in ingresso una frase, ne ricava la struttura sintattica in modo da estrapolarne le parti essenziali. Nel caso di questo programma queste parti essenziali (ad esempio “sposta” “cubo” “blu” “sopra” “parallelepipedo” “rosso”) corrispondevano – si legge sulla tesi di Winograd – a circa 200 parole chiave. Ogni parola chiave implicava un significato utilizzabile in modo procedurale e cioè disponeva di una sintassi (“cubo” e non “qubo”) e di una semantica (“cubo” = oggetto con sei facce aventi lati uguali) e di una base di conoscenza che rappresentava lo stato dei blocchi e pertanto può determinare se c'è una sola piramide nello scenario del micro-mondo o se ve ne è più di una.Dicevamo: utilizzo procedurale, in campo informatico parlare di procedura significa riferirsi a una funzione matematica che accetta in ingresso dei parametri e restituisce un risultato, sicché si può avere una procedura Sposta(solido, colore) che è in grado di spostare un cubo verde e restituire in caso positivo il codice corrispondente a “operazione completata” (messaggio “OK”) e in caso negativo un codice di errore che, interpretato dal modulo principale di sistema, genera un messaggio di risposta all’utente. In ultimo, il programma disponeva di un modulo per generare le immagini grafiche. La novità importante era la flessibilità con cui i moduli interagivano, funzionando in modo coordinato ed estremamente efficiente.