Cloud Computing

Cloud Computing

Introdução ao LUIS – Parte 01: Conceitos importantes

11 jan, 2018
Publicidade

Quem é o LUIS

LUIS é um dos serviços oferecidos pela Microsoft como parte do Azure Cognitive Services. Ele se destina à comunicação entre humanos e máquinas, tendo por objetivo reconhecer a intenção de uma solicitação. Por envolver as nuances da linguagem humana, são necessários cuidados especiais na definição e no treinamento do modelo utilizado. Este é o primeiro de uma série de artigos que pretendem mostrar como trabalhar com o LUIS.

Neste artigo, apresento conceitos básicos que são importantes na construção dos modelos usados neste tipo de aplicação.

Visão

O nome LUIS vem da sigla para “Language Understanding Intelligent Service” (em português Serviço Inteligente de Compreensão de Linguagem). Este serviço passou a ser oficialmente oferecido pela Microsoft a partir de dezembro/2017.

Em geral, o LUIS trabalha associado a outros serviços cognitivos do Azure, como bots ou aplicações de conversão de voz para texto e texto para voz. Porém, ele é um componente essencial nesta arquitetura, visto que sua proposta é facilitar a comunicação em tempo real com seres humanos, interpretando a intenção por trás de uma frase ou enunciado.

Com o LUIS, é possível criar rapidamente uma aplicação que interprete as solicitações de usuários finais que interagem com a máquina, reconhecendo o propósito da mensagem e auxiliando o bot a selecionar a resposta apropriada.

O ponto alto deste serviço é que ele permite que profissionais que não tenham formação em ciência de dados tenham acesso a recursos de inteligência artificial. Combinando conceitos de linguagem natural e aprendizado de máquina (ou ML, do inglês, Machine Learning), os principais desafios para a criação de uma aplicação de sucesso estão na definição do modelo (o que se pretende identificar) e no seu treinamento.

Conceitos importantes

Basicamente, para se criar um bom modelo do LUIS é necessário dominar três conceitos: intenções, entidades e sentenças. A seguir, apresentamos uma visão geral de cada um deles.

Intenções

Obviamente é o componente principal dos modelos. Intenções são associadas às ações (no caso, os verbos) que se pretende identificar.

É uma boa prática escolher intenções bem definidas e distintas, ou seja, ações que não apresentem ambiguidade entre si. Esse é um fator de sucesso, pois assim será mais fácil treinar o modelo e, em consequência, elevar a sua taxa de acerto.

Por exemplo: imagine a criação de uma aplicação do LUIS para uma agência de viagens. Neste caso, o modelo pode ficar confuso se houver intenções para reconhecer, por exemplo, a compra de passagem aérea e a compra de pacote turístico. Nos dois casos, a ação (a intenção) é a mesma: COMPRAR. O que muda é apenas o objeto da compra.

Na versão atual, o LUIS suporta até 500 intenções por aplicação. Este número pode parecer pequeno, mas não é, porque estamos falando de ações distintas: imagine-se criando uma lista com 500 verbos diferentes (sem necessidade de incluir sinônimos).

De qualquer modo, caso o seu modelo realmente precisar incluir mais intenções, existem formas alternativas de se criar aplicações que usem uma quantidade de intenções maior que este limite.

Entidades

É o segundo componente do modelo do LUIS. Entidades se referem genericamente substantivos, ou pensando em termos linguísticos, aos objetos que sofrem as ações. Frequentemente as entidades caracterizam as ações de cada sentença, funcionando de forma equivalente a variáveis em um código.

No exemplo da agência de viagens citado anteriormente, poderíamos definir uma entidade PRODUTO. Esta entidade poderia assumir os valores “passagem aérea”, “pacote turístico” ou qualquer outro produto relevante vendido pela agência.

O LUIS permite usar diversos tipos diferentes de entidades:

  • Pré-definidas, que incluem datas, números, idade, geografia, entre diversas outras
  • Simples, que funcionam como uma entidade com valor único (constante)
  • Hierárquicas, usadas para casos em que as entidades envolvem relações tipo “pai-filho”
  • Compostas, que organizam dentro de uma hierarquia outras entidades simples existentes no modelo
  • Listas, que informam o conjunto de valores possíveis para uma dada variável

O número máximo de entidades de um modelo varia conforme o tipo de entidade usada. Para mais informações, verifique a documentação oficial do LUIS.

Sentenças

Sentenças ou enunciados se destinam a treinar o modelo do LUIS. Porém, em qualquer modelo de ML, o treinamento do modelo é de importância fundamental e, portanto, a escolha das sentenças merece atenção especial.

O LUIS analisa a estrutura linguística de cada sentença, de modo a poder extrapolar suas previsões mesmo quando estiver avaliando frases aparentemente diferentes daquelas que “ensinaram” o modelo. Cada sentença pode ter até 500 caracteres e há uma aplicação do LUIS suporta até 15 mil sentenças de treinamento.

Um bom treinamento envolve sentenças com diversos formatos e estilos diferentes, desde que todas tenham uma associação clara com uma intenção específica e sua(s) entidade(s), quando existirem. Combine sentenças curtas e longas (exemplo: “quero ir para São Paulo” ou então “boa tarde, eu gostaria de viajar para a cidade de São Paulo no próximo voo disponível da companhia aérea XYZ, por favor”).

Considere também a possibilidade de incluir sentenças com erros ortográficos e/ou morfológicos. Estes são problemas frequentes na escrita e, portanto, sua inclusão pode melhorar os resultados na interação com humanos.

A Seguir

Compreendendo estes conceitos, pode-se passar a construção de um modelo para aplicação do LUIS. Isso é tema do próximo artigo da série.