發表文章

目前顯示的是有「Cognitive Services」標籤的文章

Microsoft Cognitive Services 系列文章總索引

Microsoft Cognitive Services (0) - 讓你的App走進人工智慧的大門 Microsoft Cognitive Services (1) - 使用Computer Vision API辨識人臉 Microsoft Cognitive Services (2) - 使用Vision API進行OCR Microsoft Cognitive Services (3) - 在你的app中直接加入語音辨識 Microsoft Cognitive Services (4) - 使用Speech API讓你的電腦說話 Microsoft Cognitive Services (5) - 使用Translator Text API翻譯文字 QnA Maker 微軟認知服務(Cognitive Services)中的QnA Maker 系列文 x 6 微軟認知服務中的QnA Maker– (1) 什麼是QnA Maker? 微軟認知服務中的QnA Maker– (2) 建立QnA Maker服務 微軟認知服務中的QnA Maker– (3) 測試與訓練 微軟認知服務中的QnA Maker– (4) 與LINE Bot整合 QnA Service的Knowledge Base加上共同管理者 建立QnA Maker時的小陷阱 Bot Framework相關: 關於bot framework (1) - 緣起 關於bot framework (2) - 建立一個最基本的bot(v1舊版) - 已過時 關於bot framework (3) - 建立一個最基本的bot (v3新版) 關於bot framework (4) - 使用LUIS,讓你的bot理解用戶輸入文字的意義 關於bot framework (5) - 透過.net SDK使用LUIS 關於bot framework (6) - 如何分辨WebChat用戶並保護Secret key 其他 關於Skype Bot (1) - 建立

Microsoft Cognitive Services (5) - 使用Translator Text API翻譯文字

圖片
最近我們有很多案子大量地使用到Cognitive Services當中另一個很好用的服務,那就是 Translator Taxt API。這一組服務可以幫你識別文字的語系,當然也可以翻譯文字,用法相當簡單,只需要透過REST API呼叫即可。 使用前同樣需要在Azure站台上申請Translator Text服務(有免費方案),你會得到一組Key,可以從底下位置取得: 好了,有了需要的Key之後,我們就可以透過這組雲端服務來實際來撰寫翻譯程式了。 辨識輸入文字的語系 我們先看文字語系識別的部分,我們一樣透過Windows應用程式來示範,執行結果如下: 上方的文字方塊是我們輸入要辨識的文字,按下『判斷語系』鈕之後你會發現系統告訴我們,最有可能的語系是zh-Hant也就是繁體中文。 這算是相當正確的了,因為句子中有些中英夾雜,這樣的效果算是挺讓人滿意了。 我們來看程式碼,主程式只有兩行: 上面這段程式碼沒什麼內容,純粹就只是呼叫一個Detect方法,該方法是我們撰寫來透過http post呼叫遠端的辨識服務的,程式碼如下: 上面這段程式碼其實也非常簡單,透過HttpClient進行一個http post呼叫,呼叫的endpoint是: https://api.cognitive.microsofttranslator.com/detect?api-version=3.0 然後把要辨識的文字text轉成JSON以body傳給該endpoint。比較需要注意的是,必須把剛才申請的key以Ocp-Apim-Subscription-Key這個header name一併傳遞過去。 取回結果後,我們再反序列化為物件,就完成了唷。由於辨識可能會有多種結果,所以回傳的物件result,我們取第一組辨識結果result.FirstOrDefault(),透過language屬性取得語系,透過score取得分數: 這個分數是辨識的可靠度,倘若用戶輸入的文字可能符合多個語系,可以透過這個score取得最符合的語系。 即時翻譯輸入的文字 接著我們來看文字翻譯的功能,使用的方式也非常簡單,我們先看執行的結果: 當我們按下翻譯鈕,底下出現的是翻譯後的結果,由於我們的目標語系是en(英文),Translator Text API很順利的把上面的文字翻成英文囉。 主要的程式碼如下: 我們建...

