Tutorial: 6.Tutorial: 6. Hinzufügen einer Entität vom Typ „Einfach“ sowie einer BegriffslisteAdd simple entity and phrase list

In diesem Tutorial erstellen Sie eine App, die veranschaulicht, wie mithilfe der Entität vom Typ Einfach ML-Daten aus einer Äußerung extrahiert werden.In this tutorial, create an app that demonstrates how to extract machine-learned data from an utterance using the Simple entity.

  • Grundlegendes zu einfachen EntitätenUnderstand simple entities
  • Erstellen einer neuen LUIS-App für den PersonalbereichCreate new LUIS app for the Human Resources (HR) domain
  • Hinzufügen einer einfachen Entität zum Extrahieren von Stellen aus der AppAdd simple entity to extract jobs from app
  • 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
  • Hinzufügen einer Begriffsliste, um das Signal von Stellenwörtern zu verstärkenAdd phrase list to boost signal of job words
  • Trainieren und Veröffentlichen der App und erneutes Abfragen des EndpunktsTrain, publish app, and requery endpoint

Für diesen Artikel benötigen Sie ein kostenloses LUIS-Konto für die Erstellung Ihrer LUIS-Anwendung.For this article, you need a free LUIS account in order to author your LUIS application.

VoraussetzungenBefore you begin

Falls Sie nicht über die Personal-App aus dem Tutorial zur hierarchischen Entität verfügen, importieren Sie den JSON-Code in eine neue App (auf der LUIS-Website).If you don't have the Human Resources app from the hierarchical entity tutorial, import the JSON into a new app in the LUIS website. Die zu importierende App befindet sich im GitHub-Repository LUIS-Samples.The app to import is found in 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 simple.If you want to keep the original Human Resources app, clone the version on the Settings page, and name it simple. 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 AppPurpose of the app

Diese App veranschaulicht, wie Sie Daten aus einer Äußerung extrahieren.This app demonstrates how to pull data out of an utterance. Sehen Sie sich die folgenden Äußerungen eines Chatbots an:Consider the following utterances from a chatbot:

ÄußerungUtterance Extrahierbarer StellennameExtractable job name
I want to apply for the new accounting job. (Ich möchte mich für die neue Stelle in der Buchhaltung bewerben.)I want to apply for the new accounting job. accounting (Buchhaltung)accounting
Please submit my resume for the engineering position. (Ich möchte meinen Lebenslauf für die Stelle als Techniker übermitteln.)Please submit my resume for the engineering position. engineering (Techniker)engineering
Fill out application for job 123456 (Bewerbungsbogen für die Stelle 123456 ausfüllen)Fill out application for job 123456 123456123456

In diesem Tutorial wird eine neue Entität hinzugefügt, um den Stellennamen zu extrahieren.This tutorial adds a new entity to extract the job name.

Zweck der Entität vom Typ „Einfach“Purpose of the simple entity

Mithilfe der Entität vom Typ „Einfach“ für diese LUIS-App wird LUIS beigebracht, was ein Stellenname ist und wie er in einer Äußerung ermittelt werden kann.The purpose of the simple entity in this LUIS app is to teach LUIS what a job name is and where it can be found in an utterance. Der Teil der Äußerung, der die Stelle darstellt, kann sich basierend auf der Wortwahl und der Länge der Äußerung bei den einzelnen Äußerungen unterscheiden.The part of the utterance that is the job can change from utterance to utterance based on word choice and utterance length. LUIS benötigt Beispiele für Stellen in jeder Äußerung und für alle Absichten.LUIS needs examples of jobs in any utterance across all intents.

Der Stellenname ist nicht ganz einfach zu ermitteln, da es sich dabei um ein Substantiv, um ein Verb oder um einen Ausdruck mit mehreren Wörtern handeln kann.The job name is difficult to determine because a name can be a noun, verb, or a phrase of several words. Beispiel: For example:

AufträgeJobs
mitzuteilen.engineer
software engineer (Softwareentwickler)software engineer
senior software engineer (leitender Softwareentwickler)senior software engineer
engineering team lead (Leiter des Technikerteams)engineering team lead
air traffic controller (Fluglotse)air traffic controller
motor vehicle operator (Kraftfahrer)motor vehicle operator
ambulance driver (Krankenwagenfahrer)ambulance driver
tender (Pfleger)tender
extruder (Strangpresser)extruder
millwright (Mühlenbauer)millwright

