Mönster i LUIS-appar

Viktigt

LUIS dras tillbaka den 1 oktober 2025 och från och med 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 tillhandahålla flera fler yttranden.

Mönster löser låg avsiktsförtroende

Överväg en personalapp som rapporterar om organisationsschemat i förhållande till en anställd. Med tanke på en anställds namn och relation returnerar LUIS de anställda som berörs. Överväg en anställd, Tom, med en chef som heter Alice och ett team med underordnade som heter: Michael, Rebecca och Carl.

En skärmbild som visar användning av mönster

Yttranden Avsikt förutsagd Avsiktspoäng
Vem är Toms underordnade? GetOrgChart 0,30
Vem är tom 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 till "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 rätta avsikten är inte den högsta poängen utan för nära den högsta poä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 entitetsidentifieringen 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 entiteter i fritt format. Även om mönster använder entiteter hjälper inte ett mönster att identifiera en maskininlärningsentitet.

Förvänta dig inte att se förbättrad entitetsförutsägelse om du komprimerar flera yttranden till 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 sammanhangsberoende 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 först identifiera entiteterna inuti mönstret 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 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?"
  • "Who authored 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, till exempel Begära flytt från medarbetare som är ny i företaget 2018 version 5.

Yttranden med det läsbara namnet kan se ut så här:

  • "Var är Begär flytt från anställd ny till företaget 2018 version 5?"
  • "Who authored "Request relocation from employee new to the company 2018 version 5"?
  • Är Begäran om flytt från anställd ny till företaget 2018 version 5 publicerad 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} publicerat 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 skeva konfidens.

När du förstår hur din app beter sig kan du lägga 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 när 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 skiljer ett koncept åt. De ä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 visar funktionen var du ska leta efter det särskiljande egenskapen. 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 vilket drag 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 ta med varianter av ord, till exempel:

  • Pluralformer
  • Verb tempus
  • Förkortningar
  • Stavningar och felstavningar

Kontrollera om texten behöver följande eftersom den särskiljer ett drag:

  • Matcha ett exakt ord eller en exakt 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 namn på personer: 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ägesokänslig matchning på tokennivå.

När du lägger till en fraslista kan du ange funktionen till 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.

Så här använder du 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 om du vill använda en fraslista:

  1. Börja med en maskininlärningsentitet:
  2. Lägg till exempelyttranden.
  3. Etikett med en maskininlärningsentitet.
  4. Lägg till en fraslista:
  5. Lägg till ord med liknande betydelse. 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.
  6. 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 som är relaterade till en viss 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 ämnesdomänen utan en fraslista.

Om du till exempel vill extrahera de medicinska termerna:

  1. Skapa exempelyttranden och märka medicinska termer i dessa yttranden.
  2. Skapa en fraslista med exempel på termerna inom ä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.
  3. 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 som har ordet Ann gäller för varianter av samma tecken i den ordningen.

Tokenvariant av "Ann" Fraslistan 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 koncept som har märkta exempel.

När du lägger till en modell som en funktion kan du ange funktionen som:

  • Krävs. En obligatorisk 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 till en avsikt

Lägg till en entitet som en funktion i en avsikt när identifieringen av entiteten är viktig för avsikten.

Om avsikten till exempel är att boka en flygresa, t.ex . BookFlight , och entiteten är biljettinformation (till exempel antalet platser, ursprung och mål), bör 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 viktig för förutsägelsen av entiteten (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)
    • Ort (underdel)
    • Delstat eller provins (underdel)
    • Land/region (underdel)
    • Postnummer (underdel)

Kapslade underentiteter med funktioner

En underdel av maskininlärning 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 det 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 obligatorisk funktion måste hittas för att modellen ska kunna 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 kommer att hittas 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)
  • Ort (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 returen av den överordnade entiteten.

Ett exempel på en obligatorisk funktion är att du vill 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.

Obligatorisk funktion med hjälp av listentiteter

En listentitet används som en lista över kanoniska namn tillsammans med deras synonymer. Som en obligatorisk funktion returneras inte entiteten som en del av förutsägelseslutpunkten om yttrandet inte innehåller något kanoniskt namn eller en synonym.

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 en 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 USA
STORBRITANNIEN
USA
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.

Obligatorisk funktion med entiteter för reguljära uttryck

En entitet för reguljära uttryck som används som en obligatorisk funktion ger funktioner för RTF-matchning.

I exemplet med leveransadressen kan du skapa ett reguljärt uttryck som samlar in syntaxregler för lands-/regionspostkoderna.

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 alla avsikter eller entiteter 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:

Exempel: entitetsfunktioner för biljettbokning för en reseapp

Som ett grundläggande exempel kan du överväga en app för att boka en flygresa med avsikten flight-reservation och en biljettbokningsentitet. Biljettbokningsentiteten registrerar informationen för att boka en flygplansbiljett i ett bokningssystem.

Maskininlärningsentiteten för biljettboken har två underentiteter för att avbilda ursprung och mål. Funktionerna måste läggas till i varje underdel, inte i entiteten på den översta nivån.

En skärmbild som visar exempelentiteter för ett biljettbokningsprogram.

Biljettbokningsentiteten ä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 ursprung Underdel för mål
Modellera 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, ankommer, landar på, går, går, stannar, på väg
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 talade konversationer, 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 biljettbokning i avsikten

När du har skapat maskininlärningsentiteten måste du lägga till exempelyttranden i en avsikt och märka den överordnade entiteten och alla underentiteter.

I biljettbokningsexemplet etiketterar du exempelyttranden i avsikten med TicketBooking-entiteten och eventuella underentiteter i texten.

En skärmbild som visar etikettering för ett exempelyttrande.

Exempel: pizzabeställningsapp

För ett andra exempel kan 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 specificerar av pizzan bör extraheras, om möjlighet, för att avsluta beställa bearbetar.

Maskininlärningsentiteten i det här exemplet är mer komplex med kapslade underentiteter, fraslistor, fördefinierade entiteter och anpassade entiteter.

En skärmbild som visar en maskininlärningsentitet med olika underentiteter.

I det här exemplet används funktioner på underdelsnivå och underordnad underdelsnivå. Vilken nivå får vilken typ av fraslista eller modell som en funktion är en viktig del av din entitetsdesign.

Även om underentiteter kan ha många fraslistor som funktioner som hjälper till att identifiera entiteten, har varje underdel bara en modell som en funktion. I den här pizzaappen är dessa modeller främst listor.

En skärmbild som visar en maskininlärningsentitet med många fraslistor som funktioner.

De korrekt märkta exempelyttrandena visas på ett sätt som visar hur entiteterna är kapslade.

Nästa steg