Recolha de dados para a sua aplicação
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 aplicativo Language Understanding (LUIS) precisa de dados como parte do desenvolvimento do aplicativo.
Dados utilizados no LUIS
O LUIS usa texto como dados para treinar e testar seu aplicativo LUIS para classificação de intenções e para extração de entidades. Você precisa de um conjunto de dados grande o suficiente para criar conjuntos de dados separados para treinamento e teste que tenham a diversidade e a distribuição destacadas especificamente abaixo. Os dados de cada um destes conjuntos não devem sobrepor-se.
Seleção de dados de treinamento, por exemplo, enunciados
Selecione os enunciados para o seu conjunto de treinamento com base nos seguintes critérios:
Dados reais são melhores:
- Dados reais do aplicativo cliente: selecione enunciados que são dados reais do seu aplicativo cliente. Se o cliente enviar um formulário da Web com sua consulta hoje e você estiver criando um bot, poderá começar usando os dados do formulário da Web.
- Dados de crowdsourcing: se você não tiver nenhum dado existente, considere declarações de crowdsourcing. Tente terceirizar declarações de sua população de usuários real para seu cenário para obter a melhor aproximação dos dados reais que seu aplicativo verá. Os enunciados humanos de crowdsourcing são melhores do que os enunciados gerados por computador. Quando você constrói um conjunto de dados de enunciados sintéticos gerados em padrões específicos, ele não terá grande parte da variação natural que você verá com as pessoas criando os enunciados e não acabará generalizando bem na produção.
Diversidade de dados:
- Diversidade de regiões: certifique-se de que os dados para cada intenção sejam o mais diversos possível, incluindo fraseado (escolha de palavras) e gramática. Se você estiver ensinando uma intenção sobre políticas de RH sobre dias de férias, certifique-se de ter enunciados que representem os termos que são usados para todas as regiões que você está servindo. Por exemplo, na Europa as pessoas podem perguntar sobre
taking a holiday
e nos EUA as pessoas podem perguntar sobretaking vacation days
. - Diversidade linguística: Se você tiver usuários com vários idiomas nativos que estão se comunicando em um segundo idioma, certifique-se de ter enunciados que representem falantes não nativos.
- Diversidade de entrada: considere seu caminho de entrada de dados. Se você estiver coletando dados de uma pessoa, departamento ou dispositivo de entrada (microfone), provavelmente não terá diversidade que será importante para seu aplicativo aprender sobre todos os caminhos de entrada.
- Diversidade de pontuação: considere que as pessoas usam níveis variados de pontuação em aplicativos de texto e certifique-se de ter uma diversidade de como a pontuação é usada. Se você estiver usando dados que vêm da fala, eles não terão pontuação, então seus dados também não devem.
- Diversidade de regiões: certifique-se de que os dados para cada intenção sejam o mais diversos possível, incluindo fraseado (escolha de palavras) e gramática. Se você estiver ensinando uma intenção sobre políticas de RH sobre dias de férias, certifique-se de ter enunciados que representem os termos que são usados para todas as regiões que você está servindo. Por exemplo, na Europa as pessoas podem perguntar sobre
Distribuição de dados: certifique-se de que os dados distribuídos entre intenções representem a mesma disseminação de dados que seu aplicativo cliente recebe. Se o seu aplicativo LUIS classificará enunciados que são pedidos para agendar uma licença (50%), mas também verá enunciados sobre perguntar sobre dias de licença restantes (20%), aprovar licenças (20%) e alguns fora do escopo e bate-papo (10%), então seu conjunto de dados deve ter as porcentagens de amostra de cada tipo de enunciado.
Use todos os formulários de dados: se o seu aplicativo LUIS receberá dados em vários formulários, certifique-se de incluir esses formulários em suas declarações de treinamento. Por exemplo, se o seu aplicativo cliente usa fala e entrada de texto digitado, você precisa ter fala para texto gerado enunciados, bem como enunciados digitados. Você verá diferentes variações na forma como as pessoas falam a partir de como digitam, bem como diferentes erros no reconhecimento de fala e erros de digitação. Toda essa variação deve ser representada em seus dados de treinamento.
Exemplos positivos e negativos: Para ensinar um aplicativo LUIS, ele deve aprender sobre qual é a intenção (positiva) e o que não é (negativa). No LUIS, os enunciados só podem ser positivos para uma única intenção. Quando um enunciado é adicionado a uma intenção, o LUIS automaticamente torna esse mesmo enunciado de exemplo um exemplo negativo para todas as outras intenções.
Dados fora do escopo do aplicativo: se seu aplicativo verá expressões que estão fora de suas intenções definidas, certifique-se de fornecê-las. Os exemplos que não são atribuídos a uma intenção definida específica serão rotulados com a intenção Nenhuma . É importante ter exemplos realistas para a intenção Nenhum de prever adequadamente enunciados que estão fora do escopo das intenções definidas.
Por exemplo, se você está criando um bot de RH focado no tempo de licença e tem três intenções:
- Agendar ou editar uma licença
- Informe-se sobre os dias de férias disponíveis
- aprovar/reprovar a licença
Você quer ter certeza de que tem enunciados que abrangem ambas as intenções, mas também que abrangem possíveis enunciados fora desse escopo que o aplicativo deve servir como estes:
What are my medical benefits?
Who is my HR rep?
tell me a joke
Exemplos raros: seu aplicativo precisará ter exemplos raros, bem como exemplos comuns. Se o seu aplicativo nunca viu exemplos raros, ele não será capaz de identificá-los na produção. Se você estiver usando dados reais, poderá prever com mais precisão como seu aplicativo LUIS funcionará na produção.
Qualidade em vez de quantidade
Considere a qualidade dos dados existentes antes de adicionar mais dados. Com o LUIS, você está usando o Ensino de Máquina. A combinação de seus rótulos e os recursos de aprendizado de máquina que você define é o que seu aplicativo LUIS usa. Não depende apenas da quantidade de rótulos para fazer a melhor previsão. A diversidade de exemplos e sua representação do que seu aplicativo LUIS verá na produção é a parte mais importante.
Pré-processamento de dados
As seguintes etapas de pré-processamento ajudarão a criar um aplicativo LUIS melhor:
- Remover duplicados: Expressões duplicadas não fazem mal, mas também não ajudam, portanto, removê-las economizará tempo de rotulagem.
- Aplicar o mesmo pré-processo cliente-aplicativo: Se o seu aplicativo cliente, que chama o ponto de extremidade de previsão LUIS, aplica processamento de dados em tempo de execução antes de enviar o texto para o LUIS, você deve treinar o aplicativo LUIS em dados que são processados da mesma maneira.
- Não aplique novos processos de limpeza que o aplicativo cliente não usa: se seu aplicativo cliente aceitar texto gerado por fala diretamente, sem qualquer limpeza, como gramática ou pontuação, seus enunciados precisarão refletir o mesmo, incluindo qualquer pontuação ausente e qualquer outro erro de reconhecimento que você precisará contabilizar.
- Não limpe dados: não se livre de entradas malformadas que você pode obter de reconhecimento de fala distorcido, pressionamentos acidentais de teclas ou texto digitado/com erros ortográficos. Se o seu aplicativo verá entradas como essas, é importante que ele seja treinado e testado neles. Adicione uma intenção de entrada malformada se você não esperaria que seu aplicativo a entendesse. Rotule esses dados para ajudar seu aplicativo LUIS a prever a resposta correta em tempo de execução. Seu aplicativo cliente pode escolher uma resposta apropriada para expressões ininteligíveis, como
Please try again
.
Dados de rotulagem
- Rotule o texto como se estivesse correto: Os enunciados de exemplo devem ter todas as formas de uma entidade rotulada. Isso inclui texto com erros ortográficos, digitados e traduzidos incorretamente.
Revisão de dados após a produção do aplicativo LUIS
Revise as declarações de ponto de extremidade para monitorar o tráfego de emissão real depois de implantar um aplicativo na produção. Isso permite que você atualize suas declarações de treinamento com dados reais, o que melhorará seu aplicativo. Qualquer aplicativo criado com dados de cenários não reais ou de crowdsourcing precisará ser melhorado com base em seu uso real.
Seleção de dados de teste para testes em lote
Todos os princípios listados acima para enunciados de treinamento se aplicam aos enunciados que você deve usar para seu conjunto de teste. Garantir que a distribuição entre intenções e entidades espelhe a distribuição real o mais próximo possível.
Não reutilize expressões do seu conjunto de treino no seu conjunto de testes. Isso enviesa indevidamente seus resultados e não lhe dará a indicação correta de como seu aplicativo LUIS se comportará na produção.
Depois que a primeira versão do seu aplicativo for publicada, você deve atualizar seu conjunto de teste com expressões do tráfego real para garantir que seu conjunto de teste reflita sua distribuição de produção e possa monitorar o desempenho realista ao longo do tempo.