Diese LUIS-App verfügt über Stellennamen in verschiedenen Absichten.This LUIS app has job names in several intents. Durch die Kennzeichnung dieser Wörter in allen Äußerungen der Absichten lernt LUIS mehr darüber, was eine Stelle ist und wo sie sich in Äußerungen befindet.By labeling these words in all the intents' utterances, LUIS learns more about what a job is and where it is found in utterances.

Erstellen einer einfachen StellenentitätCreate job simple entity

  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 auf Build klicken.You can change to this section by selecting Build on the top, right menu bar.

    Screenshot: LUIS-App mit hervorgehobener Build-Option (rechts oben auf der Navigationsleiste) Screenshot of LUIS app with Build highlighted in top, right navigation bar

  2. Wählen Sie auf der Seite Absichten die Option ApplyForJob aus.On the Intents page, select ApplyForJob intent.

  3. Wählen Sie in der Äußerung I want to apply for the new accounting job das Wort accounting aus, geben Sie Job in das oberste Feld des Popupmenüs ein, und klicken Sie anschließend im Popupmenü auf Create new entity (Neue Entität erstellen).In the utterance, I want to apply for the new accounting job, select accounting, enter Job in the top field of the pop-up menu, then select Create new entity in the pop-up menu.

  4. Überprüfen Sie Entitätsname und -typ im Popupfenster, und klicken Sie anschließend auf Fertig.In the pop-up window, verify the entity name and type and select Done.

    Modales Popupdialogfeld zum Erstellen einer einfachen Entität mit dem Namen „Job“ und dem Typ „Simple“

  5. Kennzeichnen Sie in der Äußerung Submit resume for engineering position das Wort engineering als Entität „Job“.In the utterance, Submit resume for engineering position, label the word engineering as a Job entity. Wählen Sie das Wort engineering und anschließend im Popupmenü die Option Job aus.Select the word engineering, then select Job from the pop-up menu.

    Alle Äußerungen wurden gekennzeichnet, aber fünf Äußerungen sind nicht genug, um LUIS mit stellenbezogenen Wörtern und Ausdrücken vertraut zu machen.All the utterances are labeled but five utterances aren't enough to teach LUIS about job-related words and phrases. Für Stellen mit Zahlenwert sind keine weiteren Beispiele erforderlich, da hierfür eine Entität vom Typ „Regulärer Ausdruck“ verwendet wird.The jobs that use the number value do not need more examples because that uses a regular expression entity. Für Stellen mit Wörtern oder Ausdrücken werden mindestens 15 weitere Beispiele benötigt.The jobs that are words or phrases need at least 15 more examples.

  6. Fügen Sie weitere Äußerungen hinzu, und kennzeichnen Sie die Wörter und Ausdrücke für die Stelle jeweils mit der Entität Job.Add more utterances and mark the job words or phrases as Job entity. Bei den Stellentypen handelt es sich um allgemeine Beschäftigungen für eine Arbeitsvermittlung.The job types are general across employment for an employment service. Wenn Sie Stellen für eine bestimmte Branche verwenden möchten, sollten die Wörter für die Stellen dies widerspiegeln.If you wanted jobs related to a specific industry, the job words should reflect that.

    ÄußerungUtterance Entität „Job“Job entity
    I'm applying for the Program Manager desk in R&D (Ich bewerbe mich für die Position als Programm-Manager in der Entwicklungsabteilung.)I'm applying for the Program Manager desk in R&D Program Manager (Programm-Manager)Program Manager
    Here is my line cook application. (Hier ist meine Bewerbung als Gardemanger.)Here is my line cook application. line cook (Gardemanger)line cook
    My resume for camp counselor is attached. (Anbei mein Lebenslauf für die Stelle als Camp Counselor.)My resume for camp counselor is attached. camp counselorcamp counselor
    This is my c.v.This is my c.v. for administrative assistant. (Hier ist mein CV für die Stelle als Verwaltungsassistent.)for administrative assistant. administrative assistant (Verwaltungsassistent)administrative assistant
    I want to apply for the management job in sales. (Hiermit bewerbe ich mich für die Management-Stelle im Vertrieb.)I want to apply for the management job in sales. management, sales (Management, Vertrieb)management, sales
    This is my resume for the new accounting position. (Hiermit übersende ich Ihnen meinen Lebenslauf für die neue Position in der Buchhaltung.)This is my resume for the new accounting position. accounting (Buchhaltung)accounting
    My application for barback is included. (Meine Bewerbung als Barassistent finden Sie anbei.)My application for barback is included. barback (Barassistent)barback
    I'm submitting my application for roofer and framer. (Hiermit übersende ich Ihnen meine Bewerbung als Dachdecker und Zimmerer.)I'm submitting my application for roofer and framer. roofer, framer (Dachdecker, Zimmerer)roofer, framer
    My c.v.My c.v. for bus driver is here. (Mein Lebenslauf für die Stelle als Busfahrer ist beigefügt.)for bus driver is here. bus driver (Busfahrer)bus driver
    I'm a registered nurse.I'm a registered nurse. Here is my resume. (Ich bin ausgebildete Krankenschwester. Hier ist mein Lebenslauf.)Here is my resume. registered nurse (ausgebildete Krankenschwester)registered nurse
    I would like to submit my paperwork for the teaching position I saw in the paper. (Hiermit möchte ich Ihnen meine Unterlagen für die ausgeschriebene Stelle als Lehrkraft zukommen lassen.)I would like to submit my paperwork for the teaching position I saw in the paper. teaching (Lehrkraft)teaching
    This is my c.v.This is my c.v. for the stocker post in fruits and vegetables. (Hier ist mein Lebenslauf für die Stelle als Auffüller in der Obst- und Gemüseabteilung.)for the stocker post in fruits and vegetables. stocker (Auffüller)stocker
    Apply for tile work. (Bewerbung als Fliesenleger.)Apply for tile work. Kacheltile
    Attached resume for landscape architect. (Anbei mein Lebenslauf für die Position als Landschaftsarchitekt.)Attached resume for landscape architect. landscape architect (Landschaftsarchitekt)landscape architect
    My curriculum vitae for professor of biology is enclosed. (Anbei finden Sie mein Curriculum Vitae für die Stelle als Biologieprofessor.)My curriculum vitae for professor of biology is enclosed. professor of biology (Biologieprofessor)professor of biology
    I would like to apply for the position in photography. (Ich möchte mich gerne als Fotograf bewerben.)I would like to apply for the position in photography. photography (Fotografie)photography

