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
© Copyright 2024 Paperzz