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 maken. We raden u aan uw LUIS-toepassingen te migreren naar gesprekstaalbegrip om te profiteren van continue productondersteuning en meertalige mogelijkheden.
Patronen zijn ontworpen om de nauwkeurigheid te verbeteren wanneer meerdere uitingen vergelijkbaar zijn. Met een patroon kunt u meer nauwkeurigheid krijgen voor een intentie zonder dat u meer uitingen hoeft te leveren.
Patronen lossen betrouwbaarheid van lage intentie op
Overweeg een Human Resources-app die rapporteert over het organigram ten opzichte van een werknemer. Op basis van de naam en relatie van een werknemer retourneert LUIS de betrokken werknemers. Overweeg een werknemer, Tom, met een manager genaamd Alice, en een team van ondergeschikten met de naam Michael, Rebecca en Carl.
Uitingen | Voorspelde intentie | 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 uitingen heeft met verschillende lengten van zinnen, verschillende woordvolgorde en zelfs verschillende woorden (synoniemen van 'ondergeschikt', 'beheren', 'rapport'),kan LUIS een lage betrouwbaarheidsscore retourneren. Maak een patroon om LUIS inzicht te geven in het belang van de woordvolgorde.
Patronen lossen de volgende situaties op:
- De intentiescore is laag
- De juiste intentie is niet de hoogste score, maar te dicht bij de topscore.
Patronen vormen geen garantie voor intenties
Patronen gebruiken een combinatie van voorspellingstechnieken. Het instellen van een intentie voor een sjabloonuiting in een patroon is geen garantie voor de voorspelling van de intentie, 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 entiteiten te extraheren. Hoewel patronen entiteiten gebruiken, helpt een patroon niet bij het detecteren van een machine learning-entiteit.
Verwacht niet dat er verbeterde entiteitsvoorspelling wordt weergegeven als u meerdere uitingen samenvouwt in één patroon. Voor eenvoudige entiteiten die door uw app moeten worden gebruikt, moet u uitingen toevoegen of lijstentiteiten gebruiken.
Patronen gebruiken entiteitsrollen
Als twee of meer entiteiten in een patroon contextueel zijn gerelateerd, gebruiken patronen entiteitsrollen om contextuele informatie over entiteiten te extraheren.
Voorspellingsscores met en zonder patronen
Gezien voldoende voorbeelduitingen kan LUIS het vertrouwen van voorspellingen verhogen zonder patronen. Patronen verhogen de betrouwbaarheidsscore zonder zoveel uitingen te hoeven bieden.
Patroonherkenning
Een patroon wordt vergeleken door eerst de entiteiten in het patroon te detecteren en vervolgens de rest van de woorden en woordvolgorde van het patroon te valideren. Entiteiten zijn vereist in het patroon om een patroon te laten overeenkomen. Het patroon wordt toegepast op 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 werknemers naar het bedrijf 2018 versie 5.
Uitingen met de door mensen leesbare naam kunnen er als volgt uitzien:
- "Waar is aanvraagverplaatsing van werknemer nieuw in het bedrijf 2018 versie 5?"
- "Wie heeft "Herlocatie aanvragen van werknemer nieuw in het bedrijf 2018 versie 5"?"
- Wordt aanvraagverplaatsing van nieuwe werknemers naar het bedrijf 2018 versie 5 gepubliceerd in het Frans?'
De utterances bevatten woorden die LUIS kunnen verwarren over waar de entiteit eindigt. Met behulp van een pattern.any-entiteit in een patroon kunt u het begin en einde van de documentnaam opgeven, zodat LUIS de formuliernaam correct extraheert. Bijvoorbeeld de volgende sjabloon-utterances:
- Waar is {FormName}[?]
- Wie heeft {FormName} geschreven[?]
- Is {FormName} gepubliceerd in het Frans[?]
Aanbevolen procedures voor patronen:
Patronen toevoegen in latere iteraties
U moet begrijpen hoe de app zich gedraagt voordat u patronen toevoegt, omdat patronen zwaarder worden gewogen dan voorbeelduitingen en scheefheid zullen vertonen.
Zodra u begrijpt hoe uw app zich gedraagt, voegt u patronen toe wanneer deze van toepassing zijn op uw app. U hoeft ze niet telkens toe te voegen wanneer u het ontwerp van de app herhaald.
Er is geen kwaad om ze toe te voegen aan het begin van uw modelontwerp, maar het is gemakkelijker om te zien hoe elk patroon het model wijzigt 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 door uw systeem worden waargenomen en geleerd.
Machine learning-functies geven LUIS belangrijke aanwijzingen voor het zoeken naar dingen die een concept onderscheiden. Ze zijn hints die LUIS kan gebruiken, maar ze 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 zijn een noodzakelijk onderdeel van uw schemaontwerp. LUIS ondersteunt zowel woordgroepenlijsten als modellen als functies:
- Woordgroepenlijstfunctie
- Model (intentie of entiteit) als een functie
Functies zoeken in uw voorbeelduitingen
Omdat LUIS een taaltoepassing is, zijn de functies gebaseerd op tekst. 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 interpunctie.
Omdat spaties en interpunctie geen tokens zijn, richt u zich op de tekst aanwijzingen die u als functies kunt gebruiken. Vergeet niet om variaties van woorden op te nemen, zoals:
- Meervoudvormen
- Werkwoordvakken
- Abbreviations
- Spelling en spelfouten
Bepaal of de tekst het volgende nodig heeft omdat deze een kenmerk onderscheidt:
- Identiek aan een exact woord of woordgroep: U kunt een entiteit met een reguliere expressie of een lijstentiteit toevoegen als een functie aan de entiteit of intentie.
- Komt overeen met een bekend concept, zoals datums, tijden of namen van personen: Gebruik een vooraf gedefinieerde entiteit als een 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 frasenlijst maken voor een concept
Een woordgroepenlijst is een lijst met woorden of woordgroepen die een concept beschrijven. Een woordgroepenlijst wordt toegepast als een niet-hoofdlettergevoelige overeenkomst op tokenniveau.
Wanneer u een woordgroepenlijst toevoegt, kunt u de functie instellen op globaal. Een globale functie is van toepassing op de hele app.
Wanneer gebruikt u een frasenlijst?
Gebruik een woordgroepenlijst wanneer u uw LUIS-app nodig hebt om nieuwe items voor het concept te generaliseren en te identificeren. Woordgroepenlijsten zijn een soort domeinspecifieke woordenlijst. Ze verbeteren de kwaliteit van begrip voor intenties en entiteiten.
Een woordgroepenlijst gebruiken
Met een frasenlijst beschouwt LUIS context en generaliseert om items te identificeren die vergelijkbaar zijn met, maar niet, een exacte tekstovereenkomst. Volg deze stappen om een woordgroepenlijst te gebruiken:
- Begin met een machine learning-entiteit:
- Voeg voorbeelduitingen toe.
- Labelen met een machine learning-entiteit.
- Een woordgroepenlijst toevoegen:
- Voeg woorden met vergelijkbare betekenis toe. Voeg niet elk mogelijk woord of woordgroep toe. Voeg in plaats daarvan een paar woorden of woordgroepen tegelijk toe. Vervolgens opnieuw trainen en publiceren.
- Bekijk en voeg voorgestelde woorden toe.
Een typisch scenario voor een frasenlijst
Een typisch scenario voor een frasenlijst is het stimuleren van woorden met betrekking tot een specifiek idee.
Medische termen zijn een goed voorbeeld van woorden die mogelijk een frasenlijst nodig hebben om hun betekenis te verhogen. Deze termen kunnen specifieke fysieke, chemische, therapeutische of abstracte betekenissen hebben. LUIS weet niet dat de termen belangrijk zijn voor uw onderwerpdomein zonder een woordgroepenlijst.
Als u bijvoorbeeld de medische termen wilt extraheren:
- Maak voorbeelduitingen en label medische termen binnen deze utterances.
- Maak een frasenlijst met voorbeelden van de termen in het onderwerpdomein. Deze woordgroepenlijst moet de werkelijke term bevatten die u hebt gelabeld en andere termen die hetzelfde concept beschrijven.
- Voeg de woordgroepenlijst toe aan de entiteit of subentiteit waarmee het concept wordt geëxtraheerd dat in de frasenlijst wordt gebruikt. Het meest voorkomende scenario is een onderdeel (onderliggend) van een machine learning-entiteit. Als de woordgroepenlijst moet worden toegepast op alle intenties of entiteiten, markeert u de frasenlijst als een algemene woordgroepenlijst. De vlag enabledForAllModels bepaalt dit modelbereik in de API.
Tokenovereenkomsten voor een frasenlijst
Een frasenlijst is altijd van toepassing op tokenniveau. In de volgende tabel ziet u hoe een woordgroepenlijst met het woord Ann van toepassing is 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 is | Ja- token is Ann |
Anne | Nee - token is Anne |
Een model als een functie helpt een ander model
U kunt een model (intentie of entiteit) als een functie toevoegen aan een ander model (intentie of entiteit). Door een bestaande intentie of entiteit toe te voegen als een functie, voegt u een goed gedefinieerd concept toe met gelabelde voorbeelden.
Wanneer u een model als een functie toevoegt, kunt u de functie instellen als:
- Vereist. Er moet een vereiste functie worden gevonden om het model te retourneren vanaf het voorspellingseindpunt.
- Algemeen. Een globale functie is van toepassing op de hele app.
Wanneer een entiteit als een functie moet worden gebruikt voor een intentie
Voeg een entiteit als een functie toe aan een intentie wanneer de detectie van die entiteit belangrijk is voor de intentie.
Als de intentie bijvoorbeeld is voor het boeken van een vlucht, zoals BookFlight , en de entiteit ticketgegevens is (zoals het aantal seats, oorsprong en bestemming), moet het zoeken naar de entiteit ticketinformatie een aanzienlijk gewicht toevoegen aan de voorspelling van de intentie BookFlight .
Wanneer een entiteit als een functie moet worden gebruikt 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 een verzendadresentiteit bijvoorbeeld is opgenomen in een subentiteit voor straatadressen, wordt het zoeken van de subentiteit van het adres op straat aanzienlijk gewicht toegevoegd aan de voorspelling voor de verzendadresentiteit.
- 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 een functie hebben.
Wanneer de subentiteit een woordgroepenlijst heeft, wordt het vocabulaire van het concept verbeterd, maar worden er geen gegevens 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 functies
Er moet een vereiste functie worden gevonden om het model te kunnen retourneren vanaf 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 er zeker van bent dat uw model wordt gevonden in de gegevens, stelt u de functie in zoals 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 vooraf gedefinieerde entiteiten
Vooraf gebouwde entiteiten, zoals plaats, staat en land/regio, zijn over het algemeen een gesloten set lijsten, wat betekent dat ze na verloop van tijd niet veel veranderen. Deze entiteiten kunnen de relevante aanbevolen functies hebben en deze functies kunnen als vereist worden gemarkeerd. 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 kunt u overwegen adressen te detecteren. U kunt overwegen om een straatnummer een vereiste te maken. Hierdoor kan een gebruiker '1 Microsoft Way' of 'One Microsoft Way' invoeren, en beide worden omgezet in het numerieke getal '1' voor de subentiteit straatnummer. Zie het vooraf samengestelde entiteitsartikelvoor meer informatie.
Vereiste functie met behulp van lijstentiteiten
Een lijstentiteit wordt gebruikt als een lijst met canonieke namen, samen met hun synoniemen. Als de utterance geen canonieke naam of een synoniem bevat, wordt de entiteit niet geretourneerd als onderdeel van het voorspellingseindpunt.
Stel dat uw bedrijf alleen wordt verzonden naar een beperkt aantal landen/regio's. U kunt een lijstentiteit maken die verschillende manieren bevat waarop uw klant kan verwijzen naar het land/de regio. Als LUIS geen exacte overeenkomst vindt in de tekst van de utterance, wordt de entiteit (met de vereiste functie van de lijstentiteit) niet geretourneerd in de voorspelling.
Canonieke naam** | Synoniemen |
---|---|
Verenigde Staten | VS V.S.A ONS Verenigde Staten van Amerika 0 |
Een clienttoepassing, zoals een chatbot, kan een vervolgvraag stellen om u te helpen. Dit helpt de klant te begrijpen dat de selectie van het land of de regio 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 syntaxisregels van de postcodes van het land/de regio worden vastgelegd.
Globale functies
Hoewel het meest voorkomende gebruik is 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 in dezelfde uiting kunnen gebruiken, kunt u een functie met woorden uit de secundaire taal toevoegen.
Omdat de gebruiker verwacht de secundaire taal te gebruiken in elke intentie of entiteit, voegt u woorden uit de secundaire taal toe aan de woordgroepenlijst. Configureer de frasenlijst als een globale functie.
Functies combineren voor extra voordeel
U kunt meer dan één functie gebruiken om een kenmerk of concept te beschrijven. Een veelvoorkomende koppeling is het gebruik van:
- Een functie voor woordgroepenlijst: u kunt meerdere woordgroepenlijsten als functies voor hetzelfde model gebruiken.
- Een model als een functie: vooraf samengestelde entiteit, entiteit met reguliere expressie, lijstentiteit.
Voorbeeld: entiteitsfuncties voor ticketreservering voor een reis-app
Bekijk als basisvoorbeeld een app voor het boeken van een vlucht met een intentie voor vluchtreservering en een entiteit voor ticketreservering. 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.
De entiteit ticketreservering is een machine learning-entiteit met subentiteiten, waaronder Origin en Destination. 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 een functie | vooraf samengestelde entiteit geographyV2 | vooraf samengestelde entiteit geographyV2 |
Woordgroepenlijst | Oorsprongswoorden : beginnen bij, beginnen van, verlaten | Doelwoorden : naar, aankomen, landen op, gaan, gaan, blijven, kop |
Woordgroepenlijst | Luchthavencodes - dezelfde lijst voor zowel oorsprong als bestemming | Luchthavencodes - dezelfde lijst voor zowel oorsprong als bestemming |
Woordgroepenlijst | Luchthavennamen - dezelfde lijst voor zowel oorsprong als bestemming | Luchthavencodes - dezelfde lijst voor zowel oorsprong als bestemming |
Als u verwacht dat mensen luchthavencodes en luchthavennamen gebruiken, moet LUIS woordgroepenlijsten hebben die beide typen woordgroepen gebruiken. Luchthavencodes kunnen vaker voorkomen bij tekst die in een chatbot is ingevoerd, terwijl luchthavennamen vaker voorkomen bij gesproken gesprekken, zoals een chatbot met spraak.
De overeenkomende details van de functies worden alleen geretourneerd voor modellen, niet voor woordgroepenlijsten omdat alleen modellen worden geretourneerd in voorspellings-JSON.
Labelen van ticketboekingen 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 ticketboeking labelt u de voorbeelduitingen in de intentie met de entiteit TicketBooking en eventuele subentiteiten in de tekst.
Voorbeeld: app voor het bestellen van pizza's
Voor een tweede voorbeeld kunt u een app voor een pizzarestaurant overwegen, die pizzaorders 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 gedefinieerde entiteiten en aangepaste entiteiten.
In dit voorbeeld worden functies gebruikt op subentiteitsniveau en onderliggend niveau van subentiteitsniveau. Welk niveau krijgt wat voor soort frasenlijst of model als functie een belangrijk onderdeel is van uw entiteitsontwerp.
Hoewel subentiteiten veel woordgroepenlijsten kunnen hebben als functies waarmee de entiteit kan worden gedetecteerd, heeft elke subentiteit slechts één model als een functie. In deze pizza-app zijn deze modellen voornamelijk lijsten.
De correct gelabelde voorbeelduitingen worden weergegeven op een manier om te laten zien hoe de entiteiten zijn genest.