Kennzeichnen der Entität in Beispieläußerungen für die Absicht „GetJobInformation“Label entity in example utterances for GetJobInformation intent

  1. Wählen Sie im linken Menü die Option Absichten.Select Intents from the left menu.

  2. Wählen Sie in der Liste mit den Absichten die Option GetJobInformation aus.Select GetJobInformation from the list of intents.

  3. Kennzeichnen Sie die Stellen in den Beispieläußerungen:Label the jobs in the example utterances:

    ÄußerungUtterance Entität „Job“Job entity
    Is there any work in databases? (Gibt es offene Stellen im Datenbankbereich?)Is there any work in databases? Datenbankendatabases
    Looking for a new situation with responsibilities in accounting (Ich möchte mich beruflich neu orientieren und suche nach Aufgaben in der Buchhaltung.)Looking for a new situation with responsibilities in accounting accounting (Buchhaltung)accounting
    What positions are available for senior engineers? (Welche Positionen sind für Oberingenieure verfügbar?)What positions are available for senior engineers? senior engineers (Oberingenieure)senior engineers

    Es gibt noch andere Beispieläußerungen, diese enthalten jedoch keine Wörter für Stellen.There are other example utterances but they do not contain job words.

Trainieren der LUIS-AppTrain the LUIS app

LUIS ist erst dann über die Änderungen an den Absichten und Entitäten (Modell) informiert, nachdem der Dienst trainiert wurde.LUIS doesn't know about the changes to the intents and entities (the model), until it is trained.

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

    Klicken auf die Schaltfläche „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.

    Trainingserfolgsmeldung

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.

  1. Klicken Sie oben rechts auf der LUIS-Website auf die Schaltfläche Veröffentlichen.In the top right side of the LUIS website, select the Publish button.

  2. Wählen Sie den Produktionsslot aus, und klicken Sie auf die Schaltfläche Veröffentlichen.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

Klicken Sie auf der Seite Veröffentlichen unten auf den Link Endpunkt.On the Publish page, select the endpoint link at the bottom of the page.

Dadurch 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. Geben Sie in der Adressleiste am Ende der URL Here is my c.v. for the programmer job ein.Go to the end of the URL in the address and enter Here is my c.v. for the programmer job. 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 bezeichneten Äußerungen. Sie ist daher ein guter Test und sollte die Äußerungen vom Typ ApplyForJob zurückgeben.This utterance is not the same as any of the labeled utterances so it is a good test and should return the ApplyForJob utterances.

