Share via


Patronen in LUIS-apps

Belangrijk

LUIS wordt op 1 oktober 2025 buiten gebruik gesteld en vanaf 1 april 2023 kunt u geen nieuwe LUIS-resources meer maken. We raden u aan uw LUIS-toepassingen te migreren naar conversatietaalbegrip om te profiteren van continue productondersteuning en meertalige mogelijkheden.

Patronen zijn ontworpen om de nauwkeurigheid te verbeteren wanneer meerdere uitingen sterk op elkaar lijken. Met een patroon kunt u meer nauwkeurigheid krijgen voor een intentie zonder dat u meerdere uitingen hoeft op te geven.

Patronen lossen betrouwbaarheid van lage intentie op

Overweeg een Human Resources-app die rapporteert over het organigram met betrekking tot een werknemer. Op basis van de naam en relatie van een werknemer retourneert LUIS de betrokken werknemers. Denk aan een werknemer, Tom, met een manager met de naam Alice en een team van ondergeschikten met de naam Michael, Rebecca en Carl.

Een schermopname van het gebruik van patronen

Uitingen Intentie voorspeld Intentiescore
Wie is Tom's ondergeschikte? GetOrgChart 0,30
Wie is de ondergeschikte van Tom? GetOrgChart 0,30

Als een app tussen 10 en 20 utterances heeft met verschillende zinslengten, verschillende woordvolgorde en zelfs verschillende woorden (synoniemen van 'ondergeschikt', 'beheren', 'rapporteren'), kan LUIS een lage betrouwbaarheidsscore retourneren. Maak een patroon om LUIS te helpen het belang van de woordvolgorde te begrijpen.

Patronen lossen de volgende situaties op:

  • De intentiescore is laag
  • De juiste intentie is niet de topscore, maar ligt te dicht bij de topscore.

Patronen zijn geen garantie voor intenties

Patronen maken gebruik van een combinatie van voorspellingstechnieken. Het instellen van een intentie voor een sjabloonuiting in een patroon is geen garantie voor de intentievoorspelling, maar het is een sterk signaal.

Patronen verbeteren de detectie van machine learning-entiteiten niet

Een patroon is voornamelijk bedoeld om de voorspelling van intenties en rollen te helpen. De entiteit pattern.any wordt gebruikt om vrije-vormentiteiten te extraheren. Hoewel patronen entiteiten gebruiken, helpt een patroon niet bij het detecteren van een machine learning-entiteit.

Verwacht geen verbeterde entiteitsvoorspelling als u meerdere uitingen samenvout in één patroon. Als u eenvoudige entiteiten wilt gebruiken door uw app, moet u uitingen toevoegen of lijstentiteiten gebruiken.

Patronen gebruiken entiteitsrollen

Als twee of meer entiteiten in een patroon contextueel gerelateerd zijn, gebruiken patronen entiteitsrollen om contextuele informatie over entiteiten te extraheren.

Voorspellingsscores met en zonder patronen

Met voldoende voorbeelduitingen kan LUIS de betrouwbaarheid van voorspellingen vergroten zonder patronen. Patronen verhogen de betrouwbaarheidsscore zonder dat er zoveel utterances hoeven te worden opgegeven.

Patroonherkenning

Een patroon wordt vergeleken door eerst de entiteiten in het patroon te detecteren en vervolgens de rest van de woorden en de woordvolgorde van het patroon te valideren. Entiteiten zijn vereist in het patroon om een patroon te laten overeenkomen. Het patroon wordt toegepast op het tokenniveau, niet op tekenniveau.

Pattern.any-entiteit

Met de entiteit pattern.any kunt u vrije gegevens vinden waarbij het lastig is om uit de tekst van de entiteit het einde van de entiteit te bepalen op basis van de rest van de utterance.

Denk bijvoorbeeld aan een Human Resources-app waarmee werknemers bedrijfsdocumenten kunnen vinden. Deze app moet mogelijk de volgende voorbeelduitingen begrijpen.

  • "Waar is HRF-123456?"
  • "Wie heeft HRF-123234 geschreven?"
  • "Is HRF-456098 gepubliceerd in het Frans?"

Elk document heeft echter zowel een opgemaakte naam (gebruikt in de bovenstaande lijst) als een door mensen leesbare naam, zoals Herlocatie aanvragen van nieuwe werknemer bij het bedrijf 2018 versie 5.

Uitingen met de door mensen leesbare naam kunnen er als volgt uitzien:

  • "Waar is aanvraag voor herplaatsing van werknemer nieuw bij het bedrijf 2018 versie 5?"
  • "Wie heeft 'Aanvraag voor herlocatie van werknemer nieuw bij het bedrijf 2018 versie 5' geschreven?'
  • Is Aanvraag voor herplaatsing van werknemer nieuw bij het bedrijf 2018 versie 5 gepubliceerd in het Frans?'

