Alan Tsai 的學習筆記


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

[chatbot + AI = 下一代操作模式][16]BotBuilder開發總結 - 下一步是搭AI服務

[chatbot + AI = 下一代操作模式][16]BotBuilder開發總結 - 下一步是搭AI服務.jpg
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 

在上一篇([15]上綫 - 透過Direct Line把chatbot和任意程式做連接)介紹完了Direct Line Channel之後,Azure Bot Service 和 BotBuilder 搭配開發chatbot的部分就到了一個尾聲。當然,裡面還有很多細節可以介紹,但是以目前介紹的内容來説,要開發出一個能用的chatbot已經不是什麽問題。

那下一步是什麽?在介紹bot builder的過程會發現,開發chatbot其實蠻死板的,有沒有辦法讓他更加智能一些?如果搭上最近幾年很火的AI服務就可以。

這篇將快速回顧一下目前bot builder所學到的内容,以及下一步如何搭配AI服務來增加可用性。

整個Azure Bot Service

a238a09a-ee30-4106-8ec1-175e92acb902.jpg
整個Azure Bot Service的框架

知道大家應該已經看膩上面那張圖,不過在回來看一下應該會更有感。

從右邊的bot builder框架開發出chatbot,再到左邊的搭配bot channel registration把chatbot和各個channel連接起來,在整個過程介紹了:

  1. bot builder的開發,從模擬器測試,邏輯最小單位的Dialog、到FormFlow再到訊息卡片話呈現
  2. 把chatbot上綫,使用到了Azure的App Service來做hosting
  3. 透過bot channel registration把chatbot和各個channel做關聯,有任意網頁的web control,有Facebook Messenger再到任意程式都可以接的Direc tLIne Channel

到這邊對於整個chatbot開發應該有些感覺了,但是會發現chatbot有個很大的問題,那就是感覺像玩具,蠻好玩,但是如果真的用來做什麽,好像又沒有什麽辦法,這是爲什麽?

目前爲止的chatbot開發有什麽問題?

如果沒有真的開發下去,可能還沒發現什麽,但是如果回想一下目前整個操作,會發現:

太笨了,如果使用者輸入複雜語句就gg了

chatbot不是新奇的東西,本質上他就是一個大大的switch程式,輸入關鍵字,就有對應動作,但是如果今天換個説法呢?舉例來説,像目前的範例有個指令是查飯店,但是如果有使用者習慣用酒店那不就gg了。

或許會説,那我就把都有可能的語句寫進去不就得了。好吧,或許這樣可以,但是其實人類是一直在新增文字。我曾經聽過一個在做文字分析的專家説,他們曾經做過從電商平臺的留言統計快遞很快有幾種説法,當下做完發現 2000多種,結果半年之後在統計發現變成了3000多種(專家説的準確數字我可能記得沒有很清楚,但是概念是一樣的,説辭增長是很快的),怎麽可能把這些語句都寫進去?舉例來説,如果不完游戲,就不知道gg是什麽, 不過因爲玩游戲的多了所以gg有點變成通用詞了。

輸入内容太單調
目前爲止都是用文字作爲輸入的方式,不過文字有時候打起來太慢或者不方便。可不可以用圖片來代替文字?可不可以用說的來下達指令?當以這種模式來思考的時候,會發現chatbot有點變成生活小秘書了,如果我可以直接 用説的或者我看到的東西拍照來下指令,那麽整個的操作體驗完全不同。任何科幻類型的電影或者書都一定有個智能系統,是不是都用説的就可以叫他們做事,就像鋼鐵人裡面的Jarvis一樣。
知識太少
這邊指的知識太少是本身資訊内容太少。舉例來説,如果是訂房的bot,如果不能夠顯示所有在記錄裡面的飯店那麽基本上沒有什麽用。因此,取決於chatbot是哪一種類型,背後可能都會搭配一個龐大但是搜索快的資料庫。

AI服務怎麽解決這些問題?

微軟在Azure上面有一系列的AI服務叫做Cognitive Service,裡面包含了一些已經包好的AI服務讓我們可以搭在任意的程式裡面。這其中和chatbot搭配非常適合。

未來篇章可能會稱Cognitive Service這個AI服務為AI - 從純技術的角度來説,自己建立模型才是AI,但是自己建立模型技術含量太高(詳細可以參考我的 「data science 到底是什麼從一個完全外行角度來看」),因此有一些已經建立好并且釋放出來的服務 像是Cognitive Service應該叫做AI服務才對。當然,Cognitive Service有部分可以讓你自己training model的一部分,因此叫做 AI 勉强也算。

cognitive service的所有服務,來源:https://blogs.msdn.microsoft.com/bluesky/2017/05/11/build-2017-cognitive-services-update-en/

導入Cognitive Service怎麽解決上面提到的問題?

太笨了,如果使用者輸入複雜語句就gg了
在Cognitive Service有一系列的語言相關的AI服務,最重要的是LUIS。因此,可以透過整合LUIS到chatbot裡面,讓在判別user的用意更加的容易以及方便。避免要在程式裡面寫上大大的switch。
輸入内容太單調
在Cognitive Service有一系列的圖片以及語音服務,因此可以透過搭配讓chatbot能夠接受語音或者圖片類型的輸入。
知識太少
假設,今天只是簡單的知識庫,例如FAQ那種,那麽Cognitive Service有個專門的服務稱爲QnA Maker可以搭配。如果是大型資料類型,例如所有的產品型號,那麽可以搭配Azure上面的CosmosDB以及Azure Search 達到大資料量儲存并且快速搜索的效果。

結語

這篇,快速的review了一下目前爲止所看到的内容,并且點出了一些chatbot問題所在。

這些問題可以透過搭配Azure的AI 服務,Cognitive Service來解決,并且快速看了幾個裡面可以用到的服務。

在接下來就要開始往這些服務做介紹,下一篇([17]語義識別服務 - LUIS概念介紹)由語言文字處理的LUIS開始。


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus