mercoledì 11 luglio 2012

Word-processor, pensaci tu


Gino Roncaglia, "Il Sole 24 Ore", 5 febbraio 2012
Cupertino è una cittadina californiana di circa 60mila abitanti; in condizioni normali, il suo nome sarebbe noto solo a poche persone. Ma Cupertino non è una cittadina normale: è la sede della Apple, il luogo in cui Steve Jobs, partendo dal garage di casa, ha costruito un impero. E il nome 'Cupertino' è diventato famoso. Non solo lo conoscono moltissime persone: lo riconoscono anche tutti i programmi di controllo ortografico. Se aprite il vostro word-processor e scrivete 'Cupertino', il correttore ortografico non farà una piega: quel nome è già incluso da tempo nel suo dizionario, tanto che alcuni correttori ortografici inglesi avevano la pessima abitudine di sostituire alla parola 'cooperation' (corretta, ma presente nel vocabolario solo nella variante con il trattino, 'co-operation') proprio la parola 'Cupertino', con risultati spesso comici. Così, per fare solo un esempio, all'interno di un documento ufficiale della Nato troviamo, addirittura in un titolo, la frase «la Cupertino con i nostri alleati italiani si è rivelata assai fruttuosa».
Questa (erronea) correzione è stata battezzata 'Cupertino effect', e l'espressione è oggi usata per indicare tutti i casi in cui un correttore ortografico troppo solerte sostituisce un termine sbagliato a una parola corretta ma non presente nel suo vocabolario. In una forma o nell'altra, probabilmente quasi tutti siamo stati vittima del Cupertino effect. Gli errori più comuni ed eclatanti, inclusa la correzione 'cooperation'-'Cupertino', sono risolti nelle versioni successive dei programmi, ma nuovi errori sono sempre in agguato: fino all'inizio del 2008, il correttore ortografico Microsoft non riconosceva il nome 'Obama' e lo correggeva conà 'Osama'!
Quando siamo vittima del Cupertino effect, la reazione naturale è disattivare la correzione ortografica automatica. Ma quelli che per l'utente sono difetti, per un programmatore sono sfide. Come migliorare i programmi di correzione automatica per massimizzarne l'utilità e minimizzare gli errori? 
I primi correttori si basavano sul semplice confronto delle parole del testo con un dizionario di riferimento, e si limitavano a segnalare le parole non presenti in dizionario. Progressivamente si è cercato di includere anche dei suggerimenti sulla parola corretta da sostituire a quella non riconosciuta. Come? Partendo dalla parola sconosciuta e provando a individuare le parole conosciute che le sono più vicine. Naturalmente, per farlo serve un metodo che misuri la maggiore o minore 'distanza' fra forma sbagliata e forma corretta. Il più semplice si chiama 'distanza di Levenshtein', o 'edit distance': per passare dalla parola sbagliata 'distrarto' alla parola corretta 'distratto' basta sostituire un singolo carattere (la seconda 'r'): la edit distance fra queste due parole (il numero minimo di singole modifiche - aggiunte, cancellazioni, sostituzioni di un carattere - per passare da una all'altra) è dunque 1.
Se un correttore ortografico trova una parola che non riconosce, prova a verificare se esistono parole conosciute a distanza 1 da quella sconosciuta. Se ne trova una sola, opera la correzione. Se ne trova più di una, offre all'utente le alternative. Così, a distanza 1 dalla parola 'distrarto' c'è sì 'distratto', ma anche 'distrarti' e 'distrarlo', e il correttore ortografico dovrà proporci (almeno) queste alternative.
Il passo successivo è tener conto anche di considerazioni statistiche: se a distanza 1 dalla forma erronea ci sono più parole corrette, ma una è molto più frequente delle altre, la correzione giusta sarà probabilmente quella. Altri fattori da considerare sono la distanza delle lettere sulla tastiera (gli errori più probabili riguardano caratteri vicini), o l'inversione nell'ordine di battitura di due tasti (da assimilare ai casi di distanza 1 fra forma corretta e forma sbagliata). I correttori di ultima generazione considerano poi anche il contesto, riconoscendo alcuni casi in cui la parola 'sbagliata' esiste nel dizionario ma è chiaramente incompatibile con il contesto in cui è usata, e gli errori indotti dalla pronuncia della parola (provate a digitare su Google 'sciampagn': vi verrà immediatamente suggerita la forma corretta 'champagne', anche se la distanza fra le due forme è 3).
Proprio quest'ultimo esempio ci porta a una delle frontiere di ricerca più avanzate: la raccolta su larga scala e l'analisi di input linguistici e correzioni che vengono direttamente dagli utenti. Se una ricerca su un termine non in dizionario, come 'sciampagn', produce pochi risultati e viene spesso corretta dagli stessi utenti nella ricerca per il termine 'champagne', è molto probabile che il primo termine costituisca una forma erronea o inusuale del secondo. Google, che attraverso i suoi molti servizi raccoglie e analizza automaticamente enormi quantità di testi, ha in questo campo un vantaggio competitivo non indifferente.

Nessun commento:

Posta un commento