Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps、C#, Asp .net Mvc、Azure、AI、Chatbot、Docker、Data Science

[chatbot + AI = 下一代操作模式][35]使用QnA Maker打造問答知識類型資料集服務

[chatbot + AI = 下一代操作模式][35]使用QnA Maker打造問答知識類型資料集服務.jpg
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 

在上一篇([34]賦予Chatbot用語音下指令以及翻譯的功能)介紹完了Translator Speech Api之後,基本上這個系列想要介紹的Cognitive Service基本服務都介紹完了,這些服務包含了文字圖片以及語音的智能處理。

在這系列接下來的部分將在介紹幾個Cognitive Service的進階服務、以及管理和維護這些Cognitive Service工具以及微軟在AI這方面還提供什麽樣的未來藍圖。

這篇先介紹知識庫類型的服務QnA Maker,看看這個服務能夠做什麽。

QnA Maker是一個什麽服務?

不管是什麽類型的網站,一般都會有類似FAQ的東西,或者類似知識庫的資料。對於使用者來説,最困難的是如何快速找到這些問題的答案。

QnA Maker就是這麽一個服務,可以透過提供網址或者是檔案的方式自動截取出一問一答的結構,并且也可以在web界面直接修改,下圖是整個服務的基本概念:

overview.png
介紹QnAMaker的作用,原圖來源:https://docs.microsoft.com/en-us/azure/cognitive-services/QnAMaker/overview/overview

可能上面的描述還是有點無感,舉個簡單例子,Office 365有個QA的畫面,想象左邊問答方式找到答案(可以看到還可以模糊比對)對比右邊要自己用肉眼看,那個更容易使用呢?

2018-08-18_20-22-10.png
QnA Maker vs 網頁式的QA,網頁連接:https://products.office.com/zh-tw/microsoft-office-for-home-and-school-faq

QnA Maker的結構

QnA Maker和其他Cognitive Service有點不一樣,其他的Cognitive Service基本上都是有一個建立好的Model或者自己建立一個Model,然後透過建立出一個Key來呼叫使用。

不過QnA Maker不是這麽一個東西,QnA Maker反而比較像是一個融合了多個Azure服務所建立出來的Solution,這個Solution主要目的就是把Knowledge類型的資料變成一個可以透過一問一答方式呈現的服務。

QnA Maker使用了幾個Azure服務:

  1. Azure Search - 用來儲存資料的空間
  2. App Service - API存在的地方 - 程式要呼叫QnA Maker的地方
  3. Application Insight - 分析用戶呼叫的方式
  4. 維護QnA Maker的Portal - 節省需要自己撰寫維護界面
architecture.png
整體使用到服務的架構圖

建立QnA Maker的服務

要使用QnA Maker需要有兩個前置條件:

  1. 登入到QnA Maker的Portal
  2. Azure的subscription

要登入到QnA Maker的Portal還蠻簡單,只需要到qnakmaker.ai,然後用微軟帳號登入即可。

要建立一個QnA Maker的服務要經歷過幾個動作:

  1. 在Azure建立出QnA Maker的服務
  2. 在QnA Maker Portal建立出一個Knowledge

登入到QnA Maker的Portal之後,按下上面的Create a knowledge base,這邊列出一步一步要做的事情:

chrome_2018-08-18_19-02-09.png
進入到建立knowledge base的流程

在Azure建立出QnA Maker的服務

在QnA Maker Portal裡面的Step 1,有個Create a QnA Service,這個按鈕會自動帶到Azure Portal建立QnA Maker的畫面, 也可以使用這個鏈接會自動進入到Azure建立QnA Maker的畫面。

建立畫面的欄位説明如下:

  1. Name - 好識別的名稱即可
  2. Management Pricing Tier - 這邊是QnA Maker Portal相關的規格。測試可以用免費的F0就好
  3. Resource Group - 放在好管理的即可
  4. Search Pricing Tier - 還記得QnA Maker會用到Azure Search,這個是哪個服務的規格。會牽扯到可以儲存的容量。測試用免費的即可
  5. Search Location - Azure Search放的位置
  6. App Name - 會建立出一個App Service,因此這個名稱會影響到呼叫的api host
  7. Website Location - App Service的位置
  8. App Insight - 這個用來分析使用者呼叫搜索的内容
