Migrar do LUIS (Reconhecimento vocal) para a CLU (compreensão da linguagem coloquial)

A Compreensão da linguagem coloquial (CLU) é uma oferta de IA baseada em nuvem na Linguagem de IA do Azure. É a mais nova geração do LUIS (Reconhecimento vocal) e oferece compatibilidade com versões anteriores com os aplicativos LUIS já criados. A CLU emprega inteligência de machine learning de última geração para permitir que os usuários criem um modelo de compreensão da linguagem natural personalizado para prever intenções e entidades em enunciados de conversa.

A CLU oferece as seguintes vantagens em relação ao LUIS:

  • Precisão aprimorada com modelos de machine learning de última geração para melhor classificação de intenção e extração de entidades. O LUIS exigia mais exemplos para generalizar determinados conceitos em intenções e entidades, enquanto o machine learning mais avançado da CLU reduz a carga sobre os clientes exigindo um volume significativamente menor de dados.
  • Suporte multilíngue para aprendizado e treinamento de modelo. Treine projetos em um idioma e preveja imediatamente as intenções e as entidades em 96 idiomas.
  • Facilidade de integração a diferentes projetos da CLU e de respostas às perguntas personalizadas usando o fluxo de trabalho de orquestração.
  • A capacidade de adicionar dados de teste na experiência usando o Language Studio e as APIs para avaliação de desempenho de modelo antes da implantação.

Para começar, você pode criar um projeto ou migrar seu aplicativo LUIS.

Comparação entre o LUIS e a CLU

A tabela a seguir apresenta uma comparação lado a lado entre os recursos do LUIS e da CLU. Ela também destaca as alterações no aplicativo LUIS após a migração para a CLU. Selecione o conceito vinculado para saber mais sobre as alterações.

Recursos do LUIS Recursos da CLU Após a migração
Entidades de ML estruturadas e com machine learning Componentes de entidade aprendidos As entidades com machine learning sem subentidades serão transferidas como entidades da CLU. As entidades de ML estruturado só transferirão os nós folha (as subentidades de nível mais baixo que não têm subentidades próprias) como entidades na CLU. O nome da entidade na CLU será o nome da subentidade concatenada com o pai. Por exemplo, Order.Size
Entidades de lista, de regex e predefinidas Componentes de entidades de lista, de regex e predefinidas As entidades de lista, de regex e predefinidas serão transferidas como entidades na CLU com um componente de entidade preenchido com base no tipo de entidade.
Entidades Pattern.Any Não disponível no momento As entidades Pattern.Any serão removidas.
Cultura única para cada aplicativo Os modelos multilíngues habilitam vários idiomas para cada projeto. O idioma principal do seu projeto será definido como a cultura do aplicativo LUIS. O projeto pode ser treinado para se estender para diferentes idiomas.
Funções de entidade As funções não são mais necessárias. As funções de 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.
Recursos de padrões e listas de frases Os recursos de padrões e listas de frases não são mais necessários. Os recursos de padrões e listas de frases não serão transferidos.
Recursos de entidades Componentes de entidade As entidades de lista ou predefinidas adicionadas como recursos a uma entidade serão transferidas como componentes adicionados a essa entidade. Os recursos de entidades não serão transferidos para as intenções.
Intenções e enunciados Intenções e enunciados Todas as intenções e todos os enunciados serão transferidos. Os enunciados serão rotulados com as respectivas entidades transferidas.
GUIDs de aplicativo Nomes de projetos Um projeto será criado para cada aplicativo de migração com o nome do aplicativo. Todos os caracteres especiais nos nomes do aplicativo serão removidos na CLU.
Controle de versão Toda vez que você faz um treinamento, um modelo é criado, que funciona como uma versão do projeto. Um projeto será criado para a versão selecionada do aplicativo.
Avaliação com o teste em lote Avaliação com os conjuntos de testes A adição do conjunto de dados de teste será necessária.
RBAC (controle de acesso baseado em função) para recursos do LUIS RBAC (controle de acesso baseado em função) disponível para recursos de Linguagem O RBAC do recurso de Linguagem precisa ser adicionado manualmente após a migração.
Modo de treinamento único Modos de treinamento padrão e avançados 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 do LUIS e suporte ao SDK no .NET, no Python, no Java e no Node.js APIs REST de criação da CLU. Para obter mais informações, confira 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.
APIs de runtime do LUIS e suporte ao SDK no .NET, no Python, no Java e no Node.js APIs de runtime da CLU. Suporte do SDK de runtime da CLU para o .NET e o Python. Confira como chamar a API para obter mais informações. A refatoração será necessária para usar a resposta da API de runtime da CLU.

