本文會示範如何建置使用 Microsoft 辨識服務文字分析 API 的基本應用程式來分析文字。 我們會示範如何設定文字分析 API,並將其連接到文字分析連接器。 接著會示範如何建立可呼叫 API 的應用程式。

請注意:如果對於在 PowerApps 中建置應用程式還不熟悉,建議您在深入本文前先閱讀從頭開始建立應用程式

Microsoft 辨識服務簡介

Microsoft 辨識服務是一組 API、SDK 和服務,可讓您的應用程式更加聰明、吸引人且可供探索。 這些服務可讓您輕鬆將智慧型功能新增到應用程式中,例如情緒和影像偵測;臉部、語音和視覺辨識;以及語音和語言理解。

本文會著重在「語言理解」,並搭配文字分析 API。 此 API 讓您能從文字偵測人氣、關鍵字詞、主題及語言。 馬上開始試用 API 示範,然後註冊預覽版本。

試用文字分析 API

此 API 擁有線上示範 – 您可以查看它如何運作,並查看服務傳回的 JSON。

  1. 移至文字分析 API 頁面。

  2. 觀看實作區段中,使用範例文字,或輸入您自己的文字。 然後按一下或點選 [分析]。

    文字分析 API 示範

  3. 頁面會在 [已分析的文字] 索引標籤上顯示格式化結果,以及在 [JSON] 索引標籤上顯示 JSON 回應。 JSON 可代表資料 - 在此案例中代表由文字分析 API 所傳回的資料。

註冊文字分析 API

API 提供免費預覽,其與 Azure 訂用帳戶相關聯。 可透過 Azure 入口網站來管理 API。

  1. 如果您還沒有 Azure 訂用帳戶,註冊免費訂用帳戶

  2. 登入您的 Azure 帳戶。

  3. 移至 Azure 入口網站的 [建立辨識服務] 刀鋒視窗

  4. 輸入文字分析 API 的資訊,如下圖。 選取 F0 定價層。

    建立文字分析 API

  5. 在左下角,按一下或點選 [建立]。

  6. 在 [儀表板] 上,按一下或點選剛才建立的 API。

    Azure 儀表板

  7. 按一下或點選 [金鑰]。

    Azure 功能表

  8. 在畫面右側複製其中一個金鑰。 稍後建立 API 連接時,會使用此金鑰。

    API 金鑰

建置應用程式

既然已啟動並執行文字分析 API,我們就可以從 PowerApps 進行連線,並建置呼叫 API 的應用程式。 這是單一畫面應用程式,其提供的功能類似在文字分析 API 頁面上的示範。 馬上開始建置!

建立應用程式並新增連接

首先,我們會建立空白的手機應用程式,並新增與文字分析連接器的連線。 有關這些工作的詳細資訊,請參閱從頭開始建立應用程式在 PowerApps 中管理連線

  1. 在 PowerApps Studio 中,按一下或點選 [檔案] > [新增],然後在 [空白應用程式] 底下按一下或點選 [手機配置]。

    空白應用程式 - 手機配置

  2. 在中間窗格,按一下或點選 [連線到資料]。

  3. 在右窗格中,按一下或點選 [新增連接] > [文字分析]。

    PowerApps 資料來源

  4. 將金鑰複製到 [帳戶金鑰],然後按一下或點選 [建立]。

    文字分析連接器

將控制項新增至應用程式

建立應用程式的下一步是新增所有的控制項。 通常在建置應用程式時,會將公式新增至控制項,但在此情況下我們先著重在控制項上,在下一節中再新增幾個公式。 下圖顯示應用程式及所有控制項。

完成的應用程式

按下列步驟建立此畫面。 如果已指定控制項名稱,則該名稱會在下一節使用於公式中。

  1. 在 [首頁] 索引標籤上,按一下或點選 [新增畫面],然後按一下或點選 [可捲動的畫面]。

  2. 在 [畫面 2] 上,選取 [標題] 並將它變更為 [文字分析]。

  3. 新增簡介文字的標籤控制項。

  4. 新增文字輸入控制項,以便輸入要分析的文字。 將控制項命名為 tiTextToAnalyze。 應用程式現在看起來應該類似下列映像。

    應用程式與標題、子標題和文字輸入

  5. 新增三個核取方塊控制項,以便選擇要執行哪些 API 作業。 將控制項命名為 chkLanguagechkPhraseschkSentiment

  6. 新增按鈕,以便在選取要執行哪些作業後呼叫 API。 應用程式現在看起來應該類似下列映像。

    應用程式與核取方塊和按鈕

  7. 新增三個標籤控制項。 前兩個會保留語言和人氣 API 呼叫的結果;第三個只是畫面底部的資源庫簡介。

  8. 新增空白垂直資源庫控制項,然後將標籤控制項新增到資源庫。 資源庫會保留關鍵字詞 API 呼叫的結果。 應用程式現在看起來應該類似下列映像。

    應用程式與標籤和資源庫

  9. 在左窗格中,選取 [畫面 1] > 省略符號 ([...]) > 刪除

