martedì 18 ottobre 2016

Sogni e realtà degli assistenti vocali

   
L’interazione vocale con i computer oggi passa in buona parte attraverso assistenti vocali come Siri (Apple) o Cortana (Microsoft). Questi strumenti cercano di unificare le funzioni di ricerca attraverso un’interfaccia dotata di una “personalità”, e le possibili scelte in questo campo sono numerose.
 
L’idea non è nuova, anzi. La conversazione con un computer dotato di “personalità” è un’interfaccia intuitiva. In passato, questa è stata una delle prime modalità d’interazione immaginate quando ancora non si erano fatti davvero i conti con le possibilità e i limiti dei dispositivi informatici. Di conversazione si è poi parlato poco, ma l’idea è rimasta nella consapevolezza di molti teorici delle interfacce. Un bell’esempio è dato da un famoso video di presentazione rilasciato da Apple nel 1987 che mostra il modo in cui avrebbe potuto funzionare un dispositivo chiamato “Knowledge navigator” intorno al 2011:
 

 
Tuttavia, come ha notato Walter Mossberg in un articolo recente, al di fuori di ristrettissimi casi d’uso gli assistenti vocali possono risultare sorprendentemente stupidi:
 
why does Siri seem so dumb? Why are its talents so limited? Why does it stumble so often?... Siri’s huge promise has been shrunk to just making voice calls and sending messages to contacts, and maybe getting the weather, using voice commands. Some users find it a reliable way to set timers, alarms, notes and reminders, or to find restaurants. But many of these tasks could be done with the crude, pre-Siri voice command features on the iPhone and other phones, albeit in a more clumsy way.
 
Secondo Mossberg, comunque, il problema non sta nel riconoscimento del parlato: “In my recent experience, Siri has become quite good at transcribing what I’m asking, just not at answering it”. Il giudizio è espresso per l’inglese, ma la mia sensazione è che valga ormai anche per l’italiano. E quella di Siri non è nemmeno un’inferiorità teorica e generica, ma un’inferiorità pratica rispetto a un prodotto concorrente come Google Now per quanto riguarda per esempio le funzioni di ricerca:
 
In recent weeks, on multiple Apple devices, Siri has been unable to tell me the names of the major party candidates for president and vice president of the United States. Or when they were debating. Or when the Emmy awards show was due to be on. Or the date of the World Series. When I asked it “What is the weather on Crete?” it gave me the weather for Crete, Illinois, a small village which — while I’m sure it’s great — isn’t what most people mean when they ask for the weather on Crete, the famous Greek island. Google Now, on the same Apple devices, using the same voice input, answered every one of these questions clearly and correctly.
 
Mi chiedo quali siano state le esatte espressioni usate da Mossberg, il quale tra l’altro dice che dopo le sue segnalazioni Apple ha eseguito interventi e ora mostra i risultati corretti. Io per esempio, formulando in italiano alcune delle domande citate, oltre a notare che suonano un po’ goffe, ottengo queste risposte:
 
“Chi sono i candidati alla presidenza degli Stati Uniti?”
Siri: “OK, ecco cos’ho trovato su Internet su ‘Chi sono i candidati alla presidenza degli Stati Uniti?’” e ricerche web corrette, con rinvii a siti che presentano i candidati
Google: ricerche web corrette, con rinvii a siti che presentano i candidati
 
“Quando ci sono i dibattiti tra i candidati alla presidenza degli Stati Uniti?”
Siri: “OK, ecco cos’ho trovato su Internet su ‘Quando ci sono i dibattiti tra i candidati alla presidenza degli Stati Uniti?’” e ricerche web generiche, con link a Wikipedia
Google: ricerche web generiche, con link a Wikipedia
 
“Quando ci sono le World Series?”
Siri: “Non so quando si terrà il prossimo incontro di World Series. La squadra Mets ha sconfitto la squadra Royals nell’ultimo incontro del 2 novembre 2015. Il punteggio finale è stato: 2 a 7.”
Google: ricerche web corrette, con link a Wikipedia
 
Vediamo invece alcuni, più spontanei, equivalenti italiani:
 