De utterances bevatten woorden die LUIS verwarrend kunnen maken over waar de entiteit eindigt. Als u een pattern.any-entiteit in een patroon gebruikt, kunt u het begin en einde van de documentnaam opgeven, zodat LUIS de formuliernaam correct extraheert. Bijvoorbeeld de volgende sjabloonuitingen:

  • Waar is {FormName}[?]
  • Wie heeft {FormName} geschreven[?]
  • Is {FormName} gepubliceerd in het Frans[?]

Aanbevolen procedures voor patronen:

Voeg patronen toe in latere iteraties

U moet begrijpen hoe de app zich gedraagt voordat u patronen toevoegt, omdat patronen zwaarder worden gewogen dan voorbeelduitingen en de betrouwbaarheid scheeftrekken.

Zodra u begrijpt hoe uw app zich gedraagt, voegt u patronen toe zoals deze van toepassing zijn op uw app. U hoeft ze niet elke keer toe te voegen wanneer u het ontwerp van de app herhaald.

Het kan geen kwaad om ze aan het begin van het modelontwerp toe te voegen, maar het is gemakkelijker om te zien hoe elk patroon het model verandert nadat het model is getest met uitingen.

Voeg niet veel patronen toe

Voeg niet te veel patronen toe. LUIS is bedoeld om snel te leren met minder voorbeelden. Overbelast het systeem niet onnodig.

Functies

In machine learning is een functie een onderscheidend kenmerk of kenmerk van gegevens die uw systeem observeert en leert.

Machine learning-functies geven LUIS belangrijke aanwijzingen voor waar naar dingen te zoeken die een concept onderscheiden. Het zijn hints die LUIS kan gebruiken, maar het zijn geen harde regels. LUIS gebruikt deze hints met de labels om de gegevens te vinden.

Een functie kan worden beschreven als een functie, zoals f(x) = y. In de voorbeelduiting geeft de functie aan waar u moet zoeken naar de onderscheidende eigenschap. Gebruik deze informatie om uw schema te maken.

Typen functies

Functies vormen een noodzakelijk onderdeel van uw schemaontwerp. LUIS ondersteunt zowel woordgroepenlijsten als modellen als functies:

  • Functie voor woordgroepenlijst
  • Model (intentie of entiteit) als functie

Functies zoeken in uw voorbeelduitingen

Omdat LUIS een op taal gebaseerde toepassing is, zijn de functies op tekst gebaseerd. Kies tekst die de eigenschap aangeeft die u wilt onderscheiden. Voor LUIS is de kleinste eenheid het token. Voor de Engelse taal is een token een aaneengesloten reeks letters en cijfers zonder spaties of leestekens.

Omdat spaties en interpunctie geen tokens zijn, richt u zich op de aanwijzingen voor tekst die u als functies kunt gebruiken. Vergeet niet om variaties van woorden op te nemen, zoals:

  • Meervoudsvormen
  • Werkwoorden
  • Afkortingen
  • Spelling en spelfouten

Bepaal of de tekst het volgende nodig heeft, omdat deze een eigenschap onderscheidt:

  • Een exact woord of exacte woordgroep afstemmen: u kunt een entiteit met een reguliere expressie of een lijstentiteit als een functie toevoegen aan de entiteit of intentie.
  • Een bekend concept, zoals datums, tijden of namen van personen, afstemmen: Gebruik een vooraf gedefinieerde entiteit als functie voor de entiteit of intentie.
  • Meer informatie over nieuwe voorbeelden in de loop van de tijd: Gebruik een woordgroepenlijst met enkele voorbeelden van het concept als een functie voor de entiteit of intentie.

Een woordgroepenlijst maken voor een concept

Een woordgroepenlijst is een lijst met woorden of woordgroepen die een concept beschrijven. Een frasenlijst wordt toegepast als een niet-hoofdlettergevoelige overeenkomst op tokenniveau.

Wanneer u een frasenlijst toevoegt, kunt u de functie instellen op algemeen. Een globale functie is van toepassing op de hele app.

Wanneer u een frasenlijst gebruikt

Gebruik een frasenlijst wanneer u uw LUIS-app nodig hebt om nieuwe items voor het concept te generaliseren en te identificeren. Woordgroepenlijsten zijn net als domeinspecifieke woordenlijst. Ze verbeteren de kwaliteit van het begrip voor intenties en entiteiten.

Een frasenlijst gebruiken

