Do básico ao avançado: como funciona a modelagem da IA dos chatbots

Karina Kato
karinakato
Published in
7 min readJun 2, 2019

É muito comum, na construção de chatbots com inteligência artificial, nos depararmos com os termos “intenção” e “entidade”. Nesse post iremos do básico ao avançado para explorar o processo de modelagem de intenções e entidades. Sendo assim, você verá desde a definição desses conceitos até como podemos executar um processo eficiente para facilitar a modelagem.

Antes de iniciarmos falando sobre intenções e entidades, vamos dar um passo atrás e entender porque é interessante ter inteligência artificial no chatbot. Primeiramente, inteligência artificial (AI ou IA) é um termo muito amplo que pode estar relacionado a diversas áreas. No contexto dos chatbots, um campo muito importante é o processamento de linguagem natural (NLP), que consiste em uma combinação das áreas de linguística com inteligência artificial e objetiva ensinar as máquinas como interpretar automaticamente a linguagem humana. Então seremos mais específicos na nossa pergunta: por que é interessante ter NLP no chatbot?

Bom, você já parou para pensar em como nosso idioma é rico e podemos fazer uma solicitação de diversas formas diferentes? Por exemplo, imagine que você deseja reservar um quarto individual de hotel para sexta-feira. Uma opção plausível para fazer essa solicitação seria: “Gostaria de reservar um quarto de solteiro na sexta-feira”, outra opção possível: “Quero fazer uma reserva de um quarto individual para sexta”. Perceba que “gostaria de reservar” e “quero fazer uma reserva”, apresentam o mesmo objetivo nesse contexto, como também, “quarto de solteiro” e “quarto individual” se referem ao mesmo objeto? Seguindo o mesmo raciocínio também temos “sexta-feira” e “sexta”. Há inúmeras formas de fazer a mesma solicitação, fato que dificulta mapear a combinação dessas variações nos métodos mais tradicionais. Logo, é indicado o uso do processamento de linguagem natural, mais especificamente, o uso de intenções e entidades.

Por que usar NLP?

As intenções representam o assunto principal da frase do usuário. Cada intenção é composta por um nome e por várias frases de exemplos, as quais representam as variações na forma de solicitar um mesmo assunto. Sendo assim, quando você treina um modelo de NLP para que ele aprenda as intenções que serão tratadas no seu chatbot, você está fornecendo exemplos válidos da essência das frases que denotam aquela intenção. Logo, a frase enviada pelo usuário não precisa ser a mesma que as frases de exemplo da intenção, pois o modelo deve ser capaz de aprender a generalizar as frases que representam uma intenção e não apenas decorá-las.

Estrutura de uma intenção

Já as entidades servem para especificar melhor o assunto da intenção. A estrutura da entidade é um pouco diferente, pois cada uma delas possui nome, valores e sinônimos. O uso de entidades não é obrigatório, mas ajuda a diminuir o número de intenções necessárias e, principalmente, possíveis confusões do seu modelo de NLP, pois serão menos intenções parecidas que o seu modelo terá que aprender.

Voltemos ao nosso exemplo da reserva de quarto individual na sexta-feira. Neste caso, uma opção muito válida seria a modelagem da intenção de nome reservar quarto com exemplos gerais de variações de como um usuário poderia solicitar uma reserva. Se quisermos tratar diferente a reserva dependendo do quarto e da data poderíamos ter as entidades tipos de quarto e dia da semana, pois faria mais sentido e geraria menos confusões que modelar “reservar quarto solteiro”, “reservar quarto casal”. Um exemplo até pior seria modelar uma intenção para cada dia da semana e cada tipo de quarto, como: “reservar quarto solteiro na sexta-feira”. Neste último cenário, teríamos 14 intenções diferentes que representariam a mesma coisa e gerariam ainda mais confusão no modelo, pois os exemplos seriam muito similares.

Estrutura de entidades

Boas Práticas

Perceba que foram passados exemplos com um vocabulário bem diferente para a intenção reservar quarto, mas que tratam do mesmo assunto. É importante ressaltar que os exemplos das intenções devem ser similares entre uma mesma intenção e bem diferentes das outras intenções. Assim, seu modelo irá aprender a generalizar melhor qual é a essência daquela intenção. No nosso caso, o que significa reservar quarto. No geral, recomenda-se passar pelo menos dez exemplos para cada intenção. Lembrando que as variações sintáticas muito pequenas (como apenas a troca de um artigo) são desnecessárias e não recomendadas.

Boas práticas com os exemplos das intenções

