Migrer de la compréhension du langage proposée par le service LUIS (Language Understanding) à la compréhension du langage courant (CLU)

CLU (compréhension du langage courant) est une offre IA basée sur le cloud dans Azure AI Language. Il s’agit de la dernière génération du service LUIS (Language Understanding), qui offre une compatibilité descendante avec les applications LUIS déjà créées. CLU utilise une intelligence de pointe basée sur le machine learning pour permettre aux utilisateurs de créer un modèle personnalisé de compréhension du langage naturel afin de prédire les intentions et les entités des énoncés conversationnels.

CLU offre les avantages suivants par rapport à LUIS :

  • Amélioration de la justesse des résultats avec des modèles Machine Learning de pointe pour une meilleure classification des intentions et une meilleure extraction des entités. LUIS nécessitait davantage d’exemples pour généraliser certains concepts dans les intentions et les entités, alors que le machine learning plus avancé de CLU réduit la charge de travail des clients en demandant beaucoup moins de données.
  • Prise en charge multilingue pour le machine learning et l’entraînement des modèles. Entraînez les projets dans une seule langue, et prédisez immédiatement les intentions et les entités dans 96 langues.
  • Facilité d’intégration à différents projets CLU et projets de réponses aux questions personnalisées à l’aide du workflow d’orchestration.
  • Possibilité d’ajout de données de test dans le cadre de l’expérience à l’aide de Language Studio et d’API pour évaluer les performances du modèle avant le déploiement.

Pour commencer, vous pouvez créer un projet ou migrer votre application LUIS.

Comparaison entre LUIS et CLU

Le tableau suivant présente une comparaison côte à côte des fonctionnalités de LUIS et de CLU. Il met également en évidence les changements apportés à votre application LUIS après la migration vers CLU. Sélectionnez le concept lié pour en savoir plus sur ces changements.

Fonctionnalités de LUIS Fonctionnalités de CLU Après la migration
Entités issues du machine learning et entités ML structurées Composants d’entité issus du machine learning Les entités issues du machine learning sans sous-entités sont transférées en tant qu’entités CLU. Les entités ML structurées transfèrent uniquement les nœuds terminaux (sous-entités de niveau le plus bas qui n’ont pas leurs propres sous-entités) en tant qu’entités dans CLU. Le nom de l’entité dans CLU est le nom de la sous-entité concaténée avec le parent. Par exemple Commande.Taille
Entités de liste, regex et prédéfinies Composants d’entité de liste, regex et prédéfinie Les entités de liste, les entités regex et les entités prédéfinies sont transférées en tant qu’entités dans CLU avec un composant d’entité rempli en fonction du type d’entité.
Entités Pattern.Any Actuellement non disponible Les entités Pattern.Any seront supprimées.
Une seule culture pour chaque application Les modèles multilingues permettent l’utilisation de plusieurs langues pour chaque projet. La langue principale de votre projet est définie en tant que culture d’application LUIS. Votre projet peut être entraîné pour s’étendre à différentes langues.
Rôles d’entité Les rôles ne sont plus nécessaires. Les rôles d’entité seront transférés en tant qu’entités.
Paramètres relatifs à la normalisation de la ponctuation, à la normalisation des signes diacritiques, à la normalisation de la forme des mots, à l’utilisation de toutes les données d’entraînement Les paramètres ne sont plus nécessaires. Les paramètres ne seront pas transférés.
Modèles et caractéristiques de listes d’expressions Les modèles et les caractéristiques de listes d’expressions ne sont plus nécessaires. Les modèles et les caractéristiques de listes d’expressions ne seront pas transférés.
Caractéristiques d’entité Composants de l’entité Les entités de listes ou prédéfinies ajoutées en tant que caractéristiques à une entité seront transférées en tant que composants ajoutés à cette entité. Les caractéristiques d’entité ne seront pas transférées pour les intentions.
Intentions et énoncés Intentions et énoncés Toutes les intentions et tous les énoncés seront transférés. Les énoncés seront étiquetés avec leurs entités transférées.
GUID d’application Noms de projets Un projet sera créé pour chaque application migrée en incluant le nom de l’application. Tous les caractères spéciaux présents dans les noms d’applications seront supprimés dans CLU.
Gestion de version Chaque fois que vous effectuez un entraînement, un modèle est créé et sert de version pour votre projet. Un projet sera créé pour la version d’application sélectionnée.
Évaluation à l’aide de tests par lots Évaluation à l’aide d’ensembles de test L’ajout de votre jeu de données de test est nécessaire.
Contrôle d’accès en fonction du rôle (RBAC) pour les ressources LUIS Contrôle d’accès en fonction du rôle (RBAC) disponible pour les ressources Language Le contrôle RBAC des ressources Language doit être ajouté manuellement après la migration.
Mode d’entraînement unique Modes d’entraînement standard et avancé Un entraînement est nécessaire après la migration de l’application.
Deux emplacements de publication avec publication de version Dix emplacements de déploiement avec nommage personnalisé Un déploiement est nécessaire après la migration et l’entraînement de l’application.
API de création LUIS et prise en charge du kit SDK en .NET, Python, Java et Node.js API REST de création CLU. Pour plus d’informations, consultez l’article du Guide de démarrage rapide sur les API de création CLU. Une refactorisation est nécessaire pour l’utilisation des API de création CLU.
API de runtime LUIS et prise en charge du kit SDK en .NET, Python, Java et Node.js API de runtime CLU. Prise en charge du kit SDK du runtime CLU pour .NET et Python. Pour plus d’informations, consultez Comment appeler l’API. Une refactorisation est nécessaire pour l’utilisation de la fonctionnalité de réponse d’API du runtime CLU.

