Fun with Machine Translation APIs
Massimo [email protected]://codetailor.blogspot.com@massimobonanni
Sponsor
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.
agenda
• Introduzione.
• Il widget web.
• La traduzione collaborativa
• Le API• L’autenticazione.• I servizi
• Translator Hub.
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.
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.
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
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.
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
• .........
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.
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 traduzione automatica.
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
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.
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.
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.
Il Web Widget
Per configurare ed ottenere
il widget è sufficiente
utilizzare la pagina presente
all’indirizzo:
http://www.microsofttranslator.com/widget/
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);
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;
Il Web Widget – un esempio
Compare se gli script Javascript sono disabilitati
Inietta, al momento del caricamento della pagina, l’effettivo codice HTML
per il controllo Translator
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.
demoWeb Widget – Pasta & Basta
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
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
Web Widget – Traduzione collaborativa
Se viene abilitata la traduzione collaborativa,
l’utente può segnalare una sua traduzione diversa
da quella proposta dal sistema.
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.
Web Widget – Traduzione collaborativa
Viene fornita una dashboard per gestire il tutto in
maniera più semplice:
demoWeb Widget – Traduzione collaborativa
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
Le API - Sottoscrizione
Per poter utilizzare le API
è necessario sottoscrivere
una abbonamento
sull’Azure Data
Marketplace utilizzando il
proprio LiveId.
Le API – ClientId & SecretClient
Sottoscritto l’abbonamento è necessario generare un
ClientId e far generare dalla piattaforma il
SecretClient necessari per l’autenticazione.
https://datamarket.azure.com/developer/applications/
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.
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).
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.
Le API – Autenticazione oAuth
Client
ResourceOwner
AuthorizationServer
ResourceServer
1. Authorization Request
3. Authorization Grant
5. Access Token
2. Authorization Grant
4. Access Token
6. Protected Resource
GenerazioneClientId e
SecretClient
Richiesta Access Token e chiamata
ai servizi
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
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”}
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.
demoAPI – Recuperare l’Access Token
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;
• La modalità Soap è, di fatto, una chiamata a web
service.
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.
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
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.
Le API – Translate Ajax
Bearer Token
I parametri della chiamata debbono essere Encodati
Le API – Translate Http
[email protected] Token passato al
server attraverso l’header della chiamata HTTP
Definisce il tipo di testo da tradurre. Attualmente disponibili solamente
«text/plain» o «text/html»
Le API – Translate SOAP
Bearer Token
demoAPI – Translate, Speak e altre amenità
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.
Microsoft Translation Hub
Per accedere a Microsoft Translation
Hub si deve richiedere un codice
all’indirizzo:
http://hub.microsofttranslator.com
Q&A
Link UtiliStrumenti di traduzione
• http://www.microsofttranslator.com/tools/
Strumenti per sviluppatori• http://www.microsofttranslator.com/dev/
Web Widget• http://www.microsofttranslator.com/widget/
Azure Data Marketplace• http://tinyurl.com/ADMTranslator
MSDN Library• http://msdn.microsoft.com/en-us/library/dd576287.aspx
Microsoft Translator Hub• http://hub.microsofttranslator.com
Valutazione – Codice GF6
www.dotnetcampus.it/eval -> GF6