Tutorial 3:Tutorial: 3. Hinzufügen einer Entität vom Typ „Regulärer Ausdruck“Add regular expression entity

In diesem Tutorial erstellen Sie eine App, die veranschaulicht, wie Sie mithilfe der Entität Regulärer Ausdruck einheitlich formatierte Daten aus einer Äußerung extrahieren.In this tutorial, create an app that demonstrates how to extract consistently formatted data from an utterance using the Regular Expression entity.

  • Grundlegendes zu Entitäten vom Typ „Regulärer Ausdruck“Understand regular expression entities
  • Verwenden einer LUIS-App für eine Personaldomäne mit FindForm-AbsichtUse a LUIS app for a Human Resources (HR) domain with FindForm intent
  • Hinzufügen einer Entität vom Typ „Regulärer Ausdruck“ zum Extrahieren der Formularnummer aus einer ÄußerungAdd regular expression entity to extract Form number from utterance
  • Trainieren und Veröffentlichen der AppTrain, and publish app
  • Abfragen des App-Endpunkts zum Anzeigen der LUIS-JSON-AntwortQuery endpoint of app to see LUIS JSON response

Für diesen Artikel können Sie das kostenlose LUIS-Konto für die Erstellung Ihrer LUIS-Anwendung verwenden.For this article, you can use the free LUIS account in order to author your LUIS application.

VoraussetzungenBefore you begin

Falls Sie nicht über die Personal-App aus dem Tutorial zu vordefinierten Entitäten verfügen, importieren Sie den JSON-Code in eine neue App (auf der LUIS-Website über das GitHub-Repository LUIS-Samples).If you do not have the Human Resources app from the prebuilt entities tutorial, import the JSON into a new app in the LUIS website, from the LUIS-Samples Github repository.

Wenn Sie die ursprüngliche Personal-App behalten möchten, klonen Sie die Version auf der Seite Einstellungen, und nennen Sie sie regex.If you want to keep the original Human Resources app, clone the version on the Settings page, and name it regex. Durch Klonen können Sie ohne Auswirkungen auf die ursprüngliche Version mit verschiedenen Features von LUIS experimentieren.Cloning is a great way to play with various LUIS features without affecting the original version.

Zweck der Entität vom Typ „Regulärer Ausdruck“Purpose of the regular expression entity

Eine Entität dient dazu, wichtige Daten aus der Äußerung zu extrahieren.The purpose of an entity is to get important data contained in the utterance. In der App wird die Entität vom Typ „Regulärer Ausdruck“ verwendet, um formatierte Personalformularnummern aus einer Äußerung zu extrahieren.The app's use of the regular expression entity is to pull out formatted Human Resources (HR) Form numbers from an utterance. Dabei wird kein Machine Learning verwendet.It is not machine-learned.

Hier sehen Sie einige einfache Beispieläußerungen:Simple example utterances include:

Where is HRF-123456?
Who authored HRF-123234?
HRF-456098 is published in French?

Hier sehen Sie einige abgekürzte oder umgangssprachliche Versionen von Äußerungen:Abbreviated or slang versions of utterances include:

HRF-456098
HRF-456098 date?
HRF-456098 title?

Die Entität vom Typ „Regulärer Ausdruck“ für den Abgleich der Formularnummer lautet hrf-[0-9]{6}.The regular expression entity to match the form number is hrf-[0-9]{6}. Dieser reguläre Ausdruck gleicht die Literalzeichen hrf - ab, ignoriert aber die Groß-/Kleinschreibung sowie kulturelle Varianten.This regular expression matches the literal characters hrf - but ignores case and culture variants. Außerdem werden genau sechs Ziffern (jeweils von 0 bis 9) abgeglichen.It matches digits 0-9, for 6 digits exactly.

„HRF“ steht für „Human Resources Form“ (Personalformular).HRF stands for human resources form.

Tokenisierung mit BindestrichenTokenization with hyphens

LUIS tokenisiert die Äußerung, wenn diese einer Absicht hinzugefügt wird.LUIS tokenizes the utterance when the utterance is added to an intent. Bei der Tokenisierung für diese Äußerungen werden vor und nach dem Bindestrich Leerzeichen eingefügt: Where is HRF - 123456?. Der reguläre Ausdruck wird auf die Rohform der Äußerung (vor der Tokenisierung) angewendet.The tokenization for these utterances adds spaces before and after the hyphen, Where is HRF - 123456? The regular expression is applied to the utterance in its raw form, before it is tokenized. Aufgrund der Anwendung auf die Rohform muss der reguläre Ausdruck keine Wortgrenzen berücksichtigen.Because it is applied to the raw form, the regular expression doesn't have to deal with word boundaries.

