빠른 시작: C#을 사용하여 의도 가져오기Quickstart: Get intent using C#

이 빠른 시작에서는 사용 가능한 공용 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

참고

전체 솔루션은 cognitive-services-language-understanding GitHub 리포지토리에서 사용할 수 있습니다.The complete solution is available from the cognitive-services-language-understanding GitHub repository.

LUIS 키 가져오기Get 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. 오른쪽 맨 위 메뉴에서 이름을 선택한 후 설정을 선택합니다.Select your name in the top right menu, then select Settings.

    LUIS 사용자 설정 메뉴 액세스

  3. 제작 키 값을 복사합니다.Copy the value of the Authoring key. 이는 빠른 시작의 뒷부분에서 사용할 예정입니다.You will use it later in the quickstart.

    Language Understanding(LUIS) 사용자 설정 스크린샷Screenshot of Language Understanding (LUIS) user settings

    제작 키는 제작 API에 무료 무제한 요청을 허용하고, 예측 엔드포인트 API에 모든 LUIS 앱당 매월 최대 1000개의 쿼리를 허용합니다.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. 공용 앱을 쿼리하려면 자체 키와 앱 ID가 필요합니다.In order to query a public app, you need your own key and the app ID. 1단계에서 공용 IoT 앱 ID df67dcdb-c37d-46af-88e1-8b97951ca1c2가 URL의 일부로 제공됩니다.The public IoT app ID, df67dcdb-c37d-46af-88e1-8b97951ca1c2, is provided as part of the URL in step one.

GET 엔드포인트 요청의 URL 형식은 다음과 같습니다.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. 공용 IoT 앱의 엔드포인트는 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 형식입니다.The 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을 붙여넣고 Enter 키를 누릅니다.Paste the URL into a browser window and press Enter. LUIS에서 HomeAutomation.TurnOn 의도(최고 의도)와 bedroom 값이 있는 HomeAutomation.Room 엔터티를 검색한다고 나타내는 JSON 결과가 브라우저에 표시됩니다.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. URL에서 q= 매개 변수 값을 turn off the living room light로 변경하고 Enter 키를 누릅니다.Change the value of the q= parameter in the URL to turn off the living room light, and press Enter. 이제 결과에는 LUIS에서 HomeAutomation.TurnOff 의도(최고 의도) 및 living room 값이 있는 HomeAutomation.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

C#을 사용하여 예측 엔드포인트 GET API를 쿼리하여 이전 섹션의 브라우저 창에 표시된 것과 동일한 결과를 냅니다.Use C# to query the prediction endpoint GET API to get the same results as you saw in the browser window in the previous section.

  1. Visual Studio에서 새 콘솔 애플리케이션을 만듭니다.Create a new console application in Visual Studio.

    Visual Studio에서 새 콘솔 애플리케이션 만들기

  2. Visual Studio 프로젝트의 솔루션 탐색기에서 참조 추가를 선택한 다음, 어셈블리 탭에서 System.Web을 선택합니다.In the Visual Studio project, in the Solutions Explorer, select Add reference, then select System.Web from the Assemblies tab.

    참조 추가를 선택한 다음, 어셈블리 탭에서 System.Web 선택

  3. Program.cs를 다음 코드로 덮어씁니다.Overwrite Program.cs with the following code:

    using System;
    using System.Net.Http;
    using System.Web;
    
    /*
    
        You can use the authoring key instead of the endpoint key. 
        The authoring key allows 1000 endpoint queries a month.
    
    */
    
    namespace ConsoleLuisEndpointSample
    {
        class Program
        {
            static void Main(string[] args)
            {
                MakeRequest();
                Console.WriteLine("Hit ENTER to exit...");
                Console.ReadLine();
            }
    
            static async void MakeRequest()
            {
                var client = new HttpClient();
                var queryString = HttpUtility.ParseQueryString(string.Empty);
    
                // This app ID is for a public sample app that recognizes requests to turn on and turn off lights
                var luisAppId = "df67dcdb-c37d-46af-88e1-8b97951ca1c2";
                var endpointKey = "YOUR_KEY";
    
                // The request header contains your subscription key
                client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", endpointKey);
    
                // The "q" parameter contains the utterance to send to LUIS
                queryString["q"] = "turn on the left light";
    
                // These optional request parameters are set to their default values
                queryString["timezoneOffset"] = "0";
                queryString["verbose"] = "false";
                queryString["spellCheck"] = "false";
                queryString["staging"] = "false";
    
                var endpointUri = "https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/" + luisAppId + "?" + queryString;
                var response = await client.GetAsync(endpointUri);
    
                var strResponseContent = await response.Content.ReadAsStringAsync();
                
                // Display the JSON result from LUIS
                Console.WriteLine(strResponseContent.ToString());
            }
        }
    }
    
  4. YOUR_KEY 값을 LUIS 키로 대체합니다.Replace the value of YOUR_KEY with your LUIS key.

  5. 콘솔 애플리케이션을 작성하고 실행합니다.Build and run the console application. 브라우저 창에서 앞서 본 것과 동일한 JSON을 표시합니다.It displays the same JSON that you saw earlier in the browser window.

    콘솔 창에서는 LUIS의 JSON 결과를 표시합니다.

LUIS 키LUIS 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 Portal에서 Language Understanding 리소스를 만들어 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

이 빠른 시작을 마치면 Visual Studio를 닫고 프로젝트 디렉터리를 파일 시스템에서 제거하세요.When you are finished with this quickstart, close the Visual Studio project and remove the project directory from the file system.

다음 단계Next steps