Tutorial: Extracción de nombres con una lista de entidades simples y frasesTutorial: Extract names with simple entity and a phrase list

En este tutorial se extraen datos aprendidos automáticamente de un nombre de trabajo de implementación de una expresión con la entidad Simple.In this tutorial, extract machine-learned data of employment job name from an utterance using the Simple entity. Para aumentar la precisión de extracción, agregue una lista de frases de términos específicos para la entidad simple.To increase the extraction accuracy, add a phrase list of terms specific to the simple entity.

La entidad simple detecta un concepto de datos único contenido en palabras o frases.The simple entity detects a single data concept contained in words or phrases.

En este tutorial, aprenderá a:In this tutorial, you learn how to:

  • Importar la aplicación de ejemploImport example app
  • Agregar una entidad simpleAdd simple entity
  • Agregar una lista de frases para aumentar la señal de las palabrasAdd phrase list to boost signal words
  • TrainTrain
  • PublicarPublish
  • Obtener intenciones y entidades del punto de conexiónGet intents and entities from endpoint

Para este artículo, puede usar la cuenta de LUIS gratuita para crear la aplicación de LUIS.For this article, you can use the free LUIS account in order to author your LUIS application.

Entidad simpleSimple entity

En este tutorial se agrega una nueva entidad simple para extraer el nombre del trabajo.This tutorial adds a new simple entity to extract the job name. El propósito de la entidad simple en esta aplicación de LUIS es enseñar a LUIS qué es un nombre de trabajo y dónde se puede encontrar en una expresión.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. La parte de la expresión que es el nombre del trabajo puede cambiar de una expresión a otra en función de la longitud de la expresión y de la elección de las palabras.The part of the utterance that is the job name can change from utterance to utterance based on word choice and utterance length. LUIS necesita ejemplos de nombres de trabajo en todas las intenciones que usan nombres de trabajo.LUIS needs examples of job names across all intents that use job names.

La entidad simple es una buena opción para este tipo de datos cuando:The simple entity is a good fit for this type of data when:

  • Los datos son un concepto único.Data is a single concept.
  • Los datos no tienen un formato correcto, como una expresión regular.Data is not well-formatted such as a regular expression.
  • Los datos no son comunes, como una entidad previamente creada de número de teléfono o de datos.Data is not common such as a prebuilt entity of phone number or data.
  • Los datos no coinciden exactamente con una lista de palabras conocidas, como una entidad de lista.Data is not matched exactly to a list of known words, such as a list entity.
  • Los datos no contienen otros elementos de datos de tipo entidad compuesta ni roles contextuales.Data does not contain other data items such as a composite entity or contextual roles.

Fíjese en las siguientes expresiones de un bot de chat:Consider the following utterances from a chat bot:

ExpresiónUtterance Nombre del trabajo que se puede extraerExtractable job name
I want to apply for the new accounting job.I want to apply for the new accounting job. accountingaccounting
Submit my resume for the engineering position.Submit my resume for the engineering position. engineeringengineering
Fill out application for job 123456Fill out application for job 123456 123456123456

El nombre del trabajo es difícil de determinar porque un nombre puede ser un sustantivo, un verbo o una frase de varias palabras.The job name is difficult to determine because a name can be a noun, verb, or a phrase of several words. Por ejemplo:For example:

TrabajosJobs
productoengineer
software engineersoftware engineer
senior software engineersenior software engineer
engineering team leadengineering team lead
air traffic controllerair traffic controller
motor vehicle operatormotor vehicle operator
ambulance driverambulance driver
tendertender
extruderextruder
millwrightmillwright

Esta aplicación de LUIS tiene nombres de trabajos en varias intenciones.This LUIS app has job names in several intents. Mediante el etiquetado de estas palabras en los registros de todas las intenciones, LUIS aprende más acerca de qué es un nombre de trabajo y de dónde se encuentra en las expresiones.By labeling these words in all the intents' utterances, LUIS learns more about what a job name is and where it is found in utterances.

Una vez que las entidades están marcadas en las expresiones de ejemplo, es importante agregar una lista de frases para aumentar la señal de la entidad simple.Once the entities are marked in the example utterances, it is important to add a phrase list to boost the signal of the simple entity. Una lista de frases no se usa como una coincidencia exacta y no es necesario que tenga todos los valores posibles que espera.A phrase list is not used as an exact match and does not need to be every possible value you expect.

