Detecção de informações em expressões
No tutorial anterior, você aprendeu sobre intents e expressões. Nesta seção, cobriremos outra parte importante da construção de bot: entidades.
Você aprenderá como detectar informações valiosas que um usuário menciona em um intent, usando entidades contextuais. Entidades são informações importantes extraídas de uma expressão. Existem quatro tipos de entidades.
Neste tutorial, vamos nos concentrar em um tipo de entidade: entidades contextuais. Entidades contextuais usam aprendizado de máquina para identificar entidades em frases, aprendendo que tipo de palavra sua entidade é, onde ela é colocada na frase e qual é o contexto específico.
Você deseja armazenar essas entidades contextuais em uma variável separada para que possa reutilizá-las posteriormente. Leia mais sobre a diferença entre entidades e variáveis aqui. No próximo tutorial, você aprenderá como pedir explicitamente as informações que faltam.
Digamos que temos um intent que informa que o usuário deseja reservar uma passagem de trem. Algumas expressões diferentes podem ser:
- Eu quero uma passagem de trem
- Eu preciso de uma passagem
- Posso reservar uma passagem de trem aqui?
Portanto, quando o usuário dissesse qualquer uma dessas expressões, a caixa de diálogo do bot onde você vinculou o intent correspondente seria acionada.
Mas o que acontece quando o usuário diz algo como:
- Eu quero uma passagem de trem para Amsterdam
- Eu preciso ir para a Antuérpia amanhã
- Posso reservar uma passagem de trem para Bruxelas, por favor?
Essas expressões contêm informações valiosas. Queremos ter certeza de que capturamos essas informações, neste caso o destino e a hora, e as salvamos como entidades. Em seguida, temos expressões com uma entidade neles.
Agora vamos criar um novo intent com algumas expressões para reservar uma passagem de trem. Algumas dessas expressões conterão uma entidade contextual, mas outras não.
Nem todos os usuários mencionarão imediatamente seu destino, então vamos nos certificar de treinar nossa intenção sem essas entidades específicas também:
- Vá para
NLP
>Intents
- Clique em
Adicionar Intent
- Adicionar um novo intent chamado
reservar passagem de trem
- Adicione algumas expressões simples, como:
- Eu quero uma passagem de trem
- Eu preciso de uma passagem
- Posso reservar uma passagem de trem, por favor?
Em seguida, é hora de adicionar uma entidade contextual.
- Acesse
Intents
e selecione o intentreservar passagem de trem
- Clique em
+ Adicionar expressão
para criar uma nova expressão - Insira uma expressão que contenha uma entidade, por exemplo:
Quero reservar uma passagem de Bruxelas para Paris
- Selecione
Bruxelas
nesta frase.

- Clique no ícone'+ entidade' no canto inferior direito da caixa de expressão para criar uma nova entidade contextual para 'Bruxelas'
- Bruxelas é o local de onde o usuário deseja sair, então nomearemos a
origem
dessa entidade - Digite a
origem
no campo Criar nova entidade e clique em 'Criar nova entidade
' para confirmar

- Bruxelas será adicionado à lista de valores possíveis para a variável @origem
- Faça o mesmo com Paris como uma entidade de 'destino'
Você terá então a seguinte configuração para esta expressão:

Agora, adicionamos a expressão 'Quero reservar uma passagem de @origem para @destino', onde 'Bruxelas' é um valor para @origem e 'Paris' é um valor para a entidade @destino.
- Adicione alguns outros valores às entidades 'origem' e 'destino' no campo de expressão. Eles serão salvos para todas as expressões futuras. Você pode adicioná-los na caixa 'Criar novo valor' e pressionar Enter.
- Adicione mais expressões que contenham a origem e o destino das entidades
Depois de adicionar mais valores de Entidade, eles também aparecerão no menu Entidades> Entidades contextuais

- Agora, vamos adicionar mais algumas expressões ao nosso intent
Reservar passagem de trem
. Algumas ideias para expressões: - Posso reservar um trem de Colônia para Bruxelas?
- Eu preciso estar em Rotterdam
- Eu preciso de um trem para Londres
- Eu quero viajar para Lyon
- Eu quero comprar uma passagem de Moscou para Vladivostok
- Eu preciso de uma passagem de Nova York para Baltimore
Ao digitar uma nova expressão, você pode adicionar entidades e valores de entidade de duas maneiras:
1. Digite @ e, em seguida, o nome da entidade, por exemplo @origem. Você pode adicionar um novo valor na caixa abaixo com 'Criar novo valor'
2. Selecionando um valor de entidade e clicando no botão + valor de entidade. Por exemplo, selecione 'Colônia', clique no botão +. Isso resultará em 'Colônia' sendo alterado para @origem e 'Colônia' terá um valor de @origem
- Certifique-se de treinar novamente o modelo de NLP clicando no botão
Atualizar NLP
no canto superior direito.
Isso agora resultará em algumas expressões para o intent
Reservar passagem de trem
e valores de entidade, como:


