Inicio rápido: Obtención de intención con JavaQuickstart: Get intent using Java

En esta guía de inicio rápido, pasará expresiones a un punto de conexión de LUIS y obtendrá entidades e intenciones.In this quickstart, pass utterances to a LUIS endpoint and get intent and entities back.

En esta guía de inicio rápido, usará una aplicación de LUIS disponible públicamente para determinar la intención de un usuario a partir de texto conversacional.In this quickstart, use an available public LUIS app to determine a user's intention from conversational text. Envíe la intención del usuario como texto al punto de conexión de predicción HTTP de la aplicación pública.Send the user's intention as text to the public app's HTTP prediction endpoint. En el punto de conexión, LUIS aplica el modelo de la aplicación pública para analizar el texto en lenguaje natural y lo que significa, y así determinar la intención general y extraer los datos que son pertinentes para el dominio del sujeto de la aplicación.At the endpoint, LUIS applies the public app's model to analyze the natural language text for meaning, determining overall intent and extracting data relevant to the app's subject domain.

En esta guía de inicio rápido se usa la API de REST del punto de conexión.This quickstart uses the endpoint REST API. Para más información, consulte la documentación de la API del punto de conexión.For more information, see the endpoint API documentation.

Para este artículo, necesita una cuenta gratuita de LUIS.For this article, you need a free LUIS account.

Requisitos previosPrerequisites

  • JDK SE (Kit de desarrollo de Java, Standard Edition)JDK SE (Java Development Kit, Standard Edition)
  • Visual Studio Code o su IDE favorito.Visual Studio Code or your favorite IDE
  • Identificador de la aplicación pública: df67dcdb-c37d-46af-88e1-8b97951ca1c2Public app ID: df67dcdb-c37d-46af-88e1-8b97951ca1c2

Nota

La solución completa está disponible en el repositorio cognitive-services-language-understanding de GitHub.The complete solution is available from the cognitive-services-language-understanding GitHub repository.

Obtención de la clave de LUISGet LUIS key

El acceso al punto de conexión de predicción se proporciona con una clave de punto de conexión.Access to the prediction endpoint is provided with an endpoint key. A los efectos de este tutorial de inicio rápido, use la clave de inicio gratuito asociada con su cuenta de LUIS.For the purposes of this quickstart, use the free starter key associated with your LUIS account.

  1. Inicie sesión con su cuenta de LUIS.Sign in using your LUIS account.

    Captura de pantalla de la lista de aplicaciones de Language Understanding (LUIS)Screenshot of Language Understanding (LUIS) app list

  2. Seleccione su nombre en el menú superior derecho y seleccione Configuración.Select your name in the top right menu, then select Settings.

    Acceso al menú de configuración de usuario de LUIS

  3. Copie el valor de Authoring key (Clave de creación).Copy the value of the Authoring key. La usará más adelante en esta guía de inicio rápido.You will use it later in the quickstart.

    Captura de pantalla de la configuración de usuario de Language Understanding (LUIS)Screenshot of Language Understanding (LUIS) user settings

    La clave de creación permite solicitudes ilimitadas gratuitas a la API de creación y hasta 1000 consultas a la API del punto de conexión de predicción por mes para todas las aplicaciones de LUIS.The authoring key allows free unlimited requests to the authoring API and up to 1000 queries to the prediction endpoint API per month for all your LUIS apps.

Obtención de la intención con el exploradorGet intent with browser

Para entender lo que devuelve un punto de conexión de predicción de LUIS, vea un resultado de predicción en un explorador web.To understand what a LUIS prediction endpoint returns, view a prediction result in a web browser. Para consultar una aplicación pública, necesita su propia clave y el id. de la aplicación.In order to query a public app, you need your own key and the app ID. El id. de la aplicación de IoT pública, df67dcdb-c37d-46af-88e1-8b97951ca1c2, se proporciona como parte de la dirección URL en el paso uno.The public IoT app ID, df67dcdb-c37d-46af-88e1-8b97951ca1c2, is provided as part of the URL in step one.

El formato de la dirección URL para una solicitud de punto de conexión GET es:The format of the URL for a GET endpoint request is:

https://<region>.api.cognitive.microsoft.com/luis/v2.0/apps/<appID>?subscription-key=<YOUR-KEY>&q=<user-utterance>
  1. El punto de conexión de la aplicación de IoT pública tiene este formato: https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/df67dcdb-c37d-46af-88e1-8b97951ca1c2?subscription-key=<YOUR_KEY>&q=turn on the bedroom lightThe endpoint of the public IoT app is in this format: https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/df67dcdb-c37d-46af-88e1-8b97951ca1c2?subscription-key=<YOUR_KEY>&q=turn on the bedroom light

    Copie la dirección URL y sustituya la clave por el valor de <YOUR_KEY>.Copy the URL and substitute your key for the value of <YOUR_KEY>.

  2. Pegue la dirección URL en una ventana del explorador y presione ENTRAR.Paste the URL into a browser window and press Enter. El explorador muestra el resultado JSON que indica que LUIS detecta la intención HomeAutomation.TurnOn como intención principal y la entidad HomeAutomation.Room con el valor bedroom.The browser displays a JSON result that indicates that LUIS detects the HomeAutomation.TurnOn intent as the top intent and the HomeAutomation.Room entity with the value bedroom.

    {
      "query": "turn on the bedroom light",
      "topScoringIntent": {
        "intent": "HomeAutomation.TurnOn",
        "score": 0.809439957
      },
      "entities": [
        {
          "entity": "bedroom",
          "type": "HomeAutomation.Room",
          "startIndex": 12,
          "endIndex": 18,
          "score": 0.8065475
        }
      ]
    }
    
  3. Cambie el valor del parámetro q= en la dirección URL por turn off the living room light y presione ENTRAR.Change the value of the q= parameter in the URL to turn off the living room light, and press Enter. Ahora, el resultado indica que LUIS ha detectado la intención HomeAutomation.TurnOff como intención principal y la entidad HomeAutomation.Room con el valor living room.The result now indicates that LUIS detected the HomeAutomation.TurnOff intent as the top intent and the HomeAutomation.Room entity with value living room.

    {
      "query": "turn off the living room light",
      "topScoringIntent": {
        "intent": "HomeAutomation.TurnOff",
        "score": 0.984057844
      },
      "entities": [
        {
          "entity": "living room",
          "type": "HomeAutomation.Room",
          "startIndex": 13,
          "endIndex": 23,
          "score": 0.9619945
        }
      ]
    }
    

Obtención de la intención mediante programaciónGet intent programmatically

Puede usar Java para acceder a los mismos resultados que vio en la ventana del explorador del paso anterior.You can use Java to access the same results you saw in the browser window in the previous step. No olvide agregar las bibliotecas de Apache a su proyecto.Be sure to add the Apache libraries to your project.

  1. Copie el código siguiente para crear una clase en un archivo llamado LuisGetRequest.java:Copy the following code to create a class in a file named LuisGetRequest.java:

    // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/downloads.cgi)
    
    // You need to add the following Apache HTTP client libraries to your project:
    // httpclient-4.5.3.jar
    // httpcore-4.4.11.jar
    // commons-logging-4.0.6.jar
    
    import java.net.URI;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.utils.URIBuilder;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    public class LuisGetRequest {
    
        public static void main(String[] args) 
        {
            HttpClient httpclient = HttpClients.createDefault();
    
            try
            {
    
                // The ID of a public sample LUIS app that recognizes intents for turning on and off lights
                String AppId = "df67dcdb-c37d-46af-88e1-8b97951ca1c2";
                
                // Add your endpoint key 
                // You can use the authoring key instead of the endpoint key. 
                // The authoring key allows 1000 endpoint queries a month.
                String EndpointKey = "YOUR-KEY";
    
                // Begin endpoint URL string building
                URIBuilder endpointURLbuilder = new URIBuilder("https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/" + AppId + "?");
    
                // query text
                endpointURLbuilder.setParameter("q", "turn on the left light");
    
                // create URL from string
                URI endpointURL = endpointURLbuilder.build();
    
                // create HTTP object from URL
                HttpGet request = new HttpGet(endpointURL);
    
                // set key to access LUIS endpoint
                request.setHeader("Ocp-Apim-Subscription-Key", EndpointKey);
    
                // access LUIS endpoint - analyze text
                HttpResponse response = httpclient.execute(request);
    
                // get response
                HttpEntity entity = response.getEntity();
    
    
                if (entity != null) 
                {
                    System.out.println(EntityUtils.toString(entity));
                }
            }
    
            catch (Exception e)
            {
                System.out.println(e.getMessage());
            }
        }
    }
    
  2. Sustituya el valor de la variable YOUR-KEY por su clave de LUIS.Replace the value of the YOUR-KEY variable with your LUIS key.

  3. Reemplace la ruta de acceso de archivo por la suya propia y compile el programa de Java desde una línea de comandos: javac -cp .;<FILE_PATH>\* LuisGetRequest.java.Replace with your file path and compile the java program from a command line: javac -cp .;<FILE_PATH>\* LuisGetRequest.java.

  4. Reemplace la ruta de acceso de archivo y ejecute la aplicación desde una línea de comandos: java -cp .;<FILE_PATH>\* LuisGetRequest.java.Replace with your file path and run the application from a command line: java -cp .;<FILE_PATH>\* LuisGetRequest.java. Muestra el mismo código JSON que vio anteriormente en la ventana del explorador.It displays the same JSON that you saw earlier in the browser window.

    Ventana de la consola que muestra el resultado JSON de LUIS

Claves de LUISLUIS keys

Por comodidad, en esta guía de inicio rápido se usa la clave de creación.This quickstart uses the authoring key for convenience. La clave se usa principalmente para la creación del modelo, pero permite un número pequeño (1000) de solicitudes de punto de conexión.The key is primarily for authoring the model but does allow a small number (1000) of endpoint requests. Cuando esté listo para obtener más solicitudes de punto de conexión en un entorno de prueba, ensayo o producción, cree un recurso de Language Understanding en Azure Portal y asígnelo a la aplicación de LUIS en el portal de LUIS.When you are ready for more endpoint requests in a test, stage or production environment, create a Language Understanding resource in the Azure portal and assign it to the LUIS app in the LUIS portal.

Limpieza de recursosClean up resources

Elimine la carpeta del archivo o proyecto de Java.Delete the Java file/project folder.

Pasos siguientesNext steps