Tutorial: Compilación de una aplicación LUIS para determinar las intenciones del usuarioTutorial: Build LUIS app to determine user intentions

En este tutorial creará una aplicación de recursos humanos (RRHH) personalizada que predice la intención del usuario en función de la expresión (texto).In this tutorial, you create a custom Human Resources (HR) app that predicts a user's intention based on the utterance (text).

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

  • Creación de una nueva aplicaciónCreate a new app
  • Creación de intencionesCreate intents
  • Incorporación de expresiones de ejemploAdd example utterances
  • Entrenamiento de la aplicaciónTrain app
  • Publicación de aplicaciónPublish app
  • Obtención de la intención a partir del punto de conexiónGet intent 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.

Intenciones del usuario como intencionesUser intentions as intents

La finalidad de la aplicación es determinar la intención del texto de conversión en lenguaje natural:The purpose of the app is to determine the intention of conversational, natural language text:

Are there any new positions in the Seattle office?

Estas intenciones se categorizan en Intenciones.These intentions are categorized into Intents.

Esta aplicación tiene algunas intenciones.This app has a few intents.

IntenciónIntent PropósitoPurpose
ApplyForJobApplyForJob Determinar si el usuario postula a un trabajo.Determine if user is applying for a job.
GetJobInformationGetJobInformation Determinar si el usuario busca información sobre trabajos en general o sobre un trabajo específico.Determine if user is looking for information about jobs in general or a specific job.
NoneNone Determinar si el usuario pregunta algo que la aplicación no puede responder.Determine if user is asking something app is not supposed to answer. Esta intención se proporciona como parte de la creación de la aplicación y no se puede eliminar.This intent if provided as part of app creation and can't be deleted.

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 información de trabajoCreate intent for job information

  1. Haga clic en Create new intent (Crear intención).Select Create new intent. Escriba el nombre de la intención nueva GetJobInformation.Enter the new intent name GetJobInformation. Esta intención se predice cuando un usuario quiere información sobre las ofertas de trabajo de la empresa.This intent is predicted when a user wants information about open jobs in the company.

    Captura de pantalla del cuadro de diálogo New Intent (Nueva intención) de Language Understanding (LUIS)Screenshot of Language Understanding (LUIS) New intent dialog

  2. Seleccione Listo.Select Done.

  3. Agregue varias expresiones de ejemplo a esta intención que espera que un usuario pida:Add several example utterances to this intent that you expect a user to ask:

    Expresiones de ejemploExample utterances
    Any new jobs posted today? (¿Se publicó algún trabajo nuevo hoy?)Any new jobs posted today?
    Are there any new positions in the Seattle office? (¿Hay algún puesto nuevo en la oficina de Seattle?)Are there any new positions in the Seattle office?
    Are there any remote worker or telecommute jobs open for engineers? (¿Hay alguna vacante de trabajo remoto o a distancia para ingenieros?)Are there any remote worker or telecommute jobs open for engineers?
    Is there any work in databases? (¿Hay algún trabajo con bases de datos?)Is there any work with databases?
    I'm looking for a co-working situation in the tampa office. (Busco una posibilidad de trabajo compartido en la oficina de Tampa)I'm looking for a co-working situation in the tampa office.
    Is there an internship in the san francisco office? (¿Hay alguna práctica profesional disponible en la oficina de San Francisco?)Is there an internship in the san francisco office?
    Is there any part-time work for people in college? (¿Hay algún trabajo a tiempo parcial para quienes estudian en la universidad?)Is there any part-time work for people in college?
    Looking for a new situation with responsibilities in accounting (Busco una nueva situación con responsabilidades en contabilidad)Looking for a new situation with responsibilities in accounting
    Looking for a job in new york city for bilingual speakers. (Busco un trabajo en Nueva York para hablantes bilingües)Looking for a job in new york city for bilingual speakers.
    Looking for a new situation with responsibilities in accounting. (Busco una nueva situación con responsabilidades en contabilidad)Looking for a new situation with responsibilities in accounting.
    New jobs? (¿Trabajos nuevos?)New jobs?
    Show me all the jobs for engineers that were added in the last 2 days. (Quiero ver todos los trabajos para ingenieros que se agregaron en los últimos 2 días).Show me all the jobs for engineers that were added in the last 2 days.
    Today's job postings? (Quiero ver las ofertas de trabajo de hoy)Today's job postings?
    What accounting positions are open in the london office? (¿Qué puestos contables hay disponibles en la oficina de Londres?)What accounting positions are open in the london office?
    What positions are available for Senior Engineers? (¿Qué puestos hay disponibles para ingenieros de alto nivel?)What positions are available for Senior Engineers?
    Where is the job listings (¿Dónde están las listas de vacantes?)Where is the job listings

    Captura de pantalla de ingreso de expresiones nuevas para la intención MyStoreScreenshot of entering new utterances for MyStore intent

    Al proporcionar expresiones de ejemplo, está entrenando a LUIS sobre qué tipos de expresiones deben predecirse para esta intención.By providing example utterances, you are training LUIS about what kinds of utterances should be predicted for this intent.

    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.

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 la predicción de la intención desde el punto de conexiónGet intent prediction from the 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 barra de direcciones y escriba I'm looking for a job with Natural Language Processing.Go to the end of the URL in the address bar and enter I'm looking for a job with Natural Language Processing. El último parámetro de la cadena de consulta es q, la expresión query.The last query string parameter is q, the utterance query. Esta expresión no es la misma que cualquiera de las expresiones de ejemplo.This utterance is not the same as any of the example utterances. Es una buena prueba y debe devolver la intención GetJobInformation como la intención con la puntuación más alta.It is a good test and should return the GetJobInformation intent as the top scoring intent.

    {
      "query": "I'm looking for a job with Natural Language Processing",
      "topScoringIntent": {
        "intent": "GetJobInformation",
        "score": 0.9923871
      },
      "intents": [
        {
          "intent": "GetJobInformation",
          "score": 0.9923871
        },
        {
          "intent": "None",
          "score": 0.007810574
        }
      ],
      "entities": []
    }
    

    El parámetro QueryString de verbose=true significa incluir todas las intenciones en los resultados de la consulta de la aplicación.The verbose=true querystring parameter means include all the intents in the app's query results. La matriz de entidades está vacía porque esta aplicación no tiene actualmente ninguna entidad.The entities array is empty because this app currently does not have any entities.

    El resultado de JSON identifica la intención que tiene la puntuación más alta como propiedad topScoringIntent .The JSON result identifies the top scoring intent as topScoringIntent property. Todas las puntuaciones están comprendidas entre 1 y 0, y la mejor está próxima a 1.All scores are between 1 and 0, with the better score being close to 1.