Importar la aplicación de ejemploImport example app

  1. Descargue y guarde el archivo JSON de la aplicación desde el tutorial de intenciones.Download and save the app JSON file from the Intents tutorial.

  2. Importe el archivo JSON en una aplicación nueva.Import the JSON into a new app.

  3. Desde la sección Manage (Administrar), en la pestaña Versions (Versiones), clone la versión y asígnele el nombre simple.From the Manage section, on the Versions tab, clone the version, and name it simple. La clonación es una excelente manera de trabajar con distintas características de LUIS sin que afecte a la versión original.Cloning is a great way to play with various LUIS features without affecting the original version. Dado que el nombre de la versión se usa como parte de la ruta de la dirección URL, el nombre no puede contener ningún carácter que no sea válido en una dirección URL.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.

Marcado de entidades en expresiones de ejemplo de una intenciónMark entities in example utterances of an intent

  1. Asegúrese de que la aplicación de recursos humanos se encuentra en la sección Build (Crear) de LUIS.Make sure your Human Resources app is in the Build section of LUIS. Para cambiar a esta sección, seleccione Build (Crear) en la barra de menús superior derecha.You can change to this section by selecting Build on the top, right menu bar.

  2. En la página Intents (Intenciones), seleccione la intención ApplyForJob.On the Intents page, select ApplyForJob intent.

  3. En la expresión, I want to apply for the new accounting job, seleccione accounting, escriba Job en el campo superior del menú emergente y, después, seleccione Create new entity (Crear nueva entidad) en el menú emergente.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.

    Captura de pantalla de LUIS con la intención "ApplyForJob" donde se resaltan los pasos para crear una entidadScreenshot of LUIS with 'ApplyForJob' intent with create entity steps highlighted

  4. En la ventana emergente, compruebe el nombre y tipo de la entidad y seleccione Done (Listo).In the pop-up window, verify the entity name and type and select Done.

    Crear cuadro de diálogo modal emergente de la entidad simple con el nombre Job y el tipo Simple

  5. En las expresiones restantes, marque las palabras relacionadas con el trabajo con la entidad Job (Trabajo) seleccionando la palabra o frase y, después, seleccionando Job (Trabajo) en el menú emergente.In the remaining utterances, mark the job-related words with Job entity by selecting the word or phrase, then selecting Job from the pop-up menu.

    Captura de pantalla de LUIS donde se resalta el etiquetado de la entidad de trabajoScreenshot of LUIS labeling job entity highlighted

Adición de más expresiones de ejemplo y marcado de entidadesAdd more example utterances and mark entity

Las entidades simples necesitan muchos ejemplos para tener un grado alto de confianza en la predicción.Simple entities need many examples in order to have a high confidence of prediction.

  1. Agregue más expresiones y marque las palabras o frases de trabajo como entidad de Job.Add more utterances and mark the job words or phrases as Job entity.

    ExpresiónUtterance Entidad de JobJob entity
    I'm applying for the Program Manager desk in R&DI'm applying for the Program Manager desk in R&D Program ManagerProgram Manager
    Here is my line cook application.Here is my line cook application. line cookline cook
    My resume for camp counselor is attached.My resume for camp counselor is attached. camp counselorcamp counselor
    This is my c.v.This is my c.v. for administrative assistant.for administrative assistant. administrative assistantadministrative assistant
    I want to apply for the management job in sales.I want to apply for the management job in sales. management, salesmanagement, sales
    This is my resume for the new accounting position.This is my resume for the new accounting position. accountingaccounting
    My application for barback is included.My application for barback is included. barbackbarback
    I'm submitting my application for roofer and framer.I'm submitting my application for roofer and framer. roofer, framerroofer, framer
    My c.v.My c.v. for bus driver is here.for bus driver is here. bus driverbus driver
    I'm a registered nurse.I'm a registered nurse. Here is my resume.Here is my resume. registered nurseregistered nurse
    I would like to submit my paperwork for the teaching position I saw in the paper.I would like to submit my paperwork for the teaching position I saw in the paper. teachingteaching
    This is my c.v.This is my c.v. for the stocker post in fruits and vegetables.for the stocker post in fruits and vegetables. stockerstocker
    Apply for tile work.Apply for tile work. Iconotile
    Attached resume for landscape architect.Attached resume for landscape architect. landscape architectlandscape architect
    My curriculum vitae for professor of biology is enclosed.My curriculum vitae for professor of biology is enclosed. professor of biologyprofessor of biology
    I would like to apply for the position in photography.I would like to apply for the position in photography. photographyphotography

Marcado de entidades de trabajo en otras intencionesMark job entity in other intents

  1. Seleccione Intents (Intenciones) en el menú izquierdo.Select Intents from the left menu.

  2. Seleccione GetJobInformation en la lista de intenciones.Select GetJobInformation from the list of intents.

  3. Etiquete los trabajos en las expresiones del ejemplo.Label the jobs in the example utterances

    Si hay más expresiones de ejemplo en una intención que en otra, esa intención tiene una mayor probabilidad de ser la de más alta predicción.If there are more example utterances in one intent than another intent, that intent has a higher likelihood of being the highest predicted intext.

