Noob's Space

寫一隻聊天機器人(chatbot),然後呢?

有沒有發現最近越來越多聊天機器人的 API 開放了?包括 Messenger、Slack、Telegram、LINE 各自都有自己的 API;除了 Microsoft 有個 Bot Framework 以外,Google 也推出了 Cloud Natural Language API 來幫助 Chatbot 理解使用者說的話。

LINE於是,我也心血來潮的寫了一隻 bot,接上了 LINE、Telegram 的 API。

不過寫完以後,不禁讓我思考,聊天機器人到底還可以幹嘛?

最近的 Bot 都在幹什麼?

於是我去網路上找了一些 bot 來看,常見的一些 bot 功能大多是新聞、天氣、語言學習,或是一些簡單的遊戲。然而大部分的 bot 都只能輸入特殊的指令才會回應,不知道要幹嘛的時候就輸入 /help,就會跳出所有的指令列表;有些雖然不用打指令,但是還是只能依循特定的模式:輸入你的名字、輸入你的城市、要不要每天九點傳個訊息給你一次之類的。

早期還蠻潮的,像是 Smooch 這個服務第一次登入的時候,就是照著建立好的模式:SmoochBot 會詢問你一些基本資料,名字、想啟用的 API 之類的。

但是仔細想想,這些東西其實只是把原本的 App 畫面,用特定的模式來和你對話而已。甚至原本一字排開的按鈕現在改成讓你打一句話,聊天機器人真的有比 App 還方便嗎?

要怎麼做才能跳脫特定的模式?

如果要讓聊天機器人像 Ok Google、Siri 一樣聽得懂人話,還能夠回答特定的問題,就需要語意分析的技術。除了抓到一句話的重點以外,還要了解這句話是否有意義、是正面還是負面,甚至需不需要讓聊天機器人記住上一次對話的內容,也是讓 bot 更像人類的方式。

此外,要是把 bot 每次和人對話的內容都記錄下來,加以分析,那就更能夠讓 bot 學習不同的說話方式。不過這樣也不容易,除了技術問題,像之前微軟那隻被訓練到會種族歧視的機器人 Tay 也是一個失敗的案例。

扯遠了。

回到語意分析來說,比起英文,中文的語意分析算是比較困難的。第一個會碰到的問題就是斷詞,什麼叫斷詞?斷詞就是把「我現在真的非常想睡覺」分成「我 / 現在 / 真的 / 非常 / 想 / 睡覺」,而在英文根本不需要煩惱這個問題,畢竟英文只要把「I really want to sleep now」斷成「I / really / want / to / sleep / now」就好了。

於是網路上有了一些斷詞用的服務,例如中研院提供的中文斷詞系統(CKIP),或是現在已經開源的結巴(jieba),各有優缺點,不過的確能夠在語意分析上幫上一些忙。

更進一步的語意分析的話,Google 不久前發表的自然語言分析平台  Cloud Natural Language API,可惜他居然只有英文、日文和西班牙文,真是可惜啊。

結論

現在已經有超過一萬隻 Messenger Bot 在 Facebook 上,究竟這些聊天機器人會逐漸取代部分 App 進入我們的生活,還是只是曇花一現的工具呢?我想,等到我們搞懂自然語言處理的那一天,bot 才會好玩吧。

你可能會有興趣......?

廣告