Creación de intención para solicitudes de trabajoCreate intent for job applications

Regrese al portal de LUIS y cree una nueva intención para determinar si la expresión del usuario trata de solicitar un trabajo.Return to the LUIS portal and create a new intent to determine if the user utterance is about applying for a job.

  1. Seleccione Build (Compilar) en el menú superior de la derecha para volver a la compilación de aplicaciones.Select Build from the top, right menu to return to app building.

  2. Seleccione Intenciones en el menú de la izquierda para ver la lista de intenciones.Select Intents from the left menu to get to the list of intents.

  3. Seleccione Create new intent (Crear nueva intención) y escriba el nombre ApplyForJob.Select Create new intent and enter the name ApplyForJob.

    Cuadro de diálogo LUIS para crear una intención

  4. Agregue varias expresiones a esta intención que espera que un usuario pida como, por ejemplo:Add several utterances to this intent that you expect a user to ask for, such as:

    Expresiones de ejemploExample utterances
    Fill out application for Job 123456 (Rellenar la postulación para el trabajo 123456)Fill out application for Job 123456
    This is my c.v. for position 654234Here is my c.v. (Este es mi currículum vítae para el puesto 654234)for position 654234
    Here is my resume for the part-time receptionist post. (Este es mi currículum vítae para el puesto de recepcionista a tiempo parcial)Here is my resume for the part-time receptionist post.
    I'm applying for the art desk job with this paperwork. (Con estos documentos postulo al trabajo de escritorio artístico)I'm applying for the art desk job with this paperwork.
    I'm applying for the summer college internship in Research and Development in San Diego. (Postulo a la práctica universitaria durante el verano en Investigación y desarrollo en San Diego)I'm applying for the summer college internship in Research and Development in San Diego
    I'm requesting to submit my resume to the temporary position in the cafeteria. (Solicito enviar mi currículum vítae para el puesto temporal en la cafetería)I'm requesting to submit my resume to the temporary position in the cafeteria.
    I'm submitting my resume for the new Autocar team in Columbus, OH. (Envío mi currículum vítae para el nuevo equipo Autocar en Columbus, Ohio)I'm submitting my resume for the new Autocar team in Columbus, OH
    I want to apply for the new accounting job. (Quiero postular al nuevo trabajo de contabilidad)I want to apply for the new accounting job
    Job 456789 accounting internship paperwork is here. (Esta es la documentación para la práctica profesional de contabilidad del trabajo 456789)Job 456789 accounting internship paperwork is here
    Job 567890 and my paperwork (Trabajo 567890 y mi documentación)Job 567890 and my paperwork
    My papers for the tulsa accounting internship are attached. (Adjunto mi documentación para la práctica profesional de contabilidad en Tulsa)My papers for the tulsa accounting internship are attached.
    My paperwork for the holiday delivery position. (Mi documentación para el puesto de reparto durante las vacaciones)My paperwork for the holiday delivery position
    Please send my resume for the new accounting job in seattle. (Envíe mi currículum vítae para el nuevo trabajo contable en Seattle)Please send my resume for the new accounting job in seattle
    Submit resume for engineering position (Enviar el currículum vítae para el puesto de ingeniero)Submit resume for engineering position
    This is my c.v.This is my c.v. for post 234123 in Tampa. (Este es mi currículum vítae para el puesto 234123 en Tampa).for post 234123 in Tampa.