微軟認知服務(Cognitive Services)中的QnA Maker 系列文 x 6

圖片
QnA Maker是MS Cognitive Services中一項頗實用的服務,過去一年,我們碰到很多客戶想要實現Q/A類型的Chat Bot,在企業內(B2E),或是面對消費者(B2C)。在早期,企業其實已經累積很多這種QA的Knowledge Base(可能是Excel sheet, 可能是DB…etc),是否有方法讓這些Q/A直接變成Chat bot的知識庫,讓chat bot稍微有點AI樣子的回覆客戶呢? QnA Maker是這個需求的最迅速解決方案…而且支援中文。 底下是我整理好的四篇介紹,應該相當完整了,希望有所幫助。 微軟認知服務中的QnA Maker– (1) 什麼是QnA Maker? 微軟認知服務中的QnA Maker– (2) 建立QnA Maker服務 微軟認知服務中的QnA Maker– (3) 測試與訓練 微軟認知服務中的QnA Maker– (4) 與LINE Bot整合 相關文章 為QnA Service的Knowledge Base加上共同管理者 建立QnA Maker時的小陷阱 -------------------------------------------- 線上課程: https://www.udemy.com/line-bot/ 電子書: https://www.pubu.com.tw/ebook/103305 LineBotSDK: https://www.nuget.org/packages/LineBotSDK 如果需要即時取得更多相關訊息,可按 這裡 加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。

微軟認知服務中的QnA Maker– (3) 測試與訓練

圖片
接續著 前面 的介紹。 當我們建立好了QnA Maker的KB(Knowledge Base),並且裡面已經有了一些Q/A資料之後,我們接著可以在QnA Maker的後台進行測試,藉此觀察系統的回答準確率,並且嘗試修正。 要進行測試,你可以點選KB右上角的Test按鈕: 系統將會出現測試視窗,你可以在該視窗中輸入問題,系統會顯示找出的答案。你會發現,你的問題不盡然要和原本KB中的Question字句100%完全一樣,差幾個字其實沒有關係,QnA Service依舊會幫你找到最接近的問題,並且取得該問題相對應的答案顯示。 如果你覺得系統自動搜尋的結果不理想,你可以按下『Inspect』來檢查其他第二、三順位的答案,如果有必要時,可以手動調整: 如果QnA Maker的回答和你的預期不同,你可以選取原本排在第二順位的答案作為回答,或是手動輸入其他更理想的答案。你會發現在答案底下其實都有confidence score,這個分數是QnA Service自動判斷出的可信度,透過你手動的調整,也會影響這個數值得高低。 事實上,你在這個畫面上的測試與糾正的整個過程,就是我們訓練Q/A Service的主要步驟。 別忘了,只要有修改到答案或是有新的Q/A Pair加入,你都要重新按下『Save and train』這顆按鈕,讓系統重整一下索引並且重新訓練,待你覺得QnA Maker的回答你大致都滿意之後,就可以開始撰寫程式碼,正式與你的chat bot連結了。 使用建立好的服務 當我們建立好KB之後,若要從外部(當然也包含我們的LINE Bot)來呼叫,該KB必須先Publish,你可以從管理畫面中,找到Publish按鈕,將其發佈出去即可: 發佈後,你會看到類似底下這樣的http post sample code: 我們的Line bot就可以透過上面這樣的http post呼叫,把從LINE傳來的問題,丟給QnA Service並取得答案。 上圖中的A是KB的guid,而B則是我們呼叫該服務的key。 請注意這個Key,在正式環境中,你應該要使用先前我們從Azure Portal申請到的key。 我們來看一下如何呼叫此API。 我們可以透過坊間常用的工具Postman來測試: 上圖A的部分是完整的endpoint,其中包含了這個KB的Guid,而呼叫時的http header...

微軟認知服務中的QnA Maker– (2) 建立QnA Maker服務