Hinzufügen der Absicht „FindForm“Add FindForm intent

  1. Vergewissern Sie sich, dass sich Ihre Personal-App im LUIS-Abschnitt Build befindet.Make sure your Human Resources app is in the Build section of LUIS. Zu diesem Abschnitt gelangen Sie, indem Sie rechts oben auf der Menüleiste Build auswählen.You can change to this section by selecting Build on the top, right menu bar.

  2. Wählen Sie Create new intent (Neue Absicht erstellen) aus.Select Create new intent.

  3. Geben Sie im Popupdialogfeld die Zeichenfolge FindForm ein, und klicken Sie anschließend auf Fertig.Enter FindForm in the pop-up dialog box then select Done.

    Screenshot: Dialogfeld zum Erstellen einer neuen Absicht mit eingegebenem Suchbegriff

  4. Fügen Sie der Absicht Beispieläußerungen hinzu.Add example utterances to the intent.

    BeispieläußerungenExample utterances
    What is the URL for hrf-123456? (Wie lautet die URL für hrf-123456?)What is the URL for hrf-123456?
    Where is hrf-345678? (Wo ist hrf-345678?)Where is hrf-345678?
    When was hrf-456098 updated? (Wann wurde hrf-456098 aktualisiert?)When was hrf-456098 updated?
    Did John Smith update hrf-234639 last week? (Hat John Smith hrf-234639 letzte Woche aktualisiert?)Did John Smith update hrf-234639 last week?
    How many version of hrf-345123 are there? (Wie viele-Versionen von hrf-345123 gibt es?)How many version of hrf-345123 are there?
    Who needs to authorize form hrf-123456? (Wer muss das Formular hrf-123456 autorisieren?)Who needs to authorize form hrf-123456?
    How many people need to sign off on hrf-345678? (Wie viele Personen müssen hrf-345678 genehmigen?)How many people need to sign off on hrf-345678?
    hrf-234123 date? (hrf-234123 Datum?)hrf-234123 date?
    author of hrf-546234? (Ersteller von hrf-546234?)author of hrf-546234?
    title of hrf-456234? (Titel von hrf-456234?)title of hrf-456234?

    Screenshot: Seite „Intents“ (Absichten) mit hervorgehobenen neuen Äußerungen Screenshot of Intent page with new utterances highlighted

    Die Anwendung verfügt über die vorgefertigte Zahlenentität aus dem vorherigen Tutorial, sodass jede Formularnummer über ein Tag verfügt.The application has prebuilt number entity added from the previous tutorial, so each form number is tagged. Unter Umständen reicht das für Ihre Clientanwendung bereits aus, die Nummer ist jedoch nicht mit der Art der Nummer gekennzeichnet.This may be enough for your client application but the number won't be labeled with the type of number. Durch die Erstellung einer neuen Entität mit einem geeigneten Namen kann die Clientanwendung die Entität entsprechend verarbeiten, wenn sie von LUIS zurückgegeben wird.Creating a new entity with an appropriate name allows the client application to process the entity appropriately when it is returned from LUIS.

Erstellen einer Entität vom Typ „Regulärer Ausdruck“ namens „HRF-number“Create an HRF-number regular expression entity

