Planejar seu aplicativo LUIS

Importante

O LUIS será desativado em 1º de outubro de 2025 e, a partir de 1º de abril de 2023, você não poderá criar novos recursos do LUIS. Recomendamos migrar seus aplicativos LUIS para a compreensão da linguagem coloquial para usufruir do suporte contínuo ao produto e aos recursos multilíngues.

Um esquema de aplicativo LUIS (Reconhecimento vocal) contém intenções e entidades relevantes ao domínio da entidade. As intenções classificam enunciados do usuário e as entidades extraem dados dos enunciados do usuário. Intenções e entidades relevantes ao domínio de assunto. As intenções classificam os enunciados do usuário.

Um aplicativo LUIS aprende e tem um desempenho mais eficiente quando você o desenvolve de maneira iterativa. Veja um ciclo de iteração típico:

  1. Criar uma nova versão
  2. Editar o esquema do aplicativo LUIS. Isso inclui:
    • Intenções com exemplos de enunciados
    • Entidades
    • Recursos
  3. Treinamento, teste e publicação
  4. Testar o aprendizado ativo revisando os enunciados enviados ao ponto de extremidade de previsão
  5. Coleta de dados de consultas de ponto de extremidade

Uma captura de tela mostrando o ciclo de criação

Identificar seu domínio

Um aplicativo LUIS gira em torno de um domínio da entidade. Por exemplo, você pode ter um aplicativo de viagem que administra a reserva de passagens, voos, hotéis e carros de aluguel. Outro aplicativo pode fornecer conteúdo relacionado a exercícios, acompanhamento de esforços fitness e definição de metas. Identificar o domínio ajuda a localizar palavras ou frases que são relevantes para o seu domínio.

Dica

O LUIS oferece domínios predefinidos para muitos cenários comuns. Verifique para ver se é possível usar um domínio predefinido como ponto de partida para seu aplicativo.

Identificar suas intenções

Pense nas intenções importantes para a tarefa do seu aplicativo.

Vamos usar o exemplo de um aplicativo de viagem, com funções para reservar um voo e verificar o clima no destino do usuário. É possível definir duas intenções, BookFlight e GetWeather, para essas ações.

Em um aplicativo mais complexo com mais funções, provavelmente, você terá mais intenções e deverá defini-las com cuidado para que não sejam muito específicas. Por exemplo, BookFlight e BookHotel podem precisar ser intenções separadas, mas BookInternationalFlight e BookDomesticFlight podem ser muito semelhantes.

Observação

É uma melhor prática usar apenas as intenções de que você precisar para executar as funções do seu aplicativo. Se você definir intenções demais, ficará mais difícil para o LUIS classificar declarações corretamente. Se você define poucas intenções, elas podem ser tão genéricas que se sobrepõem.

Se você não precisar identificar a intenção geral do usuário, adicione todos os enunciados de usuário de exemplo à intenção None. Se o seu aplicativo precisar de mais intenções, você poderá criá-las mais tarde.

Crie exemplos de declarações para cada intenção

Para começar, evite criar muitos enunciados para cada intenção. Depois de determinar as intenções necessárias para seu aplicativo, crie 15 ou 30 exemplos de enunciados por intenção. Cada enunciado deve ser diferente dos enunciados fornecidos anteriormente. Inclua uma variedade de contagens de palavras, escolhas de palavras, tempos verbais e sinais de pontuação.

Para obter mais informações, confira Reconhecimento de bons enunciados em aplicativos LUIS.

Identificar suas entidades

Nos exemplos de declarações, identifique as entidades que você deseja extrair. Para reservar um voo, são necessárias algumas informações, como o destino, data, companhia aérea, categoria da passagem e classe da viagem. Crie entidades para esses tipos de dados e marque as entidades nos enunciados de exemplo. As entidades são importantes para cumprir uma intenção.

Ao determinar quais entidades serão usadas no aplicativo, lembre-se de que há diferentes tipos de entidades para capturar as relações entre tipos de objetos. Confira Entidades no LUIS para obter mais informações sobre os diferentes tipos.

Dica

O LUIS oferece entidades predefinidas para cenários de usuário comuns de conversação. Considere usar entidades predefinidas como um ponto de partida para o desenvolvimento de aplicativos.

Intenções x entidades

Uma intenção é o resultado desejado de todo o enunciado, enquanto as entidades são dados extraídos do enunciado. Geralmente, as intenções são vinculadas a ações que o aplicativo cliente deve realizar. As entidades são as informações necessárias para realizar essa ação. De uma perspectiva de programação, uma intenção acionaria uma chamada de método e as entidades seriam usadas como parâmetros para essa chamada de método.

