Mönster i LUIS-appar
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.
Mönster är utformade för att förbättra noggrannheten när flera yttranden är mycket lika. Med ett mönster kan du få mer noggrannhet för en avsikt utan att ge flera fler yttranden.
Mönster löser låg avsiktsförtroende
Överväg en personalapp som rapporterar i organisationsschemat i förhållande till en anställd. Med tanke på en anställds namn och relation returnerar LUIS de anställda som är inblandade. Tänk dig en anställd, Tom, med en chef som heter Alice, och ett team med underordnade som heter: Michael, Rebecca och Carl.
Yttranden | Avsikt förutsagd | Avsiktspoäng |
---|---|---|
Vem är Toms underordnad? | GetOrgChart | 0,30 |
Vem är Toms underordnad? | GetOrgChart | 0,30 |
Om en app har mellan 10 och 20 yttranden med olika längd på mening, olika ordordning och till och med olika ord (synonymer med "underordnad", "hantera", "rapport"), kan LUIS returnera en låg konfidenspoäng. Skapa ett mönster som hjälper LUIS att förstå vikten av ordordningen.
Mönster löser följande situationer:
- Avsiktspoängen är låg
- Den korrekta avsikten är inte den högsta poängen utan för nära topppoängen.
Mönster är inte en avsiktsgaranti
Mönster använder en blandning av förutsägelsetekniker. Att ange en avsikt för ett mallyttrande i ett mönster är inte en garanti för avsiktsförutsägelse, men det är en stark signal.
Mönster förbättrar inte identifiering av entiteter för maskininlärning
Ett mönster är främst avsett att hjälpa till att förutsäga avsikter och roller. Entiteten "pattern.any" används för att extrahera fristående entiteter. Mönster använder entiteter, men ett mönster hjälper inte till att identifiera en maskininlärningsentitet.
Förvänta dig inte att se förbättrad entitetsförutsägelse om du döljer flera yttranden i ett enda mönster. För att enkla entiteter ska kunna användas av din app måste du lägga till yttranden eller använda listentiteter.
Mönster använder entitetsroller
Om två eller flera entiteter i ett mönster är sammanhangsberoende använder mönster entitetsroller för att extrahera kontextuell information om entiteter.
Förutsägelsepoäng med och utan mönster
Med tillräckligt många exempelyttranden kan LUIS öka förutsägelseförtroendet utan mönster. Mönster ökar konfidenspoängen utan att behöva ange så många yttranden.
Mönstermatchning
Ett mönster matchas genom att identifiera entiteterna i mönstret först och sedan verifiera resten av orden och ordordningen i mönstret. Entiteter krävs i mönstret för att ett mönster ska matcha. Mönstret tillämpas på tokennivå, inte på teckennivå.
Entiteten Pattern.any
Med entiteten pattern.any kan du söka efter friformsdata där formuleringen i entiteten gör det svårt att fastställa var entiteten slutar baserat på resten av yttrandet.
Tänk dig till exempel en personalapp som hjälper anställda att hitta företagsdokument. Den här appen kan behöva förstå följande exempelyttranden.
- "Var är HRF-123456?"
- "Vem har skrivit HRF-123234?"
- "Publiceras HRF-456098 på franska?"
Varje dokument har dock både ett formaterat namn (används i ovanstående lista) och ett läsbart namn för människor, till exempel Begäran om flytt från anställd som är ny till företaget 2018 version 5.
Yttranden med det läsbara namnet kan se ut så här:
- "Var är Begäran om omlokalisering från anställd ny till företaget 2018 version 5?"
- "Vem har skrivit "Begär omlokalisering från ny anställd till företaget 2018 version 5"?
- Är Begäran om flytt från anställd ny till företaget 2018 version 5 publiceras på franska?"
Yttrandena innehåller ord som kan förvirra LUIS om var entiteten slutar. Med en Pattern.any-entitet i ett mönster kan du ange början och slutet av dokumentnamnet, så LUIS extraherar formulärnamnet korrekt. Till exempel följande mallyttranden:
- Var finns {FormName}[?]
- Vem skapade {FormName}[?]
- Är {FormName} publicerad på franska[?]
Metodtips för mönster:
Lägg till mönster i senare iterationer
Du bör förstå hur appen beter sig innan du lägger till mönster eftersom mönster är mer viktade än exempelyttranden och kommer att förvränga konfidensen.
När du förstår hur din app beter sig lägger du till mönster när de gäller för din app. Du behöver inte lägga till dem varje gång du itererar appens design.
Det skadar inte att lägga till dem i början av modelldesignen, men det är lättare att se hur varje mönster ändrar modellen efter att modellen har testats med yttranden.
Lägg inte till många mönster
Lägg inte till för många mönster. LUIS är tänkt att lära sig snabbt med färre exempel. Överbelasta inte systemet i onödan.
Funktioner
I maskininlärning är en funktion ett särskiljande drag eller attribut för data som systemet observerar och lär sig igenom.
Maskininlärningsfunktioner ger LUIS viktiga tips för var du ska leta efter saker som särskiljer ett koncept. Det är tips som LUIS kan använda, men de är inte hårda regler. LUIS använder dessa tips med etiketterna för att hitta data.
En funktion kan beskrivas som en funktion, till exempel f(x) = y
. I exempelyttrandet anger funktionen var du ska leta efter det särskiljande egenskaperna. Använd den här informationen för att skapa schemat.
Typer av funktioner
Funktioner är en nödvändig del av schemadesignen. LUIS stöder både fraslistor och modeller som funktioner:
- Funktion för fraslista
- Modell (avsikt eller entitet) som en funktion
Hitta funktioner i dina exempelyttranden
Eftersom LUIS är ett språkbaserat program är funktionerna textbaserade. Välj text som anger det drag som du vill särskilja. För LUIS är den minsta enheten token. För det engelska språket är en token ett sammanhängande intervall med bokstäver och siffror som inte har några blanksteg eller skiljetecken.
Eftersom blanksteg och skiljetecken inte är token fokuserar du på de text ledtrådar som du kan använda som funktioner. Kom ihåg att inkludera varianter av ord, till exempel:
- Pluralformer
- Verb tempus
- Abbreviations
- Stavning och felstavningar
Kontrollera om texten behöver följande eftersom den särskiljer ett drag:
- Matcha ett exakt ord eller en fras: Överväg att lägga till en entitet för reguljära uttryck eller en listentitet som en funktion i entiteten eller avsikten.
- Matcha ett välkänt begrepp som datum, tider eller personers namn: Använd en fördefinierad entitet som en funktion för entiteten eller avsikten.
- Lär dig nya exempel över tid: Använd en fraslista med några exempel på begreppet som en funktion för entiteten eller avsikten.
Skapa en fraslista för ett koncept
En fraslista är en lista med ord eller fraser som beskriver ett begrepp. En fraslista tillämpas som en skiftlägeskänslig matchning på tokennivå.
När du lägger till en fraslista kan du ställa in funktionen på global. En global funktion gäller för hela appen.
När du ska använda en fraslista
Använd en fraslista när du behöver luis-appen för att generalisera och identifiera nya objekt för konceptet. Fraslistor liknar domänspecifik vokabulär. De förbättrar kvaliteten på förståelsen för avsikter och entiteter.
Använda en fraslista
Med en fraslista tar LUIS hänsyn till kontext och generaliserar för att identifiera objekt som liknar, men inte är, en exakt textmatchning. Följ dessa steg för att använda en fraslista:
- Börja med en maskininlärningsentitet:
- Lägg till exempelyttranden.
- Etikett med en maskininlärningsentitet.
- Lägg till en fraslista:
- Lägg till ord med liknande innebörd. Lägg inte till alla möjliga ord eller fraser. Lägg i stället till några ord eller fraser i taget. Träna om och publicera sedan.
- Granska och lägg till föreslagna ord.
Ett typiskt scenario för en fraslista
Ett typiskt scenario för en fraslista är att öka ord relaterade till en specifik idé.
Medicinska termer är ett bra exempel på ord som kan behöva en fraslista för att öka deras betydelse. Dessa termer kan ha specifika fysiska, kemiska, terapeutiska eller abstrakta betydelser. LUIS vet inte att termerna är viktiga för din ämnesdomän utan en fraslista.
Till exempel för att extrahera de medicinska termerna:
- Skapa exempelyttranden och märka medicinska termer i dessa yttranden.
- Skapa en fraslista med exempel på termerna i ämnesdomänen. Den här fraslistan bör innehålla den faktiska termen som du har märkt och andra termer som beskriver samma begrepp.
- Lägg till fraslistan i entiteten eller underdelen som extraherar begreppet som används i fraslistan. Det vanligaste scenariot är en komponent (underordnad) i en maskininlärningsentitet. Om fraslistan ska tillämpas på alla avsikter eller entiteter markerar du fraslistan som en global fraslista. Flaggan enabledForAllModels styr det här modellomfånget i API:et.
Tokenmatchningar för en fraslista
En fraslista gäller alltid på tokennivå. I följande tabell visas hur en fraslista med ordet Ann tillämpas på varianter av samma tecken i den ordningen.
Tokenvariant för "Ann" | Fraslista matchar när token hittas |
---|---|
ANN aNN |
Ja – token är Ann |
Ann's | Ja – token är Ann |
Anne | Nej – token är Anne |
En modell som en funktion hjälper en annan modell
Du kan lägga till en modell (avsikt eller entitet) som en funktion i en annan modell (avsikt eller entitet). Genom att lägga till en befintlig avsikt eller en entitet som en funktion lägger du till ett väldefinierat begrepp som har märkta exempel.
När du lägger till en modell som en funktion kan du ange funktionen som:
- Obligatoriska. En nödvändig funktion måste hittas för att modellen ska returneras från förutsägelseslutpunkten.
- Global. En global funktion gäller för hela appen.
När du ska använda en entitet som en funktion i en avsikt
Lägg till en entitet som en funktion i en avsikt när identifieringen av entiteten är betydande för avsikten.
Om avsikten till exempel är att boka en flygresa, till exempel BookFlight , och entiteten är biljettinformation (till exempel antalet platser, ursprung och mål), bör sökning efter entiteten biljettinformation lägga till betydande vikt i förutsägelsen av BookFlight-avsikten.
När du ska använda en entitet som en funktion till en annan entitet
En entitet (A) bör läggas till som en funktion i en annan entitet (B) när identifieringen av entiteten (A) är betydande för förutsägelsen av entitet (B).
Om en entitet för leveransadress till exempel finns i en underdel av gatuadressen lägger det betydande vikt vid förutsägelsen för leveransadressentiteten genom att hitta underdelen gatuadress.
- Leveransadress (maskininlärningsentitet):
- Gatunummer (underdel)
- Gatuadress (underdel)
- Stad (underdel)
- Delstat eller provins (underdel)
- Land/region (underdel)
- Postnummer (underdel)
Kapslade underentiteter med funktioner
En maskininlärningsunderdel anger att ett begrepp finns för den överordnade entiteten. Den överordnade kan vara en annan underdel eller den översta entiteten. Värdet för underdelen fungerar som en funktion för dess överordnade.
En underdel kan ha både en fraslista och en modell (en annan entitet) som en funktion.
När underdelen har en fraslista ökar den begreppets vokabulär men lägger inte till någon information i JSON-svaret för förutsägelsen.
När underdelen har en funktion i en annan entitet innehåller JSON-svaret extraherade data för den andra entiteten.
Nödvändiga funktioner
En nödvändig funktion måste hittas för att modellen ska returneras från förutsägelseslutpunkten. Använd en obligatorisk funktion när du vet att dina inkommande data måste matcha funktionen.
Om yttrandetexten inte matchar den nödvändiga funktionen extraheras den inte.
En obligatorisk funktion använder en icke-maskininlärningsentitet:
- Entitet med reguljärt uttryck
- Lista entitet
- Fördefinierad entitet
Om du är säker på att din modell finns i data anger du funktionen efter behov. En obligatorisk funktion returnerar ingenting om den inte hittas.
Fortsätter med exemplet på leveransadressen:
Leveransadress (maskininlärd entitet)
- Gatunummer (underdel)
- Gatuadress (underdel)
- Gatunamn (underdel)
- Stad (underdel)
- Delstat eller provins (underdel)
- Land/region (underdel)
- Postnummer (underdel)
Nödvändig funktion med hjälp av fördefinierade entiteter
Fördefinierade entiteter som stad, delstat och land/region är vanligtvis en sluten uppsättning listor, vilket innebär att de inte ändras mycket över tid. Dessa entiteter kan ha relevanta rekommenderade funktioner och dessa funktioner kan markeras efter behov. Flaggan isRequired är dock bara relaterad till den entitet som den är tilldelad till och påverkar inte hierarkin. Om den fördefinierade underentitetsfunktionen inte hittas påverkar detta inte identifieringen och återkomsten av den överordnade entiteten.
Som ett exempel på en obligatorisk funktion bör du överväga att identifiera adresser. Du kan överväga att göra ett gatunummer till ett krav. Detta skulle göra det möjligt för en användare att ange "1 Microsoft Way" eller "One Microsoft Way", och båda skulle matcha till siffran "1" för gatunumrets underentitet. Mer information finns i den fördefinierade entitetsartikeln.
Nödvändig funktion med hjälp av listentiteter
En listentitet används som en lista över kanoniska namn tillsammans med deras synonymer. Om yttrandet inte innehåller antingen det kanoniska namnet eller synonymen som en obligatorisk funktion returneras inte entiteten som en del av förutsägelseslutpunkten.
Anta att ditt företag endast levereras till en begränsad uppsättning länder/regioner. Du kan skapa en listentitet som innehåller flera sätt för kunden att referera till landet/regionen. Om LUIS inte hittar någon exakt matchning i texten i yttrandet returneras inte entiteten (som har den nödvändiga funktionen i listentiteten) i förutsägelsen.
Kanoniskt namn** | Synonymer |
---|---|
USA | U.S. USA OSS USA 0 |
Ett klientprogram, till exempel en chattrobot, kan ställa en uppföljningsfråga för att hjälpa till. Detta hjälper kunden att förstå att valet av land/region är begränsat och obligatoriskt.
Nödvändig funktion med hjälp av reguljära uttrycksentiteter
En entitet med reguljära uttryck som används som en obligatorisk funktion ger funktioner för rtF-textmatchning.
I leveransadressexemplet kan du skapa ett reguljärt uttryck som samlar in syntaxregler för postnummer för land/region.
Globala funktioner
Den vanligaste användningen är att tillämpa en funktion på en specifik modell, men du kan konfigurera funktionen som en global funktion för att tillämpa den på hela programmet.
Den vanligaste användningen för en global funktion är att lägga till ytterligare ett ordförråd i appen. Om dina kunder till exempel använder ett primärt språk, men förväntar sig att kunna använda ett annat språk inom samma yttrande, kan du lägga till en funktion som innehåller ord från det sekundära språket.
Eftersom användaren förväntar sig att använda det sekundära språket i en avsikt eller en entitet lägger du till ord från det sekundära språket i fraslistan. Konfigurera fraslistan som en global funktion.
Kombinera funktioner för extra förmån
Du kan använda mer än en funktion för att beskriva ett drag eller koncept. En vanlig parkoppling är att använda:
- En funktion för fraslista: Du kan använda flera fraslistor som funktioner i samma modell.
- En modell som en funktion: en fördefinierad entitet, entitet med reguljära uttryck och en listentitet.
Exempel: entitetsfunktioner för biljettbokning för en reseapp
Som ett grundläggande exempel bör du överväga en app för att boka en flygning med avsikten flygbokning och en biljettbokningsentitet. Entiteten biljettbokning samlar in informationen för att boka en flygbiljett i ett bokningssystem.
Maskininlärningsentiteten för biljettboken har två underentiteter för att samla in ursprung och mål. Funktionerna måste läggas till i varje underdel, inte den översta entiteten.
Entiteten biljettbokning är en maskininlärningsentitet med underentiteter som Origin och Destination. Båda dessa underentiteter anger en geografisk plats. För att extrahera platserna och skilja mellan ursprung och mål bör varje underdel ha funktioner.
Typ | Underordnad ursprungsdel | Målunderdel |
---|---|---|
Modell som en funktion | geographyV2 fördefinierad entitet | geographyV2 fördefinierad entitet |
Fraslista | Ursprungsord : börja vid, börja från, lämna | Målord : till, anländer, landar på, går, går, stannar, rubrik |
Fraslista | Flygplatskoder – samma lista för både ursprung och mål | Flygplatskoder – samma lista för både ursprung och mål |
Fraslista | Flygplatsnamn – samma lista för både ursprung och mål | Flygplatskoder – samma lista för både ursprung och mål |
Om du förväntar dig att personer använder flygplatskoder och flygplatsnamn bör LUIS ha fraslistor som använder båda typerna av fraser. Flygplatskoder kan vara vanligare med text som anges i en chattrobot, medan flygplatsnamn kan vara vanligare med talad konversation, till exempel en talaktiverad chattrobot.
Matchande information om funktionerna returneras endast för modeller, inte för fraslistor eftersom endast modeller returneras i förutsägelse-JSON.
Etikettering av biljettbokningar i avsikten
När du har skapat entiteten maskininlärning måste du lägga till exempelyttranden i en avsikt och märka den överordnade entiteten och alla underentiteter.
För biljettbokningsexemplet anger du exempelyttranden i avsikten med TicketBooking-entiteten och eventuella underentiteter i texten.
Exempel: pizzabeställningsapp
För ett andra exempel bör du överväga en app för en pizzarestaurang, som tar emot pizzabeställningar, inklusive information om vilken typ av pizza någon beställer. Varje detalj i pizzan ska extraheras, om möjligt, för att slutföra beställningsbearbetningen.
Maskininlärningsentiteten i det här exemplet är mer komplex med kapslade underentiteter, fraslistor, fördefinierade entiteter och anpassade entiteter.
I det här exemplet används funktioner på undernivå och underordnad underdelsnivå. Vilken nivå får vilken typ av fraslista eller modell som funktion är en viktig del av din entitetsdesign.
Underentiteter kan ha många fraslistor som funktioner som hjälper dig att identifiera entiteten, men varje underdel har bara en modell som funktion. I den här pizzaappen är dessa modeller främst listor.
De korrekt märkta exempelyttrandena visas på ett sätt som visar hur entiteterna är kapslade.