{
  "query": "Here is my c.v. for the programmer job",
  "topScoringIntent": {
    "intent": "ApplyForJob",
    "score": 0.9826467
  },
  "intents": [
    {
      "intent": "ApplyForJob",
      "score": 0.9826467
    },
    {
      "intent": "GetJobInformation",
      "score": 0.0218927357
    },
    {
      "intent": "MoveEmployee",
      "score": 0.007849265
    },
    {
      "intent": "Utilities.StartOver",
      "score": 0.00349470088
    },
    {
      "intent": "Utilities.Confirm",
      "score": 0.00348804821
    },
    {
      "intent": "None",
      "score": 0.00319909188
    },
    {
      "intent": "FindForm",
      "score": 0.00222647213
    },
    {
      "intent": "Utilities.Help",
      "score": 0.00211193133
    },
    {
      "intent": "Utilities.Stop",
      "score": 0.00172086991
    },
    {
      "intent": "Utilities.Cancel",
      "score": 0.00138010911
    }
  ],
  "entities": [
    {
      "entity": "programmer",
      "type": "Job",
      "startIndex": 24,
      "endIndex": 33,
      "score": 0.5230502
    }
  ]
}

Das Problem mit NamenNames are tricky

Die LUIS-App hat die korrekte Absicht mit hoher Zuverlässigkeit ermittelt und den Stellennamen extrahiert, aber Namen sind kompliziert.The LUIS app found the correct intent with high confidence and it extracted the job name, but names are tricky. Nehmen wir beispielsweise die Äußerung This is the lead welder paperwork.Try the utterance This is the lead welder paperwork.

Im folgenden JSON-Code antwortet LUIS zwar mit der korrekten Absicht (ApplyForJob), extrahiert aber den Stellennamen lead welder nicht:In the following JSON, LUIS responds with the correct intent, ApplyForJob, but didn't extract the lead welder job name.

{
  "query": "This is the lead welder paperwork.",
  "topScoringIntent": {
    "intent": "ApplyForJob",
    "score": 0.468558252
  },
  "intents": [
    {
      "intent": "ApplyForJob",
      "score": 0.468558252
    },
    {
      "intent": "GetJobInformation",
      "score": 0.0102701457
    },
    {
      "intent": "MoveEmployee",
      "score": 0.009442534
    },
    {
      "intent": "Utilities.StartOver",
      "score": 0.00639619166
    },
    {
      "intent": "None",
      "score": 0.005859333
    },
    {
      "intent": "Utilities.Cancel",
      "score": 0.005087704
    },
    {
      "intent": "Utilities.Stop",
      "score": 0.00315379258
    },
    {
      "intent": "Utilities.Help",
      "score": 0.00259344373
    },
    {
      "intent": "FindForm",
      "score": 0.00193389168
    },
    {
      "intent": "Utilities.Confirm",
      "score": 0.000420796918
    }
  ],
  "entities": []
}

Da ein Name eine beliebige Zeichenfolge sein kann, sagt LUIS Entitäten präziser voraus, wenn das Signal durch eine Begriffsliste mit Wörtern verstärkt wird.Because a name can be anything, LUIS predicts entities more accurately if it has a phrase list of words to boost the signal.

Hinzufügen einer Begriffsliste für Stellen, um das Signal zu verstärkenTo boost signal, add jobs phrase list