In den folgenden Schritten erstellen Sie eine Entität vom Typ „Regulärer Ausdruck“, um LUIS mit dem Format von „HRF-number“ vertraut zu machen:Create a regular expression entity to tell LUIS what an HRF-number format is in the following steps:

  1. Klicken Sie im linken Bereich auf Entitäten.Select Entities in the left panel.

  2. Klicken Sie auf der Seite „Entitäten“ auf die Schaltfläche Create new entity (Neue Entität erstellen).Select Create new entity button on the Entities Page.

  3. Geben Sie im daraufhin angezeigten Popupdialogfeld HRF-number als Name der neuen Entität, RegEx als Entitätstyp und hrf-[0-9]{6} als regulären Ausdruck ein, und klicken Sie anschließend auf Fertig.In the pop-up dialog, enter the new entity name HRF-number, select RegEx as the entity type, enter hrf-[0-9]{6} as the Regex, and then select Done.

    Screenshot: Popupdialogfeld zum Festlegen der Eigenschaften für die neue Entität

  4. Klicken Sie auf Intents (Absichten) und dann auf die Absicht FindForm, um den gekennzeichneten regulären Ausdruck in den Äußerungen zu sehen.Select Intents, then FindForm intent to see the regular expression labeled in the utterances.

    Screenshot: Gekennzeichnete Äußerungen mit vorhandener Entität und RegEx-MusterScreenshot of Label utterance with existing entity and regex pattern

    Da die Entität keine ML-Entität ist, wird die Bezeichnung sofort nach der Erstellung auf die Äußerungen angewendet und auf der LUIS-Website angezeigt.Because the entity is not a machine-learned entity, the label is applied to the utterances and displayed in the LUIS website as soon as it is created.

Trainieren der LUIS-AppTrain the LUIS app

  1. Wählen Sie oben rechts auf der LUIS-Website die Schaltfläche Train (Trainieren) aus.In the top right side of the LUIS website, select the Train button.

    Schaltfläche „Train“ (Trainieren)

  2. Das Training ist abgeschlossen, wenn oben auf der Website die grüne Statusleiste angezeigt wird.Training is complete when you see the green status bar at the top of the website confirming success.

    Statusleiste bei abgeschlossenem Training

Veröffentlichen der App zum Abrufen der Endpunkt-URLPublish the app to get the endpoint URL

Damit Sie eine LUIS-Vorhersage in einem Chatbot oder einer anderen Anwendung abrufen können, muss die App veröffentlicht werden.In order to get a LUIS prediction in a chatbot or other application, you need to publish the app.

Vor dem Veröffentlichen oder dem Testen der Endpunkt-URL müssen Sie keinen LUIS-Endpunktschlüssel im Azure-Portal erstellen.You do not have to create a LUIS endpoint key in the Azure portal before you publish or before you test the endpoint URL. Jede LUIS-App verfügt über einen kostenlosen Startschlüssel für die Erstellung.Every LUIS app has a free starter key for authoring. Dieser ermöglicht das unbegrenzte Erstellen und eine geringe Anzahl an Endpunkttreffern.It gives you unlimited authoring and a few endpoint hits.

  1. Klicken Sie im Navigationsbereich oben rechts auf Veröffentlichen.Select Publish in the top right navigation.

  2. Wählen Sie den Produktionsslot und dann die Schaltfläche Publish (Veröffentlichen) aus.Select the Production slot and the Publish button.

  3. Die Veröffentlichung ist abgeschlossen, wenn oben auf der Website die grüne Statusleiste angezeigt wird.Publishing is complete when you see the green status bar at the top of the website confirming success.