Migrer vos applications LUIS

Suivez les étapes ci-dessous pour migrer votre application LUIS à l’aide du portail LUIS ou de l’API REST.

Migrer vos applications LUIS à l’aide du portail LUIS

Pour commencer la migration à l’aide du portail LUIS, suivez les étapes ci-dessous :

  1. Une fois connecté au portail LUIS, cliquez sur le bouton de la bannière en haut de l’écran pour lancer l’Assistant Migration. La migration copie uniquement les applications LUIS sélectionnées vers CLU.

    A screenshot showing the migration banner in the LUIS portal.

    L’onglet de vue d’ensemble de la migration fournit une brève explication sur la compréhension du langage courant et ses avantages. Appuyez sur Suivant pour continuer.

    A screenshot showing the migration overview window.

  2. Déterminez quelle est la ressource Language vers laquelle vous souhaitez migrer votre application LUIS. Si vous avez déjà créé votre ressource Language, sélectionnez votre abonnement Azure suivi de votre ressource Language, puis sélectionnez Suivant. Si vous n’avez pas de ressource Language, cliquez sur le lien pour en créer une. Sélectionnez ensuite la ressource, puis sélectionnez Suivant.

    A screenshot showing the resource selection window.

  3. Sélectionnez toutes les applications LUIS à migrer, puis spécifiez chacune de leurs versions. Cliquez sur Suivant. Une fois que vous avez sélectionné votre application et sa version, un message s’affiche pour vous donner des informations sur les caractéristiques qui ne seront pas transférées avec votre application LUIS.

    Notes

    Les caractères spéciaux ne sont pas pris en charge par la fonctionnalité de compréhension du langage courant. Tous les caractères spéciaux présents dans les noms d’applications LUIS sélectionnés seront supprimés dans vos nouvelles applications migrées. A screenshot showing the application selection window.

  4. Passez en revue vos sélections pour la ressources Language et les applications LUIS. Sélectionnez Terminer pour migrer vos applications.

  5. Une fenêtre indépendante vous permet de suivre l’état de migration de vos applications. Les applications qui n’ont pas démarré la migration ont l’état Non démarré(e). Les applications qui ont commencé la migration ont l’état En cours. Une fois la migration effectuée, leur état est Opération réussie. Si une application est à l’état Échec, cela signifie que vous devez répéter le processus de migration. Une fois la migration effectuée pour toutes les applications, sélectionnez Terminé.

    A screenshot showing the application migration progress window.

  6. Une fois vos applications migrées, vous pouvez suivre les étapes ci-après :

Forum aux questions

Quelle version JSON de LUIS est prise en charge par CLU ?

CLU prend en charge le modèle JSON version 7.0.0. Si le format JSON est plus ancien, vous devez d’abord l’importer dans LUIS, puis l’exporter à partir de LUIS avec la version la plus récente.