Volver a entrenarTrain again

  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ó

Volver a publicarPublish again

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.

Volver a obtener la predicción de la intenciónGet intent prediction again

  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. En la nueva ventana del explorador, escriba Can I submit my resume for job 235986 al final de la dirección URL.In the new browser window, enter Can I submit my resume for job 235986 at the end of the URL.

    {
      "query": "Can I submit my resume for job 235986",
      "topScoringIntent": {
        "intent": "ApplyForJob",
        "score": 0.9634406
      },
      "intents": [
        {
          "intent": "ApplyForJob",
          "score": 0.9634406
        },
        {
          "intent": "GetJobInformation",
          "score": 0.0171300638
        },
        {
          "intent": "None",
          "score": 0.00670867041
        }
      ],
      "entities": []
    }
    

    Los resultados incluyen la nueva intención ApplyForJob, así como las intenciones existentes.The results include the new intent ApplyForJob as well as the existing intents.

Pasos siguientes de la aplicación clienteClient-application next steps

Después de que LUIS devuelva la respuesta JSON, LUIS termina con esta solicitud.After LUIS returns the JSON response, LUIS is done with this request. LUIS no proporciona respuestas a expresiones de usuario, solo identifica el tipo de información que se solicita en lenguaje natural.LUIS doesn't provide answers to user utterances, it only identifies what type of information is being asked for in natural language. La aplicación cliente permite el seguimiento de la conversación, como una instancia de Azure Bot.The conversational follow-up is provided by the client application such as an Azure Bot.

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 se creó la aplicación de recursos humanos (RRHH), se crearon dos intenciones, se agregaron expresiones de ejemplo a cada intención, se agregaron expresiones de ejemplo a la intención None (Ninguna), se entrenó, se publicó y se probó en el punto de conexión.This tutorial created the Human Resources (HR) app, created 2 intents, added example utterances to each intent, added example utterances to the None intent, trained, published, and tested at the endpoint. Estos son los pasos básicos de la creación de un modelo de LUIS.These are the basic steps of building a LUIS model.

Continúe con esta aplicación y agregue una lista sencilla de entidades y frases.Continue with this app, adding a simple entity and phrase list.

Add prebuilt intents and entities to this app (Incorporación de entidades e intenciones creadas previamente a esta aplicación)Add prebuilt intents and entities to this app