Met een woordgroepenlijst houdt LUIS rekening met context en generaliseert het om items te identificeren die vergelijkbaar zijn met, maar niet, een exacte tekstovereenkomst. Volg deze stappen om een frasenlijst te gebruiken:

  1. Beginnen met een machine learning-entiteit:
  2. Voeg voorbeelduitingen toe.
  3. Labelen met een machine learning-entiteit.
  4. Een frasenlijst toevoegen:
  5. Woorden met een vergelijkbare betekenis toevoegen. Voeg niet alle mogelijke woorden of woordgroepen toe. Voeg in plaats daarvan een paar woorden of woordgroepen tegelijk toe. Vervolgens kunt u opnieuw trainen en publiceren.
  6. Bekijk en voeg voorgestelde woorden toe.

Een typisch scenario voor een frasenlijst

Een typisch scenario voor een frasenlijst is het stimuleren van woorden die betrekking hebben op een specifiek idee.

Medische termen zijn een goed voorbeeld van woorden die mogelijk een frasenlijst nodig hebben om hun betekenis te vergroten. Deze termen kunnen specifieke fysieke, chemische, therapeutische of abstracte betekenissen hebben. LUIS weet niet dat de termen belangrijk zijn voor uw onderwerpdomein zonder een frasenlijst.

Als u bijvoorbeeld de medische termen wilt extraheren:

  1. Maak voorbeelduitingen en label medische termen in die utterances.
  2. Maak een frasenlijst met voorbeelden van de termen in het onderwerpdomein. Deze frasenlijst moet de werkelijke term bevatten die u hebt gelabeld en andere termen die hetzelfde concept beschrijven.
  3. Voeg de woordgroepenlijst toe aan de entiteit of subentiteit waarmee het concept wordt geëxtraheerd dat wordt gebruikt in de frasenlijst. Het meest voorkomende scenario is een onderdeel (onderliggend) van een machine learning-entiteit. Als de frasenlijst moet worden toegepast op alle intenties of entiteiten, markeert u de woordgroepenlijst als een algemene woordgroepenlijst. De vlag enabledForAllModels bepaalt dit modelbereik in de API.

Tokenovereenkomsten voor een woordgroepenlijst

Een frasenlijst is altijd van toepassing op tokenniveau. In de volgende tabel ziet u hoe een woordgroepenlijst met het woord Ann wordt toegepast op variaties van dezelfde tekens in die volgorde.

Tokenvariatie van 'Ann' Woordgroepenlijst komt overeen wanneer het token wordt gevonden
ANN
Ann
Ja - token is Ann
Ann's Ja - token is Ann
Anne Nee - token is Anne

Een model als functie helpt een ander model

U kunt een model (intentie of entiteit) als functie toevoegen aan een ander model (intentie of entiteit). Door een bestaande intentie of entiteit toe te voegen als functie, voegt u een goed gedefinieerd concept toe met gelabelde voorbeelden.

Wanneer u een model als functie toevoegt, kunt u de functie instellen als:

  • Vereist. Er moet een vereiste functie worden gevonden voor het model dat moet worden geretourneerd door het voorspellingseindpunt.
  • Wereldwijd. Een globale functie is van toepassing op de hele app.

Wanneer een entiteit als functie voor een intentie moet worden gebruikt

Voeg een entiteit toe als een functie aan een intentie wanneer de detectie van die entiteit belangrijk is voor de intentie.

Als het bijvoorbeeld de bedoeling is om een vlucht te boeken, zoals BookFlight , en de entiteit ticketinformatie is (zoals het aantal seats, de oorsprong en de bestemming), moet het vinden van de entiteit ticketinformatie een aanzienlijke invloed hebben op de voorspelling van de intentie BookFlight .

Wanneer een entiteit als functie gebruiken voor een andere entiteit

Een entiteit (A) moet worden toegevoegd als een functie aan een andere entiteit (B) wanneer de detectie van die entiteit (A) belangrijk is voor de voorspelling van de entiteit (B).

Als bijvoorbeeld een entiteit verzendadres is opgenomen in een subentiteit straatadres, voegt het vinden van de subentiteit straatadres een aanzienlijk gewicht toe aan de voorspelling voor de entiteit verzendadres.

  • Verzendadres (machine learning-entiteit):
    • Straatnummer (subentiteit)
    • Adres (subentiteit)
    • Plaats (subentiteit)
    • Staat of provincie (subentiteit)
    • Land/regio (subentiteit)
    • Postcode (subentiteit)

Geneste subentiteiten met functies