Migrar seus aplicativos LUIS

Use as etapas a seguir para migrar seu aplicativo LUIS usando o portal do LUIS ou a API REST.

Migrar seus aplicativos LUIS usando o portal do LUIS

Siga estas etapas para iniciar a migração usando o portal do LUIS:

  1. Depois de fazer logon no portal do LUIS, clique no botão localizado na faixa na parte superior da tela para iniciar o assistente de migração. A migração copiará apenas seus aplicativos LUIS selecionados para a CLU.

    Uma captura de tela que mostra a faixa de migração no portal do LUIS.

    A guia de visão geral da migração fornece uma breve explicação da compreensão da linguagem coloquial e os benefícios dela. Pressione Avançar para continuar.

    Uma captura de tela que mostra a janela de visão geral da migração.

  2. Determine o recurso de Linguagem para o qual deseja migrar seu aplicativo LUIS. Se você já tiver criado seu recurso de idioma, selecione sua assinatura do Azure seguida do recurso de idioma e selecione Avançar. Caso não tenha um recurso de Linguagem, clique no link para criar um. Depois, selecione o recurso e selecione Avançar.

    Uma captura de tela que mostra a janela de seleção de recurso.

  3. Selecione todos os aplicativos LUIS que deseja migrar e especifique cada uma das versões deles. Selecione Avançar. Depois de selecionar o aplicativo e a versão, você verá uma mensagem informando sobre todos os recursos que não serão transferidos do aplicativo LUIS.

    Observação

    Não há suporte para caracteres especiais na compreensão da linguagem coloquial. Todos os caracteres especiais nos nomes dos aplicativos LUIS selecionados serão removidos nos novos aplicativos migrados. Uma captura de tela que mostra a janela de seleção do aplicativo.

  4. Revise as seleções de recurso de Linguagem e de aplicativos LUIS. Selecione Concluir para migrar seus aplicativos.

  5. Uma janela pop-up permitirá que você acompanhe o status de migração dos aplicativos. Os aplicativos que não iniciaram a migração terão o status Não iniciado. Os aplicativos que iniciaram a migração terão o status Em andamento e, depois de concluírem a migração, o status será Bem-sucedido. Um aplicativo Com falha significa que você precisa repetir o processo de migração. Depois que a migração for concluída para todos os aplicativos, selecione Concluído.

    Uma captura de tela que mostra a janela de progresso da migração do aplicativo.

  6. Depois que os seus aplicativos tiverem migrado, você poderá executar as seguintes etapas:

Perguntas frequentes

Há suporte para qual versão JSON do LUIS na CLU?

A CLU dá suporte ao modelo JSON versão 7.0.0. Se o formato JSON for mais antigo, ele precisará ser importado primeiro para o LUIS e depois exportado do LUIS com a versão mais recente.

Como as entidades são diferentes na CLU?

Na CLU, uma só entidade pode ter vários componentes de entidades, que são métodos diferentes para extração. Em seguida, esses componentes são combinados em conjunto usando regras que você pode definir. Os componentes disponíveis são:

  • Aprendidas: equivalente às entidades de ML no LUIS, os rótulos são usados para treinar um modelo com machine learning para prever uma entidade com base no conteúdo e no contexto dos rótulos fornecidos.
  • Lista: assim como as entidades de lista do LUIS, os componentes de lista correspondem exatamente a um conjunto de sinônimos e os mapeiam novamente para um valor normalizado chamado chave de lista.
  • Predefinidos: os componentes predefinidos permitem que você defina uma entidade com os extratores predefinidos para os tipos comuns disponíveis no LUIS e na CLU.
  • Regex: os componentes regex usam expressões regulares para capturar padrões definidos personalizados, exatamente como as entidades regex no LUIS.

As entidades do LUIS serão transferidas como entidades do mesmo nome na CLU com os componentes equivalentes transferidos.

