Migrera från Language Understanding (LUIS) till konversationsspråkförståelse (CLU)

Conversational Language Understanding (CLU) är ett molnbaserat AI-erbjudande i Azure AI Language. Det är den senaste generationen av Language Understanding (LUIS) och erbjuder bakåtkompatibilitet med tidigare skapade LUIS-program. CLU använder toppmodern maskininlärningsinformation så att användarna kan skapa en anpassad modell för förståelse av naturligt språk för att förutsäga avsikter och entiteter i konversationsyttranden.

CLU erbjuder följande fördelar jämfört med LUIS:

  • Förbättrad noggrannhet med toppmoderna maskininlärningsmodeller för bättre avsiktsklassificering och entitetsextrahering. LUIS krävde fler exempel för att generalisera vissa begrepp i avsikter och entiteter, medan CLU:s mer avancerade maskininlärning minskar belastningen på kunderna genom att kräva betydligt mindre data.
  • Flerspråkigt stöd för modellinlärning och utbildning. Träna projekt på ett språk och förutsäga avsikter och entiteter på 96 språk omedelbart.
  • Enkel integrering med olika CLU- och anpassade frågesvarsprojekt med hjälp av orkestreringsarbetsflödet.
  • Möjligheten att lägga till testdata i upplevelsen med hjälp av Language Studio och API:er för utvärdering av modellprestanda före distributionen.

För att komma igång kan du skapa ett nytt projekt eller migrera ditt LUIS-program.

Jämförelse mellan LUIS och CLU

I följande tabell visas en jämförelse sida vid sida mellan funktionerna i LUIS och CLU. Den visar också ändringarna i LUIS-programmet efter migreringen till CLU. Välj det länkade konceptet för att lära dig mer om ändringarna.

LUIS-funktioner CLU-funktioner Efter migrering
Maskininlärda och strukturerade ML-entiteter Inlärda entitetskomponenter Maskininlärda entiteter utan underenheter överförs som CLU-entiteter. Strukturerade ML-entiteter överför endast lövnoder (underenheter på lägsta nivå som inte har egna underentiteter) som entiteter i CLU. Namnet på entiteten i CLU är namnet på underdelen som sammanfogas med den överordnade. Till exempel Order.Size
Lista, regex och fördefinierade entiteter Lista, regex och fördefinierade entitetskomponenter Lista, regex och fördefinierade entiteter överförs som entiteter i CLU med en ifylld entitetskomponent baserat på entitetstypen.
Pattern.Any Enheter För närvarande inte tillgängligt Pattern.Any entiteter tas bort.
Enskild kultur för varje program Flerspråkiga modeller möjliggör flera språk för varje projekt. Det primära språket i projektet kommer att anges som din LUIS-programkultur. Projektet kan tränas för att utöka till olika språk.
Entitetsroller Roller behövs inte längre. Entitetsroller överförs som entiteter.
Inställningar för: normalisera skiljetecken, normalisera diakritiska tecken, normalisera ordformulär, använda alla träningsdata Inställningar behövs inte längre. Inställningar överförs inte.
Funktioner för mönster och fraslistor Mönster- och fraslistfunktioner behövs inte längre. Mönster och fraslistfunktioner överförs inte.
Entitetsfunktioner Entitetskomponenter Lista eller fördefinierade entiteter som läggs till som funktioner i en entitet överförs som tillagda komponenter till den entiteten. Entitetsfunktioner överförs inte för avsikter.
Avsikter och yttranden Avsikter och yttranden Alla avsikter och yttranden överförs. Yttranden kommer att märkas med deras överförda entiteter.
Program-GUID:er Projektnamn Ett projekt skapas för varje migrerande program med programnamnet. Eventuella specialtecken i programnamnen tas bort i CLU.
Versionshantering Varje gång du tränar skapas en modell och fungerar som en version av projektet. Ett projekt skapas för den valda programversionen.
Utvärdering med batchtestning Utvärdering med hjälp av testuppsättningar Det krävs att du lägger till din testdatauppsättning .
Rollbaserad åtkomstkontroll (RBAC) för LUIS-resurser Rollbaserad åtkomstkontroll (RBAC) tillgänglig för språkresurser Språkresursen RBAC måste läggas till manuellt efter migreringen.
Enkelt träningsläge Standard- och avancerade träningslägen Utbildning krävs efter programmigrering.
Två publiceringsplatser och versionspublicering Tio distributionsplatser med anpassad namngivning Distribution krävs efter programmets migrering och utbildning.
LUIS-redigerings-API:er och SDK-stöd i .NET, Python, Java och Node.js CLU Authoring REST API:er. Mer information finns i snabbstartsartikeln för information om CLU-redigerings-API:er. Refaktorisering krävs för att använda CLU-redigerings-API:er.
LUIS Runtime-API:er och SDK-stöd i .NET, Python, Java och Node.js CLU Runtime-API:er. CLU Runtime SDK-stöd för .NET och Python. Mer information finns i hur du anropar API :et. Refaktorisering krävs för att använda CLU-körnings-API-svaret.