Een machine learning-subentiteit geeft aan dat er een concept aanwezig is voor de bovenliggende entiteit. Het bovenliggende element kan een andere subentiteit of de bovenste entiteit zijn. De waarde van de subentiteit fungeert als een functie voor het bovenliggende element.

Een subentiteit kan zowel een woordgroepenlijst als een model (een andere entiteit) als functie hebben.

Wanneer de subentiteit een woordgroepenlijst heeft, wordt de woordenschat van het concept versterkt, maar wordt er geen informatie toegevoegd aan het JSON-antwoord van de voorspelling.

Wanneer de subentiteit een functie van een andere entiteit heeft, bevat het JSON-antwoord de geëxtraheerde gegevens van die andere entiteit.

Vereiste onderdelen

Er moet een vereiste functie worden gevonden om het model te kunnen retourneren vanuit het voorspellingseindpunt. Gebruik een vereiste functie wanneer u weet dat uw binnenkomende gegevens overeenkomen met de functie.

Als de uitingstekst niet overeenkomt met de vereiste functie, wordt deze niet geëxtraheerd.

Een vereiste functie maakt gebruik van een niet-machine learning-entiteit:

  • Reguliere-expressie-entiteit
  • Lijstentiteit
  • Vooraf gemaakte entiteit

Als u zeker weet dat uw model wordt gevonden in de gegevens, stelt u de functie in als vereist. Een vereiste functie retourneert niets als deze niet wordt gevonden.

Doorgaan met het voorbeeld van het verzendadres:

Verzendadres (machine learning-entiteit)

  • Straatnummer (subentiteit)
  • Adres (subentiteit)
  • Straatnaam (subentiteit)
  • Plaats (subentiteit)
  • Staat of provincie (subentiteit)
  • Land/regio (subentiteit)
  • Postcode (subentiteit)

Vereiste functie met behulp van vooraf gemaakte entiteiten

Vooraf gedefinieerde entiteiten, zoals plaats, provincie en land/regio, zijn over het algemeen een gesloten set lijsten, wat betekent dat ze in de loop van de tijd niet veel veranderen. Deze entiteiten kunnen de relevante aanbevolen functies hebben en deze functies kunnen worden gemarkeerd als vereist. De vlag isRequired is echter alleen gerelateerd aan de entiteit waaraan deze is toegewezen en heeft geen invloed op de hiërarchie. Als de vooraf gemaakte subentiteitsfunctie niet wordt gevonden, heeft dit geen invloed op de detectie en het retourneren van de bovenliggende entiteit.

Als voorbeeld van een vereiste functie wilt u adressen detecteren. U kunt overwegen om een straatnummer als vereiste te maken. Hierdoor kan een gebruiker '1 Microsoft Way' of 'One Microsoft Way' invoeren, en beide worden omgezet in het cijfer '1' voor de subentiteit van het straatnummer. Zie het artikel over vooraf gemaakte entiteitenvoor meer informatie.

Vereiste functie met behulp van lijstentiteiten

Een lijstentiteit wordt gebruikt als een lijst met canonieke namen, samen met hun synoniemen. Als een vereiste functie, als de uiting niet de canonieke naam of een synoniem bevat, wordt de entiteit niet geretourneerd als onderdeel van het voorspellingseindpunt.

Stel dat uw bedrijf alleen naar een beperkt aantal landen/regio's verzendt. U kunt een lijstentiteit maken met verschillende manieren waarop uw klant naar het land/de regio kan verwijzen. Als LUIS geen exacte overeenkomst vindt in de tekst van de uiting, wordt de entiteit (die de vereiste functie van de lijstentiteit heeft) niet geretourneerd in de voorspelling.

Canonieke naam** Synoniemen
Verenigde Staten U.S.
U.S.A
VS
VS
0

Een clienttoepassing, zoals een chatbot, kan een vervolgvraag stellen om u te helpen. Dit helpt de klant te begrijpen dat de land-/regioselectie beperkt en vereist is.

Vereiste functie met behulp van entiteiten voor reguliere expressies

Een entiteit met reguliere expressies die wordt gebruikt als een vereiste functie, biedt mogelijkheden voor tekstvergelijking met opmaak.

In het voorbeeld van het verzendadres kunt u een reguliere expressie maken waarmee de syntaxisregels van de postcodes van het land/de regio worden vastgelegd.

Algemene functies

Hoewel het meest wordt gebruikt om een functie toe te passen op een specifiek model, kunt u de functie configureren als een globale functie om deze toe te passen op uw hele toepassing.

Het meest voorkomende gebruik voor een globale functie is het toevoegen van een extra woordenlijst aan de app. Als uw klanten bijvoorbeeld een primaire taal gebruiken, maar verwachten dat ze een andere taal binnen dezelfde uiting kunnen gebruiken, kunt u een functie toevoegen die woorden uit de secundaire taal bevat.