“Chi è il Presidente del Consiglio?”
Siri: rinvio alla voce di Wikipedia “Presidente del Consiglio dei ministri della Repubblica Italiana”
Google: lo stesso.
 
“Quando c’è la Formula 1?”
Siri: “Mi dispiace, Mirko, ma non riesco a trovare informazioni su questo campionato”, però mostra in accompagnamento link a siti web con il calendario corretto
Google: rinvio al sito web con il calendario corretto
 
“Quando c’è la prossima partita del Pisa?”
Siri: “La partita Torino-Pisa è il 29 novembre 2016 alle nove di sera” (risposta sbagliata)
Google: “Pisa affronterà Latina sabato alle 15 e zero minuti” (risposta giusta)
 
“Chi è Walter Mossberg?”
Siri: “Ecco cosa ho trovato cercando ‘Chi è Walter Moss Berg su Internet’” e ricerche web non pertinenti
Google: profilo della persona corretta.
 
Qui Google sembra decisamente superiore a Siri – che nella metà dei casi, per ragioni diverse, non riesce a fornire la risposta corretta. Oltre la ricerca, poi, Mossberg nota che Siri ha anche molte difficoltà a usare dati che si trovano sul dispositivo (per esempio, nelle schede dei contatti) o su iCloud. Il giudizio complessivo è che quindi oggi Siri sia “too limited and unreliable” per reggere il confronto con la concorrenza.
 
Personalmente, ho visto che uso Siri soprattutto quando sto camminando. Spesso lo faccio per dettare messaggi o scrivere all’interno di Whatsapp; più raramente, per far partire una chiamata vocale. Ogni tanto chiedo cose tipo “Ehi, Siri, com’è il meteo?”. Più spesso dico di fissare una sveglia per una certa ora, oppure faccio partire un timer. L’affidabilità è notevole, nonostante il mio telefono sia un iPhone 4S di quasi cinque anni, però le funzioni cominciano a sembrare davvero limitate – anche perché per gestire buona parte dei miei impegni faccio ricorso ad applicazioni non-Apple (Outlook per la posta, Google Calendar per l’agenda) con cui l’integrazione è limitata.
 
Com’è ovvio, però, niente di tutto questo ha a che fare con la “personalità” del sistema. Più importanti sarebbero capacità pratiche. Per esempio, abitando vicino allo stadio, per questioni di spostamenti e parcheggi a me tornerebbe utile sapere quand’è che il Pisa gioca in casa. Tuttavia una richiesta del tipo “metti nel mio calendario le prossime partite del Pisa che si svolgono a Pisa” sembra ancora molto lontana dalle competenze non solo di Siri, ma anche di Google.
 

giovedì 13 ottobre 2016

Interfacce vocali su sistemi Linux

 
Pubblico una nuova relazione realizzata per il mio corso di Linguistica italiana II del 2015-2016 (Modulo A, CdS in Informatica umanistica, Università di Pisa, anno accademico 2015-2016) .
 
In questo caso, l’argomento è tecnico. Ludwig Bargagli ha infatti realizzato uno studio eccezionalmente approfondito su tutti i sistemi di sintesi vocale e riconoscimento del parlato che possono essere installati su sistemi Linux, direttamente o tramite emulatori di Windows. Il risultato è il lavoro più completo che mi sia capitato di vedere in questo settore.
 
Tutti i programmi sono stati provati in prima persona dall’autore (su Lubuntu), e credo che la sintesi finale possa essere molto utile a chi lavora su sistemi di questo tipo. Anche in questo caso, il testo è scaricabile in formato PDF.
 

martedì 11 ottobre 2016

Le personalità di Siri e Cortana

  
 
Per il mio corso di Linguistica italiana II (Modulo A, CdS in Informatica umanistica, Università di Pisa, anno accademico 2015-2016), tre studentesse hanno eseguito durante l’estate un’interessante ed estesa analisi delle differenze tra Siri e Cortana. Il lavoro approfondisce quanto avevo già presentato in precedenza attraverso un’altra relazione e, anche in questo caso, presento qui il testo in formato PDF.

