Planear a aplicação LUIS
Importante
O LUIS será aposentado 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 o entendimento de linguagem conversacional para se beneficiar do suporte contínuo ao produto e dos recursos multilíngues.
Um esquema de aplicativo de Compreensão de Linguagem (LUIS) contém intenções e entidades relevantes para o seu domínio de assunto. As intenções classificam as declarações do usuário e as entidades extraem dados das declarações do usuário. Intenções e entidades relevantes para o seu domínio de assunto. As intenções classificam os enunciados do usuário.
Um aplicativo LUIS aprende e executa de forma mais eficiente quando você o desenvolve iterativamente. Aqui está um ciclo de iteração típico:
- Criar uma nova versão
- Edite o esquema do aplicativo LUIS. Isto inclui:
- Intenções com enunciados de exemplo
- Entidades
- Funcionalidades
- Treinar, testar e publicar
- Teste a aprendizagem ativa revisando os enunciados enviados para o ponto de extremidade de previsão
- Coletar dados de consultas de ponto de extremidade
Identifique o seu domínio
Um aplicativo LUIS é centrado em torno de um domínio de assunto. Por exemplo, você pode ter um aplicativo de viagens que lida com a reserva de passagens, voos, hotéis e aluguel de carros. Outro aplicativo pode fornecer conteúdo relacionado a exercícios, acompanhamento de esforços de condicionamento físico e definição de metas. Identificar o domínio ajuda-o a encontrar palavras ou frases relevantes para o seu domínio.
Gorjeta
O LUIS oferece domínios pré-construídos para muitos cenários comuns. Verifique se você pode usar um domínio pré-criado como ponto de partida para seu aplicativo.
Identifique as suas intenções
Pense nas intenções que são importantes para a tarefa do seu aplicativo.
Vamos pegar o exemplo de um aplicativo de viagens, com funções para reservar um voo e verificar o tempo no destino do usuário. Você pode definir duas intenções, BookFlight e GetWeather para essas ações.
Em um aplicativo mais complexo com mais funções, você provavelmente teria mais intenções e deve defini-las cuidadosamente para que não sejam muito específicas. Por exemplo, BookFlight e BookHotel podem precisar ter intenções separadas, mas BookInternationalFlight e BookDomesticFlight podem ser muito semelhantes.
Nota
É uma prática recomendada usar apenas quantas intenções forem necessárias para executar as funções do seu aplicativo. Se você definir muitas intenções, torna-se mais difícil para o LUIS classificar os enunciados corretamente. Se você definir muito poucos, eles podem ser tão gerais 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 à None
intenção. Se o seu aplicativo crescer e precisar de mais intenções, você poderá criá-las mais tarde.
Crie expressões de exemplo 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 de 15 a 30 expressões de exemplo 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 pontuação.
Para obter mais informações, consulte Noções básicas sobre bons enunciados para aplicativos LUIS.
Identifique as suas entidades
Nos enunciados de exemplo, identifique as entidades que você deseja extrair. Para reservar um voo, você precisa de informações como destino, data, companhia aérea, categoria do bilhete e classe de viagem. Crie entidades para esses tipos de dados e marque as entidades nos enunciados de exemplo. As entidades são importantes para realizar uma intenção.
Ao determinar quais entidades usar em seu aplicativo, lembre-se de que há diferentes tipos de entidades para capturar relações entre tipos de objeto. Consulte Entidades no LUIS para obter mais informações sobre os diferentes tipos.
Gorjeta
O LUIS oferece entidades pré-construídas para cenários de usuário comuns e conversacionais. Considere o uso de entidades pré-criadas como ponto de partida para o desenvolvimento de seu aplicativo.
Intenções versus entidades
Uma intenção é o resultado desejado de todo o enunciado, enquanto as entidades são pedaços de dados extraídos do enunciado. Normalmente, as intenções estão ligadas a ações, que o aplicativo cliente deve tomar. As entidades são informações necessárias para executar esta ação. De uma perspetiva 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:
"Compre bilhetes de avião de Seattle para Cairo"
Este enunciado tem uma única intenção:
- Comprar um bilhete de avião
Este enunciado pode ter várias entidades:
- Localizações de Seattle (origem) e Cairo (destino)
- A quantidade de um bilhete único
Resolução em enunciados com mais de uma função ou intenção
Em muitos casos, especialmente quando se trabalha com conversação 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 tanto por intenções quanto por entidades. Essa representação deve ser compatível com as ações do seu aplicativo cliente e não precisa ser limitada a intenções.
Int-ent-ties é o conceito de que as ações (geralmente entendidas 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, geralmente depende da intenção e da entidade para a extração completa. Considere os dois enunciados a seguir, que são semelhantes na escolha de palavras, mas têm resultados diferentes:
- "Por favor, agende meu voo do Cairo para Seattle"
- "Cancelar meu voo do Cairo para Seattle"
Em vez de ter duas intenções separadas, você deve criar uma única intenção com uma entidade de aprendizado de máquina FlightAction. Essa entidade de aprendizado de máquina deve extrair os detalhes da ação para agendar e cancelar solicitações, bem como um local de origem ou destino.
Essa entidade FlightAction seria estruturada com a seguinte entidade de aprendizado de máquina de nível superior e subentidades:
- FlightAction
- Ação
- Origem
- Destino
Para ajudar na extração, você adicionaria recursos às subentidades. Você escolheria os recursos com base no vocabulário que espera ver nos enunciados do usuário e nos valores que deseja que sejam retornados na resposta de previsão.
Melhores práticas
Planeje seu esquema
Antes de começar a criar o esquema do seu aplicativo, você deve identificar como e onde planeja usar esse aplicativo. Quanto mais completo e específico for o seu planeamento, melhor será a sua aplicação.
- Utilizadores alvo da investigação
- Defina personas de ponta a ponta para representar seu aplicativo - voz, avatar, tratamento de problemas (proativo, reativo)
- Identificar canais de interações do usuário (como texto ou fala), transferir para soluções existentes ou criar uma nova solução para este aplicativo
- Jornada do usuário de ponta a ponta
- O que você espera que este aplicativo faça e não faça? Quais são as prioridades do que deve fazer?
- Quais são os principais casos de uso?
- Recolha de dados - saiba mais sobre a recolha e preparação de dados
Não treine e publique com cada exemplo de enunciado
Adicione 10 ou 15 enunciados antes de treinar e publicar. Isso permite que você veja o impacto na precisão da previsão. Adicionar um único enunciado pode não ter um impacto visível na pontuação.
Não utilize o LUIS como plataforma de formação
O LUIS é específico para o domínio de um modelo de linguagem. Não se destina a funcionar como uma plataforma geral de formação em línguas naturais.
Crie seu 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 seu aplicativo muito rapidamente e sem um planejamento adequado pode levar a vários problemas, como:
- Seu 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ê desenvolveu a lógica do aplicativo cliente seguindo o esquema, talvez seja necessário refazê-lo. Isso pode causar atrasos inesperados e custos extras para o projeto em que você está trabalhando.
- Os enunciados que você adiciona ao modelo podem causar vieses em relação a enunciados de exemplo que são difíceis de depurar e identificar. Isso também dificultará a remoção da ambiguidade depois que você se comprometer com um determinado esquema.
Monitore o desempenho do seu aplicativo
Monitorize a precisão das predições com um conjunto de testes em lote.
Mantenha um conjunto separado de expressões que não sejam utilizadas como expressões de exemplo ou expressões de ponto final. Continue a melhorar a aplicação para o conjunto de teste. Adapte o conjunto de teste em função de expressões de utilizadores reais. Utilize este conjunto de teste para avaliar cada iteração ou versão da aplicação.
Não crie listas de frases com todos os valores possíveis
Forneça alguns exemplos nas listas de frases, mas não todas as palavras ou frases. LUIS generaliza e leva em conta o contexto.