Sessione "Fun with Machine Translation APIs" tenuta al DotNetCmpus 2012.
Microsoft Translator è il frutto del reparto ricerca e sviluppo Microsoft che permette, tramite una serie di API multi protocollo, di fornire ai nostri utenti un servizio di traduzione automatica. La sessione è dedicata alla scoperta delle funzionalità e degli scenari supportati da questa innovativa piattaforma di traduziuone automatica. Durante la sessione si cercherà di dare un quadro preciso e puntuale di quando usare e quando non utilizzare un meccanismo di traduzione automatica.
3. chi sono
• Mi occupo di sviluppo dal 1982, prima in maniera amatoriale e, poi,
in maniera «professionale». Mi «diletto» con il framework .NET
dall’inizio degli anni 2000. Sono MVP per VB.NET e presidente di
DomusDotNet.
• La sessione nasce con lo scopo di fornire una panoramica degli
strumenti messi a disposizione degli sviluppatori (non solo .NET) per
utilizzare le traduzioni automatiche all’interno dei propri applicativi.
4. agenda
• Introduzione.
• Il widget web.
• La traduzione collaborativa
• Le API
• L’autenticazione.
• I servizi
• Translator Hub.
5. Introduzione
Partiamo da 3 assunti:
1. Internet è formato da contenuti
2. I contenuti hanno visibilità planetaria.
3. Affinchè i contenuti possano avere
diffusione, debbono essere compresi dalla
maggior parte delle persone.
6. Introduzione
Quando scriviamo i contenuti in una specifica lingua,
questi possono essere compresi da coloro che
parlano tale lingua e poco più.
Una soluzione (non sempre applicabile) è ricorrere
ad una traduzione automatica.
7. Cosa è Microsoft Translator
Microsoft Translator è un progetto Microsoft
Research che nasce con lo scopo di fornire un
prodotto di traduzione automatica:
• Affidabile
• Facile da utilizzare
• Applicabile in molteplici scenari
8. Cosa non è Microsoft Translator
Microsoft Translator non nasce con lo scopo di
sostituire un traduttore professionale.
In alcuni casi, infatti, non ha senso che il nostro
contenuto sia tradotto automaticamente.
9. Quando utilizzarlo
Esistono scenari in cui una traduzione fornita da uno strumento
automatico raggiunge, invece, egregiamente lo scopo di far
comprendere il concetto esposto:
• Blog,
• Siti tecnici,
• News
• .........
10. Quando utilizzarlo
Nei casi esposti, la quantità di informazione e la
rapidità di pubblicazione (vedi news o blog), non
permettono una traduzione «umana».
Un traduttore automatico assolve pienamente il
compito di far capire di cosa si parla anche senza
una traduzione rigorosa.
11. Quando non utilizzarlo
In altri scenari non è possibile lasciare ad una
traduzione automatica l’onere di comunicare un
concetto.
Ad esempio, una campagna pubblicitaria, in cui la
forma, a volte, è quasi più importante della
sostanza, non può essere lasciata ad una
12. Gli strumenti di Microsoft Translator
La piattaforma Microsoft Translator ci mette a
disposizione un ampio ventaglio di strumenti da
utilizzare nei nostri siti:
• il widget web
• le API (JSON, REST o SOAP)
• Microsoft Translator HUB
13. Il Web Widget
Il widget web è un “controllo” web (di fatto una serie
di controlli HTML contenuti in un <div>) che i web
master possono inserire nel proprio sito per
permettere agli utenti di tradurre le pagine.
14. Il Web Widget
La versione base del widget è utilizzabile senza
registrazione, mentre per le funzioni avanzate
dello stesso e per le API è necessario registrarsi
tramite LiveID.
15. Il Web Widget
L’utilizzo del Widget è assolutamente gratuito e
non impone limiti di traduzioni (Microsoft si
«accontenta» della pubblicità che le fate con il
logo esposto dal controllo)
Ogni pagina può avere un solo widget.
16. Il Web Widget
Per configurare ed
ottenere il widget è
sufficiente utilizzare la
pagina presente
all’indirizzo:
http://www.microsofttranslator.com/wid
get/
17. Il Web Widget
Per ottenere lo snippet dell’HTML, è necessario:
• inserire l’indirizzo del sito che si intende tradurre e la lingua di origine
dello stesso
• configurare il tipo di traduzione che si intende fornire agli utenti:
• manuale;
• notifica ;
• automatica;
• scegliere colore e dimensione del widget;
• accettare i termini di utilizzo (obbligatorio per generare l’HTML);
18. Il Web Widget
Il widget può avere 3 differenti modalità di utilizzo:
• manuale : nella pagina apparirà il widget e sarà l’utente, se vorrà, a
tradurre il contenuto premendo il tasto per la traduzione;
• notifica : all’utente verrà notificato (tramite una barra in alto nella
pagina) che è possibile tradurre il contenuto e sarà, comunque, lui a
tradurlo;
• automatica : il contenuto verrà automaticamente tradotto nella
lingua dell’utente che visita il sito e questo potrà, se vuole, vedere il
contenuto originale;
19. Il Web Widget – un esempio
Compare se gli
Inietta, al momento del caricamento
script Javascript
della pagina, l’effettivo codice HTML
sono disabilitati
per il controllo Translator
20. Web Widget – Decidere cosa tradurre
Se lo riteniamo opportuno, possiamo anche escludere parti della
pagina dal processo di traduzione (resteranno come le abbiamo
scritte noi in qualunque lingua l’utente scelga).
Per fare ciò possiamo procedere in due modi:
• inserire nel tag da non tradurre l’attributo custom
translate=no;
• decorare il tag da mantenere inalterato con la classe di stile
notranslate.
22. Web Widget – Traduzione collaborativa
Il web widget permette di abilitare la traduzione
collaborativa.
Possiamo dare, ai visitatori del nostro sito, la
possibilità di intervenire nella traduzione automatica
correggendo traduzioni inesatte o suggerendo
traduzioni alternative
23. Web Widget – Traduzione collaborativa
Per abilitare la traduzione collaborativa è necessario
avere un codice di invito che si può richiedere dal pannello
di attivazione presente nella pagina di creazione del
Widget
24. Web Widget – Traduzione collaborativa
Se viene abilitata la traduzione collaborativa, l’utente può
segnalare una sua traduzione diversa da quella proposta
dal sistema.
25. Web Widget – Traduzione collaborativa
Il proprietario del sito (colui che ha generato il widget) può
«invitare» altri utenti, tramite LiveID, a partecipare alla
moderazione delle traduzioni.
26. Web Widget – Traduzione collaborativa
Viene fornita una dashboard per gestire il tutto in maniera
più semplice:
28. Le API
Se vogliamo avere maggior controllo sulla traduzione dei nostri
contenuti oppure non abbiamo un’applicazione web, possiamo
utilizzare le API messe a disposizione dalla piattaforma.
Si tratta di «servizi web» che possono essere richiamati con
diverse modalità: AJAX, HTTP o SOAP
29. Le API - Sottoscrizione
Per poter utilizzare le
API è necessario
sottoscrivere una
abbonamento sull’Azure
Data Marketplace
utilizzando il proprio
LiveId.
30. Le API – ClientId & SecretClient
Sottoscritto l’abbonamento è necessario generare un
ClientId e far generare dalla piattaforma il SecretClient
necessari per l’autenticazione.
31. Le API – ClientId & SecretClient
• Clientid e nome dell’applicazione sono obbligatori (e li possiamo
inventare a nostro piacimento);
• Il SecretClient è generato dal sistema;
• La descrizione è facoltativa;
• Il Redirect URI non è utilizzato (anche se va inserito);
Il ClientId (assieme al SecretClient) identifica la nostra applicazione e la
sua scelta è a nostra discrezione anche se il sistema controlla che non
esista già il ClientId scelto.
32. Le API - Autenticazione
Tutti i servizi esposti da Microsoft Translator prevedono,
attualmente, due possibili modi per autenticarsi:
• uno di tipo “legacy” che sfrutta l’autenticazione dei vecchi
servizi di Bing (attualmente supportata per
retrocompatibilità);
• uno oAuth.
Microsoft Translator sostituisce Bing Translator e, per
tale motivo, supporta, ancora, la vecchia autenticazione di
Bing (anche se in futuro verrà abbandonata).
33. Le API - Autenticazione oAuth
Open Authorization (oAuth), è un protocollo di
comunicazione open mediante il quale
un’applicazione (o un servizio web) può gestire in
modo sicuro l'accesso autorizzato ai dati
sensibili.
34. Le API – Autenticazione oAuth
Generazione
ClientId e
1. Authorization Request
SecretClient
Resource
Owner
Richiesta Access 2. Authorization Grant
Token e chiamata
ai servizi
3. Authorization Grant
Authorization
Client Server
4. Access Token
5. Access Token
Resource
6. Protected Resource
Server
35. Le API – Access Token
Il meccanismo di autenticazione di Microsoft Translator è,
quello di recuperare, tramite ClientId e SecretClient, un access
token ed utilizzarlo per le richieste al server (finchè il token non
scade).
Per recuperare l’access token è sufficiente eseguire una
richiesta HTTP di tipo POST all’URL:
https://datamarket.accesscontrol.windows.net/v2/OAuth2-
13
36. Le API – Access Token
La risposta del server di autenticazione è, in
caso di autenticazione corretta, di tipo JSON:
{
"access_token":"http.............lAPlcjWWR412WlHOoEh6cIKA7mg%3d",
"token_type":"http://schemas.xmlsoap.org/ws/2009/11/swt-token-
profile-1.0",
"expires_in":"599",
"scope":”http://api.microsofttranslator.com”
}
37. Le API – Access Token
I nodi JSON restituiti sono:
• access_token: è l’access token vero e proprio;
• token_type: è il formato del token restituito dal sistema. Attualmente viene
restituito sempre un token definito nel namespace
http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0;
• expires_in: numero di secondi di validità del token. Attualmente è pari a
600;
• scope: è il dominio per cui è valido il token. Nel caso di Microsoft Translator
è sempre http://api.microsofttranslator.com.
39. Le API – Ajax, Http o SOAP
I servizi di Microsoft Translator sono erogati con tre differenti
modalità:
• La modalità Ajax è adatta per un utilizzo all’interno di pagine
Web;
• La modalità Http prevede chiamate GET o POST a seconda delle
funzionalità richieste ed è ideale nell’utilizzo con quei linguaggi in
cui non è semplice l’interazione con web services;
40. Le API – Ajax, Http o SOAP
Entrambe le modalità Ajax e Http restituiscono i
dati in formato JSON.
Tutte le modalità prevedono, nell’invocazione
della funzionalità, il passaggio di un Access
Token valido.
41. Le API – Cosa possiamo fare
Attualmente, a prescindere dal protocollo scelto abbiamo
le seguenti funzionalità:
AddTranslation GetLanguageNames Speak
AddTranslationArray GetLanguagesForSpeak Translate
BreakSentences GetLanguagesForTranslate TranslateArray
Detect GetTranslations
DetectArray GetTranslationsArray
42. Le API – Il metodo Translate
Per capire le differenze tra le tre modalità,
prendiamo il metodo Translate che ci consente di
tradurre un testo da una lingua ad un’altra.
43. Le API – Translate Ajax
Bearer Token
I parametri della
chiamata debbono
essere Encodati
44. Le API – Translate Http
Bearer Token passato al
c.daniele71@gmail.com server attraverso l’header
della chiamata HTTP
Definisce il tipo di testo da
tradurre. Attualmente
disponibili solamente
«text/plain» o «text/html»
47. Microsoft Translator Hub
Tutti i sistemi di traduzione automatica permettono
la traduzione da un numero di lingue molto basso (al
massimo un centinaio su oltre le 7.000 in uso a
livello mondiale).
Translator Hub permette di costruire il proprio
sistema di traduzione.
48. Microsoft Translation Hub
Per accedere a Microsoft Translation Hub
si deve richiedere un codice all’indirizzo:
http://hub.microsofttranslator.com