Prima di Alexa c’era SHRDLU

Nel 1968 Marvin Minsky (1927-2016) proclamava che entro una generazione ci sarebbero stati computer intelligenti come l’assistente vocale HAL del film “2001 Odissea nello spazio”  di cui era stato anche consulente.

Nello stesso anno il venticinquenne Terry Winograd, allora studente di Seymour Papert, stava programmando SHRDLU uno dei primi sistemi in grado di interagire con l’utente attraverso la comprensione del linguaggio naturale (NLU).


Dimostrando che un programma con la conoscenza (knowledge base) di un ristretto dominio, come quello di un micro-mondo formato da blocchi, può comunicare in modo significativo in linguaggio naturale.

SHRDLU

Il programma di tesi di dottorato al MIT di Winograd sarebbe stato il più noto dei micro-mondi funzionanti. Infatti impartendo comandi testuali in inglese l’utente poteva spostare, tramite un braccio (gripper) simboleggiato da una linea sullo schermo , un gruppo di blocchi geometrici differenti per forma, misura e colore.

Ad esempio SHRDLU poteva comprendere comandi molto complessi come:

Trovando all’interno del tavolo il blocco (block) più alto e mettendolo nella scatola (box) utilizzando un braccio virtuale o in futuro uno robotico come quelli costruiti da Minsky.

Winograd, per evitare le complicazioni della robotica, aveva però  deciso  di non utilizzare oggetti reali, ma blocchi in tre dimensioni su uno schermo televisivo come il PDP-10.
Il display serviva innazitutto agli utenti per visualizzare il risultato dei comandi che digitivano sulla tastiera e attraverso una chat interagire in real-time con il sistema.

Solo due anni prima il computer scientist Joseph Weizenbaum (1923-2008) aveva creato il primo chatbot della storia. Eliza riprendendo parti delle affermazioni, come nella psicoterapia di Carl Rogers (1902-1987), era in grado di rispondere all’utente.

In caso di richieste troppo generiche Eliza rispondeva semplicemente con “per favore, vai avanti”.

Grasp the pyramid

Se nello scenario del micro-mondo erano presenti più piramidi, SHRDLU era in grado di cogliere l’ambiguità della richiesta testuale. Ad esempio alla richiesta “grasp the pyramid” (prendi la piramide)  poteva rispondere “I don’t understand which pyramid you mean” (non so quale piramide intendi dire).

Questo perché il sistema conosce lo stato dei blocchi e il parser sintattico sa che le frasi che iniziano con l’articolo determinativo “the” (the pyramid) si riferiscono ad un preciso oggetto che l’utente ha in mente.

Pick up a big red block

Immaginiamo che sotto ad un blocco verde a forma di piramide ci sia il cubo rosso che vogliamo e chiediamo al sistema:

All’eseguire il comando il sistema rispondeva “ok” dopo aver però compiuto una serie di azioni,  aver trovato uno spazio vuoto nello scenario per riposizionare la piramide, per poi poter afferrare (pick up) il cubo.

Le azioni di SHRDLU sono rigorosamente logiche,  quando cerca uno spazio vuoto nello scenario, ad esempio, il suo approccio è di dedurre quale sia la descrizione di vuoto.

Come funziona SHRDLU?

Terry Winograd descrive SHRDLU come “un sistema che contiene un parser, una grammatica di riconoscimento dell’inglese, programmi per l’analisi semantica e un sistema generale di risoluzione dei problemi …”.
Il programma era formato da una dozzina di sub-systems che possiamo suddividere in tre gruppi che gestivano la grammatica, la semantica e la deduzione.

La novità del sistema era la flessibilità con cui i diversi sub-systems interagivano fra di loro, non funzionando in sequenza, ma distribuendo la responsabilità del controllo in tutto il sistema. Per esempio i sub-systems che compongono la semantica possono funzionare separatamente,  in modo che non sia necessario attendere un’analisi semantica completa.

Ogni sub-system funziona in modo coordinato con il resto del sistema, perchè in qualsisi momento possa usare il sistema cognitivo-deduttivo o chiamare la grammatica per analizzare un blocco sintattico prima di andare avanti con l’analisi semantica. A causa di questa organizzazione eterarchica notevolmente efficiente, è molto difficile classificare l’analisi semantica come top-down o bottomup probabilmente rispecchiando in qualche modo l’elaborazione semantica umana.

Sintassi, semantica e ragionamento

La comprensione dell’inglese richiedeva lo sviluppo di una grammatica in grado di integrare sia la semantica che la sintassi. Per Winograd la soluzione fu di basare il primo gruppo di moduli sulla grammatica sistemica del linguista inglese Michael Halliday (1925-2018) di cui era stato studente durante il suo periodo all’university college di Londra (UCL).
La frase in ingresso veniva così analizzata secondo la grammatica,  che rinosceva la struttura sintattica e la semantica che era in grado di risolvere le ambiguità ricorrendo alla knowledge base del micro-mondo.

Per modellare la comprensione del linguaggio naturale il secondo gruppo era composto da programmi semantici specializzati che si occupavano del significato delle singole parole, dei gruppi di parole o delle frasi intere.
Questo sistema era così in grado di interpretare strutture sintattiche come gruppo di nomi (NG, Noun Group), gruppo di aggettivi (AG, Adjective Group), gruppo di preposizioni (PG, Preposition Group), etc. Inoltre la grammatica conteneva informazioni sulle forme verbali.

Winograd definisce il ruolo della semantica come quello di un gap-filler tra il parser sintattico e il problem solver del terzo gruppo.
La knowledge base del terzo gruppo include un modello dettagliato del mondo dei blocchi che manipola, nonché un modello semplice dei propri processi di ragionamento, in modo da poter spiegare le proprie azioni.