Após a migração, os nós folha com machine learning estruturados e as subentidades de nível inferior serão transferidos para o novo modelo de CLU, enquanto todas as entidades pai e as entidades de nível superior serão ignoradas. O nome da entidade será o nome da entidade de nível inferior concatenado com a entidade pai.

Exemplo:

Entidade do LUIS:

  • Pedido de pizza
    • Cobertura
    • Tamanho

Entidade do LUIS migrada na CLU:

  • Pizza Order.Topping
  • Pizza Order.Size

Você também não pode rotular duas entidades diferentes na CLU para o mesmo intervalo de caracteres. Os componentes aprendidos na CLU são mutuamente exclusivos e não fornecem previsões sobrepostas somente para os componentes aprendidos. Durante a migração do aplicativo LUIS, os rótulos de entidades sobrepostos preservaram o rótulo mais longo e ignoraram todos os outros.

Para obter mais informações sobre os componentes de entidades, confira Componentes de entidades.

Como as funções de entidades são transferidas para a CLU?

Suas funções serão transferidas como entidades distintas, acompanhadas dos respectivos 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 preenchido.

Como os recursos de entidades são transferidos na CLU?

As entidades usadas como recursos para intenções 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 com machine learning chamada Size, a entidade Size será transferida para a CLU com os valores de lista de SizeList adicionados ao componente de lista. O mesmo é aplicado a entidades predefinidas e de regex.

Qual são as diferenças das pontuações de confiança da entidade 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.

Como a compreensão da linguagem coloquial é multilíngue?

Os projetos de compreensão da linguagem coloquial aceitam enunciados em idiomas diferentes. Além disso, você pode treinar seu modelo em um idioma e estendê-lo para previsão em outros idiomas.

Exemplo:

Enunciado de treinamento (inglês): How are you?

Intenção rotulada: Saudação

Enunciado de runtime (francês): Comment ça va?

Intenção prevista: Saudação

Como a precisão da CLU é melhor do que a do LUIS?

A CLU usa modelos de última geração para aprimorar o desempenho de machine learning de diferentes modelos de classificação de intenção e extração de entidades.

Esses modelos não diferenciam pequenas variações, removendo 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 dão suporte aos recursos de lista de frases, pois eles não exigem mais informações complementares do usuário para fornecer palavras semanticamente semelhantes visando obter uma melhor precisão. Os padrões também eram usados para fornecer uma classificação de intenção aprimorada usando técnicas de correspondência baseadas em regras que não são necessárias no novo paradigma de modelo. A pergunta a seguir explica isso com mais detalhes.

O que fazer se os recursos que estou usando no LUIS não estiverem mais presentes?

Há vários recursos presentes no LUIS que não estarão mais disponíveis na CLU. Entre eles, estão a capacidade de fazer a engenharia de recursos, além de ter entidades pattern e pattern.any e entidades estruturadas. Se você tiver dependências desses recursos no LUIS, use as seguintes diretrizes:

  • Padrões: os padrões foram adicionados no LUIS para auxiliar a classificação de intenção por meio da definição de enunciados de modelo de expressão regular. Isso incluía a capacidade de definir intenções apenas de padrão (sem exemplos de enunciados). A CLU é capaz de generalizar isso aproveitando os modelos de última geração. Você pode fornecer alguns enunciados que correspondam a um padrão específico à intenção na CLU, e isso provavelmente classificará os diferentes padrões como a intenção principal sem a necessidade do enunciado do modelo padrão. Isso simplifica o requisito de formular esses padrões, que era limitado no LUIS, e fornece uma melhor experiência de classificação de intenção.

  • Recursos de lista de frases: ocorria principalmente a capacidade de associar recursos para auxiliar a classificação de intenções realçando os principais elementos/recursos a serem usados. Isso não é mais necessário, pois os modelos profundos usados na CLU já têm a capacidade de identificar os elementos inerentes à linguagem. Por sua vez, a remoção desses recursos não terá efeito na capacidade de classificação do modelo.

  • Entidades estruturadas: a capacidade de definir entidades estruturadas destinava-se principalmente a habilitar a análise multinível dos enunciados. Com as diferentes possibilidades das subentidades, o LUIS precisava que todas as diferentes combinações de entidades fossem definidas e apresentadas ao modelo como exemplos. Na CLU, essas entidades estruturadas deixaram de ter suporte, pois não há suporte para componentes aprendidos sobrepostos. Há algumas abordagens possíveis para lidar com essas extrações estruturadas:

    • Extrações não ambíguas: na maioria dos casos, a detecção das entidades folha é suficiente para entender os itens necessários em um intervalo completo. Por exemplo, uma entidade estruturada como Trip, que abrangia totalmente uma origem e um destino (Londres a Nova York ou Casa ao trabalho), pode ser identificada com os intervalos individuais previstos para origem e destino. A presença deles como previsões individuais informará você da entidade Trip.
    • Extrações ambíguas: quando os limites de diferentes subentidades não são muito claros. Para ilustrar isso, veja este exemplo: “Gostaria de pedir uma pizza de pepperoni e uma pizza vegetariana com queijo extra”. Embora os diferentes tipos de pizza, bem como as modificações de cobertura possam ser extraídos, extraí-los sem um contexto apresentará um grau de ambiguidade em relação à pizza à qual o queijo extra será adicionado. Nesse caso, a extensão do intervalo é baseada em contexto e exigirá que o ML determine isso. Para as extrações ambíguas, você pode usar uma das seguintes abordagens:
  1. Combinar as subentidades em diferentes componentes de entidades na mesma entidade.