Entrenamiento de la aplicación para probar los cambios en la intenciónTrain the app so the changes to the intent can be tested

  1. En la parte superior derecha del sitio web de LUIS, haga clic en el botón Entrenar.In the top right side of the LUIS website, select the Train button.

    Botón Train (Entrenar)

  2. El entrenamiento se completa cuando ve la barra de estado verde en la parte superior del sitio web que confirma que se ha realizado correctamente.Training is complete when you see the green status bar at the top of the website confirming success.

    Barra de estado que indica que el entrenamiento se realizó

Publicación de la aplicación para que se pueda consultar al modelo entrenado desde el punto de conexiónPublish the app so the trained model is queryable from the endpoint

Para recibir una predicción de LUIS en un bot de chat u otra aplicación cliente, tiene que publicar la aplicación en el punto de conexión.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. Seleccione Publish (Publicar) en el panel de navegación superior derecho.Select Publish in the top right navigation.

    Botón de publicación en el punto de conexión de LUIS del menú superior derecho

  2. Seleccione el espacio Production (Producción) y haga clic en el botón Publish (Publicar).Select the Production slot and the Publish button.

    Publicación en el punto de conexión de LUIS

  3. La publicación se completa cuando ve la barra de estado verde en la parte superior del sitio web que confirma que se ha realizado correctamente.Publishing is complete when you see the green status bar at the top of the website confirming success.

    Publicación en el punto de conexión de LUIS

  4. Seleccione el vínculo endpoints (puntos de conexión) en la barra de estado verde para ir a la página Keys and endpoints (Claves y puntos de conexión).Select the endpoints link in the green status bar to go to the Keys and endpoints page. Las direcciones URL de los puntos de conexión se muestran en la parte inferior.The endpoint URLs are listed at the bottom.

Obtención de intención y predicción de entidad desde el punto de conexiónGet intent and entity prediction from endpoint

  1. En la sección Manage (Administrar) del menú superior derecho, en la página Keys and endpoints (Claves y puntos de conexión) del menú de la izquierda, seleccione la URL del punto de conexión al final de la página.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. Esta acción abre otra pestaña del explorador con la dirección URL del punto de conexión en la barra de direcciones.This action opens another browser tab with the endpoint URL in the address bar.

    La dirección URL del punto de conexión es similar a 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. Vaya al final de la dirección URL en la dirección y escriba Here is my c.v. for the engineering job.Go to the end of the URL in the address and enter Here is my c.v. for the engineering job. El último parámetro de la cadena de consulta es q, la expresión query.The last querystring parameter is q, the utterance query. Esta expresión no es la misma que las expresiones etiquetadas, por lo que es una buena prueba y debería devolver las expresiones ApplyForJob.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 engineering job",
      "topScoringIntent": {
        "intent": "ApplyForJob",
        "score": 0.98052007
      },
      "intents": [
        {
          "intent": "ApplyForJob",
          "score": 0.98052007
        },
        {
          "intent": "GetJobInformation",
          "score": 0.03424581
        },
        {
          "intent": "None",
          "score": 0.0015820954
        }
      ],
      "entities": [
        {
          "entity": "engineering",
          "type": "Job",
          "startIndex": 24,
          "endIndex": 34,
          "score": 0.668959737
        }
      ]
    }
    

    LUIS encontró la intención correcta, ApplyForJob, y extrajo la entidad correcta, Job (Trabajo), con un valor de engineering.LUIS found the correct intent, ApplyForJob, and extracted the correct entity, Job, with a value of engineering.

Los nombres son complicadosNames are tricky

La aplicación de LUIS ha encontrado la intención correcta con una confianza alta y ha extraído el nombre del trabajo, pero los nombres son complicados.The LUIS app found the correct intent with high confidence and it extracted the job name, but names are tricky. Pruebe la expresión This is the lead welder paperwork.Try the utterance This is the lead welder paperwork.

En el siguiente JSON, LUIS responde con la intención correcta, ApplyForJob, pero no ha extraído el nombre de trabajo lead welder.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.860295951
  },
  "intents": [
    {
      "intent": "ApplyForJob",
      "score": 0.860295951
    },
    {
      "intent": "GetJobInformation",
      "score": 0.07265678
    },
    {
      "intent": "None",
      "score": 0.00482481951
    }
  ],
  "entities": []
}

