Processamento de Linguagem natural
oferecendo uma tela sem botões a seu cliente
Hoje em dia é muito comum os usuário interagirem de formas diferentes com seus aplicativos, e cada vez mais, é solicitado que se crie projeto com interpretação de linguagem natural. Isso não acontece só porque nos dias de hoje existe poder computacional disponível para isso, mas também porque é mais rápido desenvolver utilizando os serviços cognitivos.
Estes serviços permitem o usuário digitar uma ação de texto corrido, ou então para ele dizer (utilizando voz) o que deseja, ou até para explorar documentos. Estas tarefas são possíveis, graças à técnicas de processamento de linguagem natural. Estas técnicas não são atuais, já existem desde a década de 60!
Como funciona a interpretação de linguagem natural
Existem diversas técnicas computacionais que permitem interpretar os textos de forma natural. Você pode procurar por elementos e como técnicas, como:
Stemming que destacam o radical da palavra e se refere a um processo heurístico bruto que corta o final das palavras na esperança de atingir o objetivo corretamente na maioria das vezes;
Lemmatization que se refere a fazer as coisas corretamente com o uso de uma análise de vocabulário e morfologia das palavras, buscando remover as terminações flexionadas e retornar a forma básica ou de dicionário de uma palavra.
Stop Words que são as palavras de ligação, artigos, preposições, e outras palavras que fazem com que os textos sejam entendidos para os humanos, mas que não trazem muito benefício para a máquina na hora de interpretar o que está escrito ali.
Token é o termo usado para a palavra, ou conjunto de palavras, que está sendo tratada naquele contexto da interpretação. Contudo, o token depende do Corpus, que é o conjunto de documentos utilizado para aquele domínio de assunto. Todos os documentos utilizado naquele domínio são denominado de Corpus.
O que fazer
Pense que, quando um texto é enviado para uma análise, é fundamental entender o que ele significa para então tomar uma ação. Contudo, esse texto pode ser passado de diversas formas diferentes. Mas se isso acontece, como podemos interpretá-lo e entender o que se espera de resultado? É exatamente neste momento que as técnicas em projetos de interpretação de linguagem natural são aplicadas.
Estas técnicas auxiliam o modelo de Inteligência Artificial a entender as intenções de cada texto e extrair possíveis entidades. O resultado esperado é que, ao usar estas técnicas, as ações sejam realizadas de várias formas diferentes, mas, devem responder da mesma forma. Como acontece em uma conversa natural entre pessoas.
Se for utilizar os serviços cognitivos da Microsoft, você pode combinar as técnicas de QnA e LUIS.
QnA
É o serviço de Perguntas e Respostas, que permite criar relacionamentos entre o que é perguntado e o que é respondido. Diversas perguntas podem ser direcionadas à uma resposta, isso aumenta a variação de formas que as perguntas são feitas, para que o sistema possa responder de forma correta.
Os três itens de destaque do QnA são
- Perguntas – é o que você espera que um usuário faça. As perguntas serão combinadas com respostas;
- Respostas – a resposta que será retornada quando um usuário fizer uma pergunta. A resposta está emparelhada com uma pergunta na base de conhecimento;
- Metadados – são tags associadas ao par de perguntas e respostas. Internamente, eles são representadas como pares de chave-valor e filtram os pares de Pergunta/Resposta para corresponder a uma consulta do usuário.
LUIS
É o acrônimo de Language Understanding Intelligent Service. Que é responsável por receber uma sentença, ou declaração, e é responsável por extrair a intensão e entidade daquele texto. Os principais elementos do Luis são:
- Declarações – as declarações são inseridas pelo usuário, e enviadas ao aplicativo, que é responsável por interpretá-la;
- Intenção – uma intenção representa uma tarefa ou ação que o usuário deseja executar. É um propósito ou objetivo expresso na declaração de um usuário;
- Entidades – A entidade representa uma palavra ou frase dentro do texto, que você deseja extrair.
Dicas de criação
Ao criar projetos de interpretação de linguagem natural, é esperado que você adicione elementos que permitem e facilitem as interações do usuário com seu sistema. Contudo separei alguns elementos importantes para criar seu projeto.
- Intenções – verifique se elas são distintas. Não crie sobreposição com enunciados como ‘Reservar um voo’ e ‘Reservar um hotel’. Você pode diferenciar qual aspecto da ‘reserva’ você quer extrari, definindo voo e hotel como entidades;
- Construir iterativamente – mantenha um conjunto separado de sentenças que não são usados como exemplo de declaração ou ponto final. Continue melhorando o aplicativo para seu conjunto de testes, contudo adicione as novas frases para ensinar o aplicativo com as interações dos usuários. Adapte o conjunto de testes para refletir as declarações reais do usuário. Usar este conjunto de teste para avaliar cada iteração ou versão do aplicativo.
- Use a intenção Nenhuma (none) – essa é a intenção de fallback, significa que o aplicativo não sabe o que é aquela sentença enviada pelo usuário. Adicione ao menos 1 exemplo de sentença à intenção Nenhuma, mas faça isso para cada 10 sentenças de exemplo do seu aplicativo.
Projeto com interpretação de linguagem natural
Neste vídeo é explicado como é fácil criar um Bot que interpreta textos para responder uma FAQ.