En quoi les entités sont-elles différentes dans CLU ?

Dans CLU, une seule entité peut avoir plusieurs composants d’entité, qui correspondent à différentes méthodes d’extraction. Ces composants sont ensuite combinés à l’aide de règles que vous pouvez définir. Les composants disponibles sont les suivants :

  • Composants issus du machine learning : les étiquettes, qui sont équivalentes aux entités ML dans LUIS, permettent d’entraîner un modèle Machine Learning pour prédire une entité en fonction du contenu et du contexte des étiquettes fournies.
  • Composants de liste : tout comme les entités de liste dans LUIS, les composants de liste établissent une correspondance exacte avec un ensemble de synonymes, puis les mappent à nouveau à une valeur normalisée appelée clé de liste.
  • Composants prédéfinis : ils vous permettent de définir une entité avec les extracteurs prédéfinis pour les types courants disponibles dans LUIS et CLU.
  • Composants regex : ils utilisent des expressions régulières pour capturer des modèles définis de manière personnalisée, exactement comme les entités regex dans LUIS.

Les entités dans LUIS sont transférées en tant qu’entités du même nom dans CLU, avec les composants équivalents.

Une fois la migration effectuée, vos nœuds terminaux structurés issus du machine learning et vos sous-entités de niveau inférieur sont transférés vers le nouveau modèle CLU, alors que toutes les entités parentes et entités de niveau supérieur sont ignorées. Le nom de l’entité correspond au nom de l’entité de niveau inférieur concaténé avec son entité parente.

Exemple :

Entité LUIS :

  • Commande de pizza
    • Garniture
    • Taille

Entité LUIS migrée dans CLU :

  • Commande de pizza.Garniture
  • Commande de pizza.Taille

Vous ne pouvez pas non plus étiqueter 2 entités différentes dans CLU pour la même étendue de caractères. Les composants issus du machine learning dans CLU s’excluent mutuellement. Ils ne fournissent pas de prédictions qui se chevauchent uniquement pour les composants issus du machine learning. Durant la migration de votre application LUIS, les étiquettes d’entité qui se chevauchent ont conservé l’étiquette la plus longue et ignoré les autres.

Pour plus d’informations sur les composants d’entité, consultez Composants d’entité.

Comment les rôles d’entité sont-ils transférés vers CLU ?

Vos rôles sont transférés en tant qu’entités distinctes avec leurs énoncés étiquetés. Le type d’entité de chaque rôle détermine le composant d’entité à remplir. Par exemple, un rôle d’entité de liste est transféré en tant qu’entité portant le même nom que le rôle, avec un composant de liste rempli.

Comment les caractéristiques d’entité sont-elles transférées dans CLU ?

Les entités utilisées en tant que caractéristiques pour les intentions ne sont pas transférées. Les entités utilisées en tant que caractéristiques pour d’autres entités vont remplir le composant approprié de l’entité. Par exemple, si une entité de liste nommée SizeList a été utilisée en tant que caractéristique pour une entité issue du machine learning nommée Size, l’entité Size est transférée vers CLU avec les valeurs de liste de SizeList ajoutées à son composant de liste. Il en est de même pour les entités prédéfinies et regex.

En quoi les scores de confiance des entités sont-ils différents dans CLU ?

Toute entité extraite a un score de confiance de 100 %. Vous ne devez donc pas utiliser les scores de confiance d’entité pour la prise de décisions entre les entités.

En quoi la compréhension du langage courant est-elle multilingue ?

Les projets de compréhension du langage courant acceptent des énoncés dans différentes langues. De plus, vous pouvez entraîner votre modèle dans une langue, et l’étendre pour effectuer des prédictions dans d’autres langues.

Exemple :

Énoncé d’entraînement (français) : Comment allez-vous ?

Intention étiquetée : message d’accueil

Énoncé d’exécution (français) : Comment ça va ?

Intention prévue : message d’accueil

En quoi la justesse de CLU est-elle meilleure que celle de LUIS ?

CLU utilise des modèles de pointe pour améliorer les performances des différents modèles Machine Learning de classification d’intentions et d’extraction d’entités.

