Entiteiten in LUIS
Een entiteit is een item of een element dat relevant is voor de intentie van de gebruiker. Entiteiten definiëren gegevens die kunnen worden geëxtraheerd uit de utterance en zijn essentieel voor het voltooien van de vereiste actie van een gebruiker. Bijvoorbeeld:
| Uiting | Voorspelde intentie | Geëxtraheerde entiteiten | Uitleg |
|---|---|---|---|
| Hallo hoe gaat het? | Begroeting | - | U kunt niets extraheren. |
| Ik wil een kleine pizza bestellen | orderPizza | 'klein' | De entiteit 'Grootte' wordt geëxtraheerd als 'klein'. |
| Licht in de slaapkamers uitschakelen | Afslag | 'slaapkamers' | De entiteit 'Room' wordt geëxtraheerd als 'slaapkamers'. |
| Saldo controleren in mijn spaarrekening die eindigt op 4406 | checkBalance | "besparingen", "4406" | De entiteit accountType wordt geëxtraheerd als 'savings' en de entiteit accountNumber wordt geëxtraheerd als '4406'. |
| 3 tickets naar New York kopen | buyTickets | "3", "New York" | De entiteit ticketsCount wordt geëxtraheerd als '3' en de entiteit 'Destination' wordt geëxtraheerd als 'New York'. |
Entiteiten zijn optioneel, maar worden aanbevolen. U hoeft geen entiteiten te maken voor elk concept in uw app, alleen voor de volgende dingen:
- De clienttoepassing heeft de gegevens nodig, of
- De entiteit fungeert als hint of signaal naar een andere entiteit of intentie. Ga naar Entiteiten als functies voor meer informatie over entiteiten als Functies.
Entiteitstypen
Als u een entiteit wilt maken, moet u deze een naam en een type geven. Er zijn verschillende typen entiteiten in LUIS.
Lijstentiteit
Een entiteit List vertegenwoordigt een vaste, gesloten set gerelateerde woorden samen met hun synoniemen. U kunt lijstentiteiten gebruiken om meerdere synoniemen of variaties te herkennen en een genormaliseerde uitvoer voor deze entiteiten te extraheren. Gebruik de aanbevelingsoptie om suggesties te zien voor nieuwe woorden op basis van de huidige lijst.
Een entiteit list is niet machine-learned, wat betekent dat LUIS geen aanvullende waarden voor lijstentiteiten detecteert. LUIS markeert een overeenkomst met een item in een lijst als een entiteit in het antwoord.
Overeenkomst in lijstentiteiten is zowel casegevoelig als moet een exacte overeenkomst zijn om te worden geëxtraheerd. Genormaliseerde waarden worden ook gebruikt bij het overeenkomen met de lijstentiteit. Bijvoorbeeld:
| Genormaliseerde waarde | Synoniemen |
|---|---|
| Klein | sm, sml, zeer klein, kleinste |
| Middelgroot | md, mdm, normaal, gemiddeld, midden |
| Groot | lg, lrg, groot |
Zie het naslagartikel over list entities voor meer informatie.
Regex-entiteit
Een entiteit in de reguliere expressie extraheert een entiteit op basis van een patroon voor reguliere expressies dat u op geeft. Het negeert het geval en negeert culturele variant. Reguliere expressie is het beste voor gestructureerde tekst of een vooraf gedefinieerde reeks alfanumerieke waarden die in een bepaalde indeling worden verwacht. Bijvoorbeeld:
| Entiteit | Reguliere expressie | Voorbeeld |
|---|---|---|
| Vluchtnummer | flight [A-Z] {2} [0-9]{4} | flight AS 1234 |
| Creditcardnummer | [0-9]{16} | 5478789865437632 |
Zie het naslagartikel over regex-entiteiten voor meer informatie.
Vooraf gebouwde entiteit
LUIS biedt een set vooraf gebouwde entiteiten voor het herkennen van algemene typen gegevens, zoals naam, datum, nummer en valuta. Het gedrag van vooraf gebouwde entiteiten is vast. De ondersteuning voor vooraf gebouwde entiteiten is afhankelijk van de cultuur van de LUIS-app. Bijvoorbeeld:
| Vooraf gebouwde entiteit | Voorbeeldwaarde |
|---|---|
| PersonName | James, Bill, Tom |
| DatetimeV2 | 2019-05-02, 2 mei 08:00 op 2 mei 2019 |
Zie het naslagartikel over vooraf gebouwde entiteiten voor meer informatie.
Pattern.Any-entiteit
Een patroon. Elke entiteit is een tijdelijke aanduiding met variabele lengte die alleen wordt gebruikt in de sjabloon-utterance van een patroon om te markeren waar de entiteit begint en eindigt. Het volgt een specifieke regel of een specifiek patroon en wordt het beste gebruikt voor zinnen met een vaste lexicale structuur. Bijvoorbeeld:
| Voorbeeld van een utterance | Patroon | Entiteit |
|---|---|---|
| Kan ik een burger a.u.u.a. hebben? | Kan ik een {{{ hebben} [please][?] | burger |
| Kan ik een pizza hebben? | Kan ik een {{{ hebben} [please][?] | Pizza |
| Waar vind ik The Great Gatsby? | Waar vind ik {bookName}? | The Great Gatsby |
Zie het referentieartikel over Pattern.Any-entiteiten voor meer informatie.
Machine learned-entiteit (ML)
De entiteit Machine Learned maakt gebruik van context om entiteiten te extraheren op basis van gelabelde voorbeelden. Het is de voorkeursentiteit voor het bouwen van LUIS-toepassingen. Het is afhankelijk van machine learning algoritmen en vereist dat labels met succes worden aangepast aan uw toepassing. Gebruik een ML om gegevens te identificeren die niet altijd goed zijn opgemaakt, maar dezelfde betekenis hebben.
| Voorbeeld van een utterance | Geëxtraheerde productentiteit |
|---|---|
| Ik wil een boek kopen. | "boek" |
| Kan ik deze schoenen kopen? | "schoenen" |
| Voeg deze shorts toe aan mijn winkelwagen. | 'shorts' |
Meer informatie over door Machine geleerde entiteiten vindt u hier.
Zie het naslagartikel over door machine geleerde entiteiten voor meer informatie.
ML entiteit met structuur
Een ML entiteit kan bestaan uit kleinere subentiteiten, die elk hun eigen eigenschappen kunnen hebben. Adres kan bijvoorbeeld de volgende structuur hebben:
- Adres: 4567 Main Street, NY, 98052, USA
- Gebouwnummer: 4567
- Straatnaam: Hoofdweg
- Staat: NY
- Postcode: 98052
- Land: VS
Effectieve ML bouwen
Volg deze best practices om effectief door machine geleerde entiteiten te bouwen:
Als u een machine learned-entiteit met subentiteiten hebt, moet u ervoor zorgen dat de verschillende orders en varianten van de entiteit en subentiteiten worden weergegeven in de gelabelde utterances. Gelabelde voorbeelduitingen moeten alle geldige formulieren bevatten, en entiteiten bevatten die worden weergegeven en die niet aanwezig zijn en ook de volgorde van de utterance wijzigen.
Vermijd overfitting van de entiteiten naar een zeer vaste set. Overfitting vindt plaats wanneer het model niet goed generaliseert en een veelvoorkomende probleem is in machine learning modellen. Dit impliceert dat de app niet op de juiste manier zou werken met nieuwe typen voorbeelden. Op zijn beurt moet u de gelabelde voorbeeld-utterances variëren, zodat de app verder kan generaliseren dan de beperkte voorbeelden die u op biedt.
Uw labels moeten consistent zijn voor alle intenties. Dit omvat zelfs utterances die u op geeft in de intentie None die deze entiteit bevat. Anders kan het model de reeksen niet effectief bepalen.
Entiteiten als functies
Een andere belangrijke functie van entiteiten is om deze te gebruiken als kenmerken of eigenschappen te onderscheiden voor andere intenties of entiteiten, zodat uw systeem deze observeert en leert.
Entiteiten als functies voor intenties
U kunt entiteiten gebruiken als signaal voor een intentie. De aanwezigheid van een bepaalde entiteit in de utterance kan bijvoorbeeld onderscheiden van welke intentie deze valt.
| Voorbeeld van een utterance | Entiteit | Intentie |
|---|---|---|
| Boek me een strijd met New York. | Plaats | Vlucht boeken |
| Boek de belangrijkste vergaderruimte voor mij. | Room | Ruimte reserveren |
Entiteiten als functie voor entiteiten
U kunt entiteiten ook gebruiken als indicator van de aanwezigheid van andere entiteiten. Een veelvoorkomende voorbeeld hiervan is het gebruik van een vooraf gebouwde entiteit als een functie voor een ML entiteit.
Als u een vluchtboekingssysteem bouwt en uw uiting lijkt op 'Book me a flight from Seattle', dan hebt u Origin City en Destination City als ML entiteiten. Het is een goed idee om de vooraf gebouwde entiteit te GeographyV2 gebruiken als een functie voor beide entiteiten.
Zie het referentieartikel GeographyV2-entiteiten voor meer informatie.
U kunt entiteiten ook gebruiken als vereiste functies voor andere entiteiten. Dit helpt bij het oplossen van geëxtraheerde entiteiten. Als u bijvoorbeeld een toepassing voor het bestellen van pizza's maakt en u een ML-entiteit hebt, kunt u een lijstentiteit maken en deze gebruiken als een vereiste functie Size SizeList voor de Size entiteit. Uw toepassing retourneert de genormaliseerde waarde als de geëxtraheerde entiteit uit de utterance.
Zie functies voor meer informatie en vooraf gebouwde entiteiten voor meer informatie over de oplossing van vooraf gebouwde entiteiten die beschikbaar zijn in uw cultuur.
Status en fouten van entiteitsvoorspelling
In de LUIS-portal ziet u het volgende wanneer de entiteit een andere entiteitsvoorspelling heeft dan de entiteit die u hebt gelabeld voor een voorbeelduiting. Deze andere score is gebaseerd op het huidige getrainde model.
De tekst die de fout veroorzaakt, wordt gemarkeerd in de voorbeelduiting en de voorbeelduitingslijn heeft een foutindicator aan de rechterkant, weergegeven als een rode driehoek.
Probeer een of meer van de volgende opties om entiteitsfouten op te lossen:
- De gemarkeerde tekst is verkeerd gelabeld. Als u dit wilt oplossen, controleert u het label, corrigeert u het en gaat u de app opnieuw trainen.
- Maak een functie voor de entiteit om het concept van de entiteit te identificeren.
- Voeg meer voorbeeld-utterances toe en label deze met de entiteit.
- Bekijk actieve leersuggesties voor alle uitingen die worden ontvangen op het voorspellings-eindpunt, zodat u het concept van de entiteit kunt identificeren.
Volgende stappen
- Meer informatie over goede voorbeeld-utterances.
- Zie Entiteiten toevoegen voor meer informatie over het toevoegen van entiteiten aan uw LUIS-app.
- Meer informatie over LUIS-toepassingslimieten.
- Gebruik een zelfstudie om te leren hoe u gestructureerde gegevens kunt extraheren uit een utterance met behulp van de machine learning-entiteit.