Migrera dina LUIS-program

Använd följande steg för att migrera ditt LUIS-program med hjälp av LUIS-portalen eller REST-API:et.

Migrera dina LUIS-program med hjälp av LUIS-portalen

Följ dessa steg för att påbörja migreringen med hjälp av LUIS-portalen:

  1. När du har loggat in på LUIS-portalen klickar du på knappen på banderollen överst på skärmen för att starta migreringsguiden. Migreringen kopierar endast dina valda LUIS-program till CLU.

    A screenshot showing the migration banner in the LUIS portal.

    Fliken Översikt över migrering innehåller en kort förklaring av förståelse för konversationsspråk och dess fördelar. Tryck på Nästa för att fortsätta.

    A screenshot showing the migration overview window.

  2. Fastställ den språkresurs som du vill migrera LUIS-programmet till. Om du redan har skapat språkresursen väljer du din Azure-prenumeration följt av språkresursen och väljer sedan Nästa. Om du inte har en språkresurs klickar du på länken för att skapa en ny språkresurs. Därefter väljer du resursen och väljer Nästa.

    A screenshot showing the resource selection window.

  3. Välj alla LUIS-program som du vill migrera och ange var och en av deras versioner. Välj Nästa. När du har valt ditt program och din version uppmanas du att få ett meddelande som informerar dig om eventuella funktioner som inte kommer att överföras från luis-programmet.

    Kommentar

    Specialtecken stöds inte av förståelse för konversationsspråk. Eventuella specialtecken i dina valda LUIS-programnamn tas bort i dina nya migrerade program. A screenshot showing the application selection window.

  4. Granska val av språkresurs och LUIS-program. Välj Slutför för att migrera dina program.

  5. Med ett popup-fönster kan du spåra migreringsstatusen för dina program. Program som inte har startat migreringen har statusen Inte startad. Program som har påbörjat migreringen har statusen Pågår och när de har migrerats kommer de att lyckas. Ett misslyckat program innebär att du måste upprepa migreringsprocessen. När migreringen har slutförts för alla program väljer du Klar.

    A screenshot showing the application migration progress window.

  6. När dina program har migrerats kan du utföra följande steg:

Vanliga frågor och svar

Vilken LUIS JSON-version stöds av CLU?

CLU stöder JSON-modellen version 7.0.0. Om JSON-formatet är äldre måste det först importeras till LUIS och sedan exporteras från LUIS med den senaste versionen.

Hur skiljer sig entiteter i CLU?

I CLU kan en enskild entitet ha flera entitetskomponenter, som är olika metoder för extrahering. Dessa komponenter kombineras sedan med hjälp av regler som du kan definiera. De tillgängliga komponenterna är:

  • Inlärd: Etiketter som motsvarar ML-entiteter i LUIS används för att träna en maskininlärd modell för att förutsäga en entitet baserat på innehållet och kontexten för de angivna etiketterna.
  • Lista: Precis som listentiteter i LUIS matchar listkomponenter exakt en uppsättning synonymer och mappar dem tillbaka till ett normaliserat värde som kallas listnyckel.
  • Fördefinierad: Med fördefinierade komponenter kan du definiera en entitet med de fördefinierade extraktorerna för vanliga typer som är tillgängliga i både LUIS och CLU.
  • Regex: Regex-komponenter använder reguljära uttryck för att avbilda anpassade definierade mönster, precis som regex-entiteter i LUIS.

Entiteter i LUIS överförs som entiteter med samma namn i CLU med motsvarande komponenter som överförs.

Efter migreringen överförs dina strukturerade maskininlärda lövnoder och underentiteter på den nedre nivån till den nya CLU-modellen medan alla överordnade entiteter och entiteter på högre nivå ignoreras. Namnet på entiteten är entitetens namn på den nedre nivån som sammanfogas med dess överordnade entitet.

Exempel:

LUIS-entitet:

  • Pizzabeställning
    • Toppning
    • Storlek

Migrerad LUIS-entitet i CLU:

  • Pizza Order.Topping
  • Pizza Order.Size

