PowerApps에서 Cognitive Services 사용Use Cognitive Services in PowerApps

이 문서는 Microsoft Cognitive Services Text Analytics API를 사용하여 텍스트를 분석하는 기본 앱 빌드 방법을 보여줍니다.This article shows you how to build a basic app that uses the Microsoft Cognitive Services Text Analytics API to analyze text. Text Analytics API를 설정하고 Text Analytics 커넥터와 연결하는 방식을 보여주고,We'll show you how to set up the Text Analytics API, and connect to it with the Text Analytics connector. 그런 다음 API를 호출하는 앱을 빌드하는 방법을 보여주려고 합니다.Then we'll show you how to create an app that calls the API.

참고

PowerApps에서 처음으로 앱을 빌드하는 경우에는 이 문서를 살펴 보기 전에 앱을 처음부터 만들기를 읽어보는 것이 좋습니다.If you are new to building apps in PowerApps, we recommend reading Create an app from scratch before diving into this article.

Microsoft Cognitive Services 소개Introduction to Microsoft Cognitive Services

Microsoft Cognitive Services는 사용자의 응용 프로그램을 더 지능적이고 유용하며 검색 가능하게 만드는 데 사용하는 API, SDK 및 서비스 집합입니다.Microsoft Cognitive Services are a set of APIs, SDKs, and services available to make your applications more intelligent, engaging, and discoverable. 이 서비스를 통해 사용자는 지능형 기능(예: 감정 및 비디오 감지, 안면, 음성 및 시각 인식, 음성 및 언어 이해)을 응용 프로그램에 쉽게 추가할 수 있습니다.These services enable you to easily add intelligent features – such as emotion and video detection; facial, speech and vision recognition; and speech and language understanding – into your applications.

이 문서에서는 Text Analytics API에 사용할 수 있는 "언어 이해"에 초점을 맞추려고 합니다.We'll focus on "language understanding" for this article, working with the Text Analytics API. 이 API를 통해 사용자는 텍스트에서 감정, 핵심 구, 토픽 및 언어를 검색할 수 있습니다.This API enables you to detect sentiment, key phrases, topics, and language from your text. API 데모를 사용해 본 다음, 미리 보기 버전을 등록하여 시작해 보겠습니다.Let's get started by trying out a demo of the API, then signing up for a preview version.

Text Analytics API 사용해 보기Try out the Text Analytics API

API에는 온라인 데모가 있어 작동 방식을 보고 서비스에서 반환하는 JSON을 살펴볼 수 있습니다.The API has an online demo – you can see how it works, and look at the JSON that the service returns.

  1. Text Analytics API 페이지로 이동합니다.Go to the Text Analytics API page.

  2. 실제 동작 확인 섹션에서 예제 텍스트를 사용하거나 직접 텍스트를 입력합니다.In the See it in action section, use the example text, or enter your own text. 그런 다음 분석을 클릭하거나 탭합니다.Then click or tap Analyze.

    Text Analytics API 데모

  3. 이 페이지는 분석된 텍스트 탭의 형식이 지정된 결과와 JSON 탭의 JSON 응답을 보여줍니다. JSON은 데이터, 즉 이 경우에는 Text Analytics API에서 반환한 데이터를 나타내는 방식입니다.The page shows formatted results on the Analyzed text tab, and the JSON response on the JSON tab. JSON is a way to represent data - in this case, data returned by the Text Analytics API.

Text Analytics API를 등록합니다.Sign up for the Text Analytics API

API는 무료 미리 보기로 사용 가능하며 Azure 구독과 연결되어 있습니다.The API is available as a free preview, and it is associated with an Azure subscription. Azure Portal을 통해 API를 관리합니다.You manage the API through the Azure portal.

  1. Azure 구독이 아직 없는 경우 무료 구독에 등록합니다.If you don't already have an Azure subscription, sign up for a free subscription.

  2. Azure 계정에 로그인합니다.Sign in to your Azure account.

  3. Azure Portal에서 Cognitive Services 블레이드 만들기로 이동합니다.Go to the Create Cognitive Services blade in the Azure portal.

  4. 다음 이미지에서와 같이 Text Analytics API에 대한 정보를 입력합니다.Enter information for the Text Analytics API, like in the following image. F0(무료) 가격 책정 계층을 선택합니다.Select the F0 (free) pricing tier.

    Text Analytics API 만들기

  5. 왼쪽 아래 모서리에서 만들기를 클릭하거나 탭합니다.In the lower-left corner, click or tap Create.

  6. 대시보드에서 방금 사용자가 만든 API를 클릭하거나 탭합니다.On the Dashboard, click or tap the API that you just created.

    Azure 대시보드

  7. 를 클릭하거나 탭합니다.Click or tap Keys.

    Azure 메뉴

  8. 화면 오른쪽에 있는 키 중 하나를 복사합니다.Copy one of the keys on the right of the screen. API에 대한 연결을 만들 때 나중에 이 키를 사용합니다.You use this key later when you create a connection to the API.

    API 키