In sostanza, Francesca Bellante, Elisa Salatti ed Eleonora Zedda hanno posto ai due assistenti vocali lunghe serie di domande in italiano che puntavano a mettere in luce le differenze tra queste “personalità” artificiali. La conclusione che ne hanno tratto è che le differenze tra i due assistenti siano piuttosto marcate e coerenti. Cortana sembra realizzato per dare l’impressione di una personalità sempre aperta ed espansiva. Siri invece risponde ad alcune categorie di domande personali dando l’impressione di richiudersi, adottando un atteggiamento difensivo.
 
In generale, le scelte di progetto dietro alle due “personalità” mi sembrano ragionevoli. Mi chiedo però quale differenza reale possa produrre questa differenza. Insomma, a parità di capacità di risposta, gli utenti interagiscono meglio con Siri o con Cortana? Non lo sappiamo, ma questa relazione è un buon punto di partenza per esaminare la cosa più in dettaglio.
 
 

giovedì 6 ottobre 2016

Ricerca vocale con Google: sostituzioni e idiosincrasie

  
 
Ho già accennato alla ricerca vocale con Google, possibile per esempio attraverso la home page di Google stesso aperta con browser Chrome.
 
A quel che capisco, la ricerca vocale opera attraverso il pacchetto di tecnologie Google che ho descritto l’altro ieri. Tuttavia in questo caso c’è una componente in più. Quando si dice qualcosa all’interno di una casella di ricerca, infatti, spesso il sistema interviene sulla trascrizione “naturale” e propone invece chiavi di ricerca simili ma non identiche. Ovviamente l’operazione è compiuta per facilitare la ricerca, ma i risultati sono a volte curiosi.
 
Per chiarire il meccanismo, partiamo dalla ricerca più diffusa, basata sulla digitazione. Lasciando da parte il meccanismo dei suggerimenti, Google opera in almeno tre modi diversi, a seconda di quanto la parola o la frase che si scrive nella casella di ricerca corrisponda a una ricerca “verosimile”.
 
1. Se nella casella di ricerca di Google scrivo “alfabetizzazione”, mi arrivano risultati relativi alla ricerca. E va bene.
 
2. Se scrivo “alfabetizzazzione”, con due doppie z, mi arriva un buon numero di risultati basati su questa grafia (molti dei quali provengono da titoli di giornale, documenti scolastici, avvisi rotariani…), ma mi appare anche un suggerimento, “Forse cercavi: alfabetizzazione”, con la possibilità di fare la ricerca sulla grafia corretta.
 
3. Se sbaglio un po’ di più la grafia e scrivo “alfabetizazzione”, sacrificando la prima z, mi arrivano direttamente, come avverte Google, i “Risultati relativi a alfabetizzazione”, scritto con grafia corretta. Appare inoltre la possibilità di fare comunque la ricerca usando la grafia sbagliata (“Cerca invece alfabetizazzione”).
 
Facendo la ricerca vocale, invece, innanzitutto è inutile provare a pronunciare per esempio la prima z come scempia anziché come doppia: appare comunque la grafia corretta (e del resto, per “sbagliare” la pronuncia della seconda z, che nell’italiano standard è comunque doppia, che cosa si dovrebbe fare? Rafforzarla ancora?). Le pronunce vengono interpretate e spinte sulle parole che corrispondono a chiavi di ricerca frequenti. Del resto, questa è una buona simulazione del modo in cui anche gli esseri umani interpretano il parlato!
 
Un mio studente, Alberto Guaita, ha notato che in qualche caso il meccanismo produce risultati diversi nella ricerca rispetto alla dettatura all’interno di documenti (che pure, presumibilmente, sfrutta lo stesso sistema di riconoscimento). Se si detta “Alchemico” nella casella di ricerca, per esempio, la parola viene presentata come “Alkemico”, che è il nome di una catena di negozi (il nome in questa grafia compare in 3640 risultati: Google lo preferisce ad “alchemico”, che compare in 262.000 pagine). Se si detta la parola in un Documento Google, invece, compare “alchemico” (prove compiute il 5 ottobre 2016). Nella ricerca non compare nessun avviso sui criteri di sostituzione, ma l’input viene verosimilmente ricondotto con forza alle chiavi di ricerca privilegiate da Google.
 
