Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Il test di Turing
Una possibile soluzione al problema di decidere se un computer sia intelligente o
meno potrebbe consistere nel trovare una definizione precisa di ‘intelligenza’, una
specie di elenco che dica: l’intelligenza è questo e quest’altro. Una volta in possesso di
questa definizione potremmo prendere il computer che ‘asserisce’ di essere
intelligente, e vedere se veramente presenta tutte le caratteristiche presenti
nell’elenco. Sfortunatamente, tra gli studiosi dell’intelligenza (psicologi, filosofi,
neuroscienziati, antropologi etc.) non vi è molto consenso su tale definizione. Ogni
volta che se ne è proposta una, qualcuno è saltato sulla sedia dicendo: eh no, non
avete tenuto conto di questo aspetto! Oppure: avete dato troppa importanza a
quest’altro aspetto! E così via.
Una via di uscita molto elegante da questa situazione di stallo è stata proposta,
ancora una volta, da Alan Turing che, tra i tanti meriti, può sicuramente esser fregiato
del titolo di ‘padre dell’intelligenza artificiale’. In un articolo del 1950 intitolato
Macchine Calcolatrici e Intelligenza1, il grande scienziato inglese inizia proprio con
questa frase: “Mi propongo di considerare la domanda: «Possono le macchine
pensare?»”. Dopo avere espresso la sua scarsa fiducia nei tentativi di definizione
astratti, egli propone un metodo per rispondere al quesito che si basa su una specie di
gioco, il gioco dell’imitazione.
Si tratta di un gioco a cui partecipano tre persone tra loro estranee. Due di loro, di
sesso opposto, sono i candidati; il terzo (di cui è indifferente il sesso) è l’interrogante.
L’interrogante viene chiuso in una stanza in modo che non abbia alcun contatto, di
nessun tipo, con gli altri. Lo scopo del gioco per l’interrogante è capire quale dei due
candidati sia l’uomo e quale la donna. A tale fine egli può solo fare delle domande ai
candidati mediante una telescrivente (oggi useremmo magari un computer collegato
in rete). Scopo dei candidati invece è ingannare l’interrogante. Simmetricamente le
loro risposte saranno ‘telescritte’. Questo vincolo è ovviamente dettato dalla necessità
di evitare che l’aspetto, la voce, o persino la calligrafia dei candidati possano
influenzare il giudizio. Ora, dice Turing, immaginiamo di mettere al posto di uno dei
due candidati una macchina ‘presunta intelligente’. Se l’interrogante non è in grado di
capire quale tra i suoi interlocutori sia un uomo e quale una macchina, allora possiamo
asserire tranquillamente che la macchina è intelligente.
1
A. Turing, “Macchine Calcolatrici e Intelligenza”, in V. Somenzi e R. Cordeschi, La filosofia degli automi,
Bollati Boringhieri 1996.
È importante che le domande dell’interrogante durante il gioco riguardino vari
argomenti e abbiano un carattere generale. Infatti se chiedessimo “quanto fa 10
elevato alla 23 diviso 5” pensando che la macchina risponderebbe pressoché subito
mentre l’uomo (o la donna) impiegherebbe molto più tempo, potremmo essere tratti in
inganno da un trucco banale: basterebbe programmare il computer per aspettare
alcuni minuti prima di rispondere a domande sui numeri. Mentre se una macchina
fosse veramente in grado di superare il test rispondendo a domande sulla poesia, o sui
suoi gusti gastronomici, o sull’amore, allora il successo ci dovrebbe far ammetter che
essa sia intelligente.
Eliza: Pensa che il fatto di venire qui l’aiuterà a non essere infelice3
Con grande stupore di Weizenbaum, Eliza ebbe un enorme successo. La gente che
conversava con lui credeva veramente di avere a che fare con uno psicoterapeuta e
provava persino sollievo dopo le sedute! Uno psichiatra, Kenneth Colby, scrisse
persino che di lì a pochi anni programmi come Eliza sarebbero stati pronti per l’uso
clinico. Lo stesso Colby poco dopo realizzò un programma non dissimile da Eliza, che
battezzò Parry. Parry simulava il comportamento linguistico di un paranoico. E anche
lui ebbe un buon successo, tanto da riuscire ad ingannare molti psichiatri che, dopo
averlo intervistato via telescrivente, si dissero convinti di avere avuto a che fare con
un vero paranoico. Ad un certo punto fu organizzata persino una seduta di Parry da
Eliza!
Sembrava dunque che questi due programmi avessero superato il test di Turing. In
realtà né Eliza né tantomeno Parry erano dotati della sia pur minima intelligenza. Si
trattava in entrambi i casi di un insieme di trucchi di programmazione (ad esempio
Eliza nella maggior parte dei casi prende le affermazioni del paziente e le rovescia in
forma di domanda cambiando semplicemente i pronomi, cosa che in inglese, peraltro,
è piuttosto semplice) che facevano affidamento sulla credulità dei loro interlocutori. E
a ben vedere nessuno dei due programmi avrebbe mai superato il test nella forma in
cui Turing lo aveva immaginato. Le persone che credettero veramente nelle capacità
di Eliza infatti, non prestavano attenzione a ciò che il programma diceva loro, ma
erano piuttosto intenti a sfogarsi. E inoltre l’ambito della conversazione era tanto
ristretto da non essere valido per il test. In ogni caso, se volete provare a fare due
chiacchere con Eliza o Parry potete scaricarne una versione al seguente indirizzo
(utilissimo anche per il reperimento di molti altri programmi di intelligenza artificiale):
http://www.cs.cmu.edu/Groups/AI/areas/classics.
3
Ivi, p. 23.
un eventuale computer intelligente deve sapere comunicare mediante il linguaggio
naturale, come facciamo noi esseri umani.
È dunque ovvio che sin dalle origini uno degli obiettivi principali dell’intelligenza
artificiale sia stato lo sviluppo di programmi in grado di produrre e comprendere
discorsi in linguaggio naturale. A dire il vero, i primi passi mossi in questa direzione
furono motivati più da interessi pratici che da stimoli teorici. Infatti, alcuni fra i primi
finanziamenti che arrivarono ai progetti di ricerca nell’allora nascente campo
dell’intelligenza artificiale furono attratti dalla prospettiva di sviluppare dei sistemi di
traduzione automatica tra varie lingue, la cui applicazione commerciale era (ed è )
evidente. Tuttavia dopo un iniziale e ottimistico entusiasmo, il compito di insegnare le
lingue ai computer si dimostrò tanto complesso da far abbandonare il miraggio di un
traduttore automatico. Ma le ricerche sulla elaborazione del linguaggio naturale
(natural language processing) proseguirono egualmente, e ancora oggi costituiscono
uno dei settori di punta dell’intelligenza artificiale, oltre ad essere divenuti oggetto di
una ulteriore disciplina che si chiama linguistica computazionale.
In estrema sintesi possiamo dire che secondo Chomsky la capacità che ogni essere
umano ha di capire e produrre frasi e discorsi nella sua lingua è dovuta ad un insieme
di conoscenze presenti nella sua mente: definiamo questo insieme di conoscenze
implicite competenza linguistica. È evidente che tale competenza è almeno in parte
inconsapevole: infatti la maggior parte delle persone sono in grado di produrre e
capire le frasi corrette, così come di individuare immediatamente gli usi scorretti della
loro lingua, pur senza sapere il modo in cui questo avviene. Inoltre, sostiene Chomsky,
la maggior parte di questa competenza deve essere innata: non si spiegherebbe
altrimenti la velocità con cui un bambino in pochi anni riesca a parlare una lingua in
modo sostanzialmente corretto semplicemente imitando chi lo circonda.
Per vari motivi, nella loro teoria della lingua Chomsky e i suoi seguaci hanno
assegnato un ruolo prioritario alla competenza sintattica. È grazie ad essa che ogni
parlante è in grado di percepire immediatamente che
non lo è. Come detto, questo riconoscimento è determinato dal fatto che nella
formazione di una frase (o nel processo simmetrico di comprensione di una frase)
vengono seguite delle regole formali che complessivamente costituiscono la
grammatica di una lingua. Tali regole, che si articolano in diversi gruppi (o
componenti), vengono applicate (non necessariamente in modo sequenziale) per
arrivare alla costruzione di frasi corrette, o alla verifica di frasi pronunciate da altri
parlanti. Il gruppo principale di regole (o componenti di base) della teoria chomskiana
determina la struttura generale di una frase e dà conto del fatto che ognuno è in
grado di raggruppare in modo intuitivo le parole che la compongono in gruppi
funzionali detti sintagmi. Ad esempio, chiunque tende a raggruppare le parole
dell’esempio (a) in questo modo: «Il gatto» - « mangia il topo». Ma vediamo,
attraverso un esempio concreto, la forma che possono assumere queste regole.
F SN – SV
SN DET – N
SV V – SN
DET il
N gatto, topo
V mangia
• una frase (F – nel nostro eempio, ‘il gatto mangia il topo’) consiste di un sintagma
nominale (SN – nel nostro esempio ‘il gatto’) seguito da un sintagma verbale (SV,
nel nostro esempio ‘mangia il topo’)
• un sintagma nominale (SN, nel nostro esempio ‘il gatto’ oppure ‘il topo’) è
costituito da un determinante (DET, nel nostro esempio ‘il’) e da un nome (N, nel
nostro esempio ‘gatto’ o ‘topo’)
Le regole vengono applicate per passi successivi a partire dalla prima (anche se
alcune regole possono essere applicate più volte se necessario) fino ad arrivare a una
regola che a destra contenga un simbolo terminale, un simbolo cioè che non può
essere ulteriormente scomposto (nel nostro caso hanno questa forma le ultime tre
regole): in questo modo esse generano una frase completa. Possiamo verificare senza
troppi sforzi che queste regole ci consentono di generare la frase (a) e non la frase (b).
Per rendercene conto usiamo la classica rappresentazione ad albero con cui di norma i
linguisti rappresentano la struttura sintagmatica di una frase.
Figura 1 - La rappresentazione ad albero della struttura sintagmatica di una frase
Per quanti tentativi facciate non sarete in grado di generare la frase «il gatto topo il
mangia». D’altra parte non potreste nemmeno generare una frase come «il gatto il
topo mangia», che suona un po’ strana, ma è comunque ammissibile in italiano. Per
questo alle regole generative del componente di base nelle teoria di Chomsky si
affiancano altre regole che applicate alla frase standard la trasformano in diversi modi
corretti (ad esempio rendono la frase passiva: «Il topo è mangiato dal gatto»).
Appare evidente che un programma non avrebbe difficoltà ad usare regole come
queste per generare frasi. E simmetricamente un programma potrebbe, data una
frase, analizzarla al fine di ricostruire la sua struttura e verificare se essa è tra quelle
ammesse dalla grammatica: questi programmi si chiamano parser, o analizzatori
sintattici, e sono alla base di tutti i sistemi di elaborazione del linguaggio naturale. Se
dunque fosse possibile costruire grammatiche generative-trasformazionali (così
vengono chiamate) per una data lingua, avremmo un metodo efficiente ed elegante
per realizzare un programma in grado di elaborare almeno la sintassi di quella lingua.
Tuttavia il compito di costruire queste grammatiche per le lingua storico naturale si è
rivelato assai più improbo di quanto Chomsky non ritenesse. Attualmente esistono
porzioni di grammatica abbastanza complete per varie lingue (soprattutto l’inglese),
ma si è ben lontani dall’obiettivo di una formalizzazione completa.
Cominciamo con il significato delle parole, o significato lessicale: esso può essere
descritto mediante la scomposizione in una serie di componenti più semplici, in questo
modo:
gatto oggetto+fisico+animato…
Per descrivere il significato delle frasi e le relazioni logiche tra più parole, poi, si è
fatto ricorso alla logica. La logica studia il modo in cui viene condotto il ragionamento
valido, ovvero il modo in cui a partire da premesse valide possono essere tratte
conclusioni valide. Per fare questo, a partire dalla fine del secolo scorso i logici hanno
pensato di costruire dei linguaggi artificiali formalizzati (ancora!) per evitare di
incorrere nei rischi di ambiguità del linguaggio naturale. L’idea in sostanza è quella di
individuare la forma logica sottostante alle frasi del linguaggio naturale (in cui essa
viene in un certo senso mascherata) in un linguaggio rigoroso e soprattutto governato
da regole precise. Per formalizzare le asserzioni (o enunciati) del linguaggio naturale,
si è pensato di operare in questo modo: prendiamo la frase «il gatto è nero». Essa
esprime una proprietà relativa ad un oggetto (animato!): l’oggetto è «gatto» e la
proprietà è «essere nero». Per mettere in evidenza questa struttura potremmo
riscrivere l’enunciato in questo modo:
(c) p (x)
(a) Fabio era stato invitato al compleanno di Ugo, ma quando agitò il suo
salvadanaio non sentì nessun rumore
Per capire il senso di (a), che ogni parlante italiano è in grado di interpretare senza
troppi sforzi, non basta conoscere il significato delle singole parole e ricostruire la sua
forma logica (ammesso che sia possibile). Infatti essa sottintende una mole notevole
di informazioni che non sono espresse esplicitamente dalle singole parole. Ad
esempio, occorre sapere che di norma quando si è invitati ad una festa di compleanno
si porta un regalo al festeggiato; che per comperare regali occorre del denaro; che
alcune persone tengono i loro risparmi nei salvadanai; e che il denaro dentro il
salvadanaio, in genere, fa rumore se viene scosso. Insomma, per capire il linguaggio
dobbiamo anche essere in grado di collocare le frasi in un contesto di riferimento, dal
quale possiamo estrapolare tutte le informazioni implicite nella frase.
Intorno al 1970 una serie di ricercatori pensò che per rispondere a queste domande
la strada migliore fosse quella di circoscrivere e semplificare il problema generale
costruendo dei programmi che avessero una conoscenza perfetta di mondi molto
piccoli e semplici, o micromondi:
L’idea era quella di eliminare il problema del livello di dettaglio delle conoscenze (il
mondo reale è veramente complicato, e le conoscenze che perfino un bambino di soli
quattro o cinque anni possiede sono sterminate) per concentrarsi sul modo in cui tali
conoscenze sono rappresentate e utilizzate. In un secondo momento si sarebbe
passati ad estendere la conoscenza per renderla abbastanza vasta e complessa da
dare conto del mondo reale.
4
J. Haugeland, Intelligenza Artificiale, Bollati Boringhieri 1988, p. 173.
Il più famoso tra i programmi che abitavano nei micromondi è SHRDLU realizzato
da Terry Winograd all’inizio degli anni 70. Il mondo di SHRDLU è noto come mondo dei
blocchi: si trattava di un ambiente costituito da una tavola su cui erano appoggiati una
serie di blocchi, piramidi e scatole colorati.
Grazie alla sua profonda ‘conoscenza del mondo’ SHRDLU era in grado sostenere
lunghe conversazioni in inglese, eseguire i compiti che gli venivano indicati
(naturalmente in modo virtuale) e perfino motivare le sue azioni. Quello che segue è
un breve estratto da una delle sue conversazioni, a cui abbiamo aggiunto una
traduzione in italiano:
5
Naturalmente la costruzione del robot avrebbe comportato molti altri problemi sia a livello software (ad
esempio avrebbe dovuto essere dotato di un programma per la visione) sia a livello hardware.
SHRDLU: while i was stacking up the red cube, a large red block and a
large green cube
[mentre stavo mettendo l’uno sopra l’altro il cubo rosso, un blocco rosso
grande e un cubo verde grande]
Persona: why?
[perché?]
SHRDLU: to get rid of it
[per toglierlo di mezzo]
Persona: why did you do that?
[perché l’hai fatto?]
SHRDLU: to clean off the red cube
[per liberare il cubo rosso]
Persona: why did you clear off that cube?
[perché hai liberato il cubo rosso]
SHRDLU: to put it on a large green cube
[per metterlo su un cubo verde grande]
Persona: why did you do that?
[perché l’hai fatto?]
SHRDLU: to stack up the red cube, a large red block and a large green
cube
[per mettere uno sopra l’altro il cubo rosso, un blocco rosso grande
e un cubo verde grande]
Persona: why did you do that?
[perché l’hai fatto?]
SHRDLU: because you asked me to
[perché me lo hai chiesto]
Come potete vedere SHRDLU è in grado di considerare retrospettivamente ciò che
ha fatto, e riesce anche a trovare delle motivazioni per quelle azioni che non gli sono
state richieste esplicitamente ma che ha dovuto eseguire al fine di obbedire ad un
comando. In altre conversazioni il programma mostra anche la capacità di imparare il
significato di parole nuove che non sono presenti nel suo vocabolario, posto che esse
vengano definite dal suo interlocutore mediante termini conosciuti.
Le reti semantiche
Uno dei formalismi per la rappresentazione delle conoscenze più diffusi nella IA
sono le cosiddette reti semantiche. La prima formulazione del concetto di rete
semantica si deve a Ross Quillian, che lo elaborò nel 1968 per costruire un modello
dell’organizzazione dei significati delle parole nella memoria e della capacità di
associare concetti. Successivamente molti altri studiosi hanno proposto evoluzioni e
potenziamenti del modello originale, senza però distaccarsi delle primitive intuizioni di
Quillian.
Ma che cosa è una rete semantica? Secondo Quillian i concetti (o significati delle
parole, che per quanto ci concerne possono essere considerati la stessa cosa) nella
nostra mente sono organizzati in una struttura reticolare. Solo che in questa rete
esistono due tipi di nodi: i nodi tipo e i nodi occorrenza. I nodi tipo corrispondono ai
significati delle singole parole. Da ogni nodo tipo si dipartono una serie di collegamenti
o archi che terminano nei nodi occorrenza. Questi ultimi hanno la funzione di
descrivere il significato della parola in questione. Tale descrizione, come avviene nei
dizionari, si basa sull’uso di altre parole che sono il contenuto dei nodi occorrenza. A
sua volta ciascun nodo occorrenza è collegato mediante un arco al nodo tipo che ne
specifica il significato. Insomma nella rete ogni parola deriva il suo significato da un
certo numero di altre parole.
Inoltre gli archi che collegano i nodi specificano diversi tipi di relazione: ci sono
archi che indicano relazioni di sottoclasse, o di appartenenza ad un genere: ad
esempio l’arco che da «cibo» porta a «cosa». Gli archi di questo tipo sono
successivamente divenuti noti come archi ‘IS A’, ovvero archi ‘è un(a)…’. Vi sono poi
archi che indicano una relazione di congiunzione tra due componenti del significato di
una parola. Archi che invece indicano una disgiunzione tra più significati e così via.
Appoggiandosi ad una rete semantica (opportunamente tradotta in un linguaggio
informatico) un programma è in grado non solo di risolvere il significato delle
espressioni lessicali, ma anche rispondere a domande come: «è vero che il cibo è una
cosa che si mangia?». Infatti nella rete della figura esiste un percorso che permette di
dedurre proprio questa conclusione.
I frame di Minsky
Le reti semantiche come quelle cui abbiamo accennato nel paragrafo precedente
hanno due limiti. In primo luogo ogni singolo concetto è considerato come un
elemento unitario. Sebbene gli archi che collegano un nodo ad un altro possano essere
considerati una rappresentazione articolata del significato di un termine, questa
articolazione sembra comunque troppo limitata per rendere conto di tutte le varie
componenti di un concetto. In secondo luogo la specificazione del significato di un
concetto è estremamente rigida: ogni concetto infatti viene descritto mediante una
serie di componenti obbligatori, un po’ come avviene nelle definizioni di un dizionario.
(b) Fabio era stanchissimo ma quando entrò in cucina non trovò nulla su cui sedere
Per rendere conto di queste caratteristiche della nostra memoria concettuale, e per
riprodurla su un computer, Marvin Minsky, uno dei pionieri dell’intelligenza artificiale,
ha elaborato la nozione di frame (che in inglese significa struttura o cornice). Si tratta
di una nozione molto simile a quella di stereotipo. Un frame infatti è una struttura che
raccoglie e organizza secondo vari livelli di obbligatorietà tutte le informazioni che
sembrano comporre un determinato concetto. Alcune informazioni sono considerate
necessarie, altre probabili e altre solo opzionali. Ad esempio il frame per il concetto di
cucina potrebbe avere questa struttura:
Cucina
Sottoclasse di: stanza
Funzioni (sempre): preparare cibo
Funzioni (probabile): consumare cibo
Ha come costituenti (sempre): pareti, soffitto, pavimento
Contiene (sempre): macchina a gas o elettrica oppure camino
Posizione (quasi sempre): a ridosso di parete
Contiene (quasi sempre): frigorifero, lavandino
Posizione (quasi sempre): a ridosso di parete
Contiene (probabilmente): tavolo
Posizione (probabile): centro stanza oppure a ridosso di parete
Contiene (probabilmente): sedie
Posizione (probabile): intorno a tavolo
Etc.
In realtà questo è un abbozzo estremamente grossolano di quello che dovrebbe
essere un vero frame, che dovrebbe avere un numero assai maggiori di informazioni e
che soprattutto dovrebbe specificare in modo molto più rigoroso proprietà e relazioni
per essere utilizzato da un computer (e da un cervello, se esso lavora in modo non
troppo dissimile da un computer). Comunque, ci permette di capire quale dovrebbe
essere la sua struttura.
In primo luogo vediamo che le componenti del frame sono articolate in varie
tipologie, che corrispondono alle diverse proprietà dell’oggetto reale cucina. In
secondo luogo, possiamo notare come alcune componenti della rappresentazione
siano qualificate come obbligatorie, altre come probabili e altre ancora come opzionali.
Tutte le componenti non obbligatorie sono presenti nel frame per default: sono cioè
considerate parte del prototipo di cucina fina a prova contraria.
Un ultimo aspetto importante dei frame su cui vale pena soffermare l’attenzione è
che essi sono interconnessi tra loro in un modo molto ricco e articolato. Infatti, ogni
componente di ciascun frame è collegato al frame che ne descrive la struttura: il
componente ‘sedia’ del frame ‘cucina’ dunque è collegato con il frame ‘sedia’, così
come il componente ‘stanza’ è collegato con il frame ‘stanza’. I frame insomma
costituiscono una rete di concetti6. I collegamenti tra frame non sono casuali ma
organizzano lo spazio concettuale in base a precise relazioni: alcune di esse sono più
marcate (ad esempio le relazioni gerarchiche con i concetti iponimi e iperonimi), altre
meno (ad esempio le relazioni associative o analogiche). In questo modo i frame
6
Nel suo libro La società della mente (Adelphi 1989), Marvin Minsky ha ipotizzato che una rete di questo
genere costituisca la struttura della memoria umana.
possono essere usati per condurre sia i classici ragionamenti di tipo deduttivo, sia
forme di ragionamento più complesse come l’induzione o l’analogia.
(a) Fabio andò in un ristorante. Ordinò alla cameriera una bistecca ai ferri. Pagò il
conto e se ne andò.
Ora, se dopo aver letto questa storia, qualcuno ci chiedesse «che cosa ha mangiato
Fabio?» senza alcuno sforzo risponderemmo «una bistecca ai ferri». Tuttavia nessuna
delle frasi che compone (a) dice esplicitamente che Fabio ha effettivamente mangiato
la bistecca. Evidentemente la nostra risposta è stata inferita da un insieme di
conoscenze di contesto che ci dicono che di norma quando si va al ristorante e si
ordina qualcosa poi lo si mangia. Ebbene, secondo Schank queste conoscenze di
contesto sono organizzate proprio sotto forma di script:
Script: Ristorante
Binario: Trattoria
Oggetti: Tavoli
Menu
Cibo
Conto
Denaro
7
R. C. Schank, Il computer cognitivo, Giunti 1989, p. 123.
8
Tratto con qualche rielaborazione da R. C. Schank, op. cit., p. 128-129.
Personaggi: Cliente
Cameriera
Cuoco
Condizioni di entrata: Il cliente ha fame
Il cliente ha denaro
Risultati: Il cliente ha meno denaro
Il proprietario ha più denaro
Il cliente non ha fame
Il cliente è soddisfatto
Scena 1: Ingresso
Entrare nel ristorante
Guardare i tavoli
Decidere dove sedersi
Andare al tavolo
Mettersi a sedere
Scena 2: Ordinazione
(menu sul tavolo) (la cameriera porta il menu) (chiedere il menu)
Prendere il menu Chiamare la cameriera
La cameriera arriva al tavolo
Chiedere il menu
La cameriera dà il menu
Leggere il menu
Decidere (il cibo scelto)
Chiamare la cameriera
La cameriera arriva
Dire alla cameriera «Voglio (il cibo scelto)»
Nella seconda scena possiamo notare come in alcuni casi possano darsi diverse
possibilità, che implicano a loro volta diverse sequenze di eventi. Naturalmente uno
script per essere utilizzato da un programma andrebbe scritto mediante un opportuno
linguaggio, e soprattutto dovrebbe essere assai più dettagliato di quanto non sia il
nostro esempio. Uno dei programmi basati sul formalismo degli script è SAM (Script
Applier Mechanism), sviluppato dallo stesso Schank e da un gruppo di suoi
collaboratori. Esso era in grado di leggere dei brevi racconti, compresi resoconti
giornalistici, e di farne un sommario in inglese e in spagnolo. Inoltre poteva rispondere
in modo incredibilmente sensato a domande relative ai fatti narrati nelle storie.