앱 빌드Build the app

이제 Text Analytics API가 실행되므로 PowerApps에서 연결하여 API를 호출하는 앱을 빌드할 수 있습니다.Now that you have the Text Analytics API up and running, you connect to it from PowerApps, and build an app that calls the API. Text Analytics API 페이지의 데모와 유사한 기능을 제공하는 단일 화면 앱입니다.This is a single screen app that provides functionality similar to the demo on the Text Analytics API page. 이제 빌드를 시작해 보겠습니다!Let's get started on building this!

앱 만들기 및 연결 추가Create the app and add a connection

먼저, 빈 휴대폰 앱을 만들고 Text Analytics 커넥터와의 연결을 추가하겠습니다.First, you create a blank phone app and add a connection with the Text Analytics connector. 이러한 작업에 대해 추가 정보가 필요할 경우 처음부터 앱 만들기PowerApps에서 연결 관리를 참조하세요.If you need more information about these tasks, see Create an app from scratch and Manage your connections in PowerApps.

  1. web.powerapps.com에서 비어 있는 상태에서 시작 > Phone 앱 아이콘(휴대폰) > 이 앱 만들기를 선택합니다.In web.powerapps.com, choose Start from blank > Phone app icon (phone) > Make this app.

    비어 있는 상태에서 시작

  2. PowerApps Studio의 가운데 창에서 데이터에 연결을 선택합니다.In the middle pane of the PowerApps Studio, choose connect to data.

  3. 데이터 창에서 새 연결 > 텍스트 분석을 클릭하거나 탭합니다.On the Data panel, click or tap New connection > Text Analytics.

  4. 키를 계정 키에 복사한 다음, 만들기를 클릭하거나 탭합니다.Copy your key into Account Key, then click or tap Create.

    Text Analytics 커넥터

앱에 컨트롤 추가Add controls to the app

앱을 만드는 다음 단계는 모든 컨트롤을 추가하는 것입니다.The next step in creating the app is to add all the controls. 일반적으로 앱을 빌드할 때 저는 진행하면서 컨트롤에 수식을 추가하지만, 이 경우에서는 먼저 컨트롤에 집중한 후 다음 섹션에서 몇 개의 수식을 추가하려고 합니다.Normally when I build apps, I add formulas to the controls as I go, but in this case we'll focus on the controls first, then add a few formulas in the next section. 다음 이미지는 모든 컨트롤이 포함된 앱을 보여줍니다.The following image shows the app with all the controls.

완료된 앱