Um erro muito comum que as pessoas cometem na modelagem é a criação de exemplos de intenções com frases muito extensas que fogem do contexto principal da intenção, por exemplo: “Olá, tudo bem? Eu estou interessada em alugar um quarto individual nesse hotel para sexta-feira”. Como dito anteriormente, seu modelo deve aprender a essência da intenção reservar quarto. Logo, detalhes que não caracterizem aquela intenção, devem ser retirados dos exemplos, mas ao mesmo tempo, evite cadastrar apenas exemplos curtos (com menos de 3 palavras).

Boa prática com os exemplos das intenções

Outra dica é não esquecer de cadastrar exemplos de sinônimos nas entidades. Conforme mencionado anteriormente, a estrutura das entidades é diferente das intenções. Uma das maiores diferenças é no funcionamento, pois as intenções podem ser identificadas mesmo se a frase do usuário for diferente do exemplo passado. No caso das entidades, a(s) palavra(s) deve ser a mesma dos valores ou sinônimos para ser identificada. Logo, é essencial cadastrar as variações possíveis mesmo que sejam muito similares. Por exemplo: se cadastrado apenas sexta e a frase do usuário apresentar sexta-feira, a entidade sexta não será identificada.

Bia prática com os sinônimos das entidades

Processo de modelagem

No geral, definir a estrutura ideal de modelagem para o seu problema é complicado e demanda prática. Entretanto, o processo a seguir pode dar um direcionamento e facilitar a modelagem de intenções e entidades.

Em resumo, iremos criar uma tabela com os assuntos que estarão no escopo do chatbot. A partir das respostas e dos conteúdos que deverão ser entregues é que entenderemos quais frases podem originar aquelas respostas. Com essa tabela em mãos, avançaremos para a criação de uma árvore que nos auxiliará a encontrar bons candidatos a intenções e entidades. Então, vamos começar!

Primeiramente, a planilha deverá ter uma coluna com as possíveis respostas dadas pelo chatbot ou ações necessárias (exemplo: chamada de determinada API). Na segunda coluna, registre exemplos de frases que condizem com as respostas da primeira coluna. Não precisa se preocupar em já pensar em mais de 10 exemplos nessa etapa, uns 3 exemplos de variações é o suficiente, pois ainda estamos apenas organizando a estrutura. Crie também uma outra coluna para extrair qual é o assunto principal das frases de exemplos geradas a partir da resposta. Por fim, faça uma coluna com os complementos possíveis. A seguir, temos uma tabela de auxílio de modelagem para o nosso exemplo do hotel.

Tabela de modelagem de intenções e entidades

Agora que você já sabe como elaborar a tabela de modelagem, chegou a hora de estruturar essas informações para gerar intenções e entidades. Nessa fase, iremos montar uma árvore que na raiz há todos os assuntos que o chatbot irá tratar. No nó abaixo da raiz, terão os assuntos principais. Já no próximo nó, serão abordados os complementos. Nas folhas, terão os possíveis valores dos complementos.

Com a árvore pronta fica mais fácil visualizar os possíveis candidatos a nomes de intenções, nomes de entidades e valores de entidades. Os nós no nível 1 representam candidatos a nomes de intenções. Os nós do nível 2 são os candidatos a nomes de entidades. As folhas das árvores são os valores das entidades.

Uma grande vantagem dessa modelagem estruturada com a árvore é que a relação entre as intenções e entidades se tornam mais claras. Inclusive, se houver a necessidade de adicionar novas respostas, como por exemplo: pedir endereço não apenas do hotel, mas também de restaurantes próximos, seria fácil de visualizar que a criação de uma entidade denominada local com os valores restaurante e hotel seriam apropriadas.

É importante ressaltar que esse processo de modelagem serve como um rascunho, assim como o esboço para quem desenha, ou seja, pode auxiliar a estruturar melhor o modelo, mas também pode ser refinado conforme haja a necessidade.

Para finalizar, queria adicionar que a modelagem de intenções e entidades não é uma tarefa simples. Logo, é fundamental que ela seja consistente e planejada para gerar menos conflitos entre as intenções. Estes direcionamentos e dicas de boas práticas podem auxiliá-lo nessa jornada, mas lembre-se que cada problema é único e pode se tornar muito complexo dependendo da similaridade entre os assuntos abordados. Além disso, mesmo uma boa modelagem demanda o processo de aprimoramento, isto é, adicionar novos exemplos, corrigir conflitos, pequenas reestruturações, mas isso é tema de uma nova conversa!

--

--