Exemplo:

Implementação do LUIS:

  • Pedido de pizza (entidade)
    • Tamanho (subentidade)
    • Quantidade (subentidade)

Implementação da CLU:

  • Pedido de pizza (entidade)
    • Tamanho (componente de entidade de lista: pequena, média, grande)
    • Quantidade (componente de entidade predefinida: número)

Na CLU, você rotulará todo o intervalo de Pedido de Pizza, incluindo o tamanho e a quantidade, o que retornará o pedido da pizza com uma chave de lista para o tamanho e um valor numérico para a quantidade no mesmo objeto de entidade.

  1. 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. Isso oferece a opção de:
  • Transmitir o enunciado para cada projeto.
  • Combinar as análises de cada projeto na CLU de processo de fase.

Para ver um exemplo detalhado sobre esse conceito, confira os projetos de exemplos de pizza disponíveis no GitHub.

Como fazer para gerenciar as versões na CLU?

A CLU salva os ativos de dados usados para treinar seu modelo. Você pode exportar os ativos de um modelo ou carregá-los novamente para o projeto a qualquer momento. Portanto, os modelos funcionam como versões diferentes do projeto.

Você pode exportar seus projetos da CLU usando o Language Studio ou por meio de programação e armazenar diferentes versões dos ativos localmente.

Por que a classificação da CLU é diferente da classificação do LUIS? Como a classificação Nenhum funciona?

A CLU apresenta uma abordagem diferente para modelos de treinamento usando a classificação múltipla em vez da classificação binária. Como resultado, a interpretação das pontuações é diferente e difere entre as opções de treinamento. Embora seja provável que você obtenha melhores resultados, é preciso observar a diferença nas pontuações e determinar um novo limite para aceitar as previsões de intenção. Você pode adicionar com facilidade um limite de pontuação de confiança para a intenção Nenhum nas configurações do 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 ter mais dados para os modelos da CLU do que do LUIS?

Os novos modelos da CLU têm uma melhor compreensão semântica da linguagem do que no LUIS e, por sua vez, ajudam a generalizar os modelos com uma redução significativa de dados. Embora você não deva tentar reduzir o volume de dados existente, você deve esperar um melhor desempenho e resiliência às variações e aos sinônimos na CLU em comparação com o LUIS.

Se eu não migrar meus aplicativos LUIS, eles serão excluídos?

Os aplicativos LUIS existentes ficarão disponíveis até 1º de outubro de 2025. Após essa data, você não poderá mais usar esses aplicativos, os pontos de extremidade de serviço deixarão de funcionar e os aplicativos serão excluídos permanentemente.

Os arquivos .LU são compatíveis com a CLU?

Só o formato JSON é compatível com a CLU. Você pode importar os arquivos .LU para o LUIS e exportá-los no formato JSON ou seguir as etapas de migração acima para seu aplicativo.