圖片
QnA Maker是微軟Cognitive Services中的一環,你可以從底下這個獨立的網址進入,大部分建立和管理knowledge base的功能也都在這裡。 https://www.qnamaker.ai/ 但是具體要使用該服務前,你還是得要具有Azure帳號,和先前介紹過的LUIS一樣,你必須在Azure Portal先建立好使用QnA Maker時所需要的Key,建立的方式如下。 請透過 https://portal.azure.com/ 進入Azure管理站台,在建立資源時,請搜尋QnA Maker即可找到要建立的服務: 建立時,請注意底下的畫面: 上圖中A與D的部分,建議你可以用同樣的名字,因為建立一組QnA Maker服務,Azure portal將會自動為你產生三個資源,分別是index服務、App Web Site、以及QnA Maker本體。 上圖D的部分,就是App Web Site這個網站的名稱。 會要您特別留意,是因為雖然QnA Maker在建立時你可以選擇F0免費方案,該方案讓你可以在每秒三次呼叫以內免費使用,聽起來很不錯,但你別忘了,其實在建立的同時,Azure還同時建立了Search服務以及Web App,特別是Web App在預設的狀況下是個S1等級的標準網站,每個月將會有幾千元台幣的費用。因此,請在建立好之後,自行找到該網站,調整資源大小,以避免被收取較高費用(當然,如果你需要大量使用,對效能來說恐怕S1是比較好的選擇)。 相關的調整辦法可以參考底下連結: https://studyhost.blogspot.com/2018/07/qna-maker.html 順利的建立好了QnA Maker服務之後,你可以在該服務的Keys選項下找到你所需要的Key: 有了這組Key之後,我們就可以正式的使用該服務了。 建立知識庫 接著,我們回到 https://www.qnamaker.ai 這個Portal,在主畫面中你會看到Create a knowledge base的選項: 點選後,系統會引導你透過五個步驟來建立KB。 你會發現,第一個步驟其實就是要你去Azure站台建立QnA Service,而這我們剛才也已經做了,所以只需要在步驟二,選擇你的Azure目錄、訂閱名稱、以及QnA 服務名稱就行了。 而步驟三,也只是要你輸入...

微軟認知服務中的QnA Maker– (1) 什麼是QnA Maker?

圖片
前面我們介紹過了 LUIS ,你大概差不多也慢慢知道了Chat bot要跟人類對談在開發時是有一定難度的。然而,我們大部分時候,也並非真的要讓chat bot和人1 on 1的對談,更多時候我們只是要讓chat bot回答一些知識庫中存在的問題而已。 這個時候,你其實有另外一個選擇,就是我們接著要介紹的QnA Maker 服務,它值得一提的地方是,你可以透過該服務,以REST API的形式,輸入特定的問題,它會自動從知識庫裡面找到最符合的答案。你不需要管intent或entities,只需要匯入Q/A問題來建立知識庫就可以了。 在你開始建立QnA Maker服務前,請先花一點點時間來了解該服務背後的機制。這有助於你在使用該服務時,得以用最經濟(便宜)的方式來運作,同時達成最好的呈現效果。 首先,你還記得底下這張圖嗎? 如果你還有印象,這是我們在前面介紹WebHook的時候談過,你應該也已經知道我們負責回應Chat bot的WebHook就是上圖中的asp.net WebAPI的部分。 好,確定了這個概念之後,我們來看,如果要設計一個chat bot,回覆用戶傳來的各種問題,顯然我們必須把相關的程式碼撰寫在WebAPI(WebHook)那部分。例如,當用戶傳來某個問題,我們就去資料庫中找該問題所對應的答案,找到了,就以ReplyAPI回覆給用戶即可,這意味著,我們應該會需要建立一個類似底下這樣的資料表: 當你有了一個類似上面這樣的資料表之後,用戶輸入了某個問題,你就可以透過SQL去資料庫中搜尋是否有該問題,如果有,則取出答案回覆,聽起來很簡單,但…你會開始碰到幾個狀況… 首先,用戶輸入的問題不可能100%完全一樣,那怎麼找出句子中的關鍵字呢? 又要用LUIS來處理斷句和語意嗎? 其次,當資料庫越來越大時,搜尋的速度就會開始明顯的降低,這時候該怎麼透過索引機制來加快搜尋速度呢? 好, QnA Maker就是這些問題的解答。 QnA Maker的功能 QnA Maker可以透過匯入Excel/Word或是爬網頁抓取資料的方式,自動在雲端建立一分Q & A知識庫(因此我們也不需要自己建立資料庫了),有了這個知識庫之後,我們的WebHook就可以利用REST API呼叫的方式,把用戶傳來的問題丟給該服務,該服務就會以JSON方式回傳最佳的答案回來。 例如,底下這是一...