아래 단계에 따라 이 화면을 만듭니다.Follow the steps below to create this screen. 컨트롤 이름이 지정되면 해당 이름은 다음 섹션의 수식에 사용됩니다.If a control name is specified, that name is used in a formula in the next section.

  1. 탭에서 새 화면, 스크롤 가능 화면을 차례로 클릭하거나 탭합니다.On the Home tab, click or tap New Screen, then Scrollable screen.

  2. Screen2에서 [Title]을 선택하고 텍스트 분석으로 변경합니다.On Screen2, select [Title] and change it to Text Analysis.

  3. 소개 텍스트에 대한 레이블 컨트롤을 추가합니다.Add a Label control for the introductory text.

  4. 분석할 텍스트를 입력할 수 있도록 텍스트 입력 컨트롤을 추가합니다.Add a Text input control, so you can enter text to analyze. 컨트롤 이름을 tiTextToAnalyze로 변경합니다.Name the control tiTextToAnalyze. 앱은 이제 다음 이미지와 같습니다.The app should now look like the following image.

    제목, 부제목 및 텍스트 입력이 있는 앱

  5. 수행할 API 작업을 선택할 수 있도록 세 개의 확인란 컨트롤을 추가합니다.Add three Check box controls, so you can choose which API operations to perform. 컨트롤 이름을 chkLanguage, chkPhraseschkSentiment로 지정합니다.Name the controls chkLanguage, chkPhrases, and chkSentiment.

  6. 수행할 작업을 선택한 후 API를 호출할 수 있도록 단추를 추가합니다.Add a button, so you can call the API after selecting which operations to perform. 앱은 이제 다음 이미지와 같습니다.The app should now look like the following image.

    확인란과 단추가 있는 앱

  7. 세 개의 레이블 컨트롤을 추가합니다.Add three Label controls. 처음 두 개는 언어와 감정 API 호출의 결과를 포함하고 세 번째는 화면 맨 아래에 있는 갤러리에 대한 소개에 불과합니다.The first two hold results from the language and sentiment API calls; the third is just an introduction for the gallery at the bottom of the screen.

  8. 비어 있는 세로 갤러리 컨트롤을 추가한 다음 레이블 컨트롤을 갤러리에 추가합니다.Add a Blank vertical gallery control, then add a Label control to the gallery. 이 갤러리에는 핵심 문구 API 호출의 결과가 저장됩니다.The gallery holds results from the key phrases API call. 앱은 이제 다음 이미지와 같습니다.The app should now look like the following image.

    갤러리 및 레이블이 있는 앱

  9. 왼쪽 창에서 Screen1 > 줄임표(. . .) > 삭제를 선택합니다(앱에는 이 화면이 필요하지 않음).In the left pane, select Screen1 > ellipsis (. . .) > Delete (you don't need this screen for the app).

Text Analytics API 호출에 집중하기 위해 이 앱을 단순하게 유지하고 있지만, 선택한 확인란에 따라 컨트롤을 표시하고 숨기는 논리, 사용자가 옵션을 선택하지 않을 경우 오류 처리 등을 추가할 수 있습니다.We're keeping this app simple to focus on calling the Text Analytics API, but you could add things - like logic to show and hide controls based on the check boxes selected, error handling if the user doesn't select any options, and so on.

올바른 API 호출을 하도록 논리 추가Add logic to make the right API calls

자, 좋아 보이지만 아직 아무것도 수행하지 않는 앱이 있습니다.OK, you have a nice-looking app, but it doesn't do anything yet. 잠시 후 해결해 보겠습니다.You'll fix that in a moment. 하지만 세부 정보를 살펴 보기 전에 앱이 따르는 패턴을 알아보겠습니다.But before we dive into the details, let's understand the pattern that the app follows:

  1. 이 앱은 앱에서 선택한 확인란에 따라 특정 API 호출을 합니다.The app makes specific API calls based on the check boxes selected in the app. 텍스트 분석을 클릭하거나 탭하면 이 앱은 1, 2 또는 3개의 API 호출을 수행합니다.When you click or tap Analyze text, the app makes 1, 2, or 3 API calls.

  2. 이 앱은 API에서 반환하는 데이터를 세 가지 다른 컬렉션(예: languageCollect, sentimentCollectphrasesCollect)에 저장합니다.The app stores data that the API returns in three different collections: languageCollect, sentimentCollect, and phrasesCollect.

  3. 이 앱은 세 개의 컬렉션에 있는 항목을 기반으로 두 개의 레이블에 대한 Text 속성과 갤러리의 Items 속성을 업데이트합니다.The app updates the Text property for two of the labels, and the Items property for the gallery, based on what's in the three collections.

이러한 배경을 가지고 단추의 OnSelect 속성에 대한 수식을 추가해 보겠습니다.With that background, let's add the formula for the OnSelect property of the button. 마술과 같은 일이 벌어집니다.This is where all the magic happens.

If(chkLanguage.Value=true,

        ClearCollect(languageCollect, TextAnalytics.DetectLanguage({numberOfLanguagesToDetect:1, text:tiTextToAnalyze.Text}).detectedLanguages.name)

);

If(chkPhrases.Value=true,

        ClearCollect(phrasesCollect, TextAnalytics.KeyPhrases({language:"en", text:tiTextToAnalyze.Text}).keyPhrases)

);

If(chkSentiment.Value=true,

        ClearCollect(sentimentCollect, TextAnalytics.DetectSentiment({language:"en", text:tiTextToAnalyze.Text}).score)

)

여기서 약간 자세히 살펴 보겠습니다.There's a bit going on here, so let's break it down:

  • If 명령문은 직관적입니다. 특정 확인란을 선택한 경우 해당 작업에 대해 API 호출을 합니다.The If statements are straightforward – if a specific check box is selected, make the API call for that operation.

  • 각 호출 내에서 적합한 매개 변수를 지정합니다.Within each call, specify the appropriate parameters:

    • 세 개의 호출 모두에서 tiTextToAnalyze.Text를 입력 텍스트로 지정합니다.In all three calls, you specify tiTextToAnalyze.Text as the input text.

    • DetectLanguage()에서 numberOfLanguagesToDetect는 1로 하드 코딩되지만, 앱의 일부 논리에 따라 이 매개 변수를 전달할 수 있습니다.In DetectLanguage(), numberOfLanguagesToDetect is hard-coded as 1, but you could pass this parameter based on some logic in the app.

    • KeyPhrases()DetectSentiment()에서 언어는 "en"으로 하드 코딩되지만, 앱의 일부 논리를 기반으로 이 매개 변수를 전달할 수 있습니다.In KeyPhrases() and DetectSentiment(),language is hard-coded as "en", but you could pass this parameter based on some logic in the app. 예를 들어 언어를 먼저 감지한 다음, DetectLanguage()에서 반환하는 내용에 따라 이 매개 변수를 설정할 수 있습니다.For example, you could detect the language first, then set this parameter based on what DetectLanguage() returns.

  • 각 호출에 대해 결과를 적합한 컬렉션에 추가합니다.For each call that is made, add the results to the appropriate collection:

    • languageCollect의 경우 텍스트에서 식별된 언어의 이름을 추가합니다.For languageCollect, add the name of the language that was identified in the text.

    • phrasesCollect의 경우 텍스트에서 식별된 keyPhrases를 추가합니다.For phrasesCollect, add the keyPhrases that were identified in the text.

    • sentimentCollect의 경우 텍스트에 대한 감정 점수를 0-1의 값으로 추가합니다(여기서 1은 100% 긍정임).For sentimentCollect, add the sentiment score for the text, which is a value of 0-1, with 1 being 100% positive.

API 호출의 결과 표시Display the results of the API calls

API 호출의 결과를 표시하려면 각 컨트롤에서 적절한 컬렉션을 참조합니다.To display the results of the API calls, reference the appropriate collection in each control:

  1. 언어 레이블의 Text 속성을 다음으로 설정합니다: "The language detected is " & First(languageCollect).name.Set the Text property of the language label to: "The language detected is " & First(languageCollect).name.

    First() 함수는 languageCollect에서 첫 번째(그리고 이 사례에서 유일한) 레코드를 반환하며 해당 레코드와 연결된 이름(유일한 필드)을 표시합니다.The First() function returns the first (and in this case only) record in languageCollect, and the app displays the name (the only field) associated with that record.

  2. 감정 레이블의 Text 속성을 다음으로 설정합니다: "The sentiment score is " & Round(First(sentimentCollect.Value).Value, 3)\*100 & "% positive.".Set the Text property of the sentiment label to: "The sentiment score is " & Round(First(sentimentCollect.Value).Value, 3)\*100 & "% positive.".

    또한 이 수식은 First() 함수를 사용하고 첫 번째이자 유일한 레코드에서 (0-1)을 가져온 후 백분율로 형식을 지정합니다.This formula also uses the First() function, gets the Value (0-1) from the first and only record, then formats it as a percentage.

  3. 핵심 문구 갤러리의 Items 속성을 다음으로 설정합니다: phrasesCollect.Set the Items property of the key phrases gallery to: phrasesCollect.

    이제 갤러리를 사용하므로 단일 값을 추출하기 위해 First() 함수가 필요하지 않습니다.You're now working with a gallery so you don't need the First() function to extract a single value. 컬렉션을 참조하고, 갤러리는 핵심 구를 목록으로 표시합니다.You reference the collection, and the gallery displays the key phrases as a list.

앱 실행Run the app

이제 앱이 완료되었으니 앱을 실행하여 어떻게 작동하는지 살펴봅니다. 오른쪽 상단의 실행 버튼을 클릭하거나 탭합니다.Now that the app is finished, run it to see how it works: click or tap the run button in the upper right corner 앱 실행줄임표(...)를 클릭한 다음. 다음 이미지에서는 모두 세 개의 옵션이 선택되었으며 텍스트는 Text Analytics API 페이지의 기본 텍스트와 동일합니다.In the following image, all three options are selected, and the text is the same as the default text on the Text Analytics API page.

데이터가 있는 완성된 앱

이 문서의 시작 부분에서 Text Analytics API 페이지와 이 앱의 출력을 비교할 경우 같은 결과가 동일한 것을 볼 수 있습니다.If you compare the output of this app to the Text Analytics API page at the beginning of this article, you see that the results are the same.

이제 Text Analytics API에 대해 좀 더 이해하고 앱으로 통합하는 방법을 확인하셨길 바랍니다.We hope you now understand a little more about the Text Analytics API, and you've enjoyed seeing how to incorporate it into an app. 문서에서 집중적으로 다뤘으면 하는 다른 Cognitive Services(또는 일반적으로 기타 서비스)가 있다면 저희에게 알려주세요.Let us know if there are other Cognitive Services (or other services in general) that you would like us to focus on in our articles. 늘 그렇듯이 의견에 피드백과 궁금한 점을 남겨 주시기 바랍니다.As always, please leave feedback and any questions in the comments.