Neste artigo vou discutir sobre o Azure Cognitive Services, mais especificamente sobre o seu serviço Translator, que oferece funcionalidade de tradução de textos em diversos idiomas.
Finalmente, após a parte teórica, eu mostro a implementação de um exemplo prático utilizando C# e interagindo com o serviço Translator, realizando a tradução de texto em português para inglês.
Vamos lá?
Sobre o Azure Cognitive Services
Antes de falar sobre o serviço Translator, é importante entender em que contexto ele está contido: o Azure Cognitive Services.
O Azure Cognitive Services é um conjunto de serviços que disponibilizam funcionalidades relacionadas a inteligência artificial a disposição através de uma API simples,
Com uma chamada de API é possível identificar imagens e sons, realizar traduções a partir de textos e falas, analisar sentimento em textos, entre outros serviços.
O uso padrão desses serviços é através de criação de recurso correspondente na plataforma Azure, e em seguida a obtenção da chave e endpoint para a realização da chamada de API. É isso.
O serviço a ser utilizado neste artigo é o Translator.
Sobre o Translator
O Translator (ou Tradutor) faz parte do Azure Cognitive Services, e é um serviço de tradução acessível por API REST. O seu recurso específico que utilizaremos neste artigo é o de tradução de texto.
Ele tem suporte aos seguintes métodos:
- Listagem de idiomas
- Tradução
- Transliteração
- Detecção
- Pesquisa em dicionário
- Exemplo de dicionário
A disponibilidade desses métodos depende do idioma em que se está trabalhando.
Por exemplo, a tradução de texto do Translator tem suporte por volta de 100 idiomas.
Demo
O exemplo a ser construído tem alguns passos, e vou apresentá-los a seguir.
Criação do recurso Translator no Azure
O primeiro passo é criar o recurso Translator, parte do Azure Cognitive Services, na plataforma de nuvem Azure.
Para isto, basta realizar o login no Portal do Azure, e clicar em Criar um novo recurso.
Digite “Translator”, e realize a busca. O resultado deve ser semelhante à imagem abaixo.
Selecione a primeira opção “Translator”, e será carregada a página de detalhes do recurso. Clique em Criar.
Em seguida, será necessário preencher algumas informações, como:
- Assinatura
- Grupo de Recursos
- Região do grupo de recursos (se estiver criando um Grupo de Recursos novo)
- Região
- Nome
- Tipo de preço
Na imagem abaixo mostro as configurações que utilizei.
Após o preenchimento, clicar em “Revisar + criar”, e então em “Criar”.
Com o recurso criado, navegue para ele e acesse o item de menu “Chaves e Ponto de extremidade” que está na categoria “Gerenciamento de Recursos”, e conseguirá ter acesso a Chave e também ao endpoint disponibilizado para tradução de textos. Guarde bem eles porque vamos utilizar na próxima fase.
Escrevendo a aplicação
A aplicação criada é um Console Application, criado pelo comando dotnet new console.
Para a deserialização do resultado da tradução pela API do Translator, utilizo a classe abaixo.
using System.Collections.Generic; namespace TranslatorAzure.Models { public class TranslationResult { public List<Translation> Translations { get; set; } } public class Translation { public string Text { get; set; } public string To { get; set; } } }
No classe Program do arquivo Program.cs especifico primeiro as constantes que serão utilizadas:
- REGION: região do serviço do Translator
- BASE_TRANSLATOR_URL: URL base do serviço do translator, extraído anteriormente
- API_URL: URL que contém especificação da API utilizada
- TRANSLATOR_KEY: chave do Translator, extraída anteriormente
O resultado está logo abaixo.
const string REGION = "brazilsouth";
const string BASE_TRANSLATOR_URL = "https://api.cognitive.microsofttranslator.com/";
const string API_URL = "translate?api-version=3.0&to=en";
const string TRANSLATOR_KEY = "AQUI_ESTA_SUA_CHAVE_DO_TRANSLATOR";
Em seguida, crio um método que será responsável por realizar a requisição HTTP para a API do Translator. Para isso, eu utilizo a biblioteca Flurl.Http, que pode ser instalada pelo comando dotnet add package Flurl.Http
static async Task<string> GetTranslationFromPtToEn(string textInPortuguese) {
var fullTranslatorUrl = BASE_TRANSLATOR_URL + API_URL;
var body = new object[] { new { Text = textInPortuguese } };
var result = await fullTranslatorUrl
.WithHeader("Ocp-Apim-Subscription-Key", TRANSLATOR_KEY)
.WithHeader("Ocp-Apim-Subscription-Region", REGION)
.PostJsonAsync(body)
.ReceiveJson<TranslationResult[]>();
return result[0].Translations.First().Text;
}
Note que envio uma matriz de objetos (mesmo que contendo somente um), assim como recebo uma matriz de resultados.
Os Headers Ocp-Apim-Subscription-Key e Ocp-Apim-Subscription-Region contém, respectivamente, a chave e região do serviço Translator.
Com este método implementado, vamos a fase final, que é implementar nosso fluxo de tradução do Português para o Inglês. Por utilizar um método assíncrono, precisei transformar o retorno do Main de void para Task.
static async Task Main(string[] args)
{
Console.WriteLine("-------Serviço de tradução do Português para Inglês-------");
string text;
w hile (true) {
Console.WriteLine("Digite um texto em português ou '0' para encerrar.");
text = Console.ReadLine();
i f (text == "0")
break;
var translation = await GetTranslationFromPtToEn(text);
Console.WriteLine($"A tradução para o inglês é: {translation}");
}
}
Com a implementação completa, executo o projeto com o comando dotnet run, e logo abaixo está um exemplo da execução da aplicação.
O código-fonte completo pode ser encontrado aqui.
Quer alavancar sua carreira como Desenvolvedor(a) .NET?
Além de Desenvolvedor .NET Sênior, eu sou instrutor de mais de 500 alunos e também tenho dezenas de mentorados.
Conheça o Método .NET Direto ao Ponto, minha plataforma com mais de 600 videoaulas, com cursos cobrindo temas relacionados a linguagem C# e Programação Orientada a Objetos, APIs REST com ASP NET Core, Microsserviços com ASP NET Core, HTML, CSS e JavaScript, Desenvolvimento Front-end com Angular, JavaScript Intermediário, TypeScript, Formação Arquitetura de Software, Microsoft Azure, Agile, SQL, e muito mais.
Inclui comunidade de centenas de alunos, suporte por ela, plataforma e e-mail, atualizações regulares e muito mais.
Clique aqui para ter mais informações e garantir sua vaga
Conclusão
Foi visto neste artigo informações sobre o Azure Cognitive Services e o seu serviço Translator, assim como criar este recurso na plataforma Azure e, finalmente, criar uma aplicação que execute traduções do Português para o Inglês utilizando a linguagem C# e aplicação Console.