Du kan inte heller märka 2 olika entiteter i CLU för samma teckenintervall. Inlärda komponenter i CLU är ömsesidigt uteslutande och ger inte överlappande förutsägelser endast för inlärda komponenter. När du migrerar DITT LUIS-program bevarade entitetsetiketter som överlappade den längsta etiketten och ignorerade andra.

Mer information om entitetskomponenter finns i Entitetskomponenter.

Hur överförs entitetsroller till CLU?

Dina roller överförs som distinkta entiteter tillsammans med deras märkta yttranden. Varje rolls entitetstyp avgör vilken entitetskomponent som ska fyllas i. En listentitetsroll överförs till exempel som en entitet med samma namn som rollen, med en ifylld listkomponent.

Hur överförs entitetsfunktioner i CLU?

Entiteter som används som funktioner för avsikter överförs inte. Entiteter som används som funktioner för andra entiteter fyller den relevanta komponenten i entiteten. Om en listentitet med namnet SizeList till exempel användes som en funktion i en maskininlärd entitet med namnet Storlek, överförs entiteten Storlek till CLU med listvärdena från SizeList som läggs till i listkomponenten. Samma sak gäller för fördefinierade och regex-entiteter.

Hur skiljer sig entitetsförtroendepoängen i CLU?

En extraherad entitet har 100 % konfidenspoäng och därför bör entitetsförtroendepoäng inte användas för att fatta beslut mellan entiteter.

På vilket sätt är språkförståelsefunktionen flerspråkig?

Projekt för förståelse av konversationsspråk accepterar yttranden på olika språk. Dessutom kan du träna din modell på ett språk och utöka den till att förutsäga på andra språk.

Exempel:

Träningsyttrande (engelska): Hur är du?

Märkt avsikt: Hälsning

Runtime yttrande (franska): Kommentar ça va?

Förutsagd avsikt: Hälsning

Hur är precisionen i CLU bättre än LUIS?

CLU använder toppmoderna modeller för att förbättra maskininlärningsprestanda för olika modeller för avsiktsklassificering och entitetsextrahering.

Dessa modeller är okänsliga för mindre variationer, vilket tar bort behovet av följande inställningar: Normalisera skiljetecken, normalisera diakritiska tecken, normalisera ordformulär och använda alla träningsdata.

Dessutom stöder de nya modellerna inte funktioner för fraslistor eftersom de inte längre kräver ytterligare information från användaren för att tillhandahålla semantiskt liknande ord för bättre noggrannhet. Mönster användes också för att ge förbättrad avsiktsklassificering med hjälp av regelbaserade matchningstekniker som inte är nödvändiga i det nya modellparadigmet. Frågan nedan förklarar detta mer detaljerat.

Vad gör jag om de funktioner jag använder i LUIS inte längre finns?

Det finns flera funktioner i LUIS som inte längre är tillgängliga i CLU. Detta omfattar möjligheten att utföra funktionsframställning, ha mönster och pattern.any-entiteter och strukturerade entiteter. Om du har beroenden av dessa funktioner i LUIS använder du följande vägledning:

  • Mönster: Mönster har lagts till i LUIS för att hjälpa avsiktsklassificeringen genom att definiera reguljära uttrycksmallyttranden. Detta inkluderade möjligheten att definiera avsikterna endast mönster (utan talindataexempel). CLU kan generalisera genom att utnyttja de senaste modellerna. Du kan ange några yttranden till som matchade ett specifikt mönster med avsikten i CLU, och det kommer sannolikt att klassificera de olika mönstren som den främsta avsikten utan behov av mönstermallyttrandet. Detta förenklar kravet på att formulera dessa mönster, som var begränsade i LUIS, och ger en bättre avsiktsklassificeringsupplevelse.

  • Funktioner i fraslista: Möjligheten att associera funktioner uppstod främst för att underlätta klassificeringen av avsikter genom att markera de viktigaste elementen/funktionerna som ska användas. Detta krävs inte längre eftersom de djupa modeller som används i CLU redan har förmågan att identifiera de element som är inbyggda i språket. Att ta bort dessa funktioner påverkar i sin tur inte modellens klassificeringsförmåga.

  • Strukturerade entiteter: Möjligheten att definiera strukturerade entiteter var främst att aktivera multilevelparsing av yttranden. Med de olika möjligheterna för underentiteterna behövde LUIS alla olika kombinationer av entiteter för att definieras och presenteras för modellen som exempel. I CLU stöds inte längre dessa strukturerade entiteter eftersom överlappande inlärda komponenter inte stöds. Det finns några möjliga metoder för att hantera dessa strukturerade extraheringar:

    • Icke-tvetydiga extraheringar: I de flesta fall räcker identifieringen av löventiteterna för att förstå de nödvändiga objekten inom ett fullständigt intervall. Till exempel kan strukturerad entitet som Trip som helt sträckte sig över en källa och ett mål (London till New York eller Hem för arbete) identifieras med de enskilda intervall som förutsägs för källa och mål. Deras närvaro som enskilda förutsägelser skulle informera dig om Trip-entiteten.
    • Tvetydiga extraheringar: När gränserna för olika underentiteter inte är särskilt tydliga. För att illustrera, ta exemplet "Jag vill beställa en pepperoni pizza och en extra ost vegetarisk pizza". Medan de olika pizzatyperna samt toppingändringarna kan extraheras, skulle det ha en viss tvetydighet om var den extra osten tillsätts om de extraherades utan sammanhang. I det här fallet är omfattningen av spannet kontextbaserad och skulle kräva att ML fastställer detta. För tvetydiga extraheringar kan du använda någon av följande metoder:
  1. Kombinera underentiteter till olika entitetskomponenter inom samma entitet.

