2017 年 AIDS 年會:應用實例-聊天機器人

Pei Lee
6 min readNov 22, 2017

--

一、Project Mynah 九官鳥計畫:AI 幫你接電話 / 郭建甫 Gogolook CEO + 莊兼愿 Gogolook Lead Server Developer

Gogolook 的產品就是有名的手機 APP Whoscall,這場演講先是大概介紹了 Whoscall 的歷程,詳細內容可以參考他們去年在資料科學年會上的簡報。簡單而言,一開始他們觀察到了市場的需求:「想知道來電是否為可信任的號碼」,因此推出了相對應的產品。郭建甫說一開始的功能很簡單,就只是幫使用者把號碼拿去 Google 然後回傳前五個搜尋結果而已。但也因為這樣簡單的嘗試,驗證了市場需求,才有辦法做後續產品的改良。

產品的改良上,首先他們先鼓勵使用者回饋,建立資料庫,然後在 2014 年藉由這些資料,建了 SVM Model,加上 Offline Fraud 離線資料庫,來做 Spam Detect,也就是垃圾電話偵測。然而從去年開始,由於資料愈來愈龐大,並且使用者需要更即時的資料,勢必得再持續改良原本做法。解決方案上,莊兼愿嘗試了 R、Light GBM、Scikit-Learn、XGBoost、Spark ML,最後以後兩者在效果以及效能上為最佳,目前處於兩者要擇一的狀況,另外搭配了 AWS 來做處理。藉此希望能達成 Whoscall 下一階段目標:預測下週會打來的垃圾電話。

除此之外,Gogolook 也提出了第二項專案 Project Mynah 九官鳥計畫。也是從很簡單但務實的需求開始,他們觀察到很多人想要接電話但卻沒時間接,因此簡單來說九官鳥計畫希望做到的,就是你很忙沒辦法接電話的時候有人幫你接。具體流程是這樣的,假設今天你打電話給早餐店訂早餐,早餐店表示很忙沒辦法接,這時可以選擇做語音留言,留完後會自動將你的語音訊息轉成文字訊息發給早餐店老闆。如果不語音留言,系統會自動發給你一個聊天室網址,可以直接在聊天室留言給老闆:「培根蛋餅大涼紅謝謝」。

實際測試使用者的操作情形後,第一次測試只有 5-6% 的人會留語音訊息,13% 的人會進入聊天室留文字訊息。當時語音留言的部分,是用 Google 小姐的聲音,然後藉由 Google Speech to Text 來做語音文字的轉換。為了增加語音留言的比例,莊兼愿改用微軟 bing,並想嘗試利用中國科大訊飛 iFLYTEK 來做語音文字的轉換。iFLYTEK 為完全針對中文的產品,因此在中文的辨識上能夠有更細緻的判斷,例如各地區的口音也能夠成功辨識,並且能自動做斷句。然而經過幾番測試後還是放棄使用 iFLYTEK,主要原因是主機在中國很難做到即時,並且沒有支援繁體中文。另外莊兼愿提到將來在語音轉文字的部分,希望能做到文字自動矯正,目前也處在 Google 或 IBM Watson 或 Dialogflow 的抉擇中。總之,這部分最後只改了聲音,而在第二次讓使用者測試時,並沒有因此顯著提升語音留言的比例。

在進入聊天室留言的部分,從第一次到第二次有了顯著的提升,從 13% 進步到 49%,而這麼顯著的成長完全來自 UI 介面的改善。莊兼愿說第一次測試的介面太陽春,看起來很像詐騙,導致使用者的使用意願很低,而在做了改善,特別是加入了 Whoscall 的 Logo 後,有了顯著的提升。

其實整場演講內容並沒有特別提到聊天機器人,算是一個產品開發初期的各種嘗試,但可以想見的是將來使用者進入聊天室留言後,能夠由聊天機器人來做對應,我想這會是 Whoscall 下一步的方向,因此也把這部分納入聊天機器人的標題底下。

二、使用少量標記資料訓練聊天機器人的語意模型 / 朱柏憲 優拓資訊 Data Scientist Lead

朱柏憲首先將聊天機器人分為兩類,一類是希望真的能做到擬人化的通用型機器人,跟他說話彷彿在跟真人說話的效果。另一類則是主要要介紹的內容:任務導向型聊天機器人。也就是根據特定任務來回話的機器人,目前運用比較多的應該是客服的部分。

在做任務導向型的聊天機器人,朱柏憲希望能做到有效率的訓練,也就是藉由少量的訓練資料就完成模型的訓練。

嘗試 1:Bag of words + Logistic Regression

  • 好處:訓練預測都快,系統容易測試且穩定
  • 問題:準確度低,對錯字或抽換字面的辨識不容易學習
  • 模型評估:Top-1 Accuracy

嘗試 2:Word2vec + LR, RF, MLP

  • 好處:維度小訓練快,對同義字判斷更準確
  • 問題:無法捕捉更複雜的語句結構
  • 模型評估:Top-1 Accuracy 遠高於嘗試 1
  • 在 LSTM, RNN, etc 上碰到了 Overfitting 的問題
  • 違背初衷是希望藉由少量資料來做訓練

嘗試 3:Self-taught Learning

  • Seq2Seq Auto Encoder by RNN + DNN = Awesome

看到這麼厲害順手 Google 了一下 Seq2Seq:https://google.github.io/seq2seq/
https://github.com/farizrahman4u/seq2seq

  • RNN + attention 會讓模型變得太複雜
  • Skip-Thoughts
  • 模型評估:成果的 Top-1 Accuracy 與微軟的 LUIS、Google 的 Dialogue Flow 效果相當
  • 最後成果令人蠻印象深刻的,連這種火星文也有辦法辨識,然後做應對:

中文斷詞的問題上,朱柏憲表示已經有研究顯示如果 Data 夠多,在 Sequence Classification 時,未必需要斷詞,by character 其實也有不錯的效果。

另外在提問中,有人問到少量資料究竟是多少量?朱柏憲說只有幾百筆 Label 過的資料而已。

其他相關資源:

  • NER 的部分採用 Transfer Learning,參考 Semi-supervised sequence tagging with bidirectional language models(ACL 2017)
  • OpenAI:Unsupervised Sentiment Neuron

https://blog.openai.com/unsupervised-sentiment-neuron/

--

--

Pei Lee
Pei Lee

Written by Pei Lee

Data Team Lead @ Retail & E-commerce Industry

No responses yet