Migrar do Language Understanding (LUIS) para o Conversational Language Understanding (CLU)
O entendimento de linguagem conversacional (CLU) é uma oferta de IA baseada em nuvem na Linguagem de IA do Azure. É a mais recente geração de Language Understanding (LUIS) e oferece compatibilidade com aplicações LUIS criadas anteriormente. A CLU emprega inteligência de aprendizado de máquina de última geração para permitir que os usuários criem um modelo personalizado de compreensão de linguagem natural para prever intenções e entidades em enunciados conversacionais.
CLU oferece as seguintes vantagens sobre LUIS:
- Precisão aprimorada com modelos de aprendizado de máquina de última geração para melhor classificação de intenção e extração de entidades. O LUIS exigiu mais exemplos para generalizar certos conceitos em intenções e entidades, enquanto o aprendizado de máquina mais avançado do CLU reduz a carga sobre os clientes, exigindo significativamente menos dados.
- Suporte multilingue para aprendizagem e formação de modelos. Treine projetos em um idioma e preveja imediatamente intenções e entidades em 96 idiomas.
- Facilidade de integração com diferentes CLU e projetos personalizados de resposta a perguntas usando fluxo de trabalho de orquestração.
- A capacidade de adicionar dados de teste dentro da experiência usando Language Studio e APIs para avaliação de desempenho do modelo antes da implantação.
Para começar, você pode criar um novo projeto ou migrar seu aplicativo LUIS.
Comparação entre LUIS e CLU
A tabela a seguir apresenta uma comparação lado a lado entre os recursos do LUIS e do CLU. Ele também destaca as alterações no seu aplicativo LUIS após a migração para o CLU. Selecione o conceito vinculado para saber mais sobre as alterações.
Características do LUIS | Recursos da CLU | Pós-migração |
---|---|---|
Entidades de ML estruturadas e aprendidas por máquina | Componentes da entidade aprendida | As entidades aprendidas por máquina sem subentidades serão transferidas como entidades CLU. As entidades de ML estruturadas só transferirão nós folha (subentidades de nível mais baixo que não têm suas próprias subentidades) como entidades na CLU. O nome da entidade na CLU será o nome da subentidade concatenada com a empresa-mãe. Por exemplo, Order.Size |
Listar, regex e entidades pré-construídas | Listar, regex e componentes de entidade pré-construídos | Lista, regex e entidades pré-construídas serão transferidas como entidades na CLU com um componente de entidade preenchido com base no tipo de entidade. |
Pattern.Any entidades |
Atualmente não disponível | Pattern.Any entidades serão removidas. |
Cultura única para cada aplicação | Os modelos multilingues permitem vários idiomas para cada projeto. | O idioma principal do seu projeto será definido como a cultura do aplicativo LUIS. O seu projeto pode ser treinado para se estender a diferentes idiomas. |
Funções de entidade | As funções não são mais necessárias. | As funções das entidades serão transferidas como entidades. |
Configurações para: normalizar pontuação, normalizar diacríticos, normalizar forma de palavras, usar todos os dados de treinamento | As configurações não são mais necessárias. | As configurações não serão transferidas. |
Padrões e recursos de lista de frases | Os recursos Padrões e Lista de frases não são mais necessários. | Padrões e recursos de lista de frases não serão transferidos. |
Características da entidade | Componentes de entidades | As entidades de lista ou pré-criadas adicionadas como recursos a uma entidade serão transferidas como componentes adicionados a essa entidade. Os recursos da entidade não serão transferidos para fins específicos. |
Intenções e declarações | Intenções e declarações | Todas as intenções e declarações serão transferidas. Os enunciados serão rotulados com suas entidades transferidas. |
GUIDs de aplicativos | Nomes dos projetos | Um projeto será criado para cada aplicativo migrando com o nome do aplicativo. Quaisquer caracteres especiais nos nomes dos aplicativos serão removidos na CLU. |
Controlo de Versão | Toda vez que você treina, um modelo é criado e funciona como uma versão do seu projeto. | Será criado um projeto para a versão da aplicação selecionada. |
Avaliação usando testes em lote | Avaliação utilizando conjuntos de testes | Será necessário adicionar seu conjunto de dados de teste. |
RBAC (Controle de Acesso Baseado em Função) para recursos LUIS | RBAC (Controle de Acesso Baseado em Função) disponível para recursos de idioma | O recurso de idioma RBAC deve ser adicionado manualmente após a migração. |
Modo de treino único | Modos de treinamento padrão e avançado | O treinamento será necessário após a migração do aplicativo. |
Dois slots de publicação e publicação de versão | Dez slots de implantação com nomenclatura personalizada | A implantação será necessária após a migração e o treinamento do aplicativo. |
APIs de criação LUIS e suporte a SDK em .NET, Python, Java e Node.js | CLU Criação de APIs REST. | Para obter mais informações, consulte o artigo de início rápido para obter informações sobre as APIs de criação da CLU. A refatoração será necessária para usar as APIs de criação da CLU. |
Suporte a APIs e SDK do LUIS Runtime em .NET, Python, Java e Node.js | APIs de tempo de execução da CLU. Suporte ao CLU Runtime SDK para .NET e Python. | Veja como chamar a API para obter mais informações. A refatoração será necessária para usar a resposta da API de tempo de execução da CLU. |
Migre as suas aplicações LUIS
Use as etapas a seguir para migrar seu aplicativo LUIS usando o portal LUIS ou a API REST.
Migre as suas aplicações LUIS utilizando o portal LUIS
Siga estas etapas para iniciar a migração usando o Portal LUIS:
Depois de fazer login no portal LUIS, clique no botão no banner na parte superior da tela para iniciar o assistente de migração. A migração copiará apenas os aplicativos LUIS selecionados para a CLU.
A guia Visão geral da migração fornece uma breve explicação sobre a compreensão da linguagem conversacional e seus benefícios. Pressione Avançar para continuar.
Determine o recurso de idioma para o qual você deseja migrar seu aplicativo LUIS. Se já tiver criado o recurso Idioma, selecione a sua subscrição do Azure seguida do recurso Idioma e, em seguida, selecione Seguinte. Se você não tiver um recurso de idioma, clique no link para criar um novo recurso de idioma. Depois, selecione o recurso e selecione Avançar.
Selecione todos os seus aplicativos LUIS que você deseja migrar e especifique cada uma de suas versões. Selecione Seguinte. Depois de selecionar seu aplicativo e versão, você receberá uma mensagem informando sobre quaisquer recursos que não serão transferidos do seu aplicativo LUIS.
Reveja as suas seleções de recursos linguísticos e aplicações LUIS. Selecione Concluir para migrar seus aplicativos.
Uma janela pop-up permitirá que você acompanhe o status de migração de seus aplicativos. Os aplicativos que não iniciaram a migração terão um status de Não iniciado. Os aplicativos que começaram a migrar terão um status de Em andamento e, assim que terminarem de migrar, seu status será Bem-sucedido. Um aplicativo com falha significa que você deve repetir o processo de migração. Quando a migração for concluída para todos os aplicativos, selecione Concluído.
Depois que seus aplicativos forem migrados, você poderá executar as seguintes etapas:
Perguntas mais frequentes
Qual versão do LUIS JSON é suportada pelo CLU?
CLU suporta o modelo JSON versão 7.0.0. Se o formato JSON for mais antigo, ele precisará ser importado para o LUIS primeiro e, em seguida, exportado do LUIS com a versão mais recente.
Como as entidades são diferentes na CLU?
Na CLU, uma única entidade pode ter vários componentes de entidade, que são métodos diferentes para extração. Esses componentes são então combinados usando regras que você pode definir. Os componentes disponíveis são:
- Aprendido: Equivalente às entidades de ML no LUIS, os rótulos são usados para treinar um modelo aprendido por máquina para prever uma entidade com base no conteúdo e no contexto dos rótulos fornecidos.
- List: Assim como as entidades de lista no LUIS, os componentes da lista correspondem exatamente a um conjunto de sinônimos e os mapeiam de volta para um valor normalizado chamado chave de lista.
- Pré-construídos: Os componentes pré-construídos permitem definir uma entidade com os extratores pré-construídos para tipos comuns disponíveis em LUIS e CLU.
- Regex: Os componentes Regex usam expressões regulares para capturar padrões definidos personalizados, exatamente como entidades regex no LUIS.
As entidades no LUIS serão transferidas como entidades com o mesmo nome na CLU com os componentes equivalentes transferidos.
Após a migração, seus nós folha estruturados aprendidos por máquina e subentidades de nível inferior serão transferidos para o novo modelo de CLU, enquanto todas as entidades-mãe e entidades de nível superior serão ignoradas. O nome da entidade será o nome da entidade de nível inferior concatenado com sua entidade mãe.
Exemplo:
Entidade LUIS:
- Pizza Ordem
- Cobertura
- Tamanho
Entidade LUIS migrada na CLU:
- Pizza Order.Topping
- Pizza Order.Size
Também não é possível rotular 2 entidades diferentes na CLU para a mesma extensão de caracteres. Os componentes aprendidos na CLU são mutuamente exclusivos e não fornecem previsões sobrepostas apenas para componentes aprendidos. Ao migrar seu aplicativo LUIS, os rótulos de entidade que se sobrepuseram preservaram o rótulo mais longo e ignoraram quaisquer outros.
Para obter mais informações sobre componentes de entidade, consulte Componentes de entidade.
Como as funções da entidade são transferidas para a CLU?
Suas funções serão transferidas como entidades distintas, juntamente com seus enunciados rotulados. O tipo de entidade de cada função determinará qual componente de entidade será preenchido. Por exemplo, uma função de entidade de lista será transferida como uma entidade com o mesmo nome da função, com um componente de lista preenchida.
Como os recursos da entidade são transferidos na CLU?
As entidades usadas como recursos para fins não serão transferidas. As entidades usadas como recursos para outras entidades preencherão o componente relevante da entidade. Por exemplo, se uma entidade de lista chamada SizeList foi usada como um recurso para uma entidade aprendida por máquina chamada Size, a entidade Size será transferida para a CLU com os valores de lista de SizeList adicionados ao seu componente de lista. O mesmo é aplicado para entidades pré-construídas e regex.
Como as pontuações de confiança da entidade são diferentes na CLU?
Qualquer entidade extraída tem uma pontuação de confiança de 100% e, portanto, as pontuações de confiança da entidade não devem ser usadas para tomar decisões entre entidades.
Em que medida é que a compreensão de linguagem conversacional é multilingue?
Os projetos de compreensão de linguagem conversacional aceitam enunciados em diferentes idiomas. Além disso, você pode treinar seu modelo em um idioma e estendê-lo para prever em outros idiomas.
Exemplo:
Enunciado de treinamento (Inglês): Como você está?
Intenção rotulada: Saudação
Runtime utterance (Francês): Comment ça va?
Intenção prevista: Saudação
Como a precisão do CLU é melhor do que o LUIS?
A CLU usa modelos de última geração para melhorar o desempenho do aprendizado de máquina de diferentes modelos de classificação de intenção e extração de entidade.
Esses modelos são insensíveis a pequenas variações, eliminando a necessidade das seguintes configurações: Normalizar pontuação, normalizar diacríticos, normalizar forma de palavras e usar todos os dados de treinamento.
Além disso, os novos modelos não suportam recursos de lista de frases, pois não exigem mais informações suplementares do usuário para fornecer palavras semanticamente semelhantes para melhor precisão. Padrões também foram usados para fornecer melhor classificação de intenção usando técnicas de correspondência baseadas em regras que não são necessárias no novo paradigma do modelo. A pergunta abaixo explica isso mais detalhadamente.
O que devo fazer se as funcionalidades que estou a utilizar no LUIS já não estiverem presentes?
Existem vários recursos que estavam presentes no LUIS que não estarão mais disponíveis no CLU. Isso inclui a capacidade de fazer engenharia de recursos, ter padrões e pattern .any entidades e entidades estruturadas. Se você tinha dependências nesses recursos no LUIS, use as seguintes orientações:
Padrões: Padrões foram adicionados no LUIS para auxiliar a classificação de intenção através da definição de enunciados de modelo de expressão regular. Isso incluiu a capacidade de definir apenas intenções de padrão (sem exemplos de enunciação). A CLU é capaz de generalizar aproveitando os modelos de última geração. Você pode fornecer alguns enunciados que correspondem a um padrão específico para a intenção na CLU e provavelmente classificará os diferentes padrões como a intenção principal sem a necessidade da emissão do modelo de padrão. Isso simplifica o requisito para formular esses padrões, que era limitado no LUIS, e fornece uma melhor experiência de classificação de intenção.
Recursos da lista de frases: A capacidade de associar recursos ocorreu principalmente para auxiliar na classificação de intenções, destacando os elementos/recursos principais a serem usados. Isso não é mais necessário, uma vez que os modelos profundos usados na CLU já possuem a capacidade de identificar os elementos inerentes à linguagem. Por sua vez, a remoção dessas características não terá efeito sobre a capacidade de classificação do modelo.
Entidades estruturadas: A capacidade de definir entidades estruturadas foi principalmente para permitir a análise multinível de enunciados. Com as diferentes possibilidades das subentidades, o LUIS precisava de todas as diferentes combinações de entidades a serem definidas e apresentadas ao modelo como exemplos. Na CLU, essas entidades estruturadas não são mais suportadas, uma vez que componentes aprendidos sobrepostos não são suportados. Existem algumas abordagens possíveis para lidar com essas extrações estruturadas:
- Extrações não ambíguas: Na maioria dos casos, a deteção das entidades foliares é suficiente para entender os itens necessários dentro de um período completo. Por exemplo, uma entidade estruturada, como Trip , que abrangeu totalmente uma origem e um destino (Londres para Nova York ou Home to Work) pode ser identificada com os intervalos individuais previstos para origem e destino. A sua presença como previsões individuais informá-lo-ia da entidade Trip .
- Extrações ambíguas: Quando os limites das diferentes subentidades não são muito claros. Para ilustrar, pegue o exemplo "Quero pedir uma pizza de pepperoni e uma pizza vegetariana extra de queijo". Embora os diferentes tipos de pizza, bem como as modificações de cobertura, possam ser extraídos, tê-los extraídos sem contexto teria um grau de ambiguidade de onde o queijo extra é adicionado. Neste caso, a extensão do intervalo é baseada no contexto e exigiria que o ML determinasse isso. Para extrações ambíguas, você pode usar uma das seguintes abordagens:
- Combine subentidades em diferentes componentes de entidade dentro da mesma entidade.
Exemplo:
Implementação do LUIS:
- Pizza Order (entidade)
- Tamanho (subentidade)
- Quantidade (subentidade)
Implementação da CLU:
- Pizza Order (entidade)
- Tamanho (componente de entidade de lista: pequeno, médio, grande)
- Quantidade (componente de entidade pré-construída: número)
Na CLU, você rotularia todo o período para Pedido de pizza , incluindo o tamanho e a quantidade, o que retornaria o pedido de pizza com uma chave de lista para o tamanho e um valor numérico para a quantidade no mesmo objeto de entidade.
- Para problemas mais complexos em que as entidades contêm vários níveis de profundidade, você pode criar um projeto para cada nível de profundidade na estrutura da entidade. Isto dá-lhe a opção de:
- Passe o enunciado para cada projeto.
- Combine as análises de cada projeto na fase de prosseguimento da CLU.
Para um exemplo detalhado sobre esse conceito, confira os projetos de amostra de pizza disponíveis no GitHub.
Como faço para gerenciar versões no CLU?
A CLU salva os ativos de dados usados para treinar seu modelo. Você pode exportar os ativos de um modelo ou carregá-los de volta no projeto a qualquer momento. Assim, os modelos funcionam como diferentes versões do seu projeto.
Você pode exportar seus projetos CLU usando o Language Studio ou programaticamente e armazenar diferentes versões dos ativos localmente.
Porque é que a classificação CLU é diferente da LUIS? Como funciona a classificação Nenhum?
CLU apresenta uma abordagem diferente para modelos de treinamento usando multi-classificação em oposição à classificação binária. Como resultado, a interpretação das pontuações é diferente e também difere entre as opções de treinamento. Embora seja provável que você alcance melhores resultados, você tem que observar a diferença nas pontuações e determinar um novo limite para aceitar previsões de intenção. Você pode facilmente adicionar um limite de pontuação de confiança para a intenção Nenhum nas configurações do seu projeto. Isso retornará Nenhum como a intenção principal se a intenção principal não exceder o limite de pontuação de confiança fornecido.
Preciso de mais dados para modelos CLU do que LUIS?
Os novos modelos CLU têm melhor compreensão semântica da linguagem do que no LUIS e, por sua vez, ajudam a fazer com que os modelos generalizem com uma redução significativa de dados. Embora você não deva ter como objetivo reduzir a quantidade de dados que possui, você deve esperar um melhor desempenho e resiliência a variações e sinônimos na CLU em comparação com LUIS.
Se eu não migrar meus aplicativos LUIS, eles serão excluídos?
As suas candidaturas LUIS existentes estarão disponíveis até 1 de outubro de 2025. Após esse período, você não poderá mais usar esses aplicativos, os pontos de extremidade de serviço não funcionarão mais e os aplicativos serão excluídos permanentemente.
São . LU arquivos suportados em CLU?
Apenas o formato JSON é suportado pela CLU. Você pode importar seu arquivo . LU arquivos para LUIS e exportá-los em formato JSON, ou você pode seguir as etapas de migração acima para o seu aplicativo.
Quais são os limites de serviço do CLU?
Consulte o artigo sobre limites de serviço para obter mais informações.
Tenho que refatorar meu código se migrar meus aplicativos do LUIS para o CLU?
Os objetos API de aplicativos CLU são diferentes do LUIS e, portanto, a refatoração de código será necessária.
Se você estiver usando as APIs programáticas e de tempo de execução do LUIS, poderá substituí-las por suas APIs equivalentes.
APIs de criação de LU: em vez das APIs CRUD específicas do LUIS para ações individuais, como adicionar enunciado, excluir entidade e renomear intenção, a CLU oferece uma API de importação que substitui o conteúdo completo de um projeto usando o mesmo nome. Se o seu serviço usou APIs programáticas LUIS para fornecer uma plataforma para outros clientes, você deve considerar esse novo paradigma de design. Todas as outras APIs, tais como: listagem de projetos, treinamento, implantação e exclusão estão disponíveis. As APIs para ações como importação e implantação são operações assíncronas em vez de síncronas como eram no LUIS.
APIs de tempo de execução da CLU: a nova solicitação e resposta da API inclui muitos dos mesmos parâmetros, como: consulta, previsão, intenção principal, intenções, entidades e seus valores. O objeto de resposta CLU oferece uma abordagem mais direta. As previsões de entidade são fornecidas como estão dentro do texto do enunciado, e quaisquer informações adicionais, como chaves de resolução ou lista, são fornecidas em parâmetros extras chamados extraInformation
e resolution
.
Você pode usar o SDK de tempo de execução da CLU .NET ou Python para substituir o SDK de tempo de execução do LUIS. Atualmente, não há nenhum SDK de criação disponível para CLU.
Como os tempos de treinamento são diferentes no CLU? Qual é a diferença entre a formação normal e a formação avançada?
CLU oferece treinamento padrão, que treina e aprende em inglês e é comparável ao tempo de treinamento do LUIS. Ele também oferece treinamento avançado, que leva uma duração consideravelmente maior, pois estende o treinamento a todos os outros idiomas suportados. A API de trem continuará a ser um processo assíncrono e você precisará avaliar a mudança no processo de DevOps que emprega para sua solução.
Como a experiência mudou no CLU em comparação com o LUIS? Qual é a diferença entre o ciclo de vida do desenvolvimento?
No LUIS você faria Build-Train-Test-Publish, enquanto na CLU você Build-Train-Evaluate-Deploy-Test.
- Construir: No CLU, você pode definir suas intenções, entidades e expressões antes de treinar. A CLU também oferece a capacidade de especificar dados de teste à medida que você cria seu aplicativo para ser usado na avaliação do modelo. A avaliação avalia o desempenho do seu modelo nos dados de teste e fornece métricas de precisão, recall e F1.
- Treinar: Você cria um modelo com um nome cada vez que treina. Você pode substituir um modelo já treinado. Você pode especificar o treinamento padrão ou avançado e determinar se gostaria de usar os dados do teste para avaliação ou uma porcentagem dos dados de treinamento a serem deixados de fora do treinamento e usados como dados de teste. Após a conclusão do treinamento, você pode avaliar o desempenho do seu modelo do lado de fora.
- Implantar: depois que o treinamento for concluído e você tiver um modelo com um nome, ele poderá ser implantado para previsões. Uma implantação também é nomeada e tem um modelo atribuído. Você pode ter várias implantações para o mesmo modelo. Uma implantação pode ser substituída por um modelo diferente ou você pode trocar modelos com outras implantações no projeto.
- Teste: Quando a implantação estiver concluída, você poderá usá-la para previsões por meio do ponto de extremidade de implantação. Você também pode testá-lo no estúdio na página Implantação de teste.
Esse processo contrasta com o LUIS, onde o ID do aplicativo foi anexado a tudo, e você implantou uma versão do aplicativo nos slots de preparação ou produção.
Isso influenciará os processos de DevOps que você usa.
A CLU tem suporte a contêineres?
Não, não é possível exportar CLU para contêineres.
Como meus aplicativos LUIS serão nomeados na CLU após a migração?
Todos os caracteres especiais no nome do aplicativo LUIS serão removidos. Se o comprimento do nome limpo for maior que 50 caracteres, os caracteres extras serão removidos. Se o nome depois de remover caracteres especiais estiver vazio (por exemplo, se o nome do aplicativo LUIS era @@
), o novo nome não terá título. Se já houver um projeto de compreensão de linguagem conversacional com o mesmo nome, o aplicativo LUIS migrado será anexado com _1
para a primeira duplicata e aumentado em 1 para cada duplicata adicional. Caso o tamanho do novo nome seja de 50 caracteres e ele precise ser renomeado, os últimos 1 ou 2 caracteres serão removidos para poder concatenar o número e ainda estar dentro do limite de 50 caracteres.
Migração de P&R do LUIS
Se você tiver alguma dúvida que não foi respondida neste artigo, considere deixar suas perguntas em nosso tópico de perguntas e respostas da Microsoft.