Il Progetto
Questo capitolo vuole presentare le idee seguite nella progettazione di un sistema di word prediction e descrivere la struttura del lavoro di realizzazione del modulo di predizione e della sua interazione con un editor di testo.
Dopo la descrizione generale del progetto e degli strumenti utilizzati per il suo sviluppo, entreremo nel merito delle principali caratteristiche evidenziandone la struttura, la logica di funzionamento e gli sviluppi futuri.
4.1 Contributi di Questa Tesi
Il lavoro affrontato in questa tesi `e stato frazionato in tre parti ben distin- te. La prima fase `e consistita nella riorganizzazione del prototipo esistente, in modo da renderlo modulare ed ampliabile, tenendo sempre presente le caratteristiche di efficienza necessarie ad un sistema per il trattamento del linguaggio naturale. Successivamente ci siamo concentrati sulla fase imple-
112
mentativa di un modulo indipendente per la predizione e di un’applicazione per l’editing del testo che, interagendo con tale modulo, incorpora i vantag- gi derivati dalla predizione. Nella terza fase ci siamo dedicati al testing di questo strumento su diversi vocabolari in modo da mettere alla prova l’in- dipendenza, ma soprattutto in modo da verificare l’utilizzo con dizionari “a tema” (economico, medico, scientifico) o personalizzati (per esempio adatti per la scrittura di una semplice email confidenziale o di lettere formali).
Ulteriori contributi nella realizzazione del sistema sono:
• il miglioramento delle funzionalit` a di predizione a livello di parola;
• l’introduzione di un processo di predizione a livello di carattere;
• la reimplementazione delle ricerche ricorsive nei dizionari (attraverso visite delle strutture a doppio albero, come visto nella Sezione 3.2.2);
• il perfezionamento del controllo della fase di cancellazione;
• l’ottimizzazione della gestione delle triple e backtracking (inteso come tutta una serie di operazioni per la determinazione della parola, o tripla, pi` u probabile).
4.2 Descrizione Generale
Nel precedente progetto ASA [3] `e stato sviluppato il prototipo di un modulo
di predizione di cui si `e cercato di misurare l’efficienza. Alla luce dei risultati
ottenuti e allo stato dell’arte delle tecnologie che governano il trattamento del linguaggio naturale nel campo della predizione, si `e deciso di ripensare l’intero progetto per farlo diventare una libreria integrabile in qualunque sistema che richieda i servizi di predizione.
La disponibilit` a di una libreria permette di suddividere la logica e le funzionalit` a legate all’applicazione utente dalla predizione stessa, comprese dunque le risorse linguistiche necessarie (triple, grammatica e dizionario). ` E stato quindi sviluppato un componente aggiuntivo, LxsPrd (Lexical Studio Prediction), ed aggiunto nell’architettura esistente di Lexical Studio. Questo componente `e interrogabile direttamente dall’esterno in quanto incapsula ed esporta solo le funzioni utili alla predizione.
Il componente di predizione realizza due importanti obiettivi:
• la copertura quasi totale del lessico;
• la concordanza sintattica delle forme lessicali.
Entrambi i punti valorizzano il progetto e sono realizzabili grazie alla pos- sibilit` a di accedere alle risorse linguistiche di Synthema presentate nel capi- tolo precedente. Grazie all’uso del Dizionario Generale `e possibile ottenere la copertura del lessico, mentre le concordanze sintattiche sono assicurate attraverso l’appicazione della Grammatica Statistica a Triple.
Il sistema `e stato progettato per essere dotato di un algoritmo di au-
toapprendimento che, durante il funzionamento, riesca a tener traccia del
lessico e dello stile di composizione personale dell’utente. Questo genere di informazione risulta preziosa al fine di generare un processo di predizione sempre pi` u accurato ed efficace. Dopo un periodo di addestramento, una funzionalit` a di autoapprendimento pu` o rivelarsi particolarmente utile per un utente disabile poich´e il lessico di riferimento pu` o essere alquanto ristretto e quindi maggiormente predicibile.
Inoltre il modulo pu` o essere integrato in ogni applicazione, come vedremo nel dettaglio nella sezione successiva.
4.2.1 Il Predittore: Architettura del Sistema
Come precedentemente accennato, abbiamo scelto di sviluppare il preditto- re come componente ulteriore dell’architettura di Lexical Studio (visto nel Capitolo 3). In Figura 4.1 `e mostrato il modulo di predizione, LxsPrd, in re- lazione all’ambiente basato su tecnologia Synthema. In particolare si faccia attenzione al livello superiore che assume il componente in questione: in- fatti, mentre l’intero ambiente Lexical Studio integra diversi strumenti per il trattamento del linguaggio naturale, il nostro modulo si serve soltanto di una parte di suddetti strumenti (come il dizionario).
Figura 4.1: Architettura del sistema.
Figura 4.2: Architettura del sistema.
In fase di progettazione `e stato fatto riferimento ad una interazione con una tastiera virtuale sviluppata e brevettata dall’Universit` a di Padova. Di- saControl 1 (Figura 4.3) serve ad interfacciarsi con l’ambiente Microsoft Win- dows in modo da essere il tramite tra la persona con disabilit` a motorie e i vari applicativi. Si tratta, infatti, di un software capace di emulare la ta- stiera utilizzando il mouse o dei sensori esterni. In linea generale, data una tastiera virtuale come DisaControl, si `e supposto che un potenziale utente disabile possa eseguire le seguenti azioni:
• inserire 2 un carattere alfabetico, sia esso minuscolo (a-z) o maiuscolo (A-Z);
• inserire un carattere numerico (0-9);
• inserire un elemento di fine parola, come uno spazio, o un elemento di fine frase, come un punto;
1
La versione 2.0, aggiornata a settembre 2004, `e scaricabile al sito http://www.disaworld.net.
2
Si ritiene che l’inserimento avvenga in maniera sequenziale. Dunque non `e possibile
inserire alcun carattere all’interno di una parola; ad esempio, se il termine corretto `e “ma”,
non sar` a possibile inserire niente tra m e a.
• inserire un qualsiasi altro carattere;
• scegliere un elemento nella lista delle parole suggerite;
• scegliere un carattere tra quelli suggeriti;
• cancellare 3 un carattere.
Figura 4.3: La tastiera virtuale DisaControl.
Dunque, un modulo di predizione dovr` a essere in grado di:
• ricevere gli eventi dalla tastiera virtuale;
• gestire le richieste della tastiera / dell’utente;
• tenere traccia del testo corrente in uno stato interno;
• effettuare le ricerche nel dizionario e filtrare i risultati;
• aggiornare il meccanismo delle triple;
• inizializzare opportunamente le strutture dati e le risorse linguistiche quando necessario;
3
Consideriamo solo il caso di cancellazione all’indietro carattere per carattere: risulta
infatti alquanto poco utile per il momento il caso di cancellazione sparsa per il testo
mantenendo attivo il sistema di predizione.
• inviare alla tastiera virtuale le liste delle parole e dei caratteri che dovranno essere suggeriti.
Naturalmente quanto detto non `e valido solo per un’interazione tra pre- dittore e una tastiera virtuale; il processo di predizione offerto pu` o essere utilizzato da un qualsiasi editor di testo che ne richiede le funzionalit` a. Lo scambio di informazioni tra il modulo di predizione e la controparte, sia essa una tastiera virtuale o un comune text editor, `e esprimibile attraverso lo schema in Figura 4.4. In questo modo viene creata una comunicazione client-server tra il componente di predizione e l’utente.
Figura 4.4: Scambio di informazioni.
Utilizzando un meta-linguaggio `e possibile descrivere i protocolli di co- municazione come segue:
• a seconda di quali sono le azioni dell’utente, la tastiera virtuale (pren-
diamo in considerazione questa per semplicit` a) comunicher` a al pre-
dittore l’inserimento o la cancellazione di un carattere o la scelta di
un suggerimento, considerando che la scelta di un carattere tra quelli
suggeriti equivale al semplice inserimento di quell’elemento nel testo (Figura 4.5).
Tastiera Virtuale
InserisciCarattere(c)
ScegliSuggerimento(s) CancellaCarattere()
Figura 4.5: Le possibili azioni di un utente di una tastiera virtuale.
• il predittore, in base alle “richieste” ricevute dovr` a effettuare le opera- zioni tali da tenere lo stato aggiornato e allineato con il testo prodotto dall’utente in modo da poter adeguare la grammatica a triple. In que- sto modo `e possibile mettere in atto tutto il processo di predizione e restituire alla tastiera virtuale i vari suggerimenti, parole e caratteri (Figura 4.6).
Modulo di Predizione
AggiornaTriple() SuggerisciParole() SuggerisciCaratteri() Figura 4.6: Le principali funzioni esportate dal predittore.
• inoltre, internamente, il modulo di predizione dovr` a prevedere altre
funzionalit` a per poter classificare le parole scelte ed inserite, per fare
le ricerche nel dizionario, per ricercare le triple pi` u probabili nelle
strutture, oltre che per inizializzare (o ripristinare) l’intero sistema.
Figura 4.7: Interazione tra DisaControl ed un Text Editor.
Figura 4.8: DisaControl dopo l’inserimento del carattere ‘L’.
La tastiera virtuale DisaControl, come mostrato in Figura 4.7, fornisce
un sistema di suggerimento del carattere e della parola. Tuttavia non si
pu` o parlare di predizione, come si pu` o notare, infatti, nelle Figure 4.8, 4.9 e
4.10. Nella prima figura si osserva che dopo l’inserimento del carattere ‘L’,
DisaControl suggerisce un’altra ‘L’ tra i caratteri possibili nonostante non
esistano parole in italiano che iniziano con “LL”. Nella Figura 4.9, dopo aver
scritto “La r ”, appare chiaro che le parole suggerite dal sistema non sono
tutte della stessa categoria grammaticale ed inoltre i suggerimenti non sono
Figura 4.9: DisaControl dopo l’inserimento del carattere ‘R’.
Figura 4.10: I suggerimenti di DisaControl dopo aver digitato “La rag”.
del tutto concordi in genere con il resto della frase (ad esempio “rabarbaro”
non `e concorde con “la”). La concordanza non `e rispettata neanche in numero, come `e possibile vedere dall’esempio in Figura 4.10, dove viene suggerito sia “ragazza” che “ragazze”.
4.2.2 Strumenti Utilizzati
In questa sezione daremo una rapida descrizione degli strumenti usati per
lo sviluppo del progetto. Le scelte di implementazione eseguite hanno por-
tato a realizzare il predittore utilizzando l’ambiente Microsoft Windows, il
linguaggio C++ e la libreria LxsApi, ovvero le API (Application Program- ming Interfaces) di Lexical Studio. Tali API hanno permesso al modulo di predizione di integrarsi con gli altri strumenti utili come il dizionario e le tri- ple. Inoltre, per l’interfaccia grafica di test, sono state preferite le Microsoft Foundation Classes (MFC), uno dei pi` u diffusi framework di applicazione.
C++ ha permesso di astrarre problemi ad alto livello a vantaggio della chiarezza, dell’espandibilit` a e della semplicit` a di manutenzione, al tempo stesso senza perdita di efficienza.
Le risorse linguistiche sviluppate con Lexical Studio possono successi- vamente essere esportate verso altri standard descrittivi, con la semplice definizione dei criteri di trasformazione di formato, oppure si possono di- rettamente impiegare in applicazioni sviluppate con Lexical System Libra- ry. Inoltre, attraverso una semplice interfaccia utente `e possibile costruire, modificare e testare le risorse quali il linguaggio, il lessico e la grammatica.
Per la fase di testing, oltre al dizionario generale, `e stato creato un dizionario ristretto alle parole frequenti (si veda la Sezione 4.3.1 per ulteriori informazioni) per valutare i possibili risultati. La generazione del dizionario suddetto `e avvenuta con l’ausilio dell’ambiente Lexical Studio.
4.3 Analisi e Scelte di Implementazione
Inizialmente `e stata compiuta una fase di analisi affiancata da un esame
dettagliato del prototipo ASA. Al termine di questa fase siamo giunti alla
conclusione che erano necessarie delle scelte riguardo la dimensione del di- zionario e la gestione delle triple. ` E sorta, inoltre, la necessit` a di un migliore sistema di backtracking per il controllo dei filtri sintattici. Inoltre sono state introdotte molte funzioni, mentre altre gi` a presenti nel prototipo sono state ridefinite ed ottimizzate.
4.3.1 Dizionario e Dimensioni
Il vocabolario della lingua italiana `e un insieme molto vasto: si pensi che il Dizionario Generale di Synthema comprende circa 43.800 lemmi, 876.000 forme e 1.165.000 classificazioni. Cos`ı come pensato, un sistema di predi- zione ha l’obiettivo di accelerare la composizione del testo. Per questo, un dizionario molto capiente offre s`ı la massima copertura del lessico, ma im- pone dei rallentamenti durante le fasi di ricerca. Si `e pensato, dunque, di restringere il vocabolario ad un insieme di parole “pi` u frequenti”.
Le dimensioni del dizionario sono state prese in analisi cercando di ca-
pire quali possono essere i vantaggi di un vocabolario vasto rispetto ad uno
ristretto. Inizialmente si `e pensato di lasciare l’intero dizionario generale,
ma di fronte a molti suggerimenti poco adatti e al vincolo di dover restrin-
gere le parole suggerite a poche unit` a, si `e voluto generare un dizionario di
dimensioni ridotte.
La generazione `e stata possibile poich´e il Dizionario Generale distingue ogni parola attraverso degli attributi indentificati con le seguenti etichette:
• FREQ: le parole molto frequenti di maggiore utilizzo;
• UDED: parole ad alto uso;
• DISP: sono tutte quelle parole che vengono dette o scritte di rado, ma che vengono usate in contesti pi` u informali o che pensiamo fre- quentemente. Poich´e molti corpora significativi sono basati su testi giornalistici o di natura letteraria, molte parole conosciute non rien- trano nei primi due insiemi. Ne sono esempi “tegola” e “padella”: esse sono parole comuni di cui tutti conoscono il significato, ma che non risultano presenti nei suddetti corpora;
• RARE: ogni altro termine del dizionario.
Considerando che il Dizionario Generale possiede queste informazioni ag- giuntive, `e stato generato un dizionario (chiamato ITAFREQ), di dimensioni ridotte, formato dalle parole frequenti (ovvero quelle con attributo FREQ).
Naturalmente questa scelta `e stata pensata per un’ottimizzazione delle pre-
stazioni del modulo di predizione, che invece `e stato ideato per funzionare
su un qualsiasi dizionario. Il dizionario ITAFREQ `e formato da circa 2.454
lemmi, 175.973 forme e 244.733 classificazioni.
4.3.2 Gestione dei Suggerimenti
Come abbiamo visto nei capitoli precedenti, il processo di predizione svilup- pato si basa su triple di classificazioni sintattiche che faranno da filtro alle parole ricercate nel dizionario. A seconda dell’ordine della parola inserita il procedimento si evolve in questo modo:
• prima parola della frase: poich´ e non `e possibile fare a priori alcuna assunzione sulla categoria grammaticale della prima parola, i suggeri- menti proposti saranno estratti dall’intero dizionario senza alcun filtro particolare ma considerando soltanto i caratteri iniziali inseriti;
• seconda parola della frase: dopo che l’utente ha composto la prima parola, siamo in grado di classificarla e ricavare le possibili categorie sintattiche. Cos`ı facendo possiamo effettuare la ricerca di tutte le cop- pie di classificazioni possibili, fissando il primo elemento alla categoria sintattica della prima parola composta. Da questa ricerca verr` a pre- sa la classificazione pi` u probabile per la seconda parola in modo da restringere statisticamente i risultati per la ricerca nel dizionario. In questo modo filtreremo i suggerimenti considerando quelli concordanti con la classificazione trovata;
• terza parola e successive: dalla terza parola della frase in poi, pos-
sediamo tutti gli elementi necessari per mettere in atto la predizione
sfruttando pienamente le triple. Infatti `e possibile predire la Part-
of-Speech pi` u probabile della parola che l’utente sta inserendo, consi- derando le classificazioni dei due termini precedenti e ricercando, tra tutte le triple con i primi due elementi uguali a queste classificazioni, le triple con probabilit` a pi` u alta.
La gestione dei suggerimenti si basa su operazioni per la ricerca e l’in- terpretazione delle singole classificazioni (in forma di sestupla, come visto nella Sezione 3.5 del capitolo precedente).
Una funzione fulcro dell’intero sistema `e quella che permette di ottenere tutte le classificazioni di una certa parola, funzione ovviamente gi` a presente nella tecnologia Synthema. La struttura nella quale vengono memorizzate le possibili classificazioni `e da considerarsi logicamente come una lista di array dove ogni elemento della lista corrisponde ad una parte della frase, mentre ogni elemento dell’array rappresenta una possibile sestupla per la parola stessa. Gli array sono ordinati in base ai valori di probabilit` a (“la”
articolo sar` a pi` u probabile infatti di “la” sostantivo). Inoltre ogni tripla possiede un valore di probabilit` a ottenuto come frequenza, normalizzata, data dal numero di occorrenze della tripla nel corpus. Questa struttura si pu` o pensare come quella in Figura 4.11.
Inoltre `e stata realizzata un funzione di backtracking capace di correggere
il processo di predizione qualora i suggerimenti proposti non siano concor-
di con quello che intende scrivere l’utente. La fase di backtracking esegue
semplicemente lo scorrimento delle possibili classificazioni per ricavare tut-
RDFS00
NDFS00
NPF3O3
SCFSFS VEN3II
SCFSFS
SCMIMI
La casa era ...
Figura 4.11: Struttura logica di una tripla di classificazioni.
te le combinazioni ottenibili. Per meglio comprendere questo importante passaggio, osserviamo prima la struttura delle classificazioni.
Consideriamo per esempio di voler comporre la frase “il letto era rifatto”.
Alla prima parola non si presenta alcun problema di backtracking poich´e
l’articolo “il” non `e ambiguo ed ha un’unica classificazione. Per la seconda
parola (“letto”), si pensi che la classificazione non sia il sostantivo, ma il
verbo (participio passato del verbo “leggere”). A questo punto il sistema
di predizione dovr` a ricercare tutte le triple che hanno come primo elemento
articolo e come secondo verbo e restituire la classificazione pi` u probabile per
la terza parola. Nel caso in cui la ricerca non restituisca elementi, allora
la funzione di backtracking dovr` a rivedere la predizione facendo scorrere la
classificazione della seconda parola alla scelta successiva (supponiamo sia
essa sostantivo). A questo punto le due classificazioni, articolo - sostantivo, permettono di ottenere il filtro verbo per la terza parola: cos`ı facendo il termine “era” viene riconosciuto immediatamente come verbo e non come sostantivo, mantenendo corretta la gestione delle triple per la predizione del resto della frase.
4.4 L’Algoritmo di Predizione
Lo scambio di informazioni tra tastiera virtuale e modulo di predizione mette in azione il procedimento predittivo che restituir` a la lista dei suggerimenti.
Il predittore si deve mantenere allineato con il testo in fase di composizione nell’applicazione esterna: per questo vengono mantenuti interamente una serie di dati, relativi principalmente alle classificazioni degli elementi delle triple e alla frase corrente.
In questa sezione descriveremo il funzionamento dell’algoritmo e le prin- cipali funzioni sviluppate.
4.4.1 Schema delle Funzioni Principali
Come gi` a ampiamente sottolineato, il sistema di predizione offre due tipi di suggerimenti: uno rivolto alla composizione della parola e l’altro al carattere pi` u probabile.
La funzione di predizione del singolo carattere ha molteplici potenzialit` a.
Quando la tastiera (comune o virtuale) risulta inaccessibile a causa di deficit
motori, nasce l’esigenza di un sistema di scansione. Le tastiere virtuali con modalit` a a scansione possiedono un indicatore che si sposta sui tasti.
L’utente, premendo un device fisico (quale un pulsante, una pedaliera, ecc.), seleziona la lettera che desidera digitare quando questa viene evidenziata dall’indicatore. Alcune tastiere pi` u avanzate dispongono di una modalit` a di scansione che permette la scelta di un elemento appartenente ad un insieme pi` u grande (ad esempio un’intera riga della tastiera) e, successivamente, la scelta di ogni singolo elemento (il tasto) dal sottoinsieme selezionato.
Figura 4.12: Area della tastiera virtuale dedicata alla predizione del carattere.
Il sistema a scansione richiede un’attenzione maggiore da parte dell’u-
tente, ma soprattutto comporta un impegno di tempo, dovuto alla scansione
sequenziale dei tasti: spesso prima di arrivare a quello desiderato occorre
scorrerne molti altri. Per questo motivo, se la tastiera virtuale prevede una
porzione per i suggerimenti dei caratteri pi` u probabili (come in Figura 4.12),
vi sar` a un risparmio del tempo per la scrittura. In questo senso, l’utente
pu` o “sostare” nell’area dei caratteri suggeriti (ad esempio i cinque elementi
con probabilit` a pi` u alta) ed eseguire, quindi, una scansione pi` u veloce.
I caratteri suggeriti dal predittore sviluppato, sono il risultato di una ri- cerca nella struttura del dizionario a doppio albero, in modo tale da escludere gli elementi che non possono occorrere dopo una o pi` u lettere (ad esempio una “a” dopo un’altra “a” oppure una “t” dopo una doppia “t”).
Riassumendo quanto visto in precedenza, un potenziale utente del pre- dittore pu` o svolgere le seguenti azioni:
• inserire un qualsiasi carattere;
• inserire un elemento di fine parola o di fine frase;
• scegliere un carattere tra quelli proposti;
• scegliere una parola nelle liste dei suggerimenti;
• cancellare l’ultimo carattere della frase.
Utilizzando una notazione con nomi di funzioni significative, si pu` o pen- sare ad una corrispondenza tra azioni dell’utente e metodi chiamati per la predizione come espressa nella Tabella 4.1.
Queste sono le funzioni che il modulo di predizione esporta alla tastiera
virtuale o altro editor. Vi sono poi altre funzioni interne tra cui possiamo
menzionare le funzioni di ricerca nelle diverse strutture per il reperimento
delle parole da suggerire, dei caratteri pi` u probabili e delle triple per man-
tenere aggiornato il processo di predizione. Un’altra funzione importante
Utente Predittore Inserire un carattere
Inserire un elemento di fine parola InserisciCarattere(c) Inserire un elemento di fine frase
Cancellare l’ultimo carattere CancellaCarattere() Scegliere un carattere suggerito InserisciCarattere(c) Scegliere una parola tra i suggerimenti ScegliSuggerimento(s)
Tabella 4.1: Corrispondenza azioni - funzioni.
fornita dalla tecnologia Lexical System ha permesso di svolgere operazioni di classificazione delle parole inserite.
4.4.2 Descrizione Logica
Come visto nella Sezione 4.3.2, l’algoritmo ha un diverso comportamento a seconda dei tre casi seguenti:
• prima parola: non vengono applicati criteri di predizione alla ricerca della parola;
• seconda parola: grazie alla classificazione della prima parola, ` e pos- sibile attivare in parte il processo predittivo in quanto non vengono sfruttate a pieno le triple, ma solo le informazioni relative alle prime due sestuple della tripla;
• terza parola e successive: da qui in poi ci possiamo attenere totalmen-
te alla predizione servendosi delle risorse sintattiche a triple e della funzione di backtracking.
Per meglio comprendere la logica dell’algoritmo riportiamo i modelli delle funzioni elencate nella sezione precedente, schematizzati nelle Figure 4.13, 4.14 e 4.15.
Dallo schema in Figura 4.13 possiamo notare i comportamenti del siste- ma a seconda delle azioni dell’utente. In particolare:
• se viene inserito un elemento di fine frase: il modulo deve ripristinare lo stato interno per prepararsi alla predizione di una nuova frase;
• se viene inserito un elemento di fine parola: il comportamento in questo caso del sistema `e identico alla chiamata della funzione di scelta del suggerimento;
• se viene inserito un qualsiasi altro carattere: qui si distinguono i casi a seconda dell’ordine della parola.
Non appena l’utente sceglie una parola nella lista dei suggerimenti, essa viene classificata e in base al numero delle parole (e quindi anche di clas- sificazioni attive, #POS) avviene l’aggiornamento delle classificazioni e dello stato interno. Tale aggiornamento serve a mettere in atto le ricerche delle triple per poter filtrare le parole nel processo di predizione.
Quando un utente cancella l’ultimo carattere della frase deve essere di-
versificato il caso a seconda dell’elemento da eliminare. Nel caso di uno
InserisciCarattere
fine frase
fine parola
Gestione fine frase
Gestione fine parola SI
SI NO
NO
Case parola
Ricerca senza filtri
Ricerca con filtro POS1
Ricerca con filtri POS1 e POS2
Mostra suggerimenti
Aggiorna lo stato
terza prima
seconda
fine
Figura 4.13: Diagramma della funzione di inserimento del carattere.
Classifica parola
Case
#POS
Aggiorna POS1
Aggiorna POS2
Aggiorna lo stato
0 2
1
fine ScegliSuggerimento
Aggiorna POS2 POS1 := POS2
Figura 4.14: Diagramma della funzione di scelta di un suggerimento.
Reset Stato
SI
SI NO
NO
Case
#POS
Ricerca e Mostra suggerimenti
0 2
1
fine
CancellaCarattereRecupera prima parola
Recupera seconda parola
siamo
all’inizio della frase
ultimocarattere
= spazio
ancora caratteri
Figura 4.15: Diagramma della funzione di cancellazione di un carattere.
spazio allora va recuperata la parola precedente e che diventa la parola cor- rente. Se invece `e un carattere della parola corrente allora va aggiornato lo stato e va effettuata la ricerca dei suggerimenti nel dizionario.
4.5 L’Interfaccia Utente
Al fine di effettuare il testing sul predittore sviluppato, `e stato realizzato un
semplice text editor che vuole essere un’interfaccia tra l’utente e il modulo
di predizione. L’interfaccia, infatti, evidenzia il funzionamento del progetto
poich´e `e formata solamente da un text box per l’inserimento di testo e da due
Figura 4.16: Interfaccia grafica per il testing del predittore.
list box per le liste di suggerimenti forniti dal predittore: parole e caratteri.
In Figura 4.16 `e riportata l’intera interfaccia.
Nell’implementazione `e stata trattata l’interazione con il predittore tra- lasciando particolari del tutto fuori dallo scopo di questa tesi. Nelle Figu- re 4.17 e 4.18 sono riportati alcuni esempi del text editor durante il suo fun- zionamento. La prima riporta la scrittura di una frase; nello specifico, dopo aver scritto “nella vicenda”, “nella” classificata come preposizione artico- lata (con sestupla DCFS) e “vicenda” classificata come sostantivo femminile (SCFS), il predittore suggerisce all’utente l’inserimento di una preposizione semplice (con sestupla DS). Nella seconda figura viene mostrata la composi- zione della parola “maniera”: si pu` o notare, infatti, che appena si `e scritto
“man” la lista dei caratteri mostra tutte le possibili lettere valide.
Figura 4.17: Un esempio di utilizzo dell’interfaccia.
Figura 4.18: Un altro esempio di scrittura veloce mediante le funzioni di
predizione.
E importante ricordare che i suggerimenti presentati sono filtrati attra- `
verso la grammatica statistica: infatti le parole sono tutte concordanti sia in genere che in numero mentre i caratteri sono solo tutti quelli possibili.
4.5.1 Esempio di Funzionamento del Predittore
Riportiamo adesso una serie di figure esplicative per mostrare il funziona- mento del sistema di predizione sviluppato. Assumiamo, per esempio, di voler scrivere la frase “la ragazza scrive il nome con la tastiera”.
Figura 4.19: L’interfaccia dopo l’inserimento del carattere ‘L’.
Nel momento in cui l’utente inserisce il carattere ‘L’, il sistema effettuer` a
le ricerche nel dizionario per suggerire tutte le parole che iniziano per quella
lettera. Essendo nel caso di composizione della prima parola, le ricerche
sono libere da vincoli, ovvero da filtri. Dalla Figura 4.19 si possono notare
Figura 4.20: Scelta del carattere ‘A’ dalla Character List.
le due liste dei suggerimenti. ` E da notare che la prima parola suggerita nella WordList `e “la”. Supponiamo che l’utente scelga il primo carattere tra quelli suggeriti: la schermata, a questo punto, sar` a quella indicata in Figura 4.20.
Conclusa la parola, l’utente premer` a la barra spaziatrice per inserire uno spazio; di conseguenza il predittore classificher` a la prima parola inserita (articolo determinativo femminile singolare, in sestupla DDFS) ed effettuer` a la predizione della categoria grammaticale pi` u probabile per la parola suc- cessiva. Come `e mostrato in Figura 4.21, il sistema predice un sostantivo femminile singolare (m_POS2: SCFS).
Quando l’utente inserir` a il prossimo carattere (come mostrato in Figura
4.22), il predittore possiede quindi la categoria grammaticale (POS) pi` u
Figura 4.21: Fine della prima parola e aggiornamento del predittore.
Figura 4.22: Inserimento del carattere ‘R’.
probabile per la seconda parola, dunque utilizza questa informazione per filtrare i risultati della ricerca nel dizionario. Pertanto le parole suggerite saranno solo dei sostantivi femminili singolari (SCFS).
Dovendo inserire la parola “ragazza”, `e possibile scegliere dunque il terzo suggerimento della WordList. Cos`ı facendo, la seconda parola viene classifi- cata e viene effettuata la ricerca, nella grammatica statistica a triple, della Part-of-Speech pi` u probabile per la terza parola.
Figura 4.23: Scelta del suggerimento “ragazza” dalla Word List.
In Figura 4.23 `e mostrato il caso sopra descritto. Il predittore suggerisce
una preposizione semplice (m_POS3: DS). Volendo scrivere “scrive”, dopo
aver digitato “sc”, il predittore esaurisce i suggerimenti concordanti con la
POS corrente (DS) ed eseguendo la fase di backtracking, propone la succes-
siva POS pi` u probabile (VTN3I). Tale POS identifica un verbo transitivo e
Figura 4.24: Inserimento della parola “scrive”.
Figura 4.25: Scelto il suggerimento “il ”.
permette il suggerimento di “scrive”. A questo punto, la tripla viene aggior- nata, ovvero l’elemento m_POS2 diventa m_POS1 e l’elemento m_POS3 diventa m_POS2. Il predittore esegue la ricerca della successiva POS pi` u probabi- le (un articolo determinativo maschile singolare, m_POS3: DDMS), quindi i suggerimenti sono quelli mostrati in Figura 4.24.
Dopo aver selezionato il suggerimento “il ”, Figura 4.25, il sistema si aspetter` a un sostantivo maschile singolare (m_POS3: SCMS), quindi utilizzer` a questo dato predetto come filtro della ricerca. Il sistema aggiorner` a ancora le triple facendo scorrere gli elementi.
Terminata la composizione della parola “nome”, il predittore rileva che una preposizione semplice `e candidata come POS pi` u probabile. Di conse- guenza il sistema suggerisce le nove preposizioni prima ancora che l’utente inserisca alcun carattere, Figura 4.26.
A questo punto l’utente `e in grado di scegliere il suggerimento desiderato, Figura 4.27.
In Figura 4.28 e in Figura 4.29 `e mostrata la scrittura del resto della
frase e il comportamento del predittore.
Figura 4.26: Composizione del sostantivo “nome”.
Figura 4.27: Scelta la preposizione suggerita.
Figura 4.28: Scrittura della parola “la”.
Figura 4.29: Terminazione della frase.
4.6 Fase di Verifica e Test Effettuati
Per la fase di verifica del sistema sviluppato, sono stati selezionati diversi testi di varie lunghezze a partire da corpus eterogenei. I testi sono stati scritti al fine di poter valutare l’efficacia della predizione misurando i seguenti parametri:
• i caratteri risparmiati: il numero di tasti non premuti grazie al- l’azione di predizione del sistema (parametro noto con il nome di keystroke saving );
• il numero medio di caratteri digitati per visualizzare la pa- rola tra i suggerimenti: la quantit` a media di lettere necessarie ad individuare il termine desiderato nella lista dei suggerimenti;
• il tempo di composizione: tempo necessario a portare a termine la scrittura del testo.
Naturalmente appare chiaro che il numero di keystroke saving risulti esse-
re il parametro pi` u significativo, se pensiamo soprattutto all’uso da parte di
persone disabili. Resta il fatto che i restanti parametri sono fondamentali per
l’analisi dell’usabilit` a dello strumento in vista di un suo futuro ampliamento
ed una configurazione anche personalizzata.
4.6.1 Risultati Ottenuti
La verifica `e stata compiuta su diversi dom`ıni di riferimento: abbiamo effet- tuato una prima serie di test su corpus giornalistico ed una seconda fase di test su un corpus specifico.
Per la prima fase di verifica sono stati sottoposti al predittore testi gior- nalistici 4 . Questi testi sono stati scritti attivando alternativamente nel pre- dittore due diversi dizionari: il vocabolario generale (ITALBASE) e quello di parole “frequenti” (ITAFREQ), rispettivamente di 1.165.000 e 245.000 classificazioni circa.
Analizzando i risultati ottenuti dai test, si `e riscontrato che nel primo caso (dizionario generale) si `e raggiunto una percentuale media di battute risparmiate (keystroke saving) superiore al 30%. Mentre nel caso del dizio- nario ITAFREQ la percentuale si attesta al 20%. Il risultato `e riconducibile al fatto che nel secondo caso le parole sconosciute aumentano ed esse devono essere scritte interamente in quanto non vengono predette. L’utilizzo di un dizionario di minore dimensione rispetto a quello generale permette di velo- cizzare la visita delle risorse linguistiche diminuendo, quindi, il tempo per la predizione. Quindi, se non vi `e la necessit` a di un’ampia copertura del lessi- co, un tal vocabolario appare uno strumento per velocizzare ulteriormente il tempo di scrittura. Il dizionario generale, invece, consente una migliore precisione nell’opera di predizione.
4