Exempel:

LUIS-implementering:

  • Pizzabeställning (entitet)
    • Storlek (underdel)
    • Kvantitet (underdel)

CLU-implementering:

  • Pizzabeställning (entitet)
    • Storlek (listentitetskomponent: liten, medel, stor)
    • Kvantitet (fördefinierad entitetskomponent: tal)

I CLU skulle du märka hela intervallet för Pizza Order inklusive storlek och kvantitet, vilket skulle returnera pizzaordningen med en listnyckel för storlek och ett talvärde för kvantitet i samma entitetsobjekt.

  1. För mer komplexa problem där entiteter innehåller flera djupnivåer kan du skapa ett projekt för varje djupnivå i entitetsstrukturen. Detta ger dig möjlighet att:
  • Skicka yttrandet till varje projekt.
  • Kombinera analyserna av varje projekt i steget som fortsätter CLU.

Ett detaljerat exempel på det här konceptet finns i de pizzaexempelprojekt som är tillgängliga på GitHub.

Hur gör jag för att hantera versioner i CLU?

CLU sparar de datatillgångar som används för att träna din modell. Du kan exportera en modells tillgångar eller läsa in dem i projektet igen när som helst. Så modeller fungerar som olika versioner av projektet.

Du kan exportera dina CLU-projekt med Hjälp av Language Studio eller programmatiskt och lagra olika versioner av tillgångarna lokalt.

Varför skiljer sig CLU-klassificeringen från LUIS? Hur fungerar ingen klassificering?

CLU presenterar en annan metod för att träna modeller med hjälp av flera klassificeringar i stället för binär klassificering. Därför skiljer sig tolkningen av poäng åt och skiljer sig även mellan olika utbildningsalternativ. Även om du sannolikt kommer att uppnå bättre resultat måste du observera skillnaden i poäng och fastställa ett nytt tröskelvärde för att acceptera avsiktsförutsägelser. Du kan enkelt lägga till ett tröskelvärde för konfidenspoäng för avsikten Ingen i projektinställningarna. Detta returnerar Ingen som den främsta avsikten om den översta avsikten inte överskrerade tröskelvärdet för konfidenspoäng.

Behöver jag mer data för CLU-modeller än LUIS?

De nya CLU-modellerna har bättre semantisk förståelse för språk än i LUIS, och hjälper i sin tur till att göra modeller generaliserade med en betydande minskning av data. Du bör inte sträva efter att minska mängden data som du har, men du bör förvänta dig bättre prestanda och motståndskraft mot variationer och synonymer i CLU jämfört med LUIS.

Kommer de att tas bort om jag inte migrerar mina LUIS-appar?

Dina befintliga LUIS-program är tillgängliga fram till den 1 oktober 2025. Efter den tiden kommer du inte längre att kunna använda dessa program, tjänstslutpunkterna fungerar inte längre och programmen tas bort permanent.

Är. LU-filer som stöds på CLU?

Endast JSON-format stöds av CLU. Du kan importera . LU-filer till LUIS och exportera dem i JSON-format, eller så kan du följa migreringsstegen ovan för ditt program.

Vilka är tjänstgränserna för CLU?

Mer information finns i artikeln om tjänstbegränsningar .

Måste jag omstrukturera min kod om jag migrerar mina program från LUIS till CLU?

API-objekten i CLU-program skiljer sig från LUIS och därför krävs kodrefaktorisering.