Omdat de gebruiker verwacht de secundaire taal te gebruiken in een intentie of entiteit, voegt u woorden uit de secundaire taal toe aan de frasenlijst. Configureer de frasenlijst als een algemene functie.

Functies combineren voor extra voordeel

U kunt meer dan één functie gebruiken om een eigenschap of concept te beschrijven. Een veelvoorkomende koppeling is het gebruik van:

Voorbeeld: entiteitsfuncties voor het boeken van tickets voor een reis-app

Als basisvoorbeeld kunt u een app gebruiken voor het boeken van een vlucht met een vluchtreserveringsintentie en een entiteit ticketboeking. De entiteit ticketreservering legt de informatie vast voor het boeken van een vliegtuigticket in een reserveringssysteem.

De machine learning-entiteit voor ticketbook heeft twee subentiteiten om de oorsprong en bestemming vast te leggen. De functies moeten worden toegevoegd aan elke subentiteit, niet aan de entiteit op het hoogste niveau.

Een schermopname van voorbeeldentiteiten voor een toepassing voor het boeken van een ticket.

De entiteit ticketreservering is een machine learning-entiteit, met subentiteiten, waaronder Oorsprong en Bestemming. Deze subentiteiten geven beide een geografische locatie aan. Om de locaties te extraheren en onderscheid te maken tussen Oorsprong en Bestemming, moet elke subentiteit functies hebben.

Type Subentiteit van oorsprong Doelsubentiteit
Model als functie geographyV2 vooraf samengestelde entiteit geographyV2 vooraf samengestelde entiteit
Frasenlijst Oorsprong woorden : begin bij, begin van, verlaten Bestemmingswoorden : naar, aankomen, landen op, gaan, gaan, blijven, wegwezen
Frasenlijst Luchthavencodes - dezelfde lijst voor zowel de oorsprong als de bestemming Luchthavencodes - dezelfde lijst voor zowel de oorsprong als de bestemming
Frasenlijst Luchthavennamen - dezelfde lijst voor zowel de oorsprong als de bestemming Luchthavencodes - dezelfde lijst voor zowel de oorsprong als de bestemming

Als u verwacht dat mensen luchthavencodes en luchthavennamen gebruiken, moet LUIS woordgroepenlijsten hebben met beide typen woordgroepen. Luchthavencodes kunnen vaker voorkomen bij tekst die wordt ingevoerd in een chatbot, terwijl luchthavennamen vaker voorkomen bij gesproken gesprekken, zoals een chatbot met spraakfunctionaliteit.

De overeenkomende details van de functies worden alleen geretourneerd voor modellen, niet voor woordgroepenlijsten, omdat alleen modellen worden geretourneerd in voorspellings-JSON.

Ticketreserveringslabels in de intentie

Nadat u de machine learning-entiteit hebt gemaakt, moet u voorbeelduitingen toevoegen aan een intentie en de bovenliggende entiteit en alle subentiteiten labelen.

Voor het voorbeeld van een ticketboeking labelt u de voorbeelduitingen in de intentie met de entiteit TicketBooking en eventuele subentiteiten in de tekst.

Een schermopname van het labelen voor een voorbeelduiting.

Voorbeeld: app voor het bestellen van pizza's

Een tweede voorbeeld is een app voor een pizzarestaurant, dat pizzabestellingen ontvangt, inclusief de details van het type pizza dat iemand bestelt. Elk detail van de pizza moet, indien mogelijk, worden geëxtraheerd om de orderverwerking te voltooien.

De machine learning-entiteit in dit voorbeeld is complexer met geneste subentiteiten, woordgroepenlijsten, vooraf gemaakte entiteiten en aangepaste entiteiten.

Een schermopname van een machine learning-entiteit met verschillende subentiteiten.

In dit voorbeeld worden functies op subentiteitsniveau en onderliggend subentiteitsniveau gebruikt. Welk niveau krijgt welk type frasenlijst of welk model als functie wordt gebruikt, is een belangrijk onderdeel van uw entiteitsontwerp.

Hoewel subentiteiten veel woordgroepenlijsten kunnen hebben als functies die helpen bij het detecteren van de entiteit, heeft elke subentiteit slechts één model als functie. In deze pizza-app zijn die modellen voornamelijk lijsten.

Een schermopname van een machine learning-entiteit met veel woordgroepen als functies.

De correct gelabelde voorbeelduitingen worden op een manier weergegeven om te laten zien hoe de entiteiten zijn genest.

Volgende stappen