我們將應用程式保持在簡單的狀態,以專注於呼叫文字分析 API,但您可以新增項目,例如邏輯,以根據選取的核取方塊來顯示和隱藏控制項,或如果使用者未選取任何選項時的錯誤處理,依此類推。

新增邏輯以進行正確的 API 呼叫

好,我們有美觀的應用程式,但它還不會執行任何動作。 我們很快會修正這個問題。 但在深入了解細節之前,要先了解應用程式所遵循的模式:

  1. 應用程式會根據在應用程式中所選取的核取方塊來進行特定的 API 呼叫。 按一下或點選 [分析文字] 時,應用程式會進行 1、2 或 3 的 API 呼叫。

  2. API 傳回的資料會儲存在三個不同的集合中:languageCollectsentimentCollectphrasesCollect

  3. 其中兩個標籤的文字屬性和資源庫的項目屬性,會根據三個集合的內容來更新。

有了此背景,讓我們來為按鈕的 OnSelect 屬性新增公式。 這是一切奇妙的開始。

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)

)

以下讓我們細分來看:

  • If 陳述式很簡單 – 如果選取了特定的核取方塊,就為該作業進行 API 呼叫。
  • 在每個呼叫中,指定適當的參數:
    • 在這三個呼叫中,指定 tiTextToAnalyze.Text 為輸入文字。
    • DetectLanguage() 中,將 numberOfLanguagesToDetect 硬式編碼為 1,但我們可以根據應用程式中某些邏輯來傳遞此參數。
    • KeyPhrases()DetectSentiment() 中,將語言硬式編碼為「en」,但我們可以根據應用程式中某些邏輯來傳遞此參數。 例如,我們可以先偵測語言,然後根據 DetectLanguage() 傳回的內容設定此參數。
  • 針對進行的每個呼叫,將結果新增到適當的集合中:
    • 針對 languageCollect,新增在文字中識別出的語言名稱
    • 針對 phrasesCollect,新增在文字中識別出的關鍵字詞
    • 針對 sentimentCollect,新增文字的人氣分數,其為 0-1 的值,1 代表 100% 正值。

顯示 API 呼叫的結果

若要顯示 API 呼叫的結果,請參考每個控制項中適當的集合:

  1. 將語言標籤的 Text 屬性設定為︰"The language detected is " & First(languageCollect).name

    First() 函式會傳回 languageCollect 中的第一筆記錄 (此案例中也是唯一一筆),且會顯示與該記錄相關聯的名稱 (唯一的欄位)。

  2. 將人氣標籤的 Text 屬性設定為︰"The sentiment score is " & Round(First(sentimentCollect.Value).Value, 3)\*100 & "% positive."

    此公式也會使用 First() 函式,從第一筆也是唯一一筆記錄取得 (0-1),然後將其格式化為百分比。

  3. 將關鍵字詞資源庫的 Items 屬性設定為︰phrasesCollect

    現在使用的是資源庫,不需要 First() 函式來擷取單一值。 我們參考集合,且資源庫會將關鍵字詞顯示為清單。

執行應用程式

既然應用程式已完成,讓我們執行它以查看其運作如何。 在下圖中,三個選項皆已選取,且文字與文字分析 API 頁面上的預設文字相同。

完成的應用程式與資料

如果比較應用程式的輸出和本文開頭的文字分析 API 頁面,會發現得到相同的結果。

希望您現在已更加瞭解文字分析 API,且享受觀看將其整合到應用程式中的方式。 讓我們知道是否有其他辨識服務 (或其他一般服務) 是您希望我們在文章中探討的。 如同往常,請在留言中留下意見反應和任何問題。