幫你的Teams加上一隻對談機器人(Teams Chat Bot)

圖片
前幾天我們介紹過了 如何申請免費 的Teams,但你知道嗎? 免費的Teams 其實也可以擁有對談機器人喔。只需要三分鐘就可以搞定… 上圖就是我們跟這個剛用三分鐘做好的機器人對談的畫面。 他現在只會Echo,啥都不會,但你幾乎不用寫任何程式碼就可以完成,這樣的對談機器人有何用途呢? 用途大了,未來只需要稍加擴充,他就可以成為您在組織或企業內的小幫手,小從幫你查詢某人的分機、或是查詢你的今年度請假時數,大到自動幫你跑流程建立訂單或其他申請單,都是可以輕易實現的。 我們先來看如何建立一支這樣的bot。 使用bot service 要建立一支bot,你可以透過微軟Azure上的bot Service,建立時,目前有三種可以選擇: 請選擇最簡單的Web App bot,然後在出現的畫面中逐一填入相關資訊: 上圖1的機器人名稱當然就填寫你想要的名稱,而2,3,5預設會用同樣的名稱,我會建議你別改,且最好建立一個獨立的資源群組,這樣比較好管理。因為這個Web App Bot,會一口氣幫你建立Web App、Azure Storage、然後又可能有App Service Plan,如果你沒把所有東西放在一個獨立的資源群組裡,未來刪除的時候可能會漏東漏西。 上圖4程式碼的部分我們選擇C#,6的部分我們選擇自動建立。 按下『建立』鈕會跑一陣子,完成後,會出現類似底下這樣的畫面(如果沒有,請自行搜尋到該服務): 接著,請點選『頻道』,我們要讓這個bot可以被加入Teams中,請在頻道中把teams家進去,完成後類似底下這樣: 其實這樣該bot已經可以在Teams中使用了,但先別急,我們來看看這個bot目前是怎麼被設計的: 請在選單『組建』當中,找到開啟『線上代碼編輯器』: 點選後會出現底下這個Web畫面,基本上你可以在這個畫面中改你這隻Bot的程式碼,我們找到EchoDialog.cs: 然後把程式碼稍微改一下變成上面這樣: 完成後,請點選左側選單中的Open Console,然後下指令 build.cmd : 完成後,你修改的程式碼就生效了!!!!! 這時候先別急,我們回到azure管理站台,找到MS App Id,這個ID很重要,是我們待會測試bot所需的關鍵資訊: 找到之後,來到您的teams畫面,請在聊天選單中,點選下圖像是筆的那個圖示,在出現的『收件者』欄位中,輸入剛才你看到...

為QnA Service的Knowledge Base加上共同管理者

