N-grammi e riconoscimento del linguaggio

Di - 19 November 2012 - in

Google pubblica un breve paper di ricerca sui sistemi di riconoscimento del linguaggio, che mostra nel dettaglio (ma comunque abbastanza ad alto livello da essere molto comprensibile) il funzionamento del loro sistema di riconoscimento del linguaggio parlato.

Prima di iniziare introduco il concetto matematico, estremamente semplice ma importante per spiegare l’argomento, di n-gramma. Data una sequenza ordinata di elementi, un n-gramma è una sua sottosequenza di n elementi. Dato ad esempio l’alfabeto, BC è un 2-gramma (digramma).

Gli n-grammi sono strumenti molto utili per creare modelli di linguaggio, ovvero sistemi che assegnano una certa probabilità ad una parola in presenza di altre parole. Dato un dizionario, ovvero un insieme di parole, è abbastanza comodo assegnare ad un n-gramma una certa probabilità, considerandola come la probabilità che l’ultima parola compaia dopo le altre n-1 parole (in quell’ordine).

Immaginando un modello basato su 3-grammi (si legge trigrammi), ad esempio, la probabilità assegnata a (devo, andare, via) sarà molto piú alta della probabilità assegnata a (devo, andare, quaderno).

I modelli di linguaggio, a loro volta, sono fondamentali per creare sistemi automatici di riconoscimento, appunto, dei linguaggi. Sistemi come la ricerca vocale di Google o la sottotitolazione automatica di video su Youtube, infatti, si trovano spesso a dover decidere a cosa somigli di piú ciò che hanno sentito, e per farlo possono fare affidamento sulle probabilità degli n-grammi composti dalle parole che hanno ascoltato prima. In un ambiente rumoroso, “ho scelto a casa” e “ho scelto a caso” potrebbero suonare simili, ma la probabilità del secondo 4-gramma (quattro-gramma, da qui in poi si dice il numero) è un po’ maggiore.

La ricerca di Google studia come la precisione di sistemi di questo tipo aumenti enormemente all’aumentare (anche piccolo) delle dimensioni del modello.

Per quanto riguarda la ricerca vocale, Google ha utilizzato un modello basato su 5-grammi, contenente 12 miliardi di n-grammi da un dizionario di un milione di parole, allenando il modello con 230 miliardi di parole ottenute attraverso richieste scelte a caso tra quelle che vengono fatte sul motore di ricerca di Google (escludendo quelle con errori ortografici).

Il modello è poi stato testato attraverso ricerche casuali fatte da tester tramite la ricerca vocale in Android, ottenendo il grafico in cima all’articolo: la linea verde fa riferimento alla scala a destra, e indica il search error rate, una metrica per la sensatezza del risultato ottenuto utilizzando l’output come ricerca su web, mentre la linea blu fa riferimento alla scala a destra, e indica l’accuratezza dell’output rispetto a ciò che si voleva. In entrambi i casi, un valore basso indica una buona accuratezza. Si vede come sia impressionante il calo dei due parametri all’aumentare della scala del modello.

Nel paper, un altro grafico mostra la variazione dei medesimi parametri all’aumentare della quantità di dati utilizzati per allenare il modello.

I dati ottenuti serviranno ad ottimizzare le dimensioni dei modelli utilizzati, in maniera da ottenere un sistema che sia allo stesso tempo molto accurato e molto veloce da applicare. Mentre la velocità è calcolabile in maniera abbastanza comoda, l’accuratezza dipende molto dalla struttura del linguaggio che è molto variabile in base a contesti d’uso e poco misurabile, e test empirici come questo sono il modo piú comodo di ottenere dati utilizzabili. La pubblicazione del paper può essere di grande aiuto a chiunque abbia bisogno di informazioni di questo tipo.

Via | Google Research Blog

Leave a Reply

Lorenzo Breda Articolo scritto da

Studente di Informatica a Roma, si occupa di programmazione web sopratutto lato server, e di accessibilità del web. Utilizza e ama Debian GNU/Linux, e si interessa di fisica, fumetto, trekking e fotografia (gli ultimi due possibilmente abbinati). Collabora con Googlab da aprile 2012.

Contatta l'autore

Previous post:

Next post: