14 Março 2017

Uma Introdução ao Azure Cognitive Services – Speech to Text Sentiment Analysis

Introdução

A interação entre Homem-Máquina não é algo de novo nos dias de hoje. À medida que o tempo passa, novos sistemas são desenvolvidos tornando as máquinas capazes de executar tarefas desempenhadas pelo ser humano.

Estes sistemas necessitam de supervisão, uma vez que um sistema totalmente autónomo é algo que não existe, pois, as máquinas não conseguem pensar nem tomar decisões como o ser humano. Contudo, aplicando métodos que subdividem modelos mais complexos em modelos mais simples e aplicando algoritmos matemáticos, pode-se fazer com que as máquinas desempenhem tarefas que um ser humano faria, mas de uma forma muito mais rápida e menos suscetível a falhas.

O Microsoft Cognitive Services disponibiliza um leque de serviços que permitem o enriquecimento de soluções através de funcionalidades cognitivas, como por exemplo o reconhecimento de imagem, mecanismos de pesquisa e tradução de voz para texto, suportando múltiplos idiomas.

Estes serviços possuem capacidades evolutivas no que toca aos resultados obtidos. Por outras palavras, quanto mais vezes forem utilizados os serviços (treinar a máquina), mais preciso será o output.

Âmbito

No âmbito desta demonstração, vamos criar um cenário onde o principal objetivo é avaliar ficheiros de voz e guardar posteriormente os resultados numa base de dados.

Imagine que tem na sua posse chamadas de voz do seu apoio ao cliente e é necessário avaliar as mesmas.

De modo a conseguir cumprir este objetivo, vamos utilizar os serviços disponibilizados pelo Microsoft Cognitive Services: Speech to Text e Text Analytics.

Estes serviços disponibilizam um conjunto de variáveis, tais como palavras-chave que são extraídas através do texto obtido, identificação do idioma, análise de sentimento e grau de confiança da tradução.

Demonstração

A Microsoft dispõe de muitas demos que podem ser utilizadas para promover novos projetos, estes podem ser encontrados no repositório do GitHub em https://github.com/Microsoft.

Para começar é necessário registar a sua conta Microsoft em https://www.microsoft.com/cognitive-services/en-us/apis e subscrever gratuitamente uma quota diária de pedidos. Por norma, as quotas diárias são suficientes para testar a aplicação.

Pondo isto, vamos começar por selecionar um ficheiro de áudio na nossa aplicação e submeter um pedido ao Microsoft Speech Service.

Para tal cria-se um HTTP WebRequest para o seguinte endpoint  https://speech.platform.bing.com/recognize criando a seguinte URL

Antes de se fazer o pedido, é necessário converter o nosso ficheiro num FileStream para ser enviado no upload:

Caso o pedido seja efetuado com sucesso, será devolvida uma string num formato JSON, utilizaremos essa string para extrair a informação que é do nosso interesse.

A variável lexical contém o texto que foi capturado no ficheiro de áudio. A segunda variável, confidence tem valores entre 0 e 1, que correspondem qual o grau de confiança da tradução efetuada. Onde 0 não existe certeza da tradução efetuada, e 1 significa que existe total certeza na tradução efetuada.

Uma vez obtido o texto, vamos passar agora para o serviço de avaliação de sentimento. Este recebe um input no formato JSON com o formato mostrado na imagem abaixo.

A classe C# abaixo traduz o objeto JSON mostrado acima.

Com o texto obtido na resposta anterior, usamos essa mesma variável para se efetuar um novo pedido para o serviço Text Analysis, de modo a identificar qual o seu idioma.

Novamente, com o mesmo input, fazemos outro pedido de forma a extrair informações sobre o sentimento. Este serviço devolve valores entre 0 e 1, que indicam a percentagem de felicidade do texto avaliado. Onde 0 é pouco feliz e 1 é muito feliz.

Com todos os valores que são do nosso interesse, vamos introduzir um novo registo na base de dados de forma a podermos utilizar estes dados futuramente.

 

Como se pode ver, obtemos do serviço Speech to Text e Text Analysis uma tradução bastante boa, na ordem dos 89% (Confidence). Eu posso garantir a totalidade da tradução 100%. Também podemos ver que se identificou o português como idioma e que a pessoa que fala no ficheiro de áudio está muito contente, na ordem dos 98,9% (Score).

Ao contrário do que se obteve acima, nesta avaliação vê-se claramente uma elevada tristeza na frase avaliada, cerca de 0.09% de Felicidade.

Uma vez que os resultados estão guardados numa base de dados, temos autonomia para trabalhar esta informação. Por exemplo, podemos analisar a média dos sentimentos dos ficheiros avaliados ou avaliar o próprio texto que foi detetado com algoritmos pessoais ou desenvolvidos por terceiros. Existe uma vasta aplicabilidade onde esta informação poderá ser utilizada.

.

.

.

.

   Bruno Rodrigues

Software Engineering