Nós construímos uma maneira de criar muitas expressões muito rápido: o gerador de expressões. Siga as instruções nesta página para começar a usar essa ferramenta.
Depois de retreinar nosso modelo, vamos ver se ele é bom o suficiente para reconhecer a entidade de destino.
- Vá para
NLP
>Teste para abrir o console de teste
- Escreva 'Eu gostaria de ir a Bruxelas de Amsterdã' como a expressão a ser testada
- Clique em
Testar
Você verá que a entidade é reconhecida com uma confiança de 99,93%. Os resultados serão diferentes com base no seu conjunto de treinamento. Se a entidade não for reconhecida corretamente, você pode adicioná-la aqui como uma expressão de treinamento imediatamente clicando em
+Adicionar expressão
. Certifique-se de treinar novamente o modelo NLP antes de testar as expressões recém-adicionadas.

Agora sabemos como adicionar intents, criar expressões e entidades. Isso já é um grande passo para construir nosso bot Choo Choo. Agora, precisamos criar uma conversa para que o usuário possa falar com o bot e o bot responder. Vamos adicionar algumas mensagens de bot na próxima etapa.
Quando um usuário diz algo que contém uma entidade, e a entidade é detectada com sucesso, nossa ferramenta armazena automaticamente a entidade como uma variável para aquele usuário específico.
No momento, quando você testa seu bot, o usuário fica preso depois de fornecer as informações sobre o tíquete:

No entanto, vemos alguns itens positivos, nomeadamente que a 'origem' e o 'destino' são armazenados corretamente como variáveis. Você pode ver isso abrindo o depurador clicando em 'Depurador' (com o ícone da lupa) no emulador. Na guia 'Depurador', você pode rolar para baixo e ver o seguinte:

Portanto, embora a frase forneça uma mensagem de erro, essas entidades são reconhecidas corretamente na entrada do usuário. Isso significa que a variável 'origem' agora é salva com um valor de variável 'Bruxelas' e a variável 'destino' com o valor 'Paris'. Além disso, na guia '' Resultado de NLP', vemos que o intent foi reconhecido corretamente, isso é ótimo! Agora vamos trabalhar na remoção dessa mensagem de erro primeiro.
A mensagem de erro é causada pelo fato de que o intent
Reservar passagem de trem
não tem uma caixa de diálogo de bot vinculada a ela. Portanto, mesmo que seja reconhecido corretamente, não estamos dizendo ao bot o que fazer quando essa intenção for reconhecida. Podemos mudar isso adicionando uma nova mensagem do Bot:
- Nas caixas de diálogo do bot do menu, abra o fluxo 'Geral', crie uma caixa de diálogo do bot do tipo 'Mensagem do bot' para
reservar passagem de trem
. Abra a guia 'NLP' e escolha o intentReservar passagem de trem
na lista suspensa 'Intent'. - Na guia 'Configurações', nomeie a mensagem do bot
Reservar passagem de trem
- Adicione uma nova mensagem de texto com o texto "Então, você quer ir para
{destino}
, posso ajudá-lo com isso!" - Clique em
Criar
para salvar esta mensagem do bot.
Para reutilizar a variável posteriormente na conversa, você pode colocá-la entre colchetes como este: {nome_variável}
Ao escrever esta mensagem para os usuários, Chatlayer substituirá automaticamente {nome_variável} pelo valor da variável. Se a variável estiver vazia, um espaço vazio será mostrado.
As variáveis podem ser usadas em qualquer lugar da plataforma, por exemplo, em chamadas de API, modelos de lista e rótulos de botão.

Agora vinculamos o
Reservar a passagem de trem
a esta mensagem do bot, ótimo trabalho! Isso significa que, quando um usuário disser algo que acione o intent Reservar passagem de trem
, essa mensagem do bot será exibida.
Agora que vinculamos tudo, estamos prontos para testar se tudo está configurado corretamente usando o emulador.
- Abra o emulador (também conhecido como
Testar seu bot
) - Se necessário, limpe a última conversa clicando em 'Limpar conversa' para iniciar uma nova conversa desde a introdução.
- Digite "Eu quero ir para Amsterdã" e clique em enviar
- Abra o depurador.
Na aba 'Resultado de NLP' agora você pode ver se a entidade foi extraída corretamente.