Este enunciado deve ter uma intenção e pode ter entidades:

"Comprar uma passagem aérea de Seattle para Cairo"

Este enunciado tem uma só intenção:

  • Comprar uma passagem aérea

Este enunciado pode ter várias entidades:

  • Locais de Seattle (origem) e Cairo (destino)
  • A quantidade de uma só passagem

Resolução em enunciados com mais de uma função ou intenção

Em muitos casos, especialmente ao trabalhar com conversa natural, os usuários fornecem um enunciado que pode conter mais de uma função ou intenção. Para resolver isso, uma estratégia geral é entender que a saída pode ser representada por intenções e entidades. Essa representação deve ser mapeável para as ações do aplicativo cliente e não precisa estar limitada às intenções.

Int-ent-ties é o conceito que as ações (geralmente compreendidas como intenções) também podem ser capturadas como entidades na saída do aplicativo e mapeadas para ações específicas. A negação,por exemplo, normalmente depende da intenção e da entidade para extração completa. Considere os dois enunciados abaixo, que têm uma escolha de palavras parecida, mas resultados diferentes:

  • "Agende meu voo de Cairo para Seattle"
  • "Cancele meu voo de Cairo para Seattle"

Em vez de ter duas intenções separadas, crie uma só intenção com a entidade de machine learning FlightAction. A entidade de machine learning deve extrair os detalhes da ação para as solicitações de agendamento e de cancelamento, bem como uma localização de origem ou de destino.

Essa entidade FlightAction será estruturada com a seguinte entidade de machine learning de nível superior e subentidades:

  • FlightAction
    • Ação
    • Origem
    • Destino

Para ajudar na extração, adicione recursos às subentidades. Você escolherá os recursos de acordo com o vocabulário que espera ver nos enunciados do usuário e os valores que deseja que sejam retornados na resposta de previsão.

Práticas recomendadas

Planejar o esquema

Antes de começar a criar o esquema do aplicativo, identifique como e onde pretende usar esse aplicativo. Quanto mais completo e específico seu planejamento, melhor seu aplicativo se tornará.

  • Pesquisar usuários direcionados
  • Definir personas de ponta a ponta para representar seu aplicativo – voz, avatar, tratamento de problemas (proativo, reativo)
  • Identificar os canais de interações do usuário (como texto ou fala), entregando as soluções existentes ou criando uma solução para este aplicativo
  • Jornada do usuário de ponta a ponta
    • O que você espera que o aplicativo faça e não faça? Quais são as prioridades do que ele deve fazer?
    • Quais são os principais casos de uso?
  • Coleta de dados. Saiba mais sobre como coletar e preparar os dados

Não treine nem publique com toda declaração de exemplo única

Adicione 10 ou 15 declarações antes do treinamento e da publicação. Isso permite ver o impacto sobre a precisão da previsão. Adicionar uma única declaração pode não ter um impacto visível sobre a pontuação.

Não use o LUIS como uma plataforma de treinamento

O LUIS é específico para o domínio de um modelo de linguagem. Ele não é destinado a trabalhar como uma plataforma de treinamento geral de idioma natural.

Criar o aplicativo iterativamente com versões

Cada ciclo de criação deve estar contido em uma nova versão, clonada de uma versão existente.

Não publique muito rapidamente

Publicar o aplicativo muito rapidamente sem o planejamento adequado pode resultar em vários problemas, como:

  • O aplicativo não funcionará em seu cenário real em um nível aceitável de desempenho.
  • O esquema (intenções e entidades) pode não ser apropriado e, se você tiver desenvolvido a lógica do aplicativo cliente após o esquema, poderá precisar refazê-lo. Isso poderá causar atrasos inesperados e custos extras para o projeto no qual você está trabalhando.
  • Os enunciados que forem adicionados ao modelo poderão causar desvios em relação aos exemplos de enunciados que sejam difíceis de serem depurados e identificados. Isso também dificultará a remoção da ambiguidade após a confirmação de um determinado esquema.

Monitore o desempenho do seu aplicativo

Monitore a precisão da previsão usando um conjunto de teste em lote.

Mantenha um conjunto separado de enunciados que não é usado como enunciados de exemplo ou enunciados de ponto de extremidade. Continue melhorando o aplicativo para seu conjunto de testes. Adapte o conjunto de teste para refletir declarações de usuário real. Use este conjunto de teste para avaliar cada iteração ou versão do aplicativo.

Não crie listas de frases com todos os valores possíveis

Forneça alguns exemplos nas listas de frases, mas não em toda palavra ou frase. O LUIS generaliza e leva em conta o contexto.

Próximas etapas

Intenções