Öffnen Sie die Datei jobs-phrase-list.csv aus dem GitHub-Repository „LUIS-Samples“.Open the jobs-phrase-list.csv from the LUIS-Samples Github repository. Die Liste enthält über 1.000 stellenbezogene Wörter und Begriffe.The list is over one thousand job words and phrases. Suchen Sie in der Liste nach Stellenwörtern, die für Sie relevant sind.Look through the list for job words that are meaningful to you. Sollten die gewünschten Wörter oder Begriffe nicht in der Liste enthalten sein, fügen Sie eigene Wörter/Begriffe hinzu.If your words or phrases are not on the list, add your own.

  1. Klicken Sie im Abschnitt Build der LUIS-App im Menü Improve app performance (App-Leistung verbessern) auf Phrase lists (Begriffslisten).In the Build section of the LUIS app, select Phrase lists found under the Improve app performance menu.

  2. Klicken Sie auf Create new phrase list (Neue Begriffsliste erstellen).Select Create new phrase list.

  3. Nennen Sie die Begriffsliste Jobs, und kopieren Sie die Liste aus „jobs-phrase-list.csv“ in das Textfeld Werte.Name the new phrase list Jobs and copy the list from jobs-phrase-list.csv into the Values text box. Drücken Sie die EINGABETASTE.Select enter.

    Wenn Sie der Begriffsliste weitere Wörter hinzufügen möchten, können Sie sich die verwandten Werte (Related Values) ansehen und alle Wörter hinzufügen, die für Sie relevant sind.If you want more words added to the phrase list, review the Related Values and add any that are relevant.

  4. Klicken Sie auf Speichern, um die Begriffsliste zu aktivieren.Select Save to activate the phrase list.

  5. Trainieren und veröffentlichen Sie die App erneut, um die Begriffsliste zu verwenden.Train and publish the app again to use phrase list.

  6. Fragen Sie den Endpunkt erneut mit der gleichen Äußerung ab: This is the lead welder paperwork.Requery at the endpoint with the same utterance: This is the lead welder paperwork.

    Die JSON-Antwort enthält die extrahierte Entität:The JSON response includes the extracted entity:

    {
        "query": "This is the lead welder paperwork.",
        "topScoringIntent": {
            "intent": "ApplyForJob",
            "score": 0.920025647
        },
        "intents": [
            {
            "intent": "ApplyForJob",
            "score": 0.920025647
            },
            {
            "intent": "GetJobInformation",
            "score": 0.003800706
            },
            {
            "intent": "Utilities.StartOver",
            "score": 0.00299335527
            },
            {
            "intent": "MoveEmployee",
            "score": 0.0027167045
            },
            {
            "intent": "None",
            "score": 0.00259556063
            },
            {
            "intent": "FindForm",
            "score": 0.00224019377
            },
            {
            "intent": "Utilities.Stop",
            "score": 0.00200693542
            },
            {
            "intent": "Utilities.Cancel",
            "score": 0.00195913855
            },
            {
            "intent": "Utilities.Help",
            "score": 0.00162656687
            },
            {
            "intent": "Utilities.Confirm",
            "score": 0.0002851904
            }
        ],
        "entities": [
            {
            "entity": "lead welder",
            "type": "Job",
            "startIndex": 12,
            "endIndex": 22,
            "score": 0.8295959
            }
        ]
    }
    

BegriffslistenPhrase lists

Durch Hinzufügen der Begriffsliste wurde das Signal der Wörter in der Liste verstärkt. Sie wird jedoch nicht für exakte Übereinstimmungen verwendet.Adding the phrase list boosted the signal of the words in the list but is not used as an exact match. Die Begriffsliste enthält sowohl mehrere Stellen, die mit dem Wort lead beginnen, als auch die Stelle welder, aber nicht die Stelle lead welder.The phrase list has several jobs with the first word of lead and also has the job welder but does not have the job lead welder. Diese Begriffsliste für Stellen ist wahrscheinlich nicht vollständig.This phrase list for jobs may not be complete. Fügen Sie Ihrer Begriffsliste daher nach und nach weitere Stellenwörter hinzu, die Sie im Zuge der regelmäßigen Überprüfung von Endpunktäußerungen ermitteln.As you regularly review endpoint utterances and find other job words, add those to your phrase list. Trainieren und veröffentlichen Sie die App anschließend erneut.Then retrain and republish.

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

Diese App mit einer einfachen Entität und einer Begriffsliste mit Wörtern hat eine Abfrageabsicht in natürlicher Sprache ermittelt und die Auftragsdaten zurückgegeben.This app, with a simple entity and a phrase list of words, identified a natural language query intention and returned the job data.

Ihr Chatbot verfügt nun über genügend Informationen, um die primäre Aktion (Stellenbewerbung) zu ermitteln, sowie über einen Parameter für diese Aktion (um welche Stelle es geht).Your chatbot now has enough information to determine the primary action of applying for a job and a parameter of that action, which job is referenced.

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

LUIS hat diese Anforderung abgeschlossen.LUIS is done with this request. Die aufrufende Anwendung (etwa ein Chatbot) kann das Ergebnis für „topScoringIntent“ und die Daten aus der Entität verwenden, um die Stelleninformationen über eine Drittanbieter-API an einen Mitarbeiter der Personalabteilung zu senden.The calling application, such as a chatbot, can take the topScoringIntent result and the data from the entity to use a third-party API to send the job information to a Human Resources representative. Sind andere programmgesteuerte Optionen für den Bot oder die aufrufende Anwendung vorhanden, werden sie nicht von LUIS verwendet.If there are other programmatic options for the bot or calling application, LUIS doesn't do that work. LUIS bestimmt lediglich die Absicht des Benutzers.LUIS only determines what the user's intention is.

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 im Menü oben links die Option Meine Apps.Select My apps in the top, left menu. Klicken Sie in der Liste rechts vom App-Namen auf die drei Punkte (...) und anschließend auf Löschen.Select the three dot menu (...) to the right of the app name in the app list, select Delete. Klicken Sie im Popupdialogfenster Delete app? (App löschen?) auf OK.On the pop-up dialog Delete app?, select Ok.

Nächste SchritteNext steps