Questo gruppo includeva anche una serie di sub-systems per la generazione delle risposte in inglese (NLG, natural language generation).

Il significato come procedura

Sebbene tutti e tre i gruppi abbiano diversi obbiettivi (sintassi, semantica o ragionamento) ciò che rendeva possibile la comunicazione interna del sistema è che condividevano la stessa rappresentazione procedurale della conoscenza.
Winograd descrive il processo di comprensione del linguaggio (NLU)  come la “conversione da una stringa di suoni o lettere a una rappresentazione interna di significato”.  Ad ogni espressione del linguaggio era quindi associata una procedura che veniva considerata come il significato della stessa espressione.
All’epoca questo approccio suscitò molto entusiasmo perchè sembrava risolvere o aggirare i problemi che avevano turbato i filosofi del linguaggio per secoli.

Che cos’è un cubo?

Abbiamo visto che possiamo rappresentare il significato di un’espressione linguistica come una procedura, ma abbiamo bisogno anche di un dizionario per poter interpretare le singole parole rispetto alla struttura sintattica in cui appare.

Il dizionario è composto da due parti: una che contiene le features sintattiche di ogni parola e da un’altra con le features semantiche che sono gestite dal modulo semantics. All’interno del micro-mondo sappiamo che un cubo è un oggetto rettangolare manipolabile che possiamo riconoscere perchè è un parallelepipedo equidimensionale.

Dandone una definizione possiamo quindi scrivere:

Stato dei blocchi

La knowledge base del sistema contiene una descrizione dettagliata dello stato attuale dei blocchi, ma anche delle procedure da mettere in atto per modificarne lo stato.

Il micro-mondo è una semplificazione del mondo reale in cui tutti gli oggetti sono dei parallelepipedi e le uniche relazioni fra di essi sono quelle di tipo spaziale, espresse tramite predicati.

Nella seguente descrizione procedurale vediamo che B1 è un blocco di colore rosso che si trova nella posizione 100, 100, 0.

B1 supporta B2 e che EVENT27 ha causato EVENT29, ecc.

L’aspetto sorprendente di SHRDLU è che possiamo interrogarlo sulle regole del micro- mondo, ad esempio: “può una piramide essere sostenuta da un blocco?”.

Possiamo fare domande sulla configurazione corrente dei blocchi:

Discutere con SHRDLU degli eventi che hanno avuto luogo durante l’interazione.

Physical actions

SHRLDU era in grado di compiere solo tre tipi di azioni (physical actions) come muovere (MOVETO) un blocco in una determinata posizione o afferrarlo (GRASP) per poi rilasciarlo (UNGRASP).

Per definire la procedura, ad esempio, di che cosa si intende per GRASP dobbiamo stabilire innanzitutto se il blocco che stiamo cercando di afferrare possa essere manipolato controllando sul dizionario le sue caratteristiche (features). Inoltre dobbiamo assicurarci che la mano del braccio (gripper) sia libera e che nulla si trovi sopra il blocco.
Possiamo rappresentare questi requisiti con i seguenti predicati:

Per eseguire il comando SHRDLU implementa una tecnica chiamata “backward chaining” (concatenamento a ritroso) che permette al planner di cercare a ritroso nella sua knowledge base lo stato precendente dei blocchi per poi poter scegliere quale comando soddisfa la richiesta testuale dell’utente.  Così facendo,  nelle parole di Winograd,  il sistema può “ricordare e discutere i suoi piani e le sue azioni così come metterli in atto”.

Parsing di una frase

Il sistema analizza la frase in ingresso da sinistra a destra mentre procede, anticipando la struttura sintattica del blocco ancora da considerare. Applica le sue conoscenze semantiche e dello stato dei blocchi nei punti appropriati della procedura di analisi per eliminare le ambiguità.

Il modulo Grammar deve identificare se la proposizione principale è dichiarativa, imperativa o interrogativa.  Ad esempio l’analisi della seguente richiesta può avvenire secondo un processo di parsing sintattico di questo tipo:

Il parser analizza il primo blocco “the blue pyramid on the block” e come prima cosa verifica se è una frase nominale (NP, noun phrase) accettabile.

Se l’esito è positivo, esegue la procedura di analisi semantica.

SHRDLU conosce lo stato dei blocchi, quindi può determinare se c’è una sola piramide blu nello scenario del micro-mondo. In tal caso, il parser sintattico saprebbe che il resto della frase, “on the block in the box”, dev’essere una frase preposizionale, che specifica dove mettere (“put”) la piramide.

SHRDLU torna al parser sintattico che questa volta analizza il blocco “the blue pyramid” e passa il check.

SHRDLU analizza il blocco “the block in the box”  sapendo che “put” è classificato nel dizionario come verbo nella forma infinita e il parser ha l’informazione che i verbi nella posizione iniziale sono di solito imperativi.

Nell’analisi è importante considerare anche la posizione delle parole all’interno della frase, per esempio nella costruzione della forma attiva o passiva che consente di non menzionare il soggetto dell’azione. Infine richiama la procedura di analisi semantica per verificare la presenza di un blocco nella scatola (box).

Bibliografia

 

Sitografia

[1] Winograd Terry, Procedures as a Representation for Data in a Computer Program for Understanding Natural Language”, MIT AI Lab, 1971
[2] Winograd Terry, Five lectures on Artificial Intelligence, MIT AI Lab, 1974
[3] Winograd Terry, Computer Software for Working with Language, Scientific America, 1984
[4] Winograd Terry, A procedural model for language understanding, 1986
[5] Percy Liang, Talking to Computers in Natural Language, ACM, 2014
[6] Lawrence M. Fisher, Siri, Who Is Terry Winograd?, Strategy Business, 2017
[7] SHRDLU