Ces modèles sont insensibles aux variations mineures, ce qui permet d’éviter les paramètres suivants : normalisation de la ponctuation, normalisation des signes diacritiques, normalisation de la forme des mots et utilisation de toutes les données d’entraînement.

De plus, les nouveaux modèles ne prennent pas en charge les caractéristiques de listes d’expressions, car ils ne nécessitent plus d’informations supplémentaires de la part de l’utilisateur pour fournir des mots sémantiquement similaires et garantir une meilleure justesse. Les modèles ont également été utilisés pour améliorer la classification des intentions à l’aide de techniques de correspondance basées sur des règles, qui ne sont pas nécessaires dans le nouveau paradigme de modèle. La question ci-dessous explique cela plus en détail.

Que faire si les fonctionnalités que j’utilise dans LUIS ne sont plus présentes ?

Plusieurs fonctionnalités présentes dans LUIS ne seront plus disponibles dans CLU. Cela inclut l’ingénierie des caractéristiques, les modèles et les entités pattern.any ainsi que les entités structurées. Si vous avez des dépendances par rapport à ces fonctionnalités dans LUIS, utilisez les conseils d’aide suivants :

  • Modèles : des modèles ont été ajoutés dans LUIS pour faciliter la classification d’intentions via la définition d’énoncés de modèles d’expression régulière. Cela incluait la définition d’intentions basées sur des modèles uniquement (sans exemples d’énoncés). CLU peut effectuer des généralisations en tirant parti de modèles de pointe. Vous pouvez fournir quelques énoncés correspondant à un modèle spécifique à l’intention dans CLU. Les différents modèles seront probablement classifiés en tant qu’intention supérieure sans avoir besoin de l’énoncé de modèle du modèle. Cela simplifie le besoin de formulation de ces modèles, qui était limité dans LUIS, et offre une meilleure expérience de classification des intentions.

  • Caractéristiques de listes d’expressions : l’association de caractéristiques permet principalement de faciliter la classification des intentions en mettant en évidence les caractéristiques/éléments clés à utiliser. Cela n’est plus nécessaire, car les modèles profonds utilisés dans CLU peuvent déjà identifier les éléments inhérents à la langue. De même, la suppression de ces caractéristiques n’a aucun effet sur la capacité de classification du modèle.

  • Entités structurées : la définition d’entités structurées visait principalement à permettre une analyse multiniveau des énoncés. Compte tenu des différentes possibilités des sous-entités, LUIS avait besoin que toutes les différentes combinaisons d’entités soient définies et présentées au modèle en tant qu’exemples. Dans CLU, ces entités structurées ne sont plus prises en charge, car les composants issus du machine learning qui se chevauchent ne sont pas pris en charge. Il existe quelques approches pour gérer ces extractions structurées :

    • Extractions non ambiguës : dans la plupart des cas, la détection des entités terminales est suffisante pour comprendre quels sont les éléments nécessaires au sein d’une étendue complète. Par exemple, une entité structurée telle que Voyage, qui recouvre complètement une source et une destination (De Londres à New York ou Du domicile au travail) peut être identifiée à l’aide des intervalles individuels prédits pour la source et la destination. Leur présence sous forme de prédictions individuelles vous informe sur l’entité Voyage.
    • Extractions ambiguës : quand les limites des différentes sous-entités ne sont pas très claires. À titre d’illustration, prenons l’exemple suivant : « Je souhaite commander une pizza pepperoni et une pizza végétarienne avec supplément fromage ». Bien que les différents types de pizza ainsi que les modifications de garniture puissent être extraits, leur extraction sans contexte peut entraîner un certain degré d’ambiguïté notamment concernant l’ajout du supplément fromage. Dans ce cas, l’étendue est basée sur le contexte et nécessite une approche ML. Pour les extractions ambiguës, vous pouvez utiliser l’une des approches suivantes :
  1. Combinez des sous-entités en différents composants d’entité au sein de la même entité.

Exemple :

Implémentation avec LUIS :

  • Commande de pizza (entité)
    • Taille (sous-entité)
    • Quantité (sous-entité)

Implémentation avec CLU :

  • Commande de pizza (entité)
    • Taille (composant d’entité de liste : petite, moyenne, grande)
    • Quantité (composant d’entité prédéfinie : nombre)