Dado que un nombre puede ser cualquier cosa, LUIS predice las entidades con mayor precisión si tiene una lista de frases de palabras que aumentar la señal.Because a name can be anything, LUIS predicts entities more accurately if it has a phrase list of words to boost the signal.

Abra el archivo jobs-phrase-list.csv del repositorio de GitHub de ejemplos de Azure.Open the jobs-phrase-list.csv from the Azure-Samples GitHub repository. La lista tiene más de mil palabras y frases de trabajo.The list is over 1,000 job words and phrases. Examine las palabras de trabajo de la lista que tienen algún sentido para usted.Look through the list for job words that are meaningful to you. Si sus palabras o frases no están en la lista, agréguelas.If your words or phrases are not on the list, add your own.

  1. En la sección Build (Crear) de la aplicación de LUIS, seleccione Phrase lists (Listas de frases) en el menú Improve app performance (Mejorar el rendimiento de la aplicación).In the Build section of the LUIS app, select Phrase lists found under the Improve app performance menu.

  2. Seleccione Create new phrase list (Crear lista de frases).Select Create new phrase list.

  3. Asigne un nombre a la nueva lista de frases JobNames y copie la lista del archivo jobs-phrase-list.csv en el cuadro de texto Values.Name the new phrase list JobNames and copy the list from jobs-phrase-list.csv into the Values text box.

    Captura de pantalla donde se muestra el cuadro de diálogo para crear una nueva lista de frasesScreenshot of create new phrase list dialog pop-up

    Si desea agregar más palabras a la lista de frases, seleccione Recommand (Nuevo comando), revise los nuevos Related Values (Valores relacionados) y agregue todos aquellos que considere pertinentes.If you want more words added to the phrase list, select Recommand then review the new Related Values and add any that are relevant.

    Asegúrese de mantener activada la opción These values are interchangeable (Estos valores son intercambiables) porque estos valores deben tratarse como sinónimos de los trabajos.Make sure to keep the These values are interchangeable checked because these values should all be treated as synonyms for jobs. Más información sobre los conceptos de la lista de frases intercambiables y no intercambiables.Learn more about interchangeable and noninterchangeable phrase list concepts.

  4. Seleccione Done (Listo) para activar la lista de frases.Select Done to activate the phrase list.

    Captura de pantalla donde se muestra el cuadro de diálogo para crear una lista de frases que contiene palabras en el cuadro de valores de la lista de frasesScreenshot of create new phrase list dialog pop-up with words in phrase list values box

  5. Vuelva a entrenar y publicar la aplicación para que use la lista de frases.Train and publish the app again to use phrase list.

  6. Vuelva a realizar una consulta en el punto de conexión con la misma expresión: This is the lead welder paperwork.Requery at the endpoint with the same utterance: This is the lead welder paperwork.

    La respuesta de JSON incluye la entidad extraída:The JSON response includes the extracted entity:

      {
      "query": "This is the lead welder paperwork.",
      "topScoringIntent": {
        "intent": "ApplyForJob",
        "score": 0.983076453
      },
      "intents": [
        {
          "intent": "ApplyForJob",
          "score": 0.983076453
        },
        {
          "intent": "GetJobInformation",
          "score": 0.0120766377
        },
        {
          "intent": "None",
          "score": 0.00248388131
        }
      ],
      "entities": [
        {
          "entity": "lead welder",
          "type": "Job",
          "startIndex": 12,
          "endIndex": 22,
          "score": 0.8373154
        }
      ]
    }
    

Limpieza de recursosClean up resources

Cuando ya no sea necesaria, elimine la aplicación de LUIS.When no longer needed, delete the LUIS app. Para hacerlo, seleccione My apps (Mis aplicaciones) en el menú superior izquierdo.To do so, select My apps from the top left menu. Seleccione los puntos suspensivos (...) a la derecha del nombre de la aplicación en la lista de aplicaciones y, después, seleccione Delete (Eliminar).Select the ellipsis (...) to the right of the app name in the app list, select Delete. En el cuadro de diálogo emergente Delete app? (¿Eliminar aplicación?), haga clic en Ok (Aceptar).On the pop-up dialog Delete app?, select Ok.

Pasos siguientesNext steps

En este tutorial, la aplicación de recursos humanos utiliza una entidad simple aprendida automáticamente para encontrar nombres de trabajo en expresiones.In this tutorial, the Human Resources app uses a machine-learned simple entity to find job names in utterances. Dado que los nombres de trabajo pueden tener una gran variedad de palabras o frases, la aplicación necesitaba una lista de frases para aumentar las palabras de los nombres de trabajo.Because job names can be such a wide variety of words or phrases, the app needed a phrase list to boost the job name words.