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 förståelse för konversationsspråk för att dra nytta av fortsatt produktsupport och flerspråkiga funktioner.
Ett LUIS-appschema (Language Understanding) 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:
- Skapa en ny version
- Redigera LUIS-appschemat. Detta inkluderar:
- Avsikter med exempelyttranden
- Entiteter
- Funktioner
- Träna, testa och publicera
- Testa för aktiv inlärning genom att granska yttranden som skickas till förutsägelseslutpunkten
- Samla in data från slutpunktsfrågor
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, flyg, 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.
Dricks
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.
Låt oss 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.
Kommentar
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 genom 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 uppnå en avsikt.
När du avgör vilka entiteter som ska användas i din app ska 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 .
Dricks
LUIS erbjuder fördefinierade entiteter för vanliga konversationsanvändarscenarier. Överväg att använda fördefinierade entiteter som utgångspunkt för programutvecklingen.
Avsikter kontra entiteter
En avsikt är det önskade resultatet av hela yttrandet medan entiteter är delar av data som extraheras från yttrandet. Avsikterna är vanligtvis knutna till åtgärder som klientprogrammet ska 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 bör mappas till klientprogrammets åtgärder och behöver inte begränsas till avsikter.
Int-ent-ties är konceptet att åtgärder (vanligtvis uppfattas som avsikter) också kan samlas in 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 ditt schema
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 din planering är, desto bättre blir din app.
- Forskningsinriktade anvä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
- 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. Det gör att du kan se effekten på förutsägelsenoggrannheten. Att lägga till ett enskilt yttrande kanske inte har någon synlig inverkan på poängen.
Använd inte LUIS som träningsplattform
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 bör finnas i en ny version som klonas 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 kommer också att göra det svårt att ta bort tvetydighet 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.