Dans CLU, vous devez étiqueter l’étendue complète de la Commande de pizza en incluant la taille et la quantité, ce qui retourne la commande de pizza avec une clé de liste pour la taille, et une valeur numérique pour la quantité, dans le même objet d’entité.

  1. Pour les problèmes plus complexes où les entités contiennent plusieurs niveaux de profondeur, vous pouvez créer un projet pour chaque niveau de profondeur dans la structure d’entité. Cela vous permet de :
  • Passer l’énoncé à chaque projet.
  • Combiner les analyses de chaque projet dans la phase qui précède CLU.

Pour obtenir un exemple détaillé de ce concept, consultez les exemples de projets de pizza disponibles sur GitHub.

Comment gérer les versions dans CLU ?

CLU enregistre les ressources de données utilisées pour entraîner votre modèle. Vous pouvez exporter les ressources d’un modèle ou les recharger dans le projet à tout moment. Les modèles se comportent donc comme des versions distinctes de votre projet.

Vous pouvez exporter vos projets CLU à l’aide de Language Studio ou par programmation, et stocker les différentes versions des ressources localement.

Pourquoi la classification de CLU est-elle différente de celle de LUIS ? Comment fonctionne la classification de None ?

CLU présente une approche différente de l’entraînement des modèles en utilisant la classification multiple par opposition à la classification binaire. Ainsi, l’interprétation des scores est différente et varie également selon les options d’entraînement. Bien que vous puissiez obtenir de meilleurs résultats, vous devez observer la différence entre les scores, et déterminer un nouveau seuil pour l’acceptation des prédictions d’intention. Vous pouvez facilement ajouter un seuil de score de confiance pour l’intention None dans les paramètres de votre projet. Cela permet de retourner None en tant qu’intention supérieure si celle-ci n’a pas dépassé le seuil de score de confiance fourni.

Ai-je besoin de plus de données pour les modèles CLU que pour les modèles LUIS ?

Les nouveaux modèles CLU ont une meilleure compréhension sémantique du langage que les modèles LUIS. De plus, ils permettent d’effectuer des généralisations avec une réduction significative des données. Même si vous ne devez pas chercher à réduire la quantité de données dont vous disposez, vous devez pouvoir obtenir de meilleures performances et une meilleure résilience en ce qui concerne les variantes et les synonymes dans CLU par rapport à LUIS.

Si je ne migre pas mes applications LUIS, seront-elles supprimées ?

Vos applications LUIS existantes seront disponibles jusqu’au 1er octobre 2025. Passé ce délai, vous ne pourrez plus utiliser ces applications, les points de terminaison de service ne fonctionneront plus, et les applications seront supprimées définitivement.

Les fichiers .LU sont-ils pris en charge sur CLU ?

Seul le format JSON est pris en charge par CLU. Vous pouvez importer vos fichiers .LU vers LUIS, et les exporter au format JSON, ou vous pouvez suivre les étapes de migration ci-dessus pour votre application.

Quelles sont les limites de service de CLU ?

Pour plus d’informations, consultez l’article sur les limites du service.

Dois-je refactoriser mon code si je migre mes applications de LUIS vers CLU ?

Dans la mesure où les objets API des applications CLU sont différents de ceux des applications LUIS, une refactorisation du code est nécessaire.

Si vous utilisez les API programmatiques et de runtime LUIS, vous pouvez les remplacer par les API équivalentes.

API de création CLU : à la place des API CRUD spécifiques à LUIS pour les actions individuelles telles que ajouter un énoncé, supprimer une entité et renommer une intention, CLU propose une API d’importation qui remplace le contenu complet d’un projet en utilisant le même nom. Si votre service a utilisé des API programmatiques LUIS pour fournir une plateforme à d’autres clients, vous devez prendre en compte ce nouveau modèle de conception. Toutes les autres API, par exemple le listage des projets, l’entraînement, le déploiement et la suppression sont disponibles. Les API relatives aux actions telles que l’importation et le déploiement sont des opérations asynchrones et non synchrones comme c’est le cas dans LUIS.