Quais são os limites de serviço da CLU?

Confira o artigo sobre limites de serviço para saber mais.

Preciso refatorar o código se eu migrar meus aplicativos do LUIS para a CLU?

Os objetos de API dos aplicativos CLU são diferentes dos objetos do LUIS e, portanto, a refatoração de código será necessária.

Se você estiver usando as APIs programáticas e de runtime do LUIS, substitua-as pelas APIs equivalentes.

APIs de criação da CLU: 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 serviço usava APIs programáticas do LUIS para fornecer uma plataforma para outros clientes, considere esse novo paradigma de design. Todas as outras APIs, 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 runtime da CLU: a nova solicitação e resposta de API inclui muitos dos mesmos parâmetros, como consulta, previsão, intenção principal, intenções, entidades e os respectivos valores. O objeto de resposta da CLU oferece uma abordagem mais simples. As previsões de entidades são fornecidas conforme estão no texto de enunciado, e todas as informações adicionais, como resolução ou chaves de lista, são fornecidas em parâmetros extras chamados extraInformation e resolution.

Use o SDK de runtime da CLU para .NET ou Python para substituir o SDK de runtime do LUIS. No momento, não há nenhum SDK de criação disponível para a CLU.

Qual são as diferenças dos tempos de treinamento na CLU? Qual são as diferenças entre o treinamento padrão e o treinamento avançado?

A CLU oferece treinamento padrão, que treina e aprende em inglês e é comparável ao tempo de treinamento do LUIS. Ela também oferece treinamento avançado, com uma duração consideravelmente maior, pois estende o treinamento para todos os outros idiomas com suporte. A API de treinamento continuará sendo um processo assíncrono, e você precisará avaliar a alteração no processo de DevOps empregado para sua solução.

Quais foram as alterações na experiência da CLU em comparação com o LUIS? Qual são as diferenças do ciclo de vida de desenvolvimento?

No LUIS, o ciclo era Criar/Treinar/Testar/Publicar, enquanto na CLU, ele é Criar/Treinar/Avaliar/Implantar/Testar.

  1. Criar: na CLU, você pode definir intenções, entidades e enunciados antes do treinamento. Além disso, a CLU oferece a capacidade de especificar dados de teste à medida que você cria seu aplicativo a ser usado para a avaliação de modelo. A avaliação avalia o desempenho do modelo nos dados de teste e fornece precisão, recall e métricas F1.
  2. Treinar: você cria um modelo com um nome, a cada treinamento. Você pode substituir um modelo já treinado. Especifique o treinamento padrão ou avançado e determine se deseja usar os dados de teste para a avaliação ou se deseja deixar um percentual dos dados de treinamento fora do treinamento e usá-los como dados de teste. Depois que o treinamento for concluído, você poderá avaliar o desempenho do modelo externamente.
  3. 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 outro modelo ou você pode trocar modelos por outras implantações no projeto.
  4. Testar: depois que a implantação for concluída, você poderá usá-la para previsões por meio do ponto de extremidade de implantação. Você também poderá testá-la no estúdio na página Implantação de teste.

Esse processo é distinto do que ocorre no LUIS, em que a ID do aplicativo era anexada a tudo e você implantava uma versão do aplicativo nos slots de preparo ou de produção.

Isso influenciará os processos de DevOps usados.

A CLU tem suporte para contêiner?

Não. Não é possível exportar a 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 tamanho do nome limpo for maior que 50 caracteres, os caracteres extras serão removidos. Se, após a remoção dos caracteres especiais, o nome estiver vazio (por exemplo, se o nome do aplicativo LUIS for @@), o novo nome será sem título. Se já houver um projeto de compreensão da linguagem coloquial com o mesmo nome, será acrescentado _1 ao aplicativo LUIS migrado para a primeira duplicata e ele aumentará em 1 para cada duplicada adicional. Caso o tamanho do novo nome seja de 50 caracteres e ele precise ser renomeado, os últimos um ou dois caracteres são removidos para que seja possível concatenar o número e ainda ficar dentro do limite de 50 caracteres.

Q&A da migração do LUIS

Caso você tenha alguma pergunta que não tenha sido respondida neste artigo, considere deixar suas perguntas em nossa Conversa da Microsoft Q&A.

Próximas etapas