In altri casi, lavorando durante la dettatura, Google fa spesso vedere nella casella di ricerca l’inizio della trascrizione (corretto), e poi lo sostituisce con una ricerca più “probabile”. Se si pronuncia “Il pesce non ha bocca”, per esempio, nella mia esperienza compare prima “Il pesce non ha…” e poi la ricerca completa viene eseguita su “Il pesce non abbocca”, nonostante la forte differenza fonetica tra le due espressioni. Anche all’interno di documenti, se si detta “Il pesce non ha bocca” compare scritto “il pesce non abbocca”; tuttavia, non c’è nessuna visualizzazione di fasi intermedie di trascrizione.
 
Altre idiosincrasie più specifiche, notate da Alberto Guaita e in parte verificate anche da me a inizio settembre, ma oggi non replicabili, sono:
 
1. Ricercando numeri a 5 cifre che terminano con 991, 992, 993, e così via, le migliaia venivano interpretate come il numero di una legge italiana e il “99x” diventava l’anno di promulgazione: “23.994” diventava così la legge 23 del 1994. Per la corretta ricerca occorreva pronunciare le due componenti del numero come se fossero due numeri distinti, ossia prima 23 e poi 994; il sistema poi le univa in un numero solo.
 
2. Sempre con i numeri, non era possibile chiedere di dividere 5 per un numero (per esempio, “5/73” o “5/40”), poiché il programma cambia il 5 in una V (numero romano) e modifica la ricerca.
 
3. Frasi come “togligli la giacca” o “spediscili via” venivano riportate senza il pronome enclitico.
 
In apparenza, il sistema viene aggiornato spesso; e la cosa non mi sorprende.
 

martedì 4 ottobre 2016

Come funziona il riconoscimento vocale di Google

  
 
Long short-term memory units, da Wikipedia in lingua inglese
Le attività di Google nel settore delle interfacce vocali e delle tecnologie del linguaggio si stanno intensificando. Oggi pomeriggio è previsto che Google presenti un nuovo prodotto hardware, Google Home, direttamente rivolto a contrastare Alexa di Amazon. Dal mio punto di vista (al di là delle ovvie questioni di privacy), mi chiedo soprattutto se Google Home supporterà l’italiano: Alexa funziona solo in inglese.
 
Su un altro piano, 2016 Google ha iniziato a introdurre un nuovo sistema di traduzione automatica. Il nuovo sistema, GNMT, si basa su reti neurali e per la traduzione tra inglese e cinese mandarino ha già sostituito il precedente sistema, basato – come tutti quelli per altre coppie di lingue – sulla statistica; il miglioramento di prestazioni dichiarato arriva quasi al 60% (annuncio; articolo completo). Anche qui, sono curioso di vedere se è vero… ammesso che il sistema arrivi a coprire presto l’italiano.
 
Le reti neurali sono state però usate da tempo, sembra, in un tassello chiave di questo blocco di tecnologie, il riconoscimento vocale. Google incorpora i servizi di riconoscimento vocale nei propri prodotti e contemporaneamente li commercializza attraverso Google Cloud Speech API (in concorrenza con Nuance). Dal punto di vista tecnico, sembra che il riconoscimento vocale di Google impieghi reti neurali già dal 2012. Qualche dettaglio sul funzionamento del sistema è stato fornito l’anno scorso in un post del Google Research Blog; sintetizzo qui di seguito i contenuti fondamentali, ma tutto il post va letto con attenzione.
 
Google ha iniziato a supportare i servizi vocali nel 2009, usando come modello acustico il Gaussian Mixture Model (GMM), rafforzato con altre tecniche. Dal 2012 ha iniziato a usare le Recurrent Neural Networks (RNNs), e in particolare un’architettura proposta nel 1997 e chiamata LSTM RNNs (“Long Short-term Memory Recurrent Neural Networks”). Quest’ultima è, credo, lo strumento usato ancora oggi – per tutte le lingue, incluso l’italiano? Probabilmente sì, ma non ho trovato informazioni più specifiche.
 