圖片
QnA Maker正式版(GA)之後,在建立與權限維護上改變了不少,總的來說,就是改以Azure作為管理的核心,因此你會發現,你不再能夠直接從QnA Maker的管理站台( https://www.qnamaker.ai )去設定共同管理者,取而代之的,你必須從Azure Portal來設定。 當你要為某一個共同管理者設定權限時,你必須先在Azure Portal找到該QnA Maker的Cognitive Services服務,然後選取存取控制(IAM): 接著點選『新增』來加入新的用戶,並且在角色選擇『參與者』,在底下的『選取』文字方塊中直接輸入其 Microsoft Account,然後將其加入即可。 但請留意,這不會立刻生效,被加入的用戶會先收到一封mail,被邀請加入該目錄(Directory),收到Mail後該用戶要底選Get Started: 這會讓該用戶加入此目錄,然後才能夠存取該服務。 同樣的,這個作法也會讓該用戶在QnA Maker的管理站台( https://www.qnamaker.ai )中可以自由建立新的Knowledge Base,而帳就會算在你剛才授權的那個QnA Service與其所屬的訂閱(Azure Subscription)頭上: 此外該用戶也會被加入所屬的Azure AAD目錄中,如果要移除權限的時候也別忘記了唷。

建立QnA Maker時的小陷阱

圖片
先前介紹過,可以輕鬆實現自然語言客服的 QnA Maker 已經正式GA,因此,建立該服務需要到Azure站台上。我們知道Azure站台上的服務都有免費的選項可以用,QnA也不例外,因此你建立QnA Maker時候,可以很大膽的選擇底下的F0方案,而底下的Search Pricing tier也可以選擇F方案,大多Azure上免費的方案都是F開頭: 這樣就高枕無憂了嗎? 理論上是的,但有學員反應他的Azure被收了大錢,Why?不是F嗎? ㄟ…部分是的。 請看上圖的英文字部分,QnA Maker需要一個Azure Web Site,而建立QnA Maker時候,系統預設幫你開了一個S1(Standard)等級的Web Site,這S1等級的web App可是2000多台幣每個月啊… 這故事告訴我們,千萬別忽略網頁上不起眼的訊息,特別是英文的。 如何解決呢? 請找出該自動建立的WebApp(你設定他名字的,所以你應該找的到),將其改為(降級)為F1或D1即可:

使用C#開發Linebot(20) - 不寫一行code完成Linebot的LUIS串接

圖片
前陣子,介紹過如何No Code完成Line bot的開發,如果你錯過了,可以看 這裡 。 No Code當然不是一行程式碼都沒有,只是,程式碼骨架我幫你寫好了。你只需要輕鬆地填入相關的Channel Access Token等資訊即可。 而很多同學不滿足,在我們介紹了 LUIS (Language Understanding Intelligent Services)之後,當然會想,能不能一行程式碼都不寫,就將Linebot的Web Hook串接到LUIS,完成一個能夠更用戶進行自然語言對談的Chat bot? 可以嗎? 沒問題,有人開口就做給你。 請打開VS2015/VS2017,然後建立一個空的Web專案: 這個畫面似曾相識? 當然,前面我們做過啊。請務必依舊選擇.net framework 4.5.2以上。然後,在下一個畫面中,直接選擇Empty(空)的範本類型,然後請務必(一定一定要)勾選WebAPI: 就這樣,VS2015會幫你建立好一個空專案,,接著,重點來了,請安裝一個nuget套件: 前面做過了,我知道,再一次加深印象,在Nuget套件安裝畫面上,選擇Studyhost.Example.Linebot套件: 按下安裝鈕,安裝完成後,你會看到這個套件已經幫你把程式碼都寫好了。只不過,跟上次不同,這次請把焦點放在TestLUISController: 你會發現,TestLUISController這支WebAPI Controller,就是一隻寫好了的支援LUIS的Line WebHook,你只需要把上面的幾個參數填進去就行,分別是: channelAccessToken: Linebot的Channel Access Token AdminUserId: 你建立Linebot的那個帳號(Admin)的UserId LuisAppId: LUIS App的App ID LuisAppKey: LUIS App的Key Luisdomain: LUIS App的domain 上面關於LUIS的幾個參數怎麼來呢?  如果你還對我們介紹過的LUIS有印象,應該會知道LUIS有一個Publish之後的會出現的Enpoint: 其中就有你需要的所有資訊了。 把相關的資訊填入程式碼之後,不用做任何事情,只需要發佈到Azure Web App站台上,並且到L...