Predizione contestuale di termini per fornire

Predizione contestuale di termini per fornire supporto a
studenti disabili
1.
Alberto Zanella
Prof. Marco Ronchetti
Universita` degli Studi di Trento
[email protected]
Universita` degli Studi di Trento
[email protected]
INTRODUZIONE
cursore, le varie barre degli strumenti ecc.), sullo schermo appare
una finestra che elenca una lista di parole suggerite.
Come riportato in [9], ogni volta che l’utente inizia a scrivere una
parola, immettendo la prima lettera, il software filtra l’elenco scartando le parole con iniziali non compatibili. L’elenco di termini
viene quindi aggiornato. Se la parola che si desidera immettere
e` presente nella lista, l’utente la seleziona, altrimenti immette un
secondo carattere e la lista dei termini cambia. Questo processo
continua fino a che la parola e` presente nella lista, oppure fino a
che non sia stata digitata completamente.
In questo lavoro desideriamo presentare il PredictiOnDemand , uno
strumento libero e gratuito, sviluppato per Microsoft Windows, che
offre la previsione delle parole. Esso si rivolge in modo particolare
a tutte quelle persone per le quali, a causa di difficolt`a fisiche o di
apprendimento, l’attivit`a di scrittura e` notevolmente rallentata.
PredictiOnDemand lavora analizzando le lettere che l’utente sta
scrivendo e cerca di indovinare la parola pensata.
Propone quindi dieci possibili scelte, che l’utente potr`a selezionare
con la tastiera oppure con il mouse. Per migliorare la qualit`a dei
suggerimenti proposti, il software osserva fino a tre parole precedenti a quella che si sta scrivendo. Il programma si integra con
diverse applicazioni Windows ed in particolare e` compatibile con
Microsoft Word.
Tornando all’esempio dell’Uomo, in [1] si legge che “la percezione e la selezione delle corrispondenze auditive o grafiche si basa
sul co-testo e sul contesto in cui la parola occorre. [...] Se, per
esempio, in un libro di cucina si incontra la parola astronomia,
l’esperienza del lettore propende per una correzione mentale della
parola in gastronomia, la cui occorrenza in quel contesto e` assai
pi`u probabile.”.
Nella sezione seguente introdurremo il problema della previsione
delle parole e ne spiegheremo l’efficacia per le diverse tipologie
di utenti affetti da disabilit`a o DSA. Seguir`a un escursus dei vari
sistemi con cui, oggi, viene svolta la previsione delle parole ed una
breve recensione delle applicazioni pi`u diffuse. Nelle sezioni 4 e 5
verr`a presentato il PredictiOnDemand e l’algoritmo di predizione
su cui si basa. Nella sezione 6 illustreremo i test e le valutazioni
effettuate. Concluder`a il lavoro la sezione 7.
Come riportato in [5], “il cotesto e` il testo contiguo alla comunicazione (precedente e seguente); esso e` , quindi, un caso particolare di
contesto”. Non ci deve quindi stupire se molti algoritmi di previsione delle parole che analizzeremo nella sezione 3.1 valutano anche i
termini immediatamente precedenti a quello che si e` inserito, al fine di proporre all’utente una lista di possibili parole pi`u vicina alle
sue aspettative.
2.
SISTEMI DI PREVISIONE DELLE PAROLE
2.1 Introduzione al problema
Riguardo al contesto, alcuni algoritmi impiegano dizionari differenti per tipologie di utenti differenti (ad esempio dizionari specifici per le classi elementari, medie o avanzate), oppure specifici per materia (Geografia, Storia, Scienze ecc.). Alcuni prodotti, poi, propongono dei meccanismi “cronologici” (di cache), ossia tendono ad inserire in posizioni pi`u rilevanti, nella lista, parole che l’utente ha gi`a usato di recente. Altri ancora adottano
l’approccio dell’“open dictionary” (a dizionario aperto) permettendo di costruire ed arricchire un dizionario ausiliario di termini
personalizzati.
Mentre legge oppure mentre ascolta una conversazione, l’Uomo ha
la capacit`a di inferire la parola successiva grazie al contesto della
frase, all’argomento del testo o della conversazione. Con un sistema di previsione delle parole si cerca di far svolgere alla macchina
un compito simile.
Per molte persone infatti, come nel caso degli utenti affetti da disturbi specifici di apprendimento o le persone che presentano gravi
difficolt`a motorie, la scrittura pu`o risultare un compito molto arduo.
E´ utile, quindi, un software che cerchi di “indovinare” il termine
pensato dall’utente, per poterlo proporre a schermo, evitando che
questi lo debba scrivere per intero.
Non e` per`o facile per un software individuare l’esatta parola che
l’utente ha in mente. Come nel caso del riconoscimento vocale,
non e` il computer che non e` “bravo” a svolgere questo compito,
e` piuttosto l’Uomo che e` tremendamente capace in questa attivit`a.
Cos`ı, i programmi di previsione delle parole, sviluppati gi`a a partire
dalla fine degli anni ’70, propongono una lista dei possibili termini
da inserire.
Questo genere di programma viene utilizzato in abbinamento ad un
software di videoscrittura. Oltre ai consueti controlli (la pagina, il
Nel prossimo paragrafo daremo una definizione pi`u formale del
problema definendo i termini utilizzati all’interno del testo. Chiuder`a la sezione una panoramica sugli utenti di tali sistemi di
previsione delle parole.
2.2
Definizione formale del problema
Per poter definire meglio il problema e` utile cominciare da un esempio pratico. Ad un qualunque sistema di predizione, in input, verr`a
passato un qualcosa di simile a:
1
E SEMPIO 1.
In termini generali potremmo definire l’ordinamento (in ogni
posizione i della lista) come:
La minestra `
e nel pi
P (wi |c1 . . . cn ) > P (wk |c1 . . . cn )
L’utente desidererebbe completare “pi” con la parola “piatto”.
(1)
per ogni wk presente nel vocabolario e non ancora ordinato. Dove
P pu`o essere una probabilit`a ma anche una funzione di peso.
In base all’algoritmo scelto, la funzione di probabilit`a viene calcolata in modo differente tenendo conto di differenti fattori. Alcuni
algoritmi considerano il contesto (e in questo caso si parla di predizione con contesto), altri invece ignorano tale caratteristica ed
utilizzano per la predizione soltanto la radice inserita (ed in questo caso si parla di predizione senza contesto). Nel caso in cui il
contesto non sia preso in esame la condizione nell’equazione 1 si
semplifica in questo modo:
• L’iniziale (o le iniziali) della parola da completare vengono
chiamate radice o prefisso. Le lettere che compongono la
radice vengono appunto chiamate iniziali. Le iniziali verranno numerate. Nell’esempio “p” e` la prima iniziale ed “i”
e` la seconda iniziale.
Ogni volta che verr`a fatto riferimento genericamente ad “iniziale” (al singolare e senza alcun aggettivo numerale) si intender`a la prima iniziale. Ogni qualvolta verr`a utilizzato
“iniziali”, si intender`a l’intero prefisso.
• Tutto ci`o che precede la parola da prevedere verr`a chiamato
predecessore. Tutto ci`o che segue la parola da predire verr`a
chiamato successore.
P (wi ) > P (wk ), ∀wk ∈ V
(2)
Con V l’insieme dei termini nel vocabolario non ancora ordinati.
Nella sezione 3.1, in cui descriveremo in breve la predizione basata
sui modelli del linguaggio fra i quali quello utilizzato all’interno di
PredictiOnDemand, definiremo in maniera formale una funzione di
probabilit`a adatta all’equazione 1.
Un elemento sempre presente e comune a tutte le tecniche di predizione e` il dizionario (o vocabolario) dei termini. Un sistema pu`o
fare uso di un solo dizionario (a dizionario singolo) o classificare
le parole in base a diversi dizionari (per offrire vocabolari di termini specifici oppure perch´e e` richiesto dalla logica dell’algoritmo
utilizzato). Se il programma prevede che l’utente possa inserire
(in un qualche modo) dei termini si parler`a di dizionario “aperto”
(open dictionary) altrimenti, se il dizionario non consente aggiunte
si parler`a di dizionario “chiuso” (dizionario prefissato o closed dictionary in inglese).
I criteri con cui vengono stabilite le probabilit`a, il contenuto dei vari vocabolari e la scelta del vocabolario pi`u opportuno differiscono
da algoritmo ad algoritmo.
• Predecessore e successore dovrebbero, in base alla definizione comune, definire il contesto. Per maggior chiarezza,
poich´e in generale nessuna tecnica di predizione analizzata in questo lavoro tiene conto del successore, definiamo il
contesto quale sinonimo di predecessore. Nell’esempio il
contesto e` “La minestra e` nel [spazio]”. Come viene fatto
notare esplicitamente, anche lo spazio prima della parola da
prevedere e` considerato contesto.
• Il contesto potr`a essere rappresentato anche da un vettore
denotato dalla lettera c (ad esempio c1 . . . cn ).
• Quando descriveremo in generale la frase all’interno di formule anche la “futura parola” verr`a rappresentata come un
termine (w). Cos`ı il contesto unitamente alla futura parola
sar`a w1 . . . wn in cui w1 . . . wn−1 rappresentano il contesto
mentre wn rappresenta la parola da predire.
• Ove necessario <s> indica il simbolo di inizio frase. </s>
e` invece il terminatore di frase.
Forniremo alcuni esempi di algoritmi di previsione delle parole all’interno della prossima sezione, riguardante lo stato dell’arte. Prima di ci`o, per`o, intendiamo illustrare brevemente perch´e un sistema
di predizione pu`o essere di aiuto ed a chi si rivolge.
• La lista dei termini (o la lista parole) indica la l’elenco di
termini che l’algoritmo offre come completamento della radice. Tale lista comprende termini interi e non suffissi della
radice. Nell’esempio, la lista dei termini dovr`a comprendere
“piatto” e non “atto”.
2.3
Utenti dei sistemi di previsione delle parole
Negli ultimi anni i sistemi di suggerimento, auto-completamento
e previsione delle parole hanno trovato applicazione in dispositivi portatili di uso comune, che non dispongono di tastiera fisica. Esempi di ci`o si possono trovare in palmari, smartphone e tablet con schermo touch. Non e` scopo di questo articolo, tuttavia,
analizzare le applicazioni mobili di questa tecnologia.
Completata la definizione della terminologia di base possiamo
procedere alla definizione del problema.
La previsione delle parole pu`o essere definito come una funzione
che, data in input la concatenazione di contesto e radice, restituisce
in output l’elenco dei termini che hanno inizio con il prefisso dato.
Possiamo considerare come dato in ingresso anche il massimo numero di termini che devono essere contenuti nella lista delle parole
in uscita.
Se ci limitassimo a questo, ed impostassimo il massimo numero di
termini a +∞ il problema si ridurrebbe alla ricerca e al filtraggio
da un dizionario.
Pi`u tradizionalmente, gi`a a partire dalla met`a degli anni ’70, lo studio di algoritmi di previsione delle parole e` iniziato e si e` sviluppato
al fine di favorire l’immissione del testo da parte di utenti disabili
(si veda [16]). In seguito, gi`a dalla prima met`a degli anni ’80 si sono individuate due categorie principali di utenti: persone con limitate e limitatissime capacit`a motorie e persone con disturbi specifici
dell’apprendimento.
Ci`o che caratterizza i sistemi di predizione e` l’ordine con cui le parole vengono presentate all’utente.
Prima di procedere e` doverosa una precisazione: poich´e spesso le
difficolt`a di una persona sono molteplici, o anche conseguenti l’una
2
all’altra, pu`o risultare riduttiva una loro cos`ı netta suddivisione. Si
e` scelto tuttavia di operarla per consentire una maggiore chiarezza
espositiva.
sentono di acquistare a parte) molti dizionari adatti all’et`a della
persona che li impiega (utili in particolare per scuole elementari
e medie).
Le persone con gravi difficolt`a di movimento, gi`a a partire dagli
anni ’80, hanno potuto iniziare a comunicare tramite diversi dispositivi speciali.
Utenti affetti da alcune forme di disabilit`a motoria in grado di impiegare una tastiera, spesso necessitano di alcuni adattamenti. Esistono quindi particolari tastiere che si differenziano dalle tradizionali per dimensioni, costruzione o numero di tasti presenti.
Una alternativa, qualora l’utente non sia in grado di gestire una tastiera, e` l’impiego delle cosiddette “tastiere virtuali”. Queste sono
tastiere a schermo e l’utente pu`o immettere le lettere presenti muovendo un puntatore e selezionando la lettera di suo interesse impiegando il mouse, un joystick una trackball o sistemi di puntamento
facciale od oculare per gestire il puntatore del mouse.
Tuttavia l’efficacia di un sistema di previsione delle parole per queste persone e` molto variabile ed e` fortemente condizionato dalla
gravit`a delle difficolt`a dell’utente nel compito specifico della scrittura.
Come riportato anche in [6], spesso non e` facile valutare a priori l’efficacia di un sistema di predizione. Ad esempio ci si pu`o
rendere conto che per un ragazzo affetto da dislessia e` pi`u faticoso
leggere l’elenco delle parole a schermo (o ascoltarlo recitato da una
sintesi vocale), piuttosto che applicare una correzione degli errori
in seguito alla digitazione del testo. In [6], inoltre, si sottolinea la
necessit`a di prestare molta attenzione in fase di design e di prototipazione dell’applicazione. I sistemi devono essere piacevoli e
facili da utilizzare da parte dei bambini ed anche i vocabolari devono tenere conto delle et`a e delle necessit`a dell’utenza a cui si
rivolgono.
Nei casi pi`u gravi vengono impiegati sistemi di scrittura a scansione con switch: tali sistemi funzionano mostrando sullo schermo la
frase che l’utente sta componendo ed una griglia, contenente le diverse lettere che possono essere aggiunte. Un selettore si sposta di
continuo fra le varie celle della griglia. Quando il cursore si posiziona alla lettera desiderata, l’Utente attiva uno speciale switch
(mediante le palpebre, il fiato, la pressione di un pulsante o altro)
ed il carattere viene aggiunto.
In quest’ultimo caso il sistema di previsione delle parole deve essere integrato nel software di scrittura a scansione, poich´e gli eventuali suggerimenti devono essere inseriti all’interno della griglia di
scansione.
Come vedremo anche nella prossima sezione, in generale i software compensativi pi`u evoluti, che dispongono anche di un sistema
di previsione delle parole non sono disponibili per il mercato italiano. Nel caso di disponibilit`a, non vengono distribuiti con alcun
dizionario dei termini, che dovr`a essere interamente generato dall’utente. Ci`o e` dovuto all’impossibilit`a di localizzare i dizionari
ed i modelli statistici con gli strumenti standard utilizzati per la
traduzione del software.
3. STATO DELL’ARTE
3.1 Diversi approcci per effettuare la previsione delle parole
In tutti questi casi, un sistema di previsione delle parole aiuta l’utente rendendo la scrittura pi`u veloce, poich´e riduce il numero di
tasti da premere o di lettere da selezionare all’interno della griglia
o della tastiera virtuale. Inoltre evita possibili errori di battitura,
con conseguenti ulteriori tasti da premere per la cancellazione e la
correzione. Per questo tipo di utenza, quindi, il sistema aumenta di
efficacia in maniera inversamente proporzionale al numero dei tasti
da premere.
In questa sezione cercheremo di descrivere alcuni fra i principali algoritmi impiegati per svolgere la previsione delle parole. Illustreremo inoltre alcuni algoritmi ancora in fase di ricerca. Nel
prossimo paragrafo illustreremo alcuni fra i principali sistemi di
previsione delle parole oggi in commercio in Italia e nel mondo e
descriveremo, in maniera generica, gli algoritmi impiegati.
Quando si parla di previsione senza contesto possiamo distinguere
due famiglie principali di algoritmi:
I sistemi di previsione delle parole si sono dimostrati un valido supporto anche per le persone con disturbi specifici dell’apprendimento. A differenza del caso delle disabilit`a fisiche, in questa situazione
il predittore aiuta a ricordare l’esistenza delle parole, il loro corretto uso, la loro corretta grafia ed aiuta a prevenire errori ortografici
durante la loro digitazione.
Sistemi a dizionario a singolo termine: Sono l’esempio pi`u tipico e semplice di sistema di predizione.
Questo genere di algoritmi ordinano le parole contenute in
una lista (che pu`o essere arricchita dall’utente) assegnando a
ciascun termine un numero crescente in base al “peso” della
parola. Molto spesso gli algoritmi che si basano su dizionario singolo considerano l’impiego del termine da parte dell’utente quale funzione di peso. Quando l’utente richiede la
predizione le parole vengono proposte a partire da quella con
valore di peso pi`u elevato. Pi`u frequente e` l’uso, maggiore
sar`a il “peso” e dunque pi`u elevata sar`a la posizione della parola all’interno della lista proposta all’utente. Nel caso in cui
una parola inserita dall’utente non sia presente nel dizionario
essa vene aggiunta al vocabolario assegnandovi peso 1.
Inoltre in lingue, come l’inglese, dove il modo di scrivere una parola e` diverso da come viene pronunciata, gli strumenti di Word
Prediction per questa categoria di utenti servono a ricordare la corretta “modalit`a di scrittura” delle parole.
Grazie ad appositi “filtri correttivi” che vengono applicati alla lista
dei termini predetti, alcuni software consentono di selezionare non
solo i termini che iniziano con il pattern scritto dall’utente, ma anche quelli che iniziano con un pattern diverso ma che si pronuncia
nello stesso modo. Un esempio potrebbe essere la parola “Universe”, il predittore la proporr`a anche se l’utente inizia a scrivere
“You”, in quanto il suono della “U” e il suono del dittongo “You”
sono simili.
Uno strumento di predizione standard non risponderebbe a queste
caratteristiche. Solitamente, infatti, sistemi di previsione cos`ı sofisticati sono parte integrante dei software dedicati a persone che
soffrono di questo tipo di disturbi. Tali software integrano (o con-
Analisi della frequenza di prossimit`a fra le lettere: Solitamente
questo sistema viene impiegato nelle griglie oppure in software di tastiera a schermo ridotta (che non contiene tutti i
tasti). L’algoritmo e` utile per stabilire quali tasti siano “importanti” e quali meno. In questo caso non viene creato un
3
Come riportato anche in [8] si e` trovata la possibilit`a di formalizzare il problema della previsione delle parole descrivendolo come la capacit`a di predire una parola wn date le
N − 1 parole precedenti. Un modello del linguaggio (o
modello ad n-grammi) e` una distribuzione di probabilit`a sulle possibili sequenze di termini. Ripartendo dall’equazione
1, vorremmo poter calcolare, basandoci su un modello del
linguaggio, la probabilit`a:
vocabolario ma viene analizzata, all’interno dei testi utilizzati come addestramento, la frequenza di vicinanza fra le lettere
invece che fra le parole. Sistemi evoluti basati su questa tecnica arrivano a costruire dei veri e propri n-grammi (analizzati sotto) sulle lettere invece che sulle parole. Il predittore,
per ogni lettera immessa, suggerisce le lettere successive pi`u
probabili per comporre le parole.
Se invece intendiamo analizzare anche il contesto e` necessario ripensare alla struttura del dizionario, che non potr`a pi`u essere una
lista di termini. Al suo posto dovr`a esserci una lista di coppie di
parole o, nei casi pi`u evoluti, delle strutture dati con pesi (o probabilit`a) o dei modelli statistici. Per costruire questo tipo di strutture
e` necessario processare una gran quantit`a di documenti, non solo
prestando attenzione alle parole che solitamente l’utente impiega
ma anche allo stile. Infatti utilizzando come strumento di analisi
e decisione il contesto vengono analizzate le “vicinanze” (o le distanze) fra i vari termini, che quindi assumono valore in base anche
alla sequenza dei predecessori.
P (wn |w1 , . . . wn−1
(3)
Utilizzando le regole della probabilit`a condizionata possiamo definire:
P (w1 , ..., wn ) =
n
Y
P wk |w1k−1
(4)
k=1
Tuttavia, analizzando tutti gli n − 1 termini che precedono la
parola da prevedere si incorre in un problema: pi`u si allunga la sequenza (pi`u grande e` il contesto), meno e` probabile
che vi siano dei documenti nel corpus di addestramento che
contengano delle frasi identiche a quella che si sta valutando. Per questo si fa uso dell’approssimazione. Ad esempio
si considera solo il predecessore (ed in questo caso si parla
di modello a bigrammi), oppure si considera il primo ed il
secondo predecessore (ed in questo caso si parla di modello
a 3-grammi) ecc.
Sistemi con dizionario a coppie: riprendendo il primo esempio
di algoritmi descritto in precedenza, questo algoritmo invece
di impiegare soltanto un dizionario a singoli termini, impiega
in aggiunta una struttura analoga, che per`o contiene coppie
di due vocaboli. Ogni coppia (come nel caso del dizionario a
singolo termine) ha un valore di peso che pu`o aumentare in
base alla frequenza di utilizzo della coppia stessa.
Ogni qualvolta si renda necessario predire un termine, viene
controllato se la parola precedente compare come primo elemento di una coppia. Tutti i secondi elementi delle coppie
che rispettano questo criterio vengono aggiunti ad una lista.
Vengono quindi proposti i risultati, le cui iniziali corrispondono al prefisso fornito dall’utente, pesati secondo il peso
attribuito a ciascun termine e a seconda della provenienza
(elementi provenienti dalle coppie prima, elementi del dizionario singolo poi).
Nel caso in cui una parola inserita dall’utente non sia presente nel dizionario dei singoli termini o delle coppie essa
viene aggiunta (in unione con la precedente per il dizionario
a coppie).
In [8] e` contenuta una descrizione pi`u approfondita ed estesa dei modelli del linguaggio e delle tecniche per renderli
maggiormente usabili trattando le probabilit`a in essi contenuti. Torneremo nel dettaglio su questo argomento all’interno della prossima sezione in cui descriveremo specificamente l’approccio impiegato all’interno del PredictiOnDemand
per effettuare la previsione delle parole.
Integrare informazioni derivanti dall’analisi del testo (NLP)
con i modelli del linguaggio. In [14], l’autore riporta in maniera dettagliata quali siano i problemi di cui sono afflitti i
moderni sistemi basati soltanto su modelli del linguaggio ad
N-Grammi.
In primo luogo c’`e, come gi`a abbiamo sottolineato in queste
pagine, l’estrema fragilit`a delle applicazioni se utilizzate in
domini differenti da quelli dei documenti di addestramento.
Un secondo problema presentato e` la cosiddetta assunzione
errata di indipendenza. I modelli del linguaggio vengono spesso sottoposti a delle assunzioni di indipendenza, ad
esempio si presuppone che la probabilit`a di una parola in una
frase dipenda soltanto dalle precedenti (n − 1). Eppure spesso questo assunto non rispecchia la realt`a.
Partendo da un assunto falso, e` evidente che un modello statistico ci dar`a dei risultati in cui l’errore e` lontano dallo 0.
Se ci concentriamo nello specifico sull’analisi dei problemi
presenti in un sistema di predizione basato soltanto sui language model, dobbiamo tenere presente che anche il grado
di inflessione di una lingua ne influenzer`a il risultato. Pi`u
una lingua ha forme flesse pi`u sparsa sar`a la probabilit`a fra
di esse: le varie forme dei verbi, i diversi tempi e modi, portano ad una sparsit`a dei dati partendo da qualnuque corpus
letterario.
Molti software che impiegano questa strategia mantengono
dizionari chiusi, non aggiornabili dall’utente, a causa delle
elevate dimensioni e della sparsit`a dei dati di peso a cui il
dizionario a coppie pu`o giungere.
Utilizzo di un approccio basato sui modelli del linguaggio: e`
forse l’insieme di algoritmi pi`u utilizzato per gli applicativi
professionali. Per riuscire a costruire un modello del linguaggio funzionale e` per`o necessario processare un gran numero
di documenti per l’addestramento del modello di un dominio
(argomento) specifico e per una specifica lingua. Tali documenti (chiamati anche corpus), prima di essere processati
per la costurzione del modello devono essere opportunamente filtrati delle parti non necessarie, suddivisi in frasi e convertiti in modo da ottenere il miglior risultato possibile.
Questo lavoro impegnativo rende difficile lo sviluppo di
software di questo tipo disponibili in pi`u lingue.
Come riportato in [10] un modello del linguaggio e` uno strumento in grado di assegnare un valore di probabilit`a ad una
porzione di testo non vista basandosi sulle informazioni ricevute durante l’addestramento.
Si sono ottenuti buoni risultati combinando le tecniche degli n-grammi con il POS-Tagging, arrivando a costruire dei
4
modelli che, al posto delle parole, sono in grado di prevedere, dato uno (o pi`u) elementi del linguaggio (come sostantivi,
articoli, aggettivi . . . ), quale sia il candidato successivo pi`u
valido. In particolare uno studio su questo si pu`o trovare
in [7]. Anche in [4] ci si propone di combinare il risultato
derivante dai Language model con un POS-Tagger.
Ci`o consente di costruire dei vocabolari in base agli elementi del linguaggio e di filtrare con maggior precisione termini che, seppur usati frequentemente, non sono
grammaticalmente corretti nel contesto della frase corrente.
mediante combinazioni tasti oppure, opzionalmente, tramite
i tasti presenti nel tastierino numerico.
Nella versione inglese il programma viene fornito di una lista
di termini e di coppie piuttosto corposo. Nella versione italiana, invece, non e` disponibile alcun dizionario al momento
dell’installazione. Esso deve essere costruito a partire da testi
acquisiti singolarmente.
PenFriend 2 : PenFriend e` un software dedicato ad utenti dislessici che svolge soltanto la funzione di previsione delle parole.
Esso consente all’utente di impiegare l’editor che pi`u preferisce. Il programma fornisce una semplice previsione delle
parole e pu`o essere utilizzato fin da subito, poich´e dispone
di un dizionario italiano gi`a al momento dell’installazione.
In base ad alcuni esperimenti effettuati, sembra che il software si basi su un dizionario delle coppie simile a quello in
adozione per il Kurzweil.
Un altro tentativo di integrazione mediante strumenti tipici
dell’ NLP e` descritto in [17] in cui si cercano di integrare i
modelli del linguaggio con vettori di termini derivanti dalla
Latent Semantic Analysis
Nello studio si assume che il testo che si vuole scrivere sia
semanticamente coerente (i concetti trattati siano semanticamente “vicini”).
L’integrazione pu`o avvenire mediante una cache “semantica”
o mediante diverse forme di interpolazione. I risultati proposti in [17] sono confortanti e dimostrano che tutte le tecniche
di integrazione potranno portare ad un certo miglioramento
rispetto all’impiego dei semplici modelli del linguaggio.
L’aspetto negativo di questo programma e` l’impossibilit`a di
impiegare le shortcut quando la finestra della previsione delle parole e` in funzione (poich´e riserva i tasti F1 . . . F12).
Al contrario molte funzioni sono costruite appositamente per
facilitare lo studente e l’insegnante: le parole inserite vengono pronunciate da una sintesi vocale, e` facile aggiungere
nuovi termini.
Approcci basati sul Machine Learning In [3] viene descritto
come il problema della predizione delle parole possa essere ricondotto ad un problema di classificazione di parole. Si
spiega che la predizione pu`o essere considerata una classificazione in cui diverse parole selezionate sono classificate al
fine di determinare quella pi`u adatta in un dato contesto. [3]
Il sistema, durante l’analisi del corpus per l’addestramento, utilizza tecniche descritte come innovative per estrarre le
diverse parole unitamente ad un insieme di caratteristiche.
L’addestramento alla categorizzazione viene poi svolto mediante SVM. Gli strumenti di categorizzazione delle parole
vengono infine impiegati dal motore per la predizione. [3]
Gli autori in [3] sostengono che il sistema richiede un contesto di non pi`u di 3 parole precedenti alla radice data e che, in
taluni casi, questo metodo ha raggiunto una precisione vicina
al 90% surclassando la maggior parte delle altre tecniche (lo
studio risale al 2006).
3.2
Approfittiamo di questo software per evidenziare un aspetto che, all’interno del nostro progetto, abbiamo tenuto fortemente in considerazione. Il programma in oggetto “ascolta”
i tasti che vengono premuti sulla tastiera e svolge la sua previsione con le coppie in base a questo fattore. Noi riteniamo
ci`o sia una debolezza strutturale del sistema. Infatti, qualora
l’utente muova il mouse o clicchi in un punto dello schermo,
il programma non sar`a pi`u in grado di determinare con certezza la coppia (poich´e non e` pi`u a conoscenza in maniera
certa del predecessore), verr`a quindi svolta una predizione
“a dizionario singolo” a partire dal primo carattere digitato.
Qualora si verifichi la seguente sequenza di eventi: l’utente
inizia una parola – l’utente clicca per qualche motivo un tasto del mouse – l’utente si accinge a terminare la parola, il
software reagir`a con dei risultati di predizione imprevisti ed
errati.
Stato dell’arte dei principali prodotti
destinati all’utente finale
TypingAssistant, di SumitSoft e` un altro esempio di software dedicato esclusivamente alla predizione. E` disponibile in pi`u
lingue fra cui l’Italiano, e` gi`a dotato di un proprio dizionario dei termini al momento dell’installazione. Come il precedente, il programma permette la predizione all’interno di
qualunque programma poich´e “ascolta” i tasti.
Kurzweil 3000 1 .: Il Kurzweil 3000, prodotto da Kurzweil Educational Systems di Cambium Technology, e` un software compensativo per la lettura e scrittura, adatto a persone con disturbi specifici dell’apprendimento, in particolare ad utenti
affetti da dislessia (e/o disgrafia).
Esso e` davvero molto ricco di funzionalit`a, fra cui un word
processor con molti strumenti per aiutare l’utente nell’immissione del testo. Soltanto all’interno di questo speciale
editor vocalizzato, e` possibile richiamare la funzione di predizione delle parole. Questa si basa su dizionario a singolo
termine e dizionario delle coppie pesati.
Una finestra spostabile contiene la lista di dieci termini. E´
naturalmente possibile modificare il numero di parole contenute nella lista. La finestra di predizione pu`o essere liberamente sovrapposta o affiancata a quella del word processor interno. L’inserimento della parola desiderata si effettua
cliccando sul relativo pulsante indicante il numero di scelta,
Una volta attivato il software, l’icona relativa compare nella
barra di notifica di Windows, cliccandovi sopra e` possibile
modificare diverse opzioni del programma (fra cui le applicazioni in cui e` richiesta / non e` richiesta la previsione delle
parole). Anche se il programma lavora con le diverse applicazioni, esso non pare riconoscere le varie tipologie di controlli e quinidi offre predizione anche in assenza di un campo
di testo. Ad esempio in Paint, premendo lettere sulla tastiera come fossimo nella finestra di un qualche editor, compare
comunque la lista delle parole. Abbiamo riscontrato la stessa
anomalia anche con Penfriend.
Da una rapida analisi, seppur non siamo stati in grado di aprire esplicitamente i file di vocabolario, ci pare che venga utilizzato un dizionario aperto a singolo termine. Inoltre non ci
1
Kurzweil 3000 – Kurzweil Educational Systems – http://
www.kurzweiledu.com/
2
5
Penfriend – Penfriend Ltd – http://www.penfriend.biz/
sembra che il dizionario delle parole sia pesato secondo la
frequenza ma, piuttosto, che venga utilizzato l’ordinamento
alfabetico.
La predizione viene effettuata con lo strumento WordPredictor che offre il supporto al contesto (considerando fino a
3 parole precedenti alla parola che si sta scrivendo). L’approccio e` basato sull’analisi della frase e sui modelli del linguaggio. Le modalit`a di presentazione dell’elenco parole sono le medesime di Co:Writer. Al contrario di quest’ultimo
Read&Write non supporta la scrittura a scansione.
I dizionari offerti sono specifici per le varie et`a dell’utente
ed e` possibile costruire nuovi vocabolari. Sono scaricabili
dal sito del produttore dizionari specifici anche se in numero
minore rispetto a quelli offerti dal Co:Writer.
Click-N-Type3 e` un software completamente gratuito di tastiera
a schermo molto potente e completo, destinato ad utenti con
difficolt`a motorie. Il software integra un sistema di predizione delle parole privo di contesto a dizionario singolo pesato.
Al momento dell’installazione e` gi`a disponibile un dizionario
di base per la lingua italiana.
Concludiamo questa sezione proponendo una rapida descrizione di
due software. Essi sono gli strumenti pi`u apprezzati per persone
affette da DSA, disponibili per il mercato americano. I dati relativi alla loro completezza sono stati riportati nel dettaglio in [2].
Entrambi non sono disponibili in Italiano e per questo motivo li
poniamo al termine della trattazione.
4.
IL MOTORE DI PREDIZIONE DEL
PREDICTIONDEMAND
NGPredictor, componente fondamentale della libreria Predictors 6 ,
e` il motore di previsione delle parole del PredictiOnDemand. Essa e` una libreria software libera, disponibile sotto licenza LGPL.
Svolge il lavoro di previsione delle parole basandosi su modelli del
linguaggio convertiti nel formato proprio peddb (modelli del linguaggio convertiti in basi di dati SQLite3). Essa pu`o anche essere
impiegata in modo indipendente e gratuito per altri progetti che
richiedono un servizio di previsione delle parole.
Co:Writer 4 : e` un software compensativo per la scrittura che
comprende un evoluto sistema di predizione delle parole, integrato perfettamente con le principali applicazioni per Windows e Mac OS X. Esso supporta una predizione basata sul
contesto. Viene fornito gi`a con dizionari di parole, sia per
usi generici che per usi specifici. L’assortimento e` davvero
ricchissimo e consente di operare anche con pi`u dizionari simultaneamente durante la costruzione di un testo.
Il software fa uso di language model e di analisi sintattica
della frase inserita (secondo quanto dichiarato dallo stesso
produttore). La configurazione e` ricca e permette una rapida
creazione di nuovi dizionari a partire da testi scelti dall’utente. Oltre a questo presenta delle funzioni avanzate per utenti
di lingua inglese, come la correzione fonetica (descritta nella
sezione precedente).
Sono anche individuate le forme verbali pi`u opportune all’interno della frase che vengono ordinate nella lista dei termini
pi`u in alto rispetto alle altre.
La predizione avviene mediante una finestra a scomparsa che
si colloca nelle vicinanze del punto di inserimento in cui e`
presente il cursore. E` possibile scegliere la parola da inserire mediante il click del mouse, tramite combinazione di
tasti oppure utilizzando un sistema a switch (supporto per
l’inserimento con scansione).
4.1
Una previsione basata sui modelli del
linguaggio
Come descritto nella sezione precedente, un sistema di previsione
delle parole basato sui modelli del linguaggio e` un sistema che,
partendo da un insieme di documenti di addestramento procede
alla costruzione di un modello statistico. Tale modello verr`a poi
consultato dall’algoritmo che, basandosi sui dati statistici in esso
contenuti, proceder`a ad effettuare la previsione delle parole.
Il primo passo quindi, in ogni caso, e` la costruzione del modello
del linguaggio e l’inserimento in una base di dati su file, facile da
consultare. Prima di entrare nel dettaglio, illustrando le modalit`a
in cui e` stato costruito ed impiegato il modello del linguaggio per
offrire il servizio di predizione, ci pare conveniente sottolineare, in
linea generale, le caratteristiche dell’attuale sistema risultante.
• Sistema in grado di prevedere il termine osservando un
contesto fino a 3 parole precedenti a quella che si vuole
completare;
Read&Write 5 e` un software compensativo completo sia per la
lettura che per la scrittura supportato dai principali produttori
di software. L’interfaccia del programma e` incentrata intorno
alla barra degli strumenti Read&Write, collocata nella parte
alta dello schermo e sempre in primo piano.
• Sistema in grado di prevedere i termini anche in base alla
punteggiatura;
• Analisi del testo da prevedere: non viene tenuto in considerazione il contesto qualora ci si trovi ad inizio frase (delimitata
da un segno di punteggiatura che lo indichi);
Gli strumenti per la scrittura sono davvero molti. Si integra
perfettamente con i principali editor per Windows e per Mac
OS ed offre funzionalit`a simili a quelle presenti in Co:Writer.
In pi`u, rispetto a quest’ultimo, presenta l’inserimento guidato parole (WordWizard) che guida l’utente nella scelta di termini che “suonano” simili (appaiono simili quando vengono
pronunciati). Inoltre presenta un dizionario dei sinonimi ed
uno strumento di traduzione.
• Accorpamento di dati impredicibili come numeri, gradi
centigradi, ore e date;
• Sistema addestrabile per lingue diverse dall’italiano;
• Sistema a dizionario chiuso (al momento non e` in grado di
apprendere nuovi termini);
• Sistema di medie dimensioni (al momento la dimensione del
database su file e` di circa 400MB);
3
Click-N-Type – cnt.lakefolks.com
Co-Writer
–
http://www.donjohnston.com/
products/cowriter/index.html
5
Read&Write di TextHelp http://www.texthelp.com/
UK/Our-products/Readwrite
4
6
Predictors – Parte del progetto PredictiOnDemand e` software libero. http://latemar.science.unitn.it/pod/
predictors.html
6
• Sistema che non richiede particolare memoria RAM per
operare (seppur e` consigliato non impiegarlo in macchine
sottodimensionate).
4.2
Seppure siamo consci che questo script sia ben lontano dal risolvere o coprire i molti problemi di ambiguit`a della lingua italiana
(o inglese), abbiamo ritenuto comunque interessante procedere alla
costruzione di un modello statistico.
Terminato il processo sopra descritto, si ottiene in output un file
pronto per essere impiegato da un tool per la costruzione di un
modello del linguaggio.
Costruzione del modello del linguaggio
Il primo passo e` l’individuazione di un corpus esteso che comprenda molti vocaboli e sia il pi`u possibile corretto a livello sintatticogrammaticale. Per questo, e per il fatto che e` disponibile in diverse
lingue, compreso l’italiano e l’inglese, abbiamo optato per il corpus
contenente gli atti del Parlamento Europeo (europarl) [11].
Per la nostra applicazione abbiamo impiegato lo SRI Language
Model Toolkit [15]. La prima cosa che viene fatta e` la costruzione del vocabolario. In pratica, in questa fase, vengono inserite una
sola volta ed in ordine alfabetico in un file tutte le parole presenti nel file corpus.txt. Il vocabolario cos`ı ottenuto viene processato
manualmente per eliminare eventuali parole di refuso che sono rimaste anche dopo l’esecuzione dei passi di pre-processamento del
corpus sopra descritti.
In secondo luogo abbiamo suddiviso i documenti fra quelli di addestramento (training set) e quelli destinati alle valutazioni automatiche, descritte nella sezione 6.3 (test set). Come training set
abbiamo scelto tutti i documenti a parte quelli dell’anno 2000 (che
costituiscono l’insieme dei documenti per i test).
Il modello del linguaggio che vogliamo costruire si caratterizza per
essere:
Si e` proceduto poi alla scrittura dello script Python (mkcorpus ita.py) per la costruzione del documento di training da passare al software per la creazione dei modelli del linguaggio. Tale
script, oltre a concatenare tutti i documenti di addestramento nel
file corpus.txt, applica i seguenti filtri:
Closed Dictionary: in modo tale che eventuali termini fuori dal
vocabolario, che abbiamo controllato manualmente, non
vengano elaborati all’interno del modello;
Modello a 4-grammi con Back-Off: significa che il modello dovr`a considerare sequenze di al massimo 4 parole. Ci`o consente una predizione osservando al massimo 3 parole del
contesto.
Con back-off, significa che dovranno essere comprese all’interno del modello anche le sequenze di 3, 2 ed 1 termine (con
relative probabilit`a). Cos`ı, nell’assenza di un 4-Gramma sar`a
possibile “retrocedere” al trigramma relativo e cos`ı via (per
approfondire si veda [8]). In estrema sintesi il back-off e` la
capacit`a di poter impiegare un contesto “pi`u piccolo” nel caso non vengano trovate sequenze compatibili con il contesto
attuale. Se, ad esempio, la previsione viene al momento fatta
basandosi su un contesto di 3 parole ma nessun risultato e`
compatibile con le iniziali date e` possibile scartare il predecessore pi`u “lontano” e considerare solo gli ultimi 2 termini
(backoff).
• L’intero testo viene convertito tutto in minuscolo (in modo,
ad esempio da evitare possibili doppioni fra parole scritte con
iniziale maiuscola o meno).
• Dal testo vengono eliminate tutte le informazioni strutturate,
come i nomi dei vari relatori, i ruoli ecc. Vengono inoltre eliminati i riferimenti. Questo lavoro viene svolto eliminando
tutto ci`o che si trova fra parentesi quadre, tonde ed angolari;
• Il testo viene tokenizzato manualmente. La punteggiatura
viene “spaziata” in modo tale che anche le virgole, i simboli,
i trattini ecc. vengano considerati come delle “parole” all’interno del modello. Vengono inoltre applicati particolari filtri
per le virgolette (”);
• Sono eliminati i \n. Le parole ., ?, !, :, le chiuse virgolette seguite da un punto e le chiuse virgolette precedute
da un punto vengono considerati fine frase. Vengono quindi
aggiunti gli identificatori di fine frase dopo di essi, il carattere nuova riga e il carattere di inizio frase. Il modello del
linguaggio infatti riconosce i predecessori solo all’interno di
una frase e non concatenando le frasi. Questo al fine di evitare che vengano raccolti dati errati, calcolando dati probabilistici su sequenze di parole che comprendono, ad esempio,
gli ultimi termini di una frase ed il primo di una frase nuova.
Con Smoothing: (si veda [8]), in particolare si e` usato il KSSmoothing. Semplificando, ci`o ci consente di assicurare che
tutte le parole all’interno del vocabolario abbiano una probabilit`a maggiore di 0 di comparire e che il valore di probabilit`a venga “normalizzato”. Ci`o e` necessario soprattutto in lingue flesse come l’Italiano, dove la distribuzione e`
particolarmente sparsa;
Tutte queste caratteristiche sono specificate, in forma di parametro,
al tool di costruzione dei modelli del linguaggio che restituir`a in
output un file contenente il modello in formato lineare (standard
ARPA).
• Viene svolto un piccolo clustering per quello che riguarda le
date (che sono convertite in #DATE), gli anni (#YEAR), le
ore (#HOURS), i gradi (#DEGREE). Poich´e e` inutile mantenere delle statistiche sui numeri (sulle cifre) dato che e` fortemente improbabile che un utente voglia inserire lo stesso
numero che viene riportato in un testo del corpus, si e` deciso
di sostituire tutti i numeri con #NUMBERS;
Al fine di rendere efficacie la previsione delle parole e` necessario
convertire tale file in una struttura relazionale. Abbiamo deciso di
impiegare SQLite 3. Le relazioni contenute all’interno del database
su file SQLite, supponendo di avere un modello a 4-Grammi sono
le seguenti:
• Vengono poi svolte conversioni e filtraggi minori;
• Infine sono tenute in considerazione per il corpus solo frasi
composte da almeno k termini, dove k e` impostato, di default,
ad 8.
• vocab(rowId,word) – Rappresenta il vocabolario e
contiene l’elenco delle parole;
7
• ng1(rowId,w1,p,b) – Contiene le sequenze di unigrammi con le loro probabilit`a;
In output viene restituita la lista parole.
Inizialmente siamo partiti da un algoritmo piuttosto semplice:
• ng2(rowId,w1,w2,p,b) – Contiene le sequenze di
bigrammi con le loro probabilit`a;
1. Si spezza la stringa in ingresso in base agli spazi. Le prime
n − 1 parole sono il contesto, l’ultima parte e` la radice;
• ng3(rowId,w1,w2,w3,p,b) – Contiene le sequenze di
3-grammi con le loro probabilit`a;
2. Il testo passato come parametro viene convertito tutto in minuscolo e si applica un filtro al contesto simile a quello impiegato per il processamento del corpus. Sono aggiunti i
simboli di inizio frase;
• ng4(rowId,w1,w2,w3,w4,p,b) – Contiene le sequenze di 4-grammi con le loro probabilit`a,
In cui w1,w2,w3,w4 rappresentano i rowId delle varie
parole, p rappresenta la probabilit`a della sequenza (dell’nGramma) mentre b rappresenta una probabilit`a aggiuntiva
utile per il calcolo del back-off.
3. Si procede interrogando il database richiedendo quali siano
i successori delle ultime tre parole del contesto che iniziano
con la radice;
4. Se non ve ne sono si calcola il back-off a partire dal contesto
e si interroga la tabella contenente la classe inferiore di Ngrammi. Tutti i termini estratti da questa tabella avranno la
probabilit`a modificata (viene aggiunto il back-off).
rowId e` un campo inserito in automatico da SQLite per garantire
comunque la presenza di una chiave univoca per riga. Il rowid
della tabella vocab viene impiegato come identificatore univoco
di una parola per evitare di riscriverla all’interno delle tabelle ng#.
In questo modo gli N-grammi sono composti da una sequenza di
interi, i rowId corrispondenti alle parole nella tabella vocab. Ci`o
consente un notevole risparmio di spazio.
5. Si ordinano i primi k elementi (dove k e` PredictionSize) in
base alle loro probabilit`a e si restituiscono.
L’algoritmo cos`ı creato a nostro avviso ha due lacune:
Il programma dedicato alla conversione del file ARPA in questa
struttura e` stato scritto da noi e si chiamaSqlitegen.
Tale software non e` dipendente dal modello del linguaggio utilizzato e pu`o essere impiegato, senza nessuna difficolt`a, anche per il
processamento di modelli di classe diversa da quello a 4-grammi
attualmente testato.
• Anzitutto non viene considerato il caso in cui il numero di termini proposti, dato un contesto, sia inferiore a
PredictionSize.
• In secondo luogo ad ogni lettera immessa dall’utente viene
lanciata una nuova query sul database. Ci`o allunga molto i
tempi necessari alla predizione.
Il programma si occupa anche della costruzione degli indici (indexes) utili per garantire maggiori performance nel database su file.
Il sistema viene implementato in SQLite3 tramite alberi binari di
ricerca.
Anzitutto va detto che la ricerca mediante rowId e` molto veloce
proprio perch´e, di default, viene creato un indice su questo campo.
Inoltre sono creati in modo automatico indici anche per le chiavi
primarie.
Seppur non siamo ancora entrati nel dettaglio dell’algoritmo di predizione, e` facile intuire che la chiave di ricerca utilizzata di frequente sar`a la sequenza di n − 1 termini del contesto (nel caso delle tabelle ng#). Tale sequenza costituisce un indice per queste tabelle.
Nel caso invece della tabella del vocabolario verr`a creato un indice
per le parole (word) in modo da poter risalire a partire da una parola, in maniera molto rapida al suo indice. Come detto il vice-versa
e` gi`a implementato in automatico da SQLite.
• La dimensione (PredictionSize) dell’elenco parole da proporre in output (che in realt`a viene dato come input al
costruttore della classe ed e` una propriet`a modificabile);
Per risolvere questi problemi si e` deciso di modificare l’algoritmo
precedente.
Al fine di comprendere meglio i cambiamenti apportati, prima di
descrivere i passi, preferiamo riprendere l’esempio 1. In tal modo
risulter`a pi`u semplice comprendere le migliorie. L’utente la prima
volta passer`a all’algoritmo “La minestra e` nel p”.
L’algoritmo osserva il contesto, “minestra e` nel” e la radice “p”
(4 parole perch´e usiamo i 4-grammi). Procede quindi ricercando
all’interno del database tutti i possibili risultati. Supponiamo
che la PredictionSize sia impostata a 10 ma che vi siano solo 8
quadrigrammi di sequenze “minestra, e` , nel,start(p)”.
In questo caso il sistema osserva che il numero di termini che si
vogliono restituire e` inferiore alla PredictionSize e che e` possibile
ancora fare back-off (non siamo ancora arrivati agli unigrammi).
Se fossimo arrivati agli unigrammi si arrenderebbe e restituirebbe
una lista inferiore alla PredictionSize.
Si pu`o ancora tornare indietro e si procede al back-off. Considerando semplicemente “`e, nel, start(p)” (trigrammi) abbiamo
22 risultati.
Inseriamo anche questi ultimi nella lista precedente ottenendo cos`ı
un insieme di 30 risultati, molto maggiore di quanto richiesto dalla
PredictionSize.
Ordiniamo quindi la lista in base alle probabilit`a (ricalcolando
quelle dei termini che hanno subito il processo di back-off).
Restituiamo quindi i primi 10 elementi della lista.
• Il percorso (path) del database del modello del linguaggio
(che in realt`a viene dato come input al costruttore della
clasee);
L’utente non trova il termine desiderato (“piatto”) in lista e procede scrivendo una nuova lettera (la “i”). L’algoritmo riceve di nuovo
4.3
NGPredictor, l’algoritmo di predizione del
PredictiOndemand
L’algoritmo di predizione e` costituito da una classe il cui metodo
principale e` “predict” che prende in ingresso:
• La stringa di testo scritta fin’ora (comprendente la parola da
completare);
8
tutta la stringa: “La minestra e` nel pi”.
Questa volta per`o osserviamo che il contesto e` rimasto invariato e
che la radice inizia con la radice precedente. Possiamo quindi gi`a
produrre la lista dei termini provenienti dai quadrigrammi e dai trigrammi che inizia con “pi”, dato il contesto, senza la necessit`a di
interrogare il database.
Infatti se prima abbiamo richiesto ed ordinato tutti i termini dei
quadrigrammi e dei trigrammi che iniziano con “p” dato il contesto, quello che possiamo ottenere richiedendo tutti i termini che
iniziano con “pi” e` un sottoinsieme del risultato precedente.
6. Vengono restituiti, al pi`u, i primi k elementi della lista, con
k = P redictionSize.
E´ importante notare che il motore di predizione NGPredictor funziona con qualunque modello creato da Sqlitegen. Esso individua in automatico la massima classe degli n-grammi disponibili
nel database SQLite. Ci`o potr`a essere impiegato per futuri sviluppi
o test con modelli di classi diverse.
All’interno di questo testo, come nella descrizione generica dell’algoritmo, si e` sempre supposto di lavorare con un modello a
4-grammi.
Supponiamo ora che la lista cos`ı filtrata abbia ancora solo 8 risultati. Quello che facciamo e` retrocedere direttamente ai bigrammi. La
probabilit`a di back-off va sommata alla precedente (che ci ha fatto
passare dai 4-grammi ai 3-grammi). Produciamo quindi la nuova
lista e aggiorniamo le probabilit`a. Il procedimento continua fino a
quando il contesto non e` pi`u uguale al precedente o la radice salvata
non e` pi`u una sottostringa della nuova radice.
In questi casi la predizione ricomincia e tutti i dati salvati vengono
azzerati.
5.
Il PredictiOnDemand 7 e` uno strumento di previsione delle parole libero e gratuito, distribuito con licenza GPL e disponibile per
l’ambiente Microsoft Windows XP/Vista e Windows 7.
Esso e` stato sviluppato per venire incontro a tutte le persone
con difficolt`a motorie e con disturbi specifici dell’apprendimento ed e` compatibile con moltissime applicazioni Windows. Lavora suggerendo dei possibili completamenti al termine che si sta
scrivendo.
Riprendiamo quindi l’algoritmo precedente. Vengono aggiunte alcune variabili locali per memorizzare il precedente contesto, la precedente radice, una lista completa dei (nell’esempio i 30) termini
predetti in precedenza.
Inoltre sono aggiunti:
Caratteristica fondamentale e vero valore aggiunto del programma e` la predizione non pi`u basata sull’“ascolto dei caratteri”, ma,
piuttosto sul tracciamento in tempo reale della posizione del cursore impiegando tecnologie simili a quelle gi`a in uso per altri software assistivi come Screen reader e strumenti ingrandenti. Il sistema inoltre offre una predizione “su richiesta”, ossia si attiva solo
quando serve, mediante la semplice pressione di un tasto, oppure
cliccando con il mouse.
ushort toExplore – che contiene la classe di N-Grammi da
visitare;
double backoff – che contiene l’attuale back-off eventualmente da sommare alla probabilit`a originale dei
termini;
Il programma pu`o essere impiegato in modo ottimale sia con tastiera e mouse in configurazione congiunta (ad esempio da utenti
affetti da dislessia), ma anche soltanto con il puntatore del mouse
(gestito tramite mouse. joystick o altro), soltanto con la tastiera
oppure mediante touch screen.
I passi 1 e 2 restano invariati rispetto all’algoritmo precedente.
3. Si controlla se il contesto corrente corrisponde al contesto
memorizzato e se l’ultima radice inizia con la radice memorizzata. Se questo non e` vero si seguono i passaggi in 4 e poi
in 6, altrimenti si seguono quelli in 5 e poi in 6;
4.
Nei prossimi paragrafi offriremo una panoramica completa sul programma e sul suo funzionamento. Inizieremo presentando l’interfaccia del programma per poi focalizzarci sul suo uso, sia da
parte degli utenti con disturbi di apprendimento sia per le persone
con difficolt`a motorie. Concluder`a la sezione una breve trattazione
tecnica sul funzionamento del PredictiOnDemand .
(a) Vengono reinizializzate tutte le variabili sopra descritte;
(b) Viene effettuata una prima ricerca all’interno del database sulle sequenze di 4-grammi come nell’algoritmo
precedente.
5.
PREDICTIONDEMAND:
INTERFACCIA UTENTE ED UTILIZZO DEL
PROGRAMMA
(c) Se il numero dei risultati e` inferiore a PredictionSize
viene calcolato il back-off ed aggiornata la relativa variabile d’istanza. Si continua in questo modo fino a che
si raggiunge (o si supera) la PredictionSize o fino a che
non si arriva agli unigrammi;
Per maggiori dettagli sull’impiego pratico si invita a consultare il
manuale d’uso del programma, disponibile all’interno del sito web
del progetto.
(d) Si ordina la lista dei termini in base alle relative
probabilit`a.
Il PredictiOnDemand non dispone di alcuna interfaccia particolare
al di fuori della finestra di elenco parole, che pu`o essere attivata su richiesta dell’utente. Il PredictiOnDemand e` rivoluzionario
perch´e non assilla l’utente con finestre di predizione che compaiono e scompaiono di continuo. Esso si attiva, come dice il nome,
soltanto quando l’utente lo desidera.
Il PredictiOnDemand non ostacola l’utente: nessuna combinazione di tasti impiegata dal PredictiOnDemand va in conflitto con al-
5.1
(a) Si filtra la lista predicted in base al nuovo prefisso.
(b) Se la lista e` di dimensioni minori di PredictionSize, se
toExplore e` maggiore di 1, e quindi non si e` ancora arrivati agli unigrammi, si procede alla ricerca sul
database ed al back-off. I nuovi termini vengono aggiunti alla lista e questa viene riordinata in base alle
probabilit`a.
Introduzione al PredictiOnDemand
7
PredictiOnDemand – PredictiOnDemand e` un progetto libero.
http://latemar.science.unitn.it/pod/
9
tre e non viene riservato alcun tasto funzione. Quando e` visibile la
schermata dell’elenco parole, l’unica sezione della tastiera riservata e` il tastierino numerico. E´ sufficiente chiudere la finestra (anche
focalizzando un altro controllo) per liberare immediatamente il tastierino numerico che ritorner`a alle sue funzioni classiche.
Il PredictiOnDemand supporta e si integra con moltissime applicazioni Windows, fra cui Microsoft Word. il pi`u utilizzato elaboratore
di testi in ambiente Windows.
Questa innovazione consente di arricchire l’esperienza d’uso di chi
desidera la predizione con gli altri importanti servizi gi`a presenti
in editor di testi molto evoluti. Ad esempio e` possibile impiegare
il predittore all’interno di Microsoft Word, che contiene uno straordinario strumento per la segnalazione e la correzione degli errori
ortografici e grammaticali.
Al primo avvio il programma aggiunge la sua icona all’interno della
barra delle notifiche di Windows (vedi Figura 1).
Figura 2: Predizione all’interno di Microsoft Word, visibile
sulla sinistra l’elenco parole
Figura 1: Icona di PredictiOnDemand nella barra di notifiche
Quando l’utente si trova su un’area di testo, pu`o attivare la previsione delle parole facendo doppio click sull’icona nella barra delle
notifiche oppure premendo due volte il tasto “SHIFT” sulla tastiera
del computer. Non e` importante che le due pressioni siano veloci,
l’importante e` che non vengano frapposti altri tasti tra le due pressioni del tasto “SHIFT”. Non e` considerato valido neanche l’impiego del tasto SHIFT in combinazione con altri tasti (ad esempio per
ottenere lettere maiuscole). In questo modo si riduce al minimo il
rischio di un’attivazione involontaria del programma.
Quando viene attivato, il PredictiOnDemand determiner`a la posizione attuale del cursore e verificher`a se l’applicazione sia compatibile con il sistema di previsione delle parole. Se l’applicazione
non e` compatibile, a schermo verr`a mostrato un messaggio di errore.
Al contrario, in caso di compatibilit`a, verr`a mostrata la finestra di
elenco parole (visibile in Figura 2), contenente dieci spazi per i
suggerimenti.
Figura 3: Predizione all’interno di WordPad impiegando una
tastiera virtuale, visibile sulla sinistra l’elenco parole
E´ presente inoltre una terza modalit`a di inserimento parole impiegabile dagli utenti affetti da particolari forme di disabilit`a motoria
che non sono in grado di gestire il puntatore del mouse e non dispongono di una tastiera con tastierino numerico. Se viene premuto
due volte il tasto “SHIFT” quando la finestra di elenco parole e` visibile sullo schermo, il focus verr`a automaticamente spostato sulla
finestra di elenco parole. Sar`a quindi possibile selezionare il termine di proprio interesse digitandone il numero (dall’1 allo 0) impiegando i tasti numerati presenti sulla tastiera alfanumerica standard.
Dopo l’inserimento, il focus verr`a automaticamente riportato sul
testo e posizionato al termine della parola inserita.
La finestra rimarr`a sullo schermo fino a quando l’utente non la chiuder`a manualmente o finch´e il focus non verr`a spostato su un altro
controllo (un men`u, un pulsante, un’altra applicazione ecc.).
Il sistema integrato nel PredictiOnDemand monitora in tempo reale
il testo presente sullo schermo e la posizione del cursore. In questo
modo e` possibile avere un aiuto sempre contestualizzato, non solo
se scriviamo alla fine del testo, ma anche quando aggiungiamo parole all’interno di testo gi`a presente.
Ogni volta che l’utente digita una lettera, i suggerimenti contenuti nella finestra dell’elenco parole saranno adattati alle iniziali
digitate.
Il PredictiOnDemand e` compatibile con le principali tastiere a
schermo e ci`o consente una sua piena gestione mediante puntatore
del mouse o touch screen (vedi Figura 3). E´ possibile utilizzare la
tastiera virtuale per inserire il testo, quando un termine e` presente
all’interno dell’elenco parole lo si pu`o scegliere normalmente con il
puntatore del mouse. Dopo la scelta il focus verr`a automaticamente
riportato sulla tastiera virtuale.
Qualora, all’interno della lista, sia presente il termine di proprio interesse, sar`a sufficiente selezionarlo, cliccandoci sopra o cliccando
sul pulsante numerato alla sinistra del termine. In alternativa, per
gli utenti da tastiera, e` possibile impiegare il tastierino numerico.
In questo caso il tasto 1 selezioner`a il primo termine, il 2 il secondo ecc., il tasto 0 selezioner`a il decimo termine.
Un’ultima funzione interessante e` relativa allo spostamento automatico dell’elenco parole. Poich´e viene monitorata in tempo reale
la posizione del cursore, il programma si rende conto in modo auto10
matico quando il cursore e` sovrapposto alla finestra di elenco parole. In questi casi la finestra si sposta automaticamente consentendo
all’utente di vedere sempre la parola su cui sta lavorando.
5.2
Personalizzazione del PredictiOnDemand
Il PredictiOnDemand permette la completa personalizzazione dell’elenco parole. Possono essere modificate le dimensioni ed il tipo
di carattere, al fine di rendere il software pi`u adatto alle proprie esigenze. Ad esempio un utente che lavora con il mouse ma che soffre di difficolt`a nel puntamento, potr`a scegliere una dimensione dei
caratteri maggiore, in modo da rendere pi`u ampia l’area su cui portare il puntatore per cliccare. Un utente di tastiera virtuale, invece,
vorr`a una finestra di elenco parole di una dimensione compatibile
con la tastiera a schermo, in modo da avere abbastanza spazio per
lavorare. I colori ed i tipi di carattere sono un aspetto spesso poco
curato, tuttavia possono rendere pi`u gradevole l’utilizzo agli utenti,
in particolar modo ai bambini.
Figura 4: Predizione all’interno di WordPad impiegando una
tastiera virtuale, visibile sulla sinistra l’elenco parole
Le opzioni possono essere modificate mediante il men`u attivabile
cliccando con il tasto destro del mouse sopra all’icona del PredictiOnDemand . Per gli utenti da tastiera, e` possibile attivare il men`u
contestuale premendo due volte il tasto “SHIFT” quando la finestra di elenco parole e` visibile a schermo. A questo punto premere il tasto “Men`u contestuale” ed utilizzare le frecce per spostarsi
all’interno del men`u.
Quella che segue e` una descrizione generica del funzionamento del
PredictiOnDemand , per i dettagli implementativi si rimanda al sorgente del programma, liberamente disponibile all’interno del sito
web del progetto.
1. Quando viene avviato il PredictiOnDemand si mette in
ascolto di tutti i tasti premuti utilizzando un Hook di sistema;
Tutte le configurazioni vengono mantenute fino all’uscita del programma. E´ tuttavia possibile salvare le impostazioni in modo da renderle permanenti. L’opzione di salvataggio e` presente
all’interno del men`u contestuale.
5.3
2. Nel momento in cui viene premuto due volte il tasto “SHIFT”
sulla tastiera, viene controllato tramite UIAutomation se il
controllo dell’applicazione focalizzata e` un controllo dove
inserire testo, se ha un appModule specifico o se comunque
e` supportata da UIAutomation stesso;
Applicazioni compatibili con il PredictiOnDemand
3. In caso affermativo viene mostrato l’elenco parole. Se esiste
un appModule specifico, questo verr`a impiegato per estrarre il testo che precede il cursore dal programma, altrimenti
questa operazione verr`a svolta mediante UIA;
Il PredictiOnDemand e` compatibile con moltissime applicazioni
Windows. Per dialogare con le applicazioni esso utilizza la nuova tecnologia per l’accessibilit`a di Microsoft: Microsof UI Automation. In questo modo il numero di applicazioni supportate e` in
continua crescita.
4. Ogni volta che l’utente preme un tasto l’hoock software lancia un evento, il PredictiOnDemand aggiorna il testo che
precede il cursore e lo invia all’NGPredictor;
Oltre a ci`o e` possibile costruire moduli specifici (appModule) per
dialogare con singole applicazioni. Fin’ora e` presente soltanto il
modulo per Microsoft Word, supportato a partire dalla versione
2003. Oltre a Word, altre applicazioni di cui e` stata verificata la
compatibilit`a sono: WordPad, Blocco Note, tutta la suite Microsoft
Office 2013, Microsoft internet Explorer e Mozilla Firefox.
La compatibilit`a dei due browser apre alla possibilit`a di impiego
del servizio di previsione delle parole anche all’interno di servizi
web. Un esempio di ci`o e` visibile in Figura 4.
5. L’NGPredictor restituisce la lista dei termini che viene
proposta a schermo;
6. Se l’utente individua nella lista il termine di suo interesse e
lo seleziona, la parte mancante (cio´e l’intero termine meno
la radice) viene scritto simulando la pressione dei tasti sulla
tastiera, mediante il metodo standard SendKey.
Le principali tecnologie impiegate per svolgere queste operazioni,
al di l`a del software da noi sviluppato, sono:
Si fa notare inoltre che il software e` stato sviluppato tenendo conto dei principi di accessibilit`a ed e` qundi impiegabile anche con
software ingrandenti o programmi di lettura dello schermo.
5.4
• WIndows Hook: sono stati impiegati per la gestione del tastierino numerico (che viene riservato al programma), per gestire l’attivazione dell’applicazione mediante tastiera (utilizzando la doppia pressione del tasto “SHIFT”). Inoltre risultano essenziali perch´e ci permettono di comprendere quando
l’utente preme un tasto. Nel momento in cui l’hoock comunica al PredictiOnDemand che l’utente ha premuto un tasto
e la finestra di elenco parole e` visibile a schermo, il programma si occupa di andare a leggere la posizione del cursore ed
aggiornare l’elenco parole;
Aspetti tecnici
PredictiOnDemand e` un software sviluppato nel linguaggio Microsoft Visual C# ed utilizza componenti del Microsoft .NET Framework 4. La scelta non e` stata casuale. Grazie a questa e` infatti
possibile impiegare l’innovativa libreria UIAutomation in combinazione con la tecnica dei System hooks [13].
Tutto ci`o consente di intercettare controlli, eventi e processi
estranei alla nostra applicazione.
11
• Win32API: ci serviamo delle API di user32.dll e
kernel32.dll per la gestione del focus e delle finestre.
Quando la finestra di previsione delle parole acquisisce e rilascia il focus, lo pu`o fare grazie a queste librerie. Inoltre
anche il controllo e lo spostamento automatico della finestra
di elenco parole quando il cursore si trova sotto di essa, viene
svolto mediante queste API;
In seguito si vuole scrivere “di”. Inizia quindi scrivendo la prima
iniziale “d”. “di” appare immediatamente nella lista dei termini.
Apparentemente e` una cosa utile, la nostra metrica MRR lo premierebbe con un rank di 1, ma lo e` davvero? Per selezionare la “i”
sulla tastiera l’utente preme un tasto, per scegliere la parola l’utente
compie sempre una battitura.
• UI Automation: E´ un componente fondamentale. Prima di
tutto ci consente di individuare qual e` l’applicazione ed il
controllo correntemente focalizzati. In questo modo possiamo stabilire se esiste un modulo specifico per l’applicazione
(come nel caso di Word). In secondo luogo ci permette di
chiudere automaticamente la finestra di elenco parole quando
non pi`u necessaria (perch´e l’utente ha cambiato applicazione
o, ad esempio, sta utilizzando pulsanti o altro che non riguarda la digitazione del testo). Ultimo fondamentale ruolo di
UIA e` il dialogo con le applicazioni. Quando non e` presente alcun modulo specifico per il programma, questa libreria
consente al PredictiOnDemand di accedere all’applicazione
focalizzata. In particolare ci serviamo di UIA per stabilire se
l’utente si trovi in una TextArea e, in questo caso, per estrarre il testo che precede il cursore, che verr`a poi passato alla
libreria NGPredictor per effettuare la previsione delle parole;
• Keystroke Saving Measure (o KS) stima quanti tasti (virtuali o fisici) si risparmino grazie all’impiego del sistema di
predizione delle parole. La misura, nel nostro caso, e` data
dalla differenza tra la lunghezza totale della parola da immettere ed il numero di caratteri immessi dall’utente. A tale
valore viene inoltre sottratto una ulteriore unit`a corrispondente al fatto che l’utente, per scegliere la parola, deve effettuare una selezione mediante un pulsante (virtuale o fisico).
Tale misura e` in grado di mostrare quale sia il vantaggio per
l’utente.
Tuttavia questa metrica, analizzata parola per parola, non tiene conto del fatto che vi possono essere delle parole molto brevi (di non
pi`u di tre caratteri). Essa non permette di renderci conto della qualit`a complessiva del predittore. Nel caso di parole brevi il valore
massimo raggiungibile con questa misurazione sarebbe 1, anche se
il predittore fosse in grado di “indovinare” subito la risposta esatta.
Per questo, all’interno delle prove automatiche svolte, tale metrica
e` stata presa in considerazione come rapporto fra tasti risparmiati
su tasti totali nell’intero documento di test.
• appModule per Word: e` un modulo specifico, poich´e le versioni di Microsoft Word precedenti alla 2013 non sono compatibili con lo standard UIAutomation. Il modulo impiega
componenti COM per dialogare con l’applicazione Word in
esecuzione ed estrarre il testo che precede il cursore per poi
poterlo inviare alla libreria NGPredictor.
6.
• Percentuale di completamento per parola: questa misura
l’abbiamo effettuata rapportando il numero di caratteri completati dal predittore (la differenza fra il numero di caratteri
totali ed il numero di caratteri immessi manualmente dall’utente) con la dimensione della stringa. Abbiamo poi convertito il valore in percentuale. Tale metrica, a nostro avviso, e`
molto valida per capire “quanta parte” delle parole il nostro
predittore e` in grado di completare in un determinato testo.
VALUTAZIONE DEL SISTEMA DI PREDIZIONE
Volendo valutare in modo empirico la qualit`a di uno strumento di
predizione delle parole, e` possibile affidarsi ad alcune metriche.
6.1
Metriche impiegate
6.2
Ecco le misure da noi effettuate e l’uso e l’interpretazione che ne
daremo:
Valutazione manuale
La valutazione manuale e` stata svolta da due volontari utilizzando
una versione preliminare del PredictiOnDemand . Ad ognuna delle
due persone, entrambe affette da disabilit`a motoria con una buona
escursione nell’impiego degli arti superiori, e` stato chiesto di scrivere alcune frasi a piacere utilizzando il servizio di previsione delle
parole come aiuto durante l’immissione.
L’attivit`a degli utenti, previo il consenso, e` stata tracciata per fini
statistici. In particolare e` stato salvato il testo immesso e, per ogni
termine completato utilizzando le parole presenti nella lista parole, e` stato loggato quale prefisso l’utente avesse immesso (quanta
parte della parola fosse gi`a stata scritta dall’utente) e quale fosse la
parola desiderata.
Entrambi i volontari hanno impiegato una tastiera fisica per immettere i termini. Il primo utente ha preferito utilizzare le scorciatoie
da tastierino, mentre il secondo ha trovato pi`u comodo avvalersi del
mouse.
• Reciprocal Rank. Consideriamo come rank il numero di tentativi (di lettere) dopo i (le) quali all’interno della lista delle
parole appare il lemma desiderato. Il rank e` una misura interessante che ci aiuta a comprendere dopo quante lettere il
predittore suggerisce la giusta parola. Tale modo di valutare il rank e` anche definito come Keystroke until Prediction
(KuP) measure. Il reciprocal rank e` 1/rank. Il Mean Reciprocal Rank e` la media del reciprocal rank per le parole
dell’intero documento di test.
L’aspetto negativo nell’impiego di questa misura sta nel fatto che
non e` possibile stabilire quale sia il vantaggio reale per l’utente.
Poniamo che si desideri inserire la parola “dicendo”. Inseriamo
la “d” e nella lista parole non compare dicendo. L’utente immette
“di”, neanche questa volta la parola appare, l’utente immette “dic”,
questa volta la parola dicendo e` in lista.
Secondo l’MRR l’utente ha un rank di 3, non bene ma neanche
troppo male.
Osservando la cosa da un altro punto di vista, l’utente ha premuto
4 tasti: le tre lettere ed il tasto di selezione. L’utente ha risparmiato
3 battiture.
Gli utenti, in totale, hanno immesso 99 termini. Se eliminiamo la
punteggiatura e le parole composte da una sola lettera (che non sono predicibili) il totale delle parole scende a 81. Di questi, si e`
impiegato il completamento mediante predizione 56 volte.
Passiamo ora alla valutazione. Teniamo presente che questi dati non sono provenienti da fonti automatiche ma manuali. Abbiamo notato durante l’analisi che gli utenti, di tanto in tanto, hanno
12
aggiunto qualche lettera prima di accorgersi della presenza della
parola.
30
In figura 5(a) e` possibile vedere un grafico riassuntivo dei reciprocal rank.
L’MRR non e` molto alto ed e` pari a 0, 29. Seppur il campione di
parole preso in esame e` piuttosto ristretto, questo dato conferma la
nostra ipotesi. Utilizzando un testo a piacere, distante quindi dall’ambito e dal lessico impiegato all’interno dei documenti di addestramento, si ottengono dei risultati molto variabili. La dimensione
ridotta del testo, inoltre, fa emergere in modo chiaro il difetto principale del nostro programma: la scarsa qualit`a di predizione nelle
parole molto brevi. Nell’86% dei casi le parole non predette correttamente sono quelle lunghe non pi`u di 3 caratteri. Questo e` un
dato molto utile per studiare futuri miglioramenti.
25
20
15
10
5
0
0
Come si pu`o vedere dalla figura 5(b) anche la misura KS sulle diverse parole e` piuttosto bassa. Le parole a zero sono aumentate
perch´e a molti termini mancava una sola lettera per essere completati. Non e` per`o affatto male un valore di 5/81 sui termini completati risparmiando cinque battiture.
Infine in figura 5(c) si pu`o vedere la percentuale di completamento
rapportata alla dimensione della parola. Come si vede, se escludiamo le parole non predette (con percentuale di completamento pari a
0), abbiamo un’ottima idea dei valori percentuali pi`u frequenti. In
particolare e` molto frequente una predizione che completa dal 40
al 60% di una parola.
Commentando questo test potremmo dire, in modo generico, che il
nostro predittore quando “capisce” la parola ne completa circa la
met`a. Non male.
1/5
1/4
1/3
1/2
1
3
4
5
(a)
35
30
25
20
15
10
5
0
0
6.3
La valutazione automatica
1
2
(b)
Abbiamo sviluppato un applicativo che simuli la scrittura di alcuni
testi. Mano a mano che si procede all’inserimento delle lettere, viene richiamato l’NGPredictor. Qualora, all’interno della lista parole,
sia contenuto il termine desiderato esso viene inserito. Vengono poi
calcolate, per ogni parola, le tre metriche prese in esame.
30
25
20
Abbiamo cos`ı valutato due documenti diversi: il primo documento appartiene alla medesima collezione (europarl corpus) di quelli
gi`a utilizzati per il training (un documento del test set). Il secondo insieme e` composto da una collezione di articoli tratti dall’area
pubblica del sito web “LaStampa.it”. Poich`e questi non vengono
divulgati n´e parzialmente n´e totalmente, le informazioni qui di seguito contenute non si possono intendere come una violazione del
Diritto d’Autore.
15
10
5
0
0%
L’aspetto che analizziamo per primo, sono i risultati sul corpus di
dominio diverso rispetto a quello dei documenti di addestramento:
gli articoli di giornale. Il numero totale di parole processate e` pari
a 5400. Ad esse sono stati gi`a sottratti i caratteri di punteggiatura e
le parole di dimensione 1.
Come si pu`o vedere anche dalla figura 6(a) i risultati del reciprocal
rank sono soddisfacenti, soprattutto se consideriamo che il corpus e`
molto diverso da quello di addestramento. Notiamo una previsione
positiva al primo tentativo maggiore rispetto al numero di parole
inserite senza che il termine desiderato comparisse all’interno della
lista (con rank pari a 0). Il valore di MRR e` pari a 0,47. Esso e`
molto maggiore rispetto a quello dei test manuali. Ci`o probabilmente e` dovuto alla dimensione del documento, molto maggiore,
ed all’individuazione automatica delle parole all’interno della lista
(che non commette alcun errore).
10-19% 20-29% 30-39% 40-49% 50-59% 60-69% 70-79% 80-89% 90-99%
(c)
Figura 5: Test manuali. (a) Reciproco del rank. I risultati sono
ordinati dai peggiori (non indovinata, 10 tentativi...) ai migliori (1 solo tentativo). Le barre rappresentano la frequenza. (b)
Analisi della misura KS parola per parola nel testo. Piu` ci si
sposta verso destra piu` lettere sono state completate per una
certa parola. Le barre rappresentano la frequenza. (c) Analisi della percentuale di completamento della parola. Le barre
rappresentano la frequenza delle parole. Nell’asse delle ascisse
troviamo le varie percentuali. Piu` ci si sposta lungo l’asse delle
x piu` alta e` la percentuale di parola che viene completata.
13
2000
12000
1800
10000
1600
1400
8000
1200
6000
1000
800
4000
600
400
2000
200
0
0
0
1/10
1/9
1/8
1/7
1/6
1/5
1/4
1/3
1/2
0
1
1/12 1/11 1/10 1/9
(a)
1/8
1/7
1/6
1/5
1/4
1/3
1/2 1
(a)
1600
6000
1400
5000
1200
4000
1000
800
3000
600
2000
400
1000
200
0
0
0-9
10-19
20-29
30-39
40-49
50-59
60-69
70-79
80-89
90-99
0-9
10-19
20-29
30-39
40-49
50-59
60-69
70-79
80-89
90-99
(b)
(b)
Figura 6: Test automatici svolti su insieme di articoli de “LaStampa.it”. (a) Risultati del reciproco del rank. (b) Analisi della
percentuale di completamento della parola.
Figura 7: Test automatici svolti sull’insieme di test del corpus
europarl. (a) Risultati dell’analisi del reciproco del rank. (b)
Analisi della percentuale di completamento della parola.
Spostandoci nella seconda parte della figura (6(b)) possiamo vedere la percentuale di completamento per i diversi termini. Il dato per
noi pi`u interessante e` che, se escludiamo la percentuale fra lo 0 e
ed il 9%, la frequenza maggiore e` un completamento che oscilla fra
il 50 e il 69%, molto frequente e` anche un completamento fra l’80
e l’89%.
Tale risultato positivo e` confermato anche dalla misura KS sull’intero documento. Per scrivere le diverse parole (escludendo gli spazi) sarebbero state necessarie 40531 battiture di tasti (fisici o virtuali). Grazie al nostro predittore e` stato possibile risparmiare 26114
azioni. Nel complesso, quindi, il nostro predittore e` riuscito a far
risparmiare il 64% nei vari termini. Davvero un risultato molto positivo, se pensiamo che il predittore e` stato addestrato su un insieme
di documenti appartenenti ad un dominio differente.
rispetto al precedente. E` molto frequente, infatti, che le parole vengano completate tra il 50 e il 69% ma e` ancor pi`u frequente che
esse vengano completate per una parte che oscilla fra l’80 e l’89%.
Questo dato e` confermato anche dalla misura di Keystroke Saving
(KS). Le parole considerate, in totale, comportavano 134141 pressioni di tasti (virtuali o fisici). Grazie al nostro tool se ne sono
potute risparmiare 96366, corrispondenti al 71,8%.
6.4
Riscontri degli utenti sull’interfaccia
I riscontri degli utenti sono stati raccolti in forma di parere, mediante un’intervista, ed osservando come lavoravano durante il test.
Prima dell’inizio delle valutazioni, ai volontari e` stata data la possibilit`a di prendere mano con lo strumento.
Alla luce del fatto che spesso gli utenti non sono riusciti ad individuare le parole presenti all’interno della lista abbiamo inserito la
funzionalit`a di personalizzazione dei caratteri e dei colori. In questo modo ora e` possibile scegliere di visualizzare l’elenco parole
con una dimensione dei caratteri pi`u grande ed uno schema colori
pi`u confortevole.
Gli utenti, in generale, hanno espresso un parere positivo sul programma, sottolineando la velocit`a con cui la previsione viene svolta. Ci e` stato suggerito, nel momento in cui interveniamo per muovere la finestra di elenco parole, di spostare leggermente la finestra
verso il basso, in modo da rendere visibile l’intera riga che si sta
scrivendo.
Una soluzione di questo tipo e` allo studio ma essa e` condizionata
da molti fattori, in primo piano la dimensione della finestra stessa
che pu`o occupare, in altezza, tutto lo schermo.
Concludiamo l’esposizione dei dati presentando le valutazioni condotte su un documento dell’insieme di test del corpus europarl.
Eravamo particolarmente interessati a questo test poich´e siamo
convinti che, addestrando il nostro tool su documenti simili a quelli
che l’utente vuole scrivere, riusciremo in futuro a migliorare ancora di pi`u la previsione. Come e` possibile vedere in 7(a) il risultato
e` molto soddisfacente e compatibile con la nostra ipotesi iniziale.
In precedenza il numero di parole non previste (con rank pari a 0)
era abbastanza alto. Come si pu`o vedere dall’immagine, in questo
caso il numero e` molto ridotto. Il valore di MRR misurato e` pari a
0,67. Il numero totale di parole prese in considerazione all’interno
di questo documento e` stato pari a 20181.
Anche la percentuale di completamento per parola (visibile in figura 7(b)) mostra un sensibile miglioramento in questo documento
14
7.
CONCLUSIONI E SVILUPPI FUTURI
Sarebbe sicuramente interessante aggiungere nuovi moduli per il
PredictiOnDemand rendendolo compatibile con altre applicazioni oggi non supportate ma molto diffuse come la suite OpenOffice. Molto utile agli utenti affetti da DSA sarebbe l’inserimento di funzionalit`a di lettura tramite sintesi vocale. Queste sono
piuttosto semplici da realizzare poich´e l’applicativo fa uso di framework standard, e questi includono componenti gi`a pronti (come
l’infrastruttura SAPI).
Nelle sezioni precedenti abbiamo presentato il PredictiOnDemand
, uno strumento libero e gratuito che aiuta gli utenti con difficolt`a
motorie e disturbi specifici dell’apprendimento a scrivere le parole.
Per prevedere ci`o che l’utente vuole scrivere, il PredictiOnDemand
si basa sui modelli del linguaggio: essi sono modelli statistici addestrati su grandi quantit`a di sequenze di parole provenienti da corpus
molto estesi.
Il modello impiegato e` strutturato ad N-Grammi e tiene conto del
contesto (fino a tre parole precedenti) per suggerire all’utente il termine pi`u opportuno da immettere. Viene inoltre implementato un
meccanismo di back-off e di smoothing per migliorare la qualit`a
del modello di base. Il risultato per`o era di dimensioni molto grandi, perci`o si e` studiata una struttura di database relazionale su file
che coniugasse un risparmio di spazio sul disco con la rapidit`a nel
fornire le risposte alle particolari query utilizzate.
Da tutto questo, e osservando anche le proposte degli utenti, e` chiaro che il progetto e` lontano dall’essere concluso. Tuttavia molti
accorgimenti come l’impiego di tecnologie standard, l’implementazione di interfacce, l’utilizzo di pattern e la parametrizzazione (ove
possibile) sia del motore di predizione sia dell’interfaccia utente
non possono che aiutare lo sviluppo futuro.
Confortati dai risultati ottenuti possiamo quindi dire che la strada
e` aperta e che il lavoro fin’ora fatto ci d`a modo di disporre di una
base solida e funzionante su cui progredire per migliorare le diverse
componenti del nostro progetto.
Dalle valutazioni effettuate abbiamo potuto osservare un’ottima
qualit`a del nostro applicativo che e` in grado di ridurre di pi`u del
50% delle digitazioni in un testo di dominio simile (ma differente)
rispetto a quello in cui e` stato addestrato. Se esso viene impiegato
all’interno di testi appartenenti al medesimo dominio (su documenti diversi) la percentuale aumenta fino a superare il 70%.
Questo ci riporta al primo dei miglioramenti che potrebbe essere
applicato al motore di predizione: la costruzione dinamica del corpus. Analizzando i documenti proposti dall’utente sar`a possibile
costruire uno (o pi`u) modelli, che poi potranno essere impiegati per
una predizione di maggiore qualit`a.
Grazie ai tool automatici per il preprocessamento dei documenti di
addestramento che abbiamo gi`a sviluppato, sar`a possibile preprocessare e costruire i modelli del linguaggio a partire da documenti
Word, email, testi scelti dall’utente ecc.
Bibliografia
[1] Logos - la lettura. http://courses.logos.it/IT/
1_6.html.
[2] Word prediction software comparison chart.
http:
//www.spectronicsinoz.com/article/
word-prediction-software-comparison-chart/.
[3] Hisham Al-Mubaid. A learning-classification based approach
for word prediction. 2006.
[4] Carlo Aliprandi, Nicola Carmignani, Nedjma Deha, Paolo
Mancarella, and Michele Rubino. Advances in nlp applied
to word prediction. 2007.
[5] L. Cantoni and N. Di Blas. Teoria e pratiche della comunicazione, chapter Cap. 1: Elementi di semiotica. Apogeo,
2003.
[6] Anna Evmenova. Word prediction software for students with
writing difficulties. 2006.
[7] Afsaneh Fazly and Graeme Hirst. Testing the efficacy of partof-speech information inword completion. 2003.
[8] Henderson and Trust. SPEECH and LANGUAGE PROCESSING - An Introduction to Natural Language Processing,
Computational Linguistics, and Speech Recognition, chapter
Ch. 4 NGrams. Pearson Prentice Hall, second ed. edition,
2009.
[9] P. Henderson and T. Trust. Access All Areas: disability, technology and learining, chapter Ch. 7 Physical disability and
technology, pages 29–32. TechDis with the Association for
Learning Technology, 2002.
[10] Djoerd Hiemstra. Language models.
[11] Philipp Koehn. Europarl: A parallel corpus for statistical
machine translation. 2005.
[12] Microsoft.
Pagine msdn su microsoft ui automation.
http://msdn.microsoft.com/en-us/library/
ms753388%28v=vs.90%29.
[13] Microsoft.
Pagine msdn sull’impiego degli hooks.
http://msdn.microsoft.com/en-us/library/
windows/desktop/ms632589.aspx.
[14] Ronald Rosenfeld. Two decades of statistical language
modeling: Where do we go from here. 2000.
[15] Andreas Stolcke. Srilm - an extensible language modeling
toolkit. pages 901–904, 2002.
[16] Jennifer Tumlin and Kathryn Wolff Heller. Using word prediction software to increase typing fluency with students with
physical disabilities. 2004.
[17] Tonio Wandmacher and Jean-Yves Antoine. Methods to integrate a language model with semantic information for a word
prediction component. pages 506–513, 2007.
Dai test e` emerso inoltre che le parole che pi`u spesso non vengono
predette sono le pi`u brevi. Si potrebbero aumentare le probabilit`a
delle parole pi`u corte, soprattutto quando il predittore sta impiegando gli unigrammi (cio´e quando non ha trovato alcuna sequenza di
parole compatibile con il contesto in cui l’utente sta lavorando).
Siamo consci dei limiti che un approccio basato soltanto sui modelli del linguaggio presenta, tuttavia riteniamo che questa sia la base
su cui procedere per integrare altre metriche e tecniche migliorative.
Una strada da esplorare, ad esempio, e` quella dell’integrazione di
un analizzatore della grammatica. In particolare si potrebbe impiegare una combinazione fra modelli ad N-Grammi basati sui termini
ed altri basati sui POS. In questo modo si riuscirebbero a filtrare
maggiormente le parole ed a proporre un elenco grammaticalmente
pi`u appropriato (e quindi contenente termini pi`u probabili).
Inoltre potrebbe essere implementato un meccanismo di cache in
grado di aumentare, in base ad una funzione, la probabilit`a dei
termini che sono stati richiesti di recente.
Ma il PredictiOnDemand non si limita a predire le parole all’interno di una finestra. Il software e` rivoluzionario perch´e e` in grado di lavorare e di integrarsi all’interno di moltissime applicazioni
Windows. Il programma lavora non “ascoltando i tasti” che vengono premuti ma, invece, tracciando in tempo reale la posizione
del cursore. La semplicit`a e la molteplicit`a di modalit`a d’uso (con
tastiera e mouse, solo con tastiera, solo con puntatore del mouse o
con touch screen), e` uno dei punti essenziali di questo progetto, che
potrebbe arricchirsi anche nelle funzionalit`a dell’interfaccia utente.
15