敗口罩開發記錄-自然語言篇

  • 1694
  • 0
  • 2020-03-21

前一篇提到選擇用Chatbot做為APP前端UI是因為方便,不需重新設計使用者介面,但Linebot上線後,隨即我就發現使用者很多時候不知道如何操作,怎麼解?提供功能選單?文字訊息怎麼辦?

藉由Say Hi把簡單的操作指示加入訊息內
首先使用者將bot加為好友時,並不會知道如何開始使用它,而Linebot有個功能是可以設定當使用者將bot加為好友時,主動發送一則訊息,所以在第一版時間,先利用這個功能,在每個新使用者加入時,回覆一則Say Hi訊息,並且把簡單的操作指示加入訊息內

接著很快的,我發現了幾個問題,並無法完成使用上面的方式來處理

首先,因為既然是Chat,使用者第一直覺就會想輸入文字訊息,那問題就來了.....做為一個bot模式的Chat APP,要如何能理解使用者的文字語意,進而提供相對應的服務呢?
再者,雖然口罩實名制了,然而實務上產能還無法讓大家隨時想買就買的到,所以開始有了抱怨,而這些抱怨轉嫁到了bot上,如果bot不回應,使用者會不會更生氣?但如果bot想提供一些回應訊息,怎麼做?
並且,前一篇文章也到了有關數量無法100%準確的原因,但使用者第一時間並不理解,如果我想要在bot上面,能夠在使用者抱怨時,回覆一些說明,怎麼做?

讓我們來整理一下,bot除了提供最初的定位點找藥局及口罩數量,現在進一步需要以下功能
(1) 輸入路名,區域也能找藥局及口罩數量
(2) 收到抱怨的訊息,能給予基本回覆
(3) 不知道如何操作bot,可以用文字詢問操作方式

所以關鍵點就是,bot要能分辨文字訊息的語意(或是稱為意圖),並且文字訊息並不能強迫只接收那些固定文字(就像過去的線上客服,多數人應該都有不是很好的使用者體驗),只要能突然這點,對於程式邏輯來說就好處理了。為了解決語意的問題,我將bot納入了LUIS功能,先藉由LUIS服務訓練出適用於我的情境的語意理解模型,並把訓練的服務發行成API服務(Host於Azure上),一旦LUIS能正確的分辨出使用者的文字訊息語意,那麼bot就可以依照語意來進行相關的回應。

什麼是LUIS

LUIS的全名是Language Understanding Intelligent Service,它是Microsoft Cognitive services其中的一項服務,LUIS將自然語言文字以機器學習的方式,預測整體意義(意圖、語意),並進一步可以找出相關的詳細資訊,其本身是屬於 API 雲端式服務,可以訓練專屬應用情境的模型,再以API的型式提供串接應用端APP,有關LUIS的部份可以參考先前的幾篇文章

Chatbot結合LUIS

舉例來說

使用者:都買不到口罩啊,LUIS判定為"抱怨",bot回應:數據不準確的可能原因,以及提供購買方式技巧

使用者:我要買口罩,LUIS判定為"詢問操作方式",bot回應:Linebot操作說明,以及購買規定

系統架構圖

總結,這一次使用Chatbot型式所做的side project,是一個開發時間很短但卻札實打中需求的應用,整個架構上並不特別複雜,且現代化的環境讓我們有很多工具及服務,可以很快把想法化做實際產出,就像這一次把雲端及AI服務整合進來,解決了流量及語意推斷的問題,儘管功能上可以改進的地方還很多,就留待有時間再慢慢調整囉(其實比較希望疫情快快結束,大家不再需要這個工具來買口罩)。

學習資源

 

若本文對您有所幫助,歡迎轉貼,但請在加註【轉貼】及來源出處,並在附上本篇的超連結,感恩您的配合囉。

By No.18