Planera LUIS-appen

Viktigt

LUIS dras tillbaka den 1 oktober 2025 och från och med den 1 april 2023 kommer du inte att kunna skapa nya LUIS-resurser. Vi rekommenderar att du migrerar dina LUIS-program till konversationsspråkförståning för att dra nytta av fortsatt produktsupport och flerspråkiga funktioner.

Ett Language Understanding -appschema (LUIS) innehåller avsikter och entiteter som är relevanta för din ämnesdomän. Avsikterna klassificerar användaryttranden och entiteterna extraherar data från användaryttranden. Avsikter och entiteter som är relevanta för din ämnesdomän. Avsikterna klassificerar användaryttranden.

En LUIS-app lär sig och presterar mest effektivt när du iterativt utvecklar den. Här är en typisk iterationscykel:

  1. Skapa en ny version
  2. Redigera LUIS-appschemat. Det här omfattar:
    • Avsikter med exempelyttranden
    • Entiteter
    • Funktioner
  3. Träna, testa och publicera
  4. Testa för aktiv inlärning genom att granska yttranden som skickas till förutsägelseslutpunkten
  5. Samla in data från slutpunktsfrågor

En skärmbild som visar redigeringscykeln

Identifiera din domän

En LUIS-app är centrerad kring en ämnesdomän. Du kan till exempel ha en reseapp som hanterar bokning av biljetter, flygresor, hotell och hyrbilar. En annan app kan tillhandahålla innehåll som rör träning, spårning av träningsinsatser och mål. Genom att identifiera domänen kan du hitta ord eller fraser som är relevanta för din domän.

Tips

LUIS erbjuder fördefinierade domäner för många vanliga scenarier. Kontrollera om du kan använda en fördefinierad domän som startpunkt för din app.

Identifiera dina avsikter

Tänk på de avsikter som är viktiga för programmets uppgift.

Nu ska vi ta exemplet med en reseapp med funktioner för att boka en flygning och kontrollera vädret på användarens mål. Du kan definiera två avsikter, BookFlight och GetWeather för dessa åtgärder.

I en mer komplex app med fler funktioner skulle du förmodligen ha fler avsikter, och du bör definiera dem noggrant så att de inte är för specifika. BookFlight och BookHotel kan till exempel behöva vara separata avsikter, men BookInternationalFlight och BookDomesticFlight kan vara för lika.

Anteckning

Det är bästa praxis att bara använda så många avsikter som du behöver för att utföra funktionerna i din app. Om du definierar för många avsikter blir det svårare för LUIS att klassificera yttranden korrekt. Om du definierar för få kan de vara så allmänna att de överlappar varandra.

Om du inte behöver identifiera den övergripande användar avsikten lägger du till alla exempel på användaryttranden i avsikten None . Om din app växer till att behöva fler avsikter kan du skapa dem senare.

Skapa exempelyttranden för varje avsikt

Börja med att undvika att skapa för många yttranden för varje avsikt. När du har fastställt vilka avsikter du behöver för din app skapar du 15 till 30 exempelyttranden per avsikt. Varje yttrande bör skilja sig från de tidigare angivna yttrandena. Inkludera en mängd olika ordantal, ordval, verb tempus och skiljetecken.

Mer information finns i Förstå bra yttranden för LUIS-appar.

Identifiera dina entiteter

I exempelyttranden identifierar du de entiteter som du vill extrahera. För att boka ett flyg behöver du information som destination, datum, flygbolag, biljettkategori och reseklass. Skapa entiteter för dessa datatyper och markera sedan entiteterna i exempelyttrandena. Entiteter är viktiga för att åstadkomma en avsikt.

När du fastställer vilka entiteter som ska användas i din app bör du komma ihåg att det finns olika typer av entiteter för att samla in relationer mellan objekttyper. Mer information om de olika typerna finns i Entiteter i LUIS .

Tips

LUIS erbjuder fördefinierade entiteter för vanliga konversationsanvändarscenarier. Överväg att använda fördefinierade entiteter som utgångspunkt för din programutveckling.

Avsikter kontra entiteter

En avsikt är det önskade resultatet av hela yttrandet medan entiteter är data som extraheras från yttrandet. Avsikterna är vanligtvis kopplade till åtgärder som klientprogrammet bör vidta. Entiteter är information som behövs för att utföra den här åtgärden. Ur ett programmeringsperspektiv utlöser en avsikt ett metodanrop och entiteterna används som parametrar för det metodanropet.

Det här yttrandet måste ha en avsikt och kan ha entiteter:

"Köp en flygbiljett från Seattle till Kairo"