Le reti neurali richiedono allenamento, e i corpora usati per altre attività di elaborazione del linguaggio non aiutano molto, perché sono composti soprattutto di testi scritti, molto lontani dall’uso parlato normale. Google ha quindi chiesto la donazione volontaria di grandi raccolte di posta vocale (“voicemail”) e su queste ha poi condotto l’elaborazione in un modo che non mi torna del tutto chiaro (usando una “delicate iterative pipeline”, si dice… ma come sono stati valutati, esattamente, i risultati?). Il processo, si dichiara, ha prodotto grandi miglioramenti e ha permesso addirittura di arrivare all’inserimento della punteggiatura nei testi – cosa che per l’italiano non ho ancora visto.
 
Google dichiara che l’architettura LSTM RNNs funziona attraverso “discriminative training,” differenziando le unità fonetiche invece di modellarle in modo indipendente (“differentiating phonetic units instead of modeling each one independently”). Non ho approfondito il discorso e non sono in grado di valutare l’osservazione, ma parto dal presupposto che le cose stiano così. Dopodiché, arriva il momento di valutare quanto nella pratica il sistema funzioni per l’italiano.
 

martedì 12 luglio 2016

Un confronto tra assistenti vocali

Per il mio corso di Linguistica italiana II (Modulo A, CdS in Informatica umanistica, Università di Pisa, anno accademico 2015-2016) una brava studentessa, Eleonora Marini, ha presentato qualche settimana fa un confronto tra assistenti vocali.
 
Gli assistenti presi in considerazione sono stati i principali:

  • Siri 
  • Cortana 
  • Google Now 
  •  S Voice
Il lavoro mi sembra molto interessante, anche in considerazione della scarsità di confronti sistematici per l’italiano. Il panorama è oltretutto in rapido mutamento – e per questo mi sembra importante presentare qui il lavoro, d’accordo con l’interessata, in formato PDF. Soprattutto, spero che su questa base possano essere preparati molti altri confronti sistematici, in futuro.
 

giovedì 31 marzo 2016

Dettatura con Mac

Logo OS X (da Wikipedia in lingua italiana)
Windows non è l’unico sistema operativo a includere funzioni di riconoscimento vocale. Anche i sistemi Mac, a partire dal sistema operativo OS X 10.8.2 (2012), hanno un sistema di riconoscimento in italiano. Come nel caso di Windows e di Dragon, questo sistema è offline e non ha quindi bisogno di collegamento internet.
 
Alcune informazioni sono disponibili sul blog di Salvatore Aranzulla.
 
Non ho ancora provato di persona il sistema, ma un amico è stato così gentile da farlo per me con il file audio che ho usato nelle altre prove. Il risultato è stato questo:
 
Non è comunque facile fare stime anche quando si guardano le cose dal punto di vista del lettore. Negli Stati Uniti, blog di successo come la finta un post un po' in poi registra centinaia di migliaia di accessi al giorno. In Italia, l'unico blog che sembrano Duncan pubblico non specialistico è quello di Beppe grillo, spesso collocato nelle liste dei siti italiani più visitati.
 
Il testo originale, in cui ho indicato in corsivo gli errori, era:
 
Non è comunque facile fare stime anche quando si guardano le cose dal punto di vista del lettore. Negli Stati Uniti, blog di successo come l’Huffington Post o BoingBoing registrano centinaia di migliaia di accessi al giorno. In Italia, l’unico blog che sembra noto anche a un pubblico non specialistico è quello di Beppe Grillo, spesso collocato nelle liste dei siti italiani più visitati.
 
Su 64 parole del testo di partenza, ne sono state sbagliate 12 (“l’Huffington Post o BoingBoing registrano”, “sembra noto anche a un”, “Grillo”), ma quattro di esse sono nomi propri. La percentuale di errore è quindi circa del 19% complessivo e del 12% se si considerano inevitabili gli errori sui nomi propri. Leggermente meno accurato degli altri sistemi di cui ho parlato finora, ma comunque di buon livello.