Para usar novos diálogos de bot, mesmo ao usar variáveis, você não precisa treinar novamente o NLP.
Se você não obtiver o resultado indicado acima, verifique os seguintes itens em seu bot:
- Se sua entidade for reconhecida pelo NLP, mas não aparecer com
{destino}
, ela não ultrapassou o limite de 80%. Experimente adicionar esse valor à sua entidade e treinar novamente o seu modelo ou escolha outro destino - Se você obtiver 'Desculpe, não entendi', verifique se seu intent está vinculada à mensagem do Bot e se ela foi salva corretamente.
- Se seu intent ou expressão não for reconhecida, tente treinar novamente seu NLP.
Agora já temos um ótimo começo vinculando o intent e dando uma resposta à expressão que o usuário diz. No entanto, queremos mais informações do usuário. Vamos adicionar mais expressões e entidades.
Você pode adicionar quantas entidades quiser a uma expressão. Para o Choo Choo, queremos mais informações do usuário do que apenas o destino e a origem, para dar uma experiência completa de reserva de trem. Vamos adicionar mais entidades contextuais!
- Vá para o menu
Expressões
- Clique em 'Adicionar Expressão'
- Selecione o intent
Reservar passagem de trem
Crie a seguinte expressão:
- Eu quero ir de
Antuérpia
paraBruxelas amanhã
às9h
naprimeira classe
Com as seguintes entidades:
- origem: Antuérpia
- destino: Bruxelas
- data de partida: amanhã
- hora de partida: 9h
- classe: primeira
Se você estiver tendo problemas para adicioná-los, volte para a etapa 9 neste tutorial para ler tudo sobre isso.

Sugestões adicionais para expressões
- Eu preciso estar em Paris na próxima quinta-feira
- Eu preciso estar em Nova York sexta-feira
- Eu quero ir para Bruxelas segunda-feira
- Sexta eu quero ir de Antuérpia para Amsterdã
- Eu quero viajar na segunda classe de Gante para Bruxelas na sexta-feira
- Eu quero viajar de primeira classe de Antuérpia para Aalst na quinta-feira
- Eu gostaria de reservar uma passagem de primeira classe de Aalst para Bruxelas às nove horas
- Amanhã quero ir de Antuérpia a Bruxelas no trem a partir das 9h na primeira classe
Lembre-se de que as técnicas de NLP são probabilísticas por natureza. Quando você tenta capturar cinco expressões em uma frase, ele pode não ser capaz de reconhecer todas elas corretamente. Como regra geral, você pode começar a esperar resultados razoáveis para uma entidade quando o NLP recebeu pelo menos 30 expressões para aprender.
Adicione mais expressões com as novas entidades contextuais ao intent. Certifique-se de ter cerca de 20 expressões para
Reservar passagem de trem
no total.
Vamos testar suas expressões recém-criadas:
Atualize a mensagem do bot
reservar passagem de trem
, na visão geral dos Diálogos do Bot, para exibir as entidades. Portanto, tenho um pedido de passagem de trem; {origem} para {destino} em {data de partida}, {hora de partida}, classe de {classe}.
Agora treine novamente seu modelo de NLP e teste seu bot:
Se você receber uma mensagem de erro ao tentar atualizar seu NLP, cerca de 5 entidades de exemplo, isso significa que você precisa adicionar mais valores de entidade a algumas de suas entidades recém-criadas. Vá para NLP > Entidades> Entidades contextuais e certifique-se de que essa entidade tenha pelo menos 5 valores.

Uh oh, isso não é realmente o que esperávamos. Como você pode ver, a data e a hora da partida não estão definidas (seu resultado pode ser diferente dependendo das expressões que você usou).
Então qual é o problema? Vamos dar uma olhada nos resultados do NLP:

origem, destino, classe
e horário de saída
foram encontrados corretamente, mas apenas origem, classe e destino
têm um índice de confiança acima de 80%. Portanto, a data de partida
não foi processada e colocada em uma variável. Neste bot, temos um limite de 80%, portanto, uma pontuação de 76,99% não era alta o suficiente. Mais expressões podem ajudá-lo a resolver este problema! Tente adicionar mais expressões e treinar novamente seu modelo para ver se a variável agora é exibida corretamente na mensagem do bot.
Seu bot agora tem a seguinte configuração:
- 3 intents com cerca de 35 expressões no total
- 5 entidades contextuais
- Uma mensagem de bot, vinculada ao intent Reservar passagem de trem, confirmando a entrada do usuário na mensagem
Agora você sabe fazer:
- Criar entidades contextuais e valores de entidade
- Usar variáveis em uma mensagem de bot
- Usar várias entidades contextuais em uma expressão
- Testar sua entrada no depurador
Nem todo usuário fornecerá todas as entidades de que você precisa. No próximo tutorial, você aprenderá como verificar se um usuário já forneceu certas informações e perguntar o que está faltando.