Tutorial: Obtención de datos con formato correcto a partir de la expresiónTutorial: Get well-formatted data from the utterance

En este tutorial va a crear una aplicación para extraer datos con formato de forma coherente a partir de una expresión con la entidad de expresión regular.In this tutorial, create an app to extract consistently-formatted data from an utterance using the Regular Expression entity.

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

  • Creación de una nueva aplicaciónCreate a new app
  • Agregar intenciónAdd intent
  • Incorporación de entidades de expresiones regularesAdd regular expression entity
  • 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.

Entidades de expresión regularRegular expression entities

El uso que hace la aplicación de la entidad de expresión regular consiste en extraer números del formulario de Recursos humanos con formato correcto a partir de una expresión.This app's use of the regular expression entity is to pull out well-formatted Human Resources (HR) form numbers from an utterance. Aunque la intención de la expresión siempre se determina con el aprendizaje automático, este tipo específico de entidad no se aprende de manera automática.While the utterance's intent is always determined with machine-learning, this specific entity type is not machine-learned.

Las expresiones de ejemplo incluyen:Example utterances include:

Expresiones de ejemploExample utterances
¿Dónde está el formulario HRF-123456?Where is HRF-123456?
¿Quién creó el formulario HRF-123234?Who authored HRF-123234?
¿El formulario HRF-456098 se publicó en francés?HRF-456098 is published in French?
HRF 456098HRF-456098
¿Fecha de HRF 456098?HRF-456098 date?

Una expresión regular es una buena opción para este tipo de datos cuando:A regular expression is a good choice for this type of data when:

  • los datos tienen el formato correcto.the data is well-formatted.

Creación de una nueva aplicaciónCreate a new app

  1. Inicie sesión en el portal de LUIS con la dirección URL https://www.luis.ai.Sign in to the LUIS portal with the URL of https://www.luis.ai.

  2. Seleccione Create new app (Crear nueva aplicación).Select Create new app.

    Captura de pantalla de la página My Apps (Mis aplicaciones) de Language Understanding (LUIS)Screenshot of Language Understanding (LUIS) My Apps page

  3. En el cuadro de diálogo emergente, escriba el nombre HumanResources y mantenga la referencia cultural predeterminada, English (Inglés).In the pop-up dialog, enter the name HumanResources and keep the default culture, English. Deje en blanco la descripción.Leave the description empty.

    Creación de una nueva aplicación LUIS de HumanResources

  4. Seleccione Listo.Select Done.

Creación de una intención para buscar el formularioCreate intent for finding form

  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. Haga clic en Create new intent (Crear intención).Select Create new intent.

  3. Escriba FindForm en el cuadro de diálogo emergente y seleccione Done (Listo).Enter FindForm in the pop-up dialog box then select Done.

    Captura de pantalla del cuadro de diálogo de creación de nueva intención con las utilidades en el cuadro de búsqueda

  4. Agregue expresiones de ejemplo a la intención.Add example utterances to the intent.

    Expresiones de ejemploExample utterances
    ¿Cuál es la dirección URL de hrf-123456?What is the URL for hrf-123456?
    ¿Dónde está hrf-345678?Where is hrf-345678?
    ¿Cuándo se ha actualizado hrf-456098?When was hrf-456098 updated?
    ¿John Smith ha actualizado hrf 234639 la semana pasada?Did John Smith update hrf-234639 last week?
    ¿Cuántas versiones de hrf 345123 existen?How many versions of hrf-345123 are there?
    ¿Quién tiene que autorizar el formulario hrf-123456?Who needs to authorize form hrf-123456?
    ¿Cuántas personas tienen que cerrar la sesión en hrf 345678?How many people need to sign off on hrf-345678?
    ¿fecha de hrf 234123?hrf-234123 date?
    ¿autor de hrf 546234?author of hrf-546234?
    ¿título de hrf 456234?title of hrf-456234?

    Captura de pantalla de la página Intent (Intención) con nuevas expresiones resaltadasScreenshot of Intent page with new utterances highlighted

    Estas expresiones son solo con fines de demostración.These few utterances are for demonstration purposes only. Una aplicación real debería tener al menos 15 expresiones de longitud variable, con el orden de las palabras, el tiempo verbal, la exactitud gramatical, la puntuación y el recuento de palabras variables.A real-world app should have at least 15 utterances of varying length, word order, tense, grammatical correctness, punctuation, and word count.

Uso de la entidad de expresión regular para datos con formato correctoUse the regular expression entity for well-formatted data

La entidad de expresión regular para que coincida con el número de formulario es hrf-[0-9]{6}.The regular expression entity to match the form number is hrf-[0-9]{6}. Esta expresión regular coincide con los caracteres literales hrf- pero omite variantes de mayúsculas y minúsculas y la referencia cultural.This regular expression matches the literal characters hrf- but ignores case and culture variants. Coincide exactamente con dígitos de 0 a 9, para 6 dígitos exactamente.It matches digits 0-9, for 6 digits exactly.

HRF significa human resources form.HRF stands for human resources form.