Abfragen des Endpunkts mit einer anderen ÄußerungQuery the endpoint with a different utterance

  1. Wählen Sie unten auf der Seite Publish (Veröffentlichen) den Link endpoint (Endpunkt) aus.On the Publish page, select the endpoint link at the bottom of the page. Hierdurch wird ein weiteres Browserfenster mit der Endpunkt-URL in der Adressleiste geöffnet.This action opens another browser window with the endpoint URL in the address bar.

  2. Geben Sie in der Adressleiste am Ende der URL When were HRF-123456 and hrf-234567 published in the last year? ein.Go to the end of the URL in the address and enter When were HRF-123456 and hrf-234567 published in the last year?. Der letzte Parameter der Abfragezeichenfolge lautet q (die Äußerung query (Abfrage)).The last querystring parameter is q, the utterance query. Diese Äußerung entspricht keiner der gekennzeichneten Äußerungen. Sie ist daher ein guter Test und sollte die Absicht FindForm mit den beiden Formularnummern HRF-123456 und hrf-234567 zurückgeben.This utterance is not the same as any of the labeled utterances so it is a good test and should return the FindForm intent with the two form numbers of HRF-123456 and hrf-234567.

    {
      "query": "When were HRF-123456 and hrf-234567 published in the last year?",
      "topScoringIntent": {
        "intent": "FindForm",
        "score": 0.9993477
      },
      "intents": [
        {
          "intent": "FindForm",
          "score": 0.9993477
        },
        {
          "intent": "ApplyForJob",
          "score": 0.0206110049
        },
        {
          "intent": "GetJobInformation",
          "score": 0.00533067342
        },
        {
          "intent": "Utilities.StartOver",
          "score": 0.004215215
        },
        {
          "intent": "Utilities.Help",
          "score": 0.00209096959
        },
        {
          "intent": "None",
          "score": 0.0017655947
        },
        {
          "intent": "Utilities.Stop",
          "score": 0.00109490135
        },
        {
          "intent": "Utilities.Confirm",
          "score": 0.0005704638
        },
        {
          "intent": "Utilities.Cancel",
          "score": 0.000525338168
        }
      ],
      "entities": [
        {
          "entity": "last year",
          "type": "builtin.datetimeV2.daterange",
          "startIndex": 53,
          "endIndex": 61,
          "resolution": {
            "values": [
              {
                "timex": "2017",
                "type": "daterange",
                "start": "2017-01-01",
                "end": "2018-01-01"
              }
            ]
          }
        },
        {
          "entity": "hrf-123456",
          "type": "HRF-number",
          "startIndex": 10,
          "endIndex": 19
        },
        {
          "entity": "hrf-234567",
          "type": "HRF-number",
          "startIndex": 25,
          "endIndex": 34
        },
        {
          "entity": "-123456",
          "type": "builtin.number",
          "startIndex": 13,
          "endIndex": 19,
          "resolution": {
            "value": "-123456"
          }
        },
        {
          "entity": "-234567",
          "type": "builtin.number",
          "startIndex": 28,
          "endIndex": 34,
          "resolution": {
            "value": "-234567"
          }
        }
      ]
    }
    

    Die Nummern in der Äußerung werden zweimal zurückgegeben: einmal als die neue Entität hrf-number und einmal als vorgefertigte Entität number.The numbers in the utterance are returned twice, once as the new entity hrf-number, and once as a prebuilt entity, number. Eine Äußerung kann mehrere Entitäten gleichen Typs besitzen, wie in diesem Beispiel zu sehen.An utterance can have more than one entity, and more than one of the same type of entity, as this example shows. Durch die Verwendung einer Entität vom Typ „Regulärer Ausdruck“ extrahiert LUIS benannte Daten. Dies ist programmatisch hilfreicher für die Clientanwendung, die die JSON-Antwort erhält.By using a regular expression entity, LUIS extracts named data, which is more programmatically helpful to the client application receiving the JSON response.

Was wurde mit dieser LUIS-App erreicht?What has this LUIS app accomplished?

Diese App hat die Absicht ermittelt und die extrahierten Daten zurückgegeben.This app identified the intention and returned the extracted data.

Ihr Chatbot verfügt nun über genügend Informationen, um die primäre Aktion (FindForm) und die Formularnummern in der Suche zu bestimmen.Your chatbot now has enough information to determine the primary action, FindForm, and which form numbers were in the search.

Wo werden diese LUIS-Daten verwendet?Where is this LUIS data used?

Für LUIS ist diese Anforderung abgeschlossen.LUIS is done with this request. Die aufrufende Anwendung (etwa ein Chatbot) kann das topScoringIntent-Ergebnis und die Formularnummern für eine Suche über eine Drittanbieter-API verwenden.The calling application, such as a chatbot, can take the topScoringIntent result and the form numbers and search a third-party API. Diese Schritte werden nicht von LUIS ausgeführt.LUIS doesn't do that work. LUIS bestimmt lediglich die Absicht des Benutzers und extrahiert entsprechende Daten.LUIS only determines what the user's intention is and extracts data about that intention.

Bereinigen von RessourcenClean up resources

Löschen Sie die LUIS-App, falls Sie sie nicht mehr benötigen.When no longer needed, delete the LUIS app. Wählen Sie hierzu im Menü oben links die Option Meine Apps.To do so, select My apps from the top left menu. Klicken Sie in der Liste rechts vom App-Namen auf die Auslassungspunkte (...) und anschließend auf Löschen.Select the ellipsis (...) to the right of the app name in the app list, select Delete. Wählen Sie im Popupdialogfenster Delete App? (App löschen?) OK aus.On the pop-up dialog Delete app?, select Ok.

Nächste SchritteNext steps