2018-08-17_21-18-45.png
建立出QnA Maker

沒問題之後,按下Create,稍等一會,服務就會建立出來。總共會有5個服務建立出來:

chrome_2018-08-18_17-45-06.png
建立出來的服務

預設建立出來的App Service屬於S1等級,如果說只是要測試想省錢的話,記得把App Service Plan調整為免費等級的F1即可。

在QnA Maker Portal建立出一個Knowledge

進入QnA Maker的Portal之後,點Create a Knownledge base(也可以直接使用這個連接進入)

接下來會是一步一步的設定

STEP 1 Create a QnA service in Microsoft Azure.
這步在剛剛已經做完了。
STEP 2 Connect your QnA service to your KB.
這邊選擇剛剛建立出來的服務即可
chrome_2018-08-18_17-45-49.png
第2步
STEP 3 Name your KB.
這邊給一個好識別的名字即可
chrome_2018-08-18_17-46-14.png
第3步
STEP 4 Populate your KB.
QnA Maker的好處是除了手動key以外,也可以丟網頁連接或者檔案讓他自己截取。不過這個部分晚點介紹,目前先留空。
chrome_2018-08-18_17-46-40.png
第4步
STEP 5 Create your KB
上面都設定完了之後,就可以監理処Knowledge base,按下Create即可。
chrome_2018-08-18_17-46-50.png
第5步

按下Create之後,需要等一些時間,建立完成會自動切換到維護剛剛建立的Knowledge base。

使用Knowledge Base

Knowledge Base建立出來之後,就需要瞭解如何使用,大概會經過幾個步奏:

  1. 維護Knowledge Base
  2. 測試Knowledge Base
  3. 用REST Api實際測試

維護Knowledge Base

一個Knowledge是多個問題搭配一個答案。要建立一個knowledge可以透過:

  1. 按下Add QnA Pair
  2. 輸入問題
  3. 輸入答案
  4. 按下Save and Train
chrome_2018-08-18_17-49-16.png
維護Knowledge Base

測試Knowledge Base

要測試目前的Knowledge Base很簡單:

  1. 透過右上角的Test按鈕
  2. 可以直接輸入要測試的語句
  3. 可以看到返回的結果,可以按下inspect有更加詳細的訊息
  4. 可以在這邊加入不同的問題
  5. 如果測試得到的回答是錯的,那麽可以在這邊加入
chrome_2018-08-18_17-57-17.png
測試Knowledge Base

用REST Api實際測試

如果Knowledge Base測試好了,那麽就可以把他發佈出來。

要發佈可以:

  1. 右上角的Publish選項
  2. 然後按下Publish的按鈕
chrome_2018-08-18_18-02-31.png
發佈Knowledge base

發佈完成了之後,會得到這個Service的一些相關資訊,有幾個部分要注意一下,這個在把QnA Maker和chatbot整合會使用到:

  1. Knowledge Id - 這個代表這個knowledge的guid
  2. Host - 這個是App Service的網址,服務會打到這個地方取得結果
  3. Auth Key - 這個是認證用的Key
2018-08-18_18-07-27.png
服務相關的資訊

最後用Postman測試這個服務:

Postman_2018-08-18_20-03-47.png
用Postman測試QnA Maker

結語

這篇介紹了QnA Maker這個專門用來建立知識庫類型的服務。在這篇瞭解了如何建立并且測試建立出來的knowledge base。最後發佈之後又用Postman以Rest Api的方式呼叫做測試。

下一篇([36]Chatbot整合QnAMaker - 使用對話查找知識集)將看看如何把QnA Maker整合到chatbot裡面。

comments powered by Disqus