API de runtime CLU : la nouvelle fonctionnalité de requête/réponse d’API inclut la plupart des mêmes paramètres, par exemple l’interrogation, la prédiction, l’intention supérieure, les intentions, les entités et leurs valeurs. L’objet de réponse CLU offre une approche plus directe. Les prédictions d’entité sont fournies en l’état dans le texte d’énoncé. Toutes les informations supplémentaires telles que la résolution ou les clés de liste sont fournies dans des paramètres supplémentaires appelés extraInformation et resolution.

Vous pouvez utiliser le kit SDK du runtime CLU en .NET ou Python pour remplacer le kit SDK du runtime LUIS. Il n’existe aucun kit SDK de création pour CLU.

En quoi les durées d’entraînement sont-elles différentes dans CLU ? En quoi l’entraînement standard est-il différent de l’entraînement avancé ?

CLU propose un entraînement standard, en anglais, dont la durée est comparable à la durée d’entraînement de LUIS. Il propose également un entraînement avancé, qui dure bien plus longtemps, car il étend l’entraînement à toutes les autres langues prises en charge. L’API d’entraînement continue d’être un processus asynchrone. Vous devrez évaluer le changement apporté au processus DevOps que vous utilisez pour votre solution.

En quoi l’expérience a-t-elle changé dans CLU par rapport à LUIS ? En quoi le cycle de vie du développement est-il différent ?

Dans LUIS, vous devez Créer-Entraîner-Tester-Publier, alors que dans CLU, vous devez Créer-Entraîner-Évaluer-Déployer-Tester.

  1. Créer : dans CLU, vous pouvez définir vos intentions, vos entités et vos énoncés avant d’effectuer l’entraînement. De plus, CLU vous permet de spécifier des données de test au fur et à mesure que vous créez l’application à utiliser pour l’évaluation du modèle. L’évaluation mesure les performances de votre modèle par rapport à vos données de test, et vous fournit des métriques de précision, de rappel et F1.
  2. Entraîner : vous créez un modèle avec un nom à chaque entraînement. Vous pouvez remplacer un modèle déjà entraîné. Vous pouvez spécifier un entraînement standard ou avancé, puis déterminer si vous souhaitez utiliser les données de test à des fins d’évaluation, ou un pourcentage des données d’entraînement à exclure de l’entraînement et à utiliser en tant que données de test. Une fois l’entraînement effectué, vous pouvez évaluer les performances de votre modèle en pratique.
  3. Déployer : une fois l’entraînement effectué et le modèle nommé, vous pouvez le déployer pour des prédictions. Un déploiement est également nommé et dispose d’un modèle affecté. Vous pouvez avoir plusieurs déploiements pour le même modèle. Vous pouvez remplacer un déploiement par un autre modèle, ou vous pouvez échanger des modèles avec d’autres déploiements dans le projet.
  4. Tester : une fois le déploiement effectué, vous pouvez l’utiliser pour des prédictions via le point de terminaison de déploiement. Vous pouvez également le tester dans le studio, dans la page Tester le déploiement.

Ce processus contraste avec celui de LUIS, où l’ID d’application est attaché à tout, et où vous déployez une version de l’application sur les emplacements de préproduction ou de production.

Cela influence les processus DevOps que vous utilisez.

CLU prend-il en charge les conteneurs ?

Non, vous ne pouvez pas exporter CLU vers des conteneurs.

Comment mes applications LUIS seront-elles nommées dans CLU après la migration ?

Tous les caractères spéciaux présents dans le nom d’application LUIS seront supprimés. Si la longueur du nom effacé est supérieure à 50 caractères, les caractères supplémentaires seront supprimés. Si le nom après la suppression des caractères spéciaux est vide (par exemple, si le nom d’application LUIS est @@), le nouveau nom est sans titre. S’il existe déjà un projet de compréhension du langage courant portant le même nom, _1 est ajouté à l’application LUIS migrée pour le premier doublon et est augmenté de 1 à chaque doublon supplémentaire. Si la longueur du nouveau nom est de 50 caractères et si un renommage est nécessaire, le dernier ou les deux derniers caractères sont supprimés pour permettre la concaténation du numéro tout en respectant la limite des 50 caractères.

Migration depuis LUIS Q&A

Si vous avez des questions qui restent sans réponse dans cet article, vous pouvez envisagez de les poser dans notre conversation Microsoft Q&A.

Étapes suivantes