Om du använder API:er för LUIS-programmatiska api:er och körning kan du ersätta dem med motsvarande API:er.

CLU-redigerings-API:er: I stället för LUIS:s specifika CRUD-API:er för enskilda åtgärder, till exempel lägga till yttrande, ta bort entitet och byta namn på avsikt, erbjuder CLU ett import-API som ersätter det fullständiga innehållet i ett projekt med samma namn. Om din tjänst använde LUIS-programmatiska API:er för att tillhandahålla en plattform för andra kunder måste du överväga det här nya designparadigmet. Alla andra API:er, till exempel: lista projekt, utbildning, distribution och borttagning är tillgängliga. API:er för åtgärder som att importera och distribuera är asynkrona åtgärder i stället för synkrona som de var i LUIS.

CLU-körnings-API:er: Den nya API-begäran och -svaret innehåller många av samma parametrar, till exempel: fråga, förutsägelse, främsta avsikt, avsikter, entiteter och deras värden. CLU-svarsobjektet erbjuder en enklare metod. Entitetsförutsägelser tillhandahålls eftersom de finns i yttrandetexten och eventuell ytterligare information, till exempel lösnings- eller listnycklar, anges i extra parametrar som kallas extraInformation och resolution.

Du kan använda .NET - eller Python CLU-körnings-SDK:t för att ersätta LUIS-körnings-SDK:t. Det finns för närvarande inget redigerings-SDK tillgängligt för CLU.

Hur skiljer sig träningstiderna i CLU? Hur skiljer sig standardträningen från avancerad utbildning?

CLU erbjuder standardträning, som tränar och lär sig på engelska och är jämförbar med LUIS:s träningstid. Den erbjuder också avancerad utbildning, vilket tar betydligt längre tid eftersom den utökar utbildningen till alla andra språk som stöds. Tränings-API:et fortsätter att vara en asynkron process och du måste utvärdera ändringen i DevOps-processen som du använder för din lösning.

Hur har upplevelsen ändrats i CLU jämfört med LUIS? Hur skiljer sig utvecklingslivscykeln?

I LUIS skulle du build-train-test-publish, medan du i CLU build-train-evaluate-deploy-test.

  1. Build: I CLU kan du definiera dina avsikter, entiteter och yttranden innan du tränar. CLU ger dig dessutom möjlighet att ange testdata när du skapar ditt program som ska användas för modellutvärdering. Utvärderingen utvärderar hur bra din modell presterar på dina testdata och ger dig precisions-, återkallelse- och F1-mått.
  2. Träna: Du skapar en modell med ett namn varje gång du tränar. Du kan skriva över en redan tränad modell. Du kan ange antingen standard eller avancerad utbildning och avgöra om du vill använda dina testdata för utvärdering, eller en procentandel av dina träningsdata som ska utelämnas från träningen och användas som testdata. När träningen är klar kan du utvärdera hur bra din modell mår på utsidan.
  3. Distribuera: När träningen är klar och du har en modell med ett namn kan den distribueras för förutsägelser. En distribution namnges också och har en tilldelad modell. Du kan ha flera distributioner för samma modell. En distribution kan skrivas över med en annan modell, eller så kan du växla modeller med andra distributioner i projektet.
  4. Test: När distributionen är klar kan du använda den för förutsägelser via distributionsslutpunkten. Du kan också testa den i studion på sidan Testdistribution.

Den här processen står i kontrast till LUIS, där program-ID:t var kopplat till allt, och du distribuerade en version av programmet på mellanlagrings- eller produktionsplatserna.

Detta påverkar de DevOps-processer som du använder.

Har CLU containerstöd?

Nej, du kan inte exportera CLU till containrar.

Hur kommer mina LUIS-program att namnges i CLU efter migreringen?

Specialtecken i LUIS-programnamnet tas bort. Om namnlängden är större än 50 tecken tas de extra tecknen bort. Om namnet efter att specialtecken har tagits bort är tomt (till exempel om LUIS-programnamnet var @@), kommer det nya namnet att vara namnlöst. Om det redan finns ett projekt för att förstå konversationsspråk med samma namn läggs det migrerade LUIS-programmet till för den första dubbletten och ökas med _1 1 för varje ytterligare dubblett. Om det nya namnets längd är 50 tecken och det måste byta namn tas de sista 1 eller 2 tecknen bort för att kunna sammanfoga talet och fortfarande ligga inom gränsen på 50 tecken.

Migrering från LUIS Q&A

Om du har frågor som inte har besvarats i den här artikeln kan du lämna dina frågor i vår Microsoft Q&A-tråd.

Nästa steg