Det här yttrandet har en enda avsikt:

  • Köpa en flygbiljett

Det här yttrandet kan ha flera entiteter:

  • Platser i Seattle (ursprung) och Kairo (destination)
  • Kvantiteten för en enskild biljett

Lösning i yttranden med mer än en funktion eller avsikt

I många fall, särskilt när de arbetar med naturlig konversation, ger användarna ett yttrande som kan innehålla mer än en funktion eller avsikt. För att åtgärda detta är en allmän strategi att förstå att utdata kan representeras av både avsikter och entiteter. Den här representationen ska kunna mappas till klientprogrammets åtgärder och behöver inte begränsas till avsikter.

Int-ent-ties är konceptet att åtgärder (vanligtvis tolkas som avsikter) också kan avbildas som entiteter i appens utdata och mappas till specifika åtgärder. Negation förlitar sig till exempel ofta på avsikt och entitet för fullständig extrahering. Tänk på följande två yttranden, som liknar ordval, men som har olika resultat:

  • "Schemalägg mitt flyg från Kairo till Seattle"
  • "Avboka mitt flyg från Kairo till Seattle"

I stället för att ha två separata avsikter bör du skapa en enda avsikt med en FlightAction-maskininlärningsentitet. Den här maskininlärningsentiteten bör extrahera information om åtgärden för både schemaläggning och avbokning av begäranden och antingen en ursprungs- eller målplats.

Den här FlightAction-entiteten skulle struktureras med följande maskininlärningsentitet på toppnivå och underenheter:

  • FlightAction
    • Åtgärd
    • Ursprung
    • Mål

För att hjälpa till med extrahering lägger du till funktioner i underentiteterna. Du skulle välja funktioner baserat på den vokabulär som du förväntar dig att se i användaryttranden och de värden som du vill returnera i förutsägelsesvaret.

Bästa praxis

Planera schemat

Innan du börjar skapa appens schema bör du identifiera hur och var du planerar att använda den här appen. Ju mer noggrann och specifik planering du har, desto bättre blir din app.

  • Undersöka målanvändare
  • Definiera personas från slutpunkt till slutpunkt för att representera din app – röst, avatar, problemhantering (proaktiv, reaktiv)
  • Identifiera kanaler för användarinteraktioner (till exempel text eller tal), lämna över till befintliga lösningar eller skapa en ny lösning för den här appen
  • Resa från slutpunkt till slutpunkt för användare
    • Vad förväntar du dig att den här appen ska göra och inte göra? Vilka är prioriteringarna för vad den ska göra?
    • Vilka är de viktigaste användningsfallen?
  • Samla in data – lär dig mer om att samla in och förbereda data

Träna och publicera inte med varje enskilt exempelyttrande

Lägg till 10 eller 15 yttranden innan du tränar och publicerar. På så sätt kan du se effekten på förutsägelsenoggrannheten. Att lägga till ett enda yttrande kanske inte har någon synlig inverkan på poängen.

Använd inte LUIS som utbildningsplattform

LUIS är specifikt för en språkmodells domän. Det är inte tänkt att fungera som en allmän utbildningsplattform för naturligt språk.

Skapa din app iterativt med versioner

Varje redigeringscykel ska finnas i en ny version, klonad från en befintlig version.

Publicera inte för snabbt

Publicering av din app för snabbt och utan korrekt planering kan leda till flera problem, till exempel:

  • Din app fungerar inte i ditt faktiska scenario på en acceptabel prestandanivå.
  • Schemat (avsikter och entiteter) kanske inte är lämpligt, och om du har utvecklat klientapplogik efter schemat kan du behöva göra om det. Detta kan orsaka oväntade fördröjningar och extra kostnader för det projekt som du arbetar med.
  • Yttranden som du lägger till i modellen kan orsaka fördomar mot exempelyttranden som är svåra att felsöka och identifiera. Det gör det också svårt att ta bort tvetydigheter när du har åtagit dig ett visst schema.

Övervaka appens prestanda

Övervaka förutsägelsen med hjälp av en batchtestuppsättning.

Behåll en separat uppsättning yttranden som inte används som exempelyttranden eller slutpunktsyttranden. Fortsätt att förbättra appen för testuppsättningen. Anpassa testuppsättningen så att den återspeglar verkliga användaryttranden. Använd den här testuppsättningen till att utvärdera varje iteration eller version av appen.

Skapa inte fraslistor med alla möjliga värden

Ange några exempel i fraslistorna , men inte varje ord eller fras. LUIS generaliserar och tar hänsyn till kontexten.

Nästa steg

Avsikter