LUIS tokeniza la expresión cuando esta se agrega a una intención.LUIS tokenizes the utterance when it is added to an intent. La tokenización para estas expresiones agrega espacios antes y después del guion, Where is HRF - 123456? La expresión regular se aplica a la expresión en su forma sin formato, antes de que se tokenice.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. Debido a que se aplica al formulario sin formato, la expresión regular no tiene que tratar con límites de palabras.Because it is applied to the raw form, the regular expression doesn't have to deal with word boundaries.

Cree una entidad de expresión regular para decirle a LUIS qué es un formato de número HRF en los siguientes pasos:Create a regular expression entity to tell LUIS what an HRF-number format is in the following steps:

  1. Seleccione Entities (Entidades) en el panel izquierdo.Select Entities in the left panel.

  2. Seleccione Create new entity (Crear nueva entidad) en la página Entities (Entidades).Select Create new entity button on the Entities Page.

  3. En el cuadro de diálogo emergente, introduzca el nombre de la nueva entidad HRF-number, seleccione RegEx como tipo de entidad, especifique hrf-[0-9]{6} como el valor Regex y, después, seleccione Done (Listo).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.

    Captura de pantalla del cuadro de diálogo emergente que establece las propiedades de la nueva entidad

  4. Seleccione Intents (Intenciones) en el menú de la izquierda, después la intención FindForm para ver la expresión regular etiquetada en la expresiones.Select Intents from the left menu, then FindForm intent to see the regular expression labeled in the utterances.

    Captura de pantalla de la expresión de etiqueta con la entidad existente y el patrón de la expresión regularScreenshot of Label utterance with existing entity and regex pattern

    Dado que la entidad no es una entidad que se aprende de manera automática, se aplica a las expresiones y se muestra en el sitio web de LUIS en cuanto se crea.Because the entity is not a machine-learned entity, the entity is applied to the utterances and displayed in the LUIS website as soon as it is created.

Incorporación de expresiones de ejemplo a la intención NoneAdd example utterances to the None intent

La aplicación cliente debe saber si una expresión no es significativa o adecuada para la aplicación.The client application needs to know if an utterance is not meaningful or appropriate for the application. La intención None se agrega a cada aplicación como parte del proceso de creación para determinar si la aplicación cliente no puede responder a una expresión.The None intent is added to each application as part of the creation process to determine if an utterance can't be answered by the client application.

Si LUIS devuelve la intención None para una expresión, la aplicación cliente puede preguntar al usuario si quiere finalizar la conversación o dar más instrucciones para continuarla.If LUIS returns the None intent for an utterance, your client application can ask if the user wants to end the conversation or give more directions for continuing the conversation.

Precaución

No deje la intención None vacía.Do not leave the None intent empty.

  1. Seleccione Intents (Intenciones) en el panel izquierdo.Select Intents from the left panel.

  2. Seleccione la intención None.Select the None intent. Agregue tres expresiones que el usuario podría solicitar pero que no son pertinentes para la aplicación de recursos humanos:Add three utterances that your user might enter but are not relevant to your Human Resources app:

    Expresiones de ejemploExample utterances
    Barking dogs are annoying (Los perros que ladran son molestos)Barking dogs are annoying
    Order a pizza for me (Pídanme una pizza)Order a pizza for me
    Penguins in the ocean (Pingüinos en el océano)Penguins in the ocean

Entrenamiento de la aplicación antes de las pruebas o la publicaciónTrain the app before testing or publishing

  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 en la consulta desde el punto de conexiónPublish the app to query 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 la siguiente expresión:Go to the end of the URL in the address and enter the following utterance:

    When were HRF-123456 and hrf-234567 published in the last year?

    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 cualquiera de las expresiones etiquetadas, por lo que es una buena prueba y debería devolver la intención FindForm con los dos números de formulario HRF-123456 y hrf-234567.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.9988884
      },
      "intents": [
        {
          "intent": "FindForm",
          "score": 0.9988884
        },
        {
          "intent": "None",
          "score": 0.00204812363
        }
      ],
      "entities": [
        {
          "entity": "hrf-123456",
          "type": "HRF-number",
          "startIndex": 10,
          "endIndex": 19
        },
        {
          "entity": "hrf-234567",
          "type": "HRF-number",
          "startIndex": 25,
          "endIndex": 34
        }
      ]
    }
    

    Mediante el uso de una entidad de expresión regular, LUIS extrae datos con nombre, lo que es más útil desde el punto de vista de programación para la aplicación cliente que recibe la respuesta de JSON.By using a regular expression entity, LUIS extracts named data, which is more programmatically helpful to the client application receiving the JSON response.

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

Este tutorial se creó una nueva intención, se agregaron expresiones de ejemplo y luego se creó una entidad de expresión regular para extraer los datos con formato correcto en las expresiones.This tutorial created a new intent, added example utterances, then created a regular expression entity to extract well-formatted data from the utterances. Después del aprendizaje y de la publicación de la aplicación, una consulta al punto de conexión identificó la intención y devolvió los datos extraídos.After training, and publishing the app, a query to the endpoint identified the intention and returned the extracted data.