La tesi ha come titolo provvisorio:
``Un sistema di Word Prediction (predizione sintattica) per
Linux/GTK''
Un sistema di word prediction non fa altro che ricevere in ingresso i
caratteri inseriti alla testiera (o altro sistema) e cercare di
indovinare la parola che l'utente sta cercando di scrivere.
Questo permette a un disabile motorio di risparmiare tempo (in termini
di ``numero di pressioni di tasti'') visto che, tipicamente, una volta
digitati 3 o 4 caratteri massimi la parola voluta è presentata a
schermo, e basta digitare un unico ulteriore tasto per completarla.
Questo risulta utile in tutti quei casi in cui il tempo che intercorre
tra una pressione di un tasto e il successivo è superiore al tempo che
occorre per tenere ``sott'occhio'' una mezza dozzina di parole/opzioni
presentate a schermo.
In agiunta a questo, un sistema di predizione sintattica permette di
evitare quasi completamente gli errori grammaticali.
Un sistema di word prediction può essere realizzato in molti modi
diversi, principalmente:
- Predizione statistica: viene mantenuto un archivio di
parole, assieme a un peso che identifica la ``frequenza''
relativa di quella parola rispetto a tutto il resto del
vocabolario.
Questo metodo è semplice, veloce e rozzo: non è preciso, ma ha
il vantaggio di poter definire dei ``contesti'' semplicemente
cambiando vocabolario (o meglio, i pesi).
- Predizione sintattica debole: il testo viene analizzato
sintatticamente solo a livello di ``parola'', e avendo noto il
tipo della parola precendente, è possibile semplicemente
assegnare una ``probabilità'' al tipo della parola successiva
(dopo un articolo è molto probabile che ci sia un nome, e
quindi ``il cor'' sarà più probabilmente ``il corsaro'' che ``il
correre'').
Questo metodo di per se non da grossi vantaggi (anche
identificato che la parola corrente è un nome, quanti nomi ci
sono?! ;) preso da solo.
Il vocabolario deve essere inoltre ``tipizzato'' (ovvero, oltre
che le parole devono essere disponibili anche i tipi di ogni
parola).
- Predizione sintattica (forte): il testo viene analizzato
rigorosamente per determinare il tipo della parola corrente,
attraverso un processo di analisi sintattica con
grammatiche.
Questo metodo è equivalente al precedente, ma con probabilità
1! ;)
Lo svantaggio è che il vocabolario deve essere completamente
tipizzato (se una parola non ha un tipo non so dire nulla),
ogni parola da aggiungere deve essere tipizzata (un po'
frustrante) e non permette di scrivere se non in perfetto
italiano con il bollino della Crusca.
- Predizione semantica: il sistema non solo controlla la
grammatica, ma anche interpreta e ``capisce'' il senso di
quello che l'utente sta scrivendo, comportandosi di conseguenza
(variando il contesto, i pesi, la grammatica...).
Questo metodo va fuori degli scopi di questa tesi, e delle mie
capacità di programmatore! O;-)))
In ogni caso è chiaro fin da subito che questi metodi, presi uno per
uno, valgono poco.
E` solo combinandoli, e aggiungendo qualche trucchetto, che si
ottengono dei risultati accettabili. Anche qui l'unione fa la forza!
;)
La tesi dovrebbe essere quindi composta principalmente da tre parti:
- Progettazione e implementazione di un sistema di word
prediction con analisi sintattica debole.
Questo è il cuore del software.
- Progettazione e implementazione di una aggiunta che permetta
la word prediction con analisi sintattica.
L'analisi sintattica (forte) si è dimostrata per l'inglese
abbastanza inutile, contando le complicazioni che può portare.
Credo che arriverò a un risultato simile anche per l'italiano,
ma questa parte oltre che servire per riferimento al resto può
essere molto utile per determinare in maniera semiautomatica le
matrici dei pesi per l'analisi sintattica debole e per
tipizzare automaticamente le nuove parole: capra e cavoli.
- Test e confronto.
Sarà sicuramente concentrato sul test e confronto dei due
diversi approcci alla word prediction implementati, anche
perchè il test con applicazioni simili sotto Linux è
impossibile, visto che sembra non ci siano ``concorrenti''.
Come tutti gli ausili per disabili, il programma dovrà essere
configurabile; a questo proposito l'archivio delle parole sarà
personalizzabile, di modo da poter essere ``contestualizzato'' oltre
che diverso per ogni utente (Linux è un sistema multiutente!).
Il sistema verrà implementato in maniera multilingue, almeno per le
lingue ``latine'' e l'inglese, considerando che l'italiano ha sufficiente
complessità per sopperire anche ai bisogni di francese, spagnolo,
...
Va fuori dallo scopo di questa tesi studiare le problematiche di lingue
a me sconosciute come Finlandese, Russo, ... anche se immagino che
basti scrivere una buona grammatica (per quanto complicata).
Ritorna alla pagina principale della Tesi del Gaio