Краткое руководство. Получение намерения с использованием JavaQuickstart: Get intent using Java

Из этой статьи вы узнаете, как передать фразы в конечную точку LUIS и получить намерение и сущности.In this quickstart, pass utterances to a LUIS endpoint and get intent and entities back.

Из этого краткого руководства вы узнаете, как использовать общедоступное приложение LUIS для определения намерений пользователя в разговоре.In this quickstart, use an available public LUIS app to determine a user's intention from conversational text. Вы отправите намерение пользователя в виде текста в конечную точку прогнозирования HTTP для общедоступного приложения.Send the user's intention as text to the public app's HTTP prediction endpoint. В конечной точке LUIS применяет модель общедоступного приложения, чтобы проанализировать смысл текста на естественном языке, определить общее намерение и извлечь данные, релевантные для предметной области приложения.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.

В этом кратком руководстве используется REST API конечной точки.This quickstart uses the endpoint REST API. Дополнительные сведения см. в документации по API конечной точки.For more information, see the endpoint API documentation.

Для работы с этой статьей вам понадобится бесплатная учетная запись LUIS.For this article, you need a free LUIS account.

Предварительные требованияPrerequisites

  • JDK SE (комплект разработчика Java, выпуск "Стандартный");JDK SE (Java Development Kit, Standard Edition)
  • Visual Studio Code или привычный вам редактор кода;Visual Studio Code or your favorite IDE
  • идентификатор общедоступного приложения: df67dcdb-c37d-46af-88e1-8b97951ca1c2.Public app ID: df67dcdb-c37d-46af-88e1-8b97951ca1c2

Примечание

Полное решение доступно в репозитории GitHub cognitive-services-language-understanding.The complete solution is available from the cognitive-services-language-understanding GitHub repository.

Получение ключа LUISGet LUIS key

Для доступа к конечной точке прогнозирования предоставляется ключ этой конечной точки.Access to the prediction endpoint is provided with an endpoint key. В рамках этого краткого руководства используйте бесплатный начальный ключ, связанный с вашей учетной записи LUIS.For the purposes of this quickstart, use the free starter key associated with your LUIS account.

  1. Выполните вход, используя учетную запись LUIS.Sign in using your LUIS account.

    Снимок экрана со списком приложений Language Understanding (LUIS)Screenshot of Language Understanding (LUIS) app list

  2. В правом верхнем меню выберите свое имя и щелкните Settings (Параметры).Select your name in the top right menu, then select Settings.

    Доступ к меню параметров пользователя LUIS

  3. Скопируйте значение из поля Authoring key (Ключ разработки).Copy the value of the Authoring key. Он понадобится позже при работе с кратким руководством.You will use it later in the quickstart.

    Снимок экрана с параметрами пользователя (LUIS)Screenshot of Language Understanding (LUIS) user settings

    Ключ позволяет бесплатно получить неограниченное количество запросов к API для разработки и до 1000 запросов к API конечной точки прогнозирования в месяц для всех приложений 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.

Получение намерения с помощью браузераGet intent with browser

Чтобы понять, какие данные возвращает конечная точка прогнозирования LUIS, просмотрите результат прогнозирования в веб-браузере.To understand what a LUIS prediction endpoint returns, view a prediction result in a web browser. Чтобы отправить запрос к общедоступному приложению, потребуется свой ключ и идентификатор приложения.In order to query a public app, you need your own key and the app ID. Идентификатор общедоступного приложения Интернета вещей (df67dcdb-c37d-46af-88e1-8b97951ca1c2) предоставляется в URL-адресе на шаге 1.The public IoT app ID, df67dcdb-c37d-46af-88e1-8b97951ca1c2, is provided as part of the URL in step one.

Формат URL-адреса для запроса GET к конечной точке: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. Конечная точка общедоступного приложения Интернета вещей имеет следующий формат: 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

    Скопируйте URL-адрес и замените значение ключа на значение <YOUR_KEY>.Copy the URL and substitute your key for the value of <YOUR_KEY>.

  2. Вставьте URL-адрес в окне браузера и нажмите клавишу ВВОД.Paste the URL into a browser window and press Enter. В браузере отображается результат JSON, который указывает, что LUIS определяет намерение HomeAutomation.TurnOn как основное и сущность HomeAutomation.Room со значением 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. Измените значение параметра q= в URL-адресе на turn off the living room light и нажмите клавишу ВВОД.Change the value of the q= parameter in the URL to turn off the living room light, and press Enter. Теперь результат указывает, что приложение LUIS определило намерение HomeAutomation.TurnOff как основное и сущность HomeAutomation.Room со значением 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
        }
      ]
    }
    

Получение намерения программным способомGet intent programmatically

С помощью Java можно получить доступ к тем же результатам, которые вы уже видели в окне браузера на предыдущем шаге.You can use Java to access the same results you saw in the browser window in the previous step. Обязательно добавьте в проект библиотеки Apache.Be sure to add the Apache libraries to your project.

  1. Скопируйте следующий код для создания класса в файл с именем 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. Замените значение переменной YOUR-KEY ключом LUIS.Replace the value of the YOUR-KEY variable with your LUIS key.

  3. Замените путь к файлу и скомпилируйте программу Java из командной строки: 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. Замените путь к файлу и запустите приложение из командной строки: 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. Отобразится тот же результат JSON, который вы видели ранее в окне браузера.It displays the same JSON that you saw earlier in the browser window.

    Окно консоли, в котором отображается результат JSON из LUIS

Ключи LUISLUIS keys

Для удобства в рамках этого краткого руководства используется ключ разработки.This quickstart uses the authoring key for convenience. Этот ключ предназначен для разработки модели, но позволяет выполнить небольшое количество (1000) запросов к конечной точки.The key is primarily for authoring the model but does allow a small number (1000) of endpoint requests. Когда все будет готово для выполнения большего количества запросов к конечной точки в тестовой, промежуточной или рабочей среде, создайте ресурс для Интеллектуальной службы распознавания речи на портале Azure и назначьте его приложению LUIS на портале 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.

Очистка ресурсовClean up resources

Удалите файл Java или папку проекта.Delete the Java file/project folder.

Дополнительная информацияNext steps