Tutorial 3: Extrahieren korrekt formatierter DatenTutorial 3: Extract well-formatted data

In diesem Tutorial ändern Sie die Personal-App so, dass mithilfe der Entität Regulärer Ausdruck einheitlich formatierte Daten aus einer Äußerung extrahiert werden.In this tutorial, modify the Human Resources app to extract consistently-formatted data from an utterance using the Regular Expression entity.

Eine Entität dient dazu, wichtige Daten aus der Äußerung zu extrahieren.The purpose of an entity is to extract important data contained within the utterance. In dieser App wird die Entität vom Typ „Regulärer Ausdruck“ verwendet, um formatierte Personalformularnummern aus einer Äußerung zu extrahieren.This app's use of the regular expression entity is to pull out formatted Human Resources (HR) form numbers from an utterance. Zwar wird die Absicht der Äußerung immer durch Machine Learning bestimmt, doch wird bei diesem spezifischen Entitätstyp kein Machine Learning verwendet.While the utterance's intent is always determined with machine-learning, this specific entity type is not machine-learned.

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

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

Ein regulärer Ausdruck ist eine gute Wahl für diese Art von Daten, wenn Folgendes gilt:A regular expression is a good choice for this type of data when:

  • Die Daten sind korrekt formatiert.the data is well-formatted.

In diesem Tutorial lernen Sie Folgendes:In this tutorial, you learn how to:

  • Verwenden der vorhandenen Tutorial-AppUse existing tutorial app
  • Hinzufügen der Absicht „FindForm“Add FindForm intent
  • Hinzufügen einer Entität vom Typ „Regulärer Ausdruck“Add regular expression entity
  • TrainierenTrain
  • VeröffentlichenPublish
  • Abrufen von Absichten und Entitäten von einem EndpunktGet intents and entities from endpoint

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.

Verwenden der vorhandenen AppUse existing app

Fahren Sie mit der im letzten Tutorial erstellten App mit dem Namen HumanResources fort.Continue with the app created in the last tutorial, named HumanResources.

Wenn Sie nicht über die HumanResources-App aus dem vorhergehenden Tutorial verfügen, befolgen Sie diese Schritte:If you do not have the HumanResources app from the previous tutorial, use the following steps:

  1. Laden Sie die App-JSON-Datei herunter, und speichern Sie sie.Download and save app JSON file.

  2. Importieren Sie den JSON-Code in eine neue App.Import the JSON into a new app.

  3. Klonen Sie die Version von der Registerkarte Versionen aus dem Abschnitt Verwalten, und geben Sie ihr den Namen regex.From the Manage section, on the Versions tab, clone the version, 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. Da der Versionsname als Teil der URL-Route verwendet wird, darf er keine Zeichen enthalten, die in einer URL ungültig sind.Because the version name is used as part of the URL route, the name can't contain any characters that are not valid in a URL.

Absicht „FindForm“FindForm intent

  1. Make sure your Human Resources app is in the Build section of LUIS. 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.

    These few utterances are for demonstration purposes only. A real-world app should have at least 15 utterances of varying length, word order, tense, grammatical correctness, and word count.

Entität vom Typ „RegEx“Regular expression entity

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.HRF stands for human resources form.

LUIS tokenisiert die Äußerung, wenn diese einer Absicht hinzugefügt wird.LUIS tokenizes the utterance when it 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.

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 Wert für RegEx 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 value, and then select Done.

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

  4. Wählen Sie im linken Menü die Option Intents (Absichten) und dann die Absicht FindForm aus, um den gekennzeichneten regulären Ausdruck in den Äußerungen zu sehen.Select Intents from the left menu, 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.

TrainierenTrain

  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öffentlichenPublish

Damit Sie eine LUIS-Vorhersage in einem Chatbot oder einer anderen Clientanwendung empfangen können, muss die App im Endpunkt veröffentlicht werden.In order to receive a LUIS prediction in a chat bot or other client application, you need to publish the app to the endpoint.

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

    Schaltfläche für das Veröffentlichen von LUIS im Endpunkt im Menü oben rechts

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

    Veröffentlichen von LUIS im Endpunkt

  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.

    Veröffentlichen von LUIS im Endpunkt

  4. Wählen Sie den Link Endpunkte in der grünen Statusleiste aus, um zur Seite Schlüssel und Endpunkte zu wechseln.Select the endpoints link in the green status bar to go to the Keys and endpoints page. Die Endpunkt-URLs sind unten aufgeführt.The endpoint URLs are listed at the bottom.

Abrufen von Absicht und Entitäten von einem EndpunktGet intent and entities from endpoint

  1. Wählen Sie auf der Seite Schlüssel und Endpunkte (linkes Menü) im Abschnitt Verwalten (Menü oben rechts) die Endpunkt-URL unten auf der Seite aus.In the Manage section (top right menu), on the Keys and endpoints page (left menu), select the endpoint URL at the bottom of the page. Hierdurch wird eine weitere Browserregisterkarte mit der Endpunkt-URL in der Adressleiste geöffnet.This action opens another browser tab with the endpoint URL in the address bar.

    Die Endpunkt-URL sieht etwa so aus: https://<region>.api.cognitive.microsoft.com/luis/v2.0/apps/<appID>?verbose=true&subscription-key=<YOUR_KEY>&<optional-name-value-pairs>&q=<user-utterance-text>.The endpoint URL looks like https://<region>.api.cognitive.microsoft.com/luis/v2.0/apps/<appID>?verbose=true&subscription-key=<YOUR_KEY>&<optional-name-value-pairs>&q=<user-utterance-text>.

  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.

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

In diesem Tutorial wurden eine neue Absicht erstellt, Beispieläußerungen hinzugefügt und dann eine Entität vom Typ „Regulärer Ausdruck“ erstellt, um korrekt formatierte Daten aus den Äußerungen zu extrahieren.This tutorial created a new intent, added example utterances, then created a regular expression entity to extract well-formatted data from the utterances. Nach dem Trainieren und Veröffentlichen der App hat eine Abfrage des Endpunkts die Absicht identifiziert und die extrahierten Daten zurückgegeben.After training, and publishing the app, a query to the endpoint identified the intention and returned the extracted data.