SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Fun with Machine
Translation APIs
 Massimo Bonanni
 massimo.bonanni@domusdotnet.org
 http://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
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/wid

 get/
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
                    Inietta, al momento del caricamento
script Javascript
                    della pagina, l’effettivo codice HTML
sono disabilitati
                          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.
demo
Web 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:
demo
Web 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.
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
                                        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
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.
demo
API – 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;
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



                                                       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»
Le API – Translate SOAP




                          Bearer Token
demo
API – 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 Utili
Strumenti 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

Weitere ähnliche Inhalte

Ähnlich wie Fun with Machine Translation APIs

Da A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveDa A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveAlessio Iafrate
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomAntonio Musarra
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP WayLuca Milan
 
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Massimo Caliman
 
Architettura tecnologica di TreC
Architettura tecnologica di TreCArchitettura tecnologica di TreC
Architettura tecnologica di TreCArgentea
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleMarco Breveglieri
 
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...Codemotion
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure FunctionLuca Congiu
 
SVILUPPO DI UNA SOLUZIONE SINGLE SIGN ON PER L’ENTE VENETO LAVORO
SVILUPPO DI UNA SOLUZIONE  SINGLE SIGN ON  PER L’ENTE VENETO LAVOROSVILUPPO DI UNA SOLUZIONE  SINGLE SIGN ON  PER L’ENTE VENETO LAVORO
SVILUPPO DI UNA SOLUZIONE SINGLE SIGN ON PER L’ENTE VENETO LAVOROZanatta Davide
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiAntonio Musarra
 
The absolute need of Secure Http
The absolute need of Secure HttpThe absolute need of Secure Http
The absolute need of Secure HttpNicolò Carandini
 
.NET Microservices
.NET Microservices.NET Microservices
.NET MicroservicesLuca Congiu
 
Come utilizzare il bot framework
Come utilizzare il bot frameworkCome utilizzare il bot framework
Come utilizzare il bot frameworkAlessio Iafrate
 
Alessio Iafrate - Utilizziamo il Bot Framework per realizzare il nostro primo...
Alessio Iafrate - Utilizziamo il Bot Framework per realizzare il nostro primo...Alessio Iafrate - Utilizziamo il Bot Framework per realizzare il nostro primo...
Alessio Iafrate - Utilizziamo il Bot Framework per realizzare il nostro primo...Codemotion
 

Ähnlich wie Fun with Machine Translation APIs (20)

Da A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveDa A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di Cognitive
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services Custom
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP Way
 
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
 
Architettura tecnologica di TreC
Architettura tecnologica di TreCArchitettura tecnologica di TreC
Architettura tecnologica di TreC
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
WordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWAWordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWA
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarle
 
Creare PWA con Angular
Creare PWA con AngularCreare PWA con Angular
Creare PWA con Angular
 
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure Function
 
SVILUPPO DI UNA SOLUZIONE SINGLE SIGN ON PER L’ENTE VENETO LAVORO
SVILUPPO DI UNA SOLUZIONE  SINGLE SIGN ON  PER L’ENTE VENETO LAVOROSVILUPPO DI UNA SOLUZIONE  SINGLE SIGN ON  PER L’ENTE VENETO LAVORO
SVILUPPO DI UNA SOLUZIONE SINGLE SIGN ON PER L’ENTE VENETO LAVORO
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minuti
 
The absolute need of Secure Http
The absolute need of Secure HttpThe absolute need of Secure Http
The absolute need of Secure Http
 
.NET Microservices
.NET Microservices.NET Microservices
.NET Microservices
 
Come utilizzare il bot framework
Come utilizzare il bot frameworkCome utilizzare il bot framework
Come utilizzare il bot framework
 
Alessio Iafrate - Utilizziamo il Bot Framework per realizzare il nostro primo...
Alessio Iafrate - Utilizziamo il Bot Framework per realizzare il nostro primo...Alessio Iafrate - Utilizziamo il Bot Framework per realizzare il nostro primo...
Alessio Iafrate - Utilizziamo il Bot Framework per realizzare il nostro primo...
 
8 Www2009 Parte2
8 Www2009 Parte28 Www2009 Parte2
8 Www2009 Parte2
 

Mehr von Massimo Bonanni

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Massimo Bonanni
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure FunctionsMassimo Bonanni
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsMassimo Bonanni
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Massimo Bonanni
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure FunctionsMassimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Massimo Bonanni
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsMassimo Bonanni
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Massimo Bonanni
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftMassimo Bonanni
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Massimo Bonanni
 

Mehr von Massimo Bonanni (20)

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure Functions
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure Functions
 
IoT in salsa serverless
IoT in salsa serverlessIoT in salsa serverless
IoT in salsa serverless
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure Functions
 
IoT in salsa Serverless
IoT in salsa ServerlessIoT in salsa Serverless
IoT in salsa Serverless
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable Functions
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!
 

Fun with Machine Translation APIs

  • 1. Fun with Machine Translation APIs Massimo Bonanni massimo.bonanni@domusdotnet.org http://codetailor.blogspot.com @massimobonanni
  • 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.
  • 21. demo Web Widget – Pasta & Basta
  • 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:
  • 27. demo Web Widget – Traduzione collaborativa
  • 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.
  • 38. demo API – Recuperare l’Access Token
  • 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»
  • 45. Le API – Translate SOAP Bearer Token
  • 46. demo API – Translate, Speak e altre amenità
  • 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
  • 49. Q&A
  • 50. Link Utili Strumenti 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
  • 51. Valutazione – Codice GF6 www.dotnetcampus.it/eval -> GF6