[對話式AI-2] Chatbot的閱讀能力–自然語言理解篇

一個基本的文字型聊天機器人框架(Chatbot Framework),包含「自然語言理解、對話管理、自然語言生成」三大模組。有些機器人能夠使用語音與使用者交互,還需包含「自動語音辨識、語音合成」模組 ,例如知名的Siri、Google Assistant。本期AI專欄將為大家詳細介紹聊天機器人的核心「自然語言理解 」模組。

自然語言理解是什麼?

自然語言理解(Natural Language Understanding)是為了把自然語言轉換(映射)成機器可讀的語意表示(Semantic Representation),是自然語言處理(Natural Language Processing)中最困難的技術;若要讓機器理解自然語言,必須分析「語音、音韻、詞法、句法、語意和語用」,可以簡單理解如下:

  • 語音(Phonetics):人類如何發出語音
  • 音韻(Phonology): 如何拼出自然語言的讀音
  • 詞法(Morphology):如何構成自然語言的單詞
  • 句法(Syntax):如何構成自然語言的句子
  • 語意(Semantics):如何理解自然語言的句子
  • 語用(Pragmatics):如何使用自然語言的句子

對機器來說,自然語言理解可能碰到以下問題:

  • 語音辨識所產生的錯誤,是否能在自然語言理解中容錯?
  • 中文並沒有像是英文的空格去分隔單詞,如何正確分詞?
  • 如何兼容同一個語意的上百種自然語言表示?例如:「我愛你、我喜歡你、我中意你、你是我的菜」 等 。
  • 同一句話可能會因情境(上下文)不同,而有不同的語意, 如何正確判斷 ?
  • 對話中的代詞或省略所代表的內容?
  • 還沒學到的詞彙該如何處理?例如:「是在哈囉、 新冠肺炎」。

自然語言理解在聊天機器人的功用

自然語言理解在聊天機器人發揮的功能,主要可分為以下七點:

  • 使用者意圖偵測( User Intent Detection ):針對使用者對話的意圖進行分類,得以確定使用者想要或計劃做什麼,可分為顯性(直接知道分類,例如:「今天天氣好嗎?」)和隱性意圖(間接推敲出分類,例如:「今天適合出門嗎?」),以上兩個問句,使用者意圖都是「查天氣」。
  • 命名實體識別(Named Entity Recognition):用來擷取使用者對話中具有特定意義的實體,例如:「查詢日期、地點」等專有名詞,以填充特定意圖的槽位(Slot filling),例如:「2020年2月25日台北的天氣?」,日期的槽位值是「2020年2月25日 」,地點的槽位值是「台北」;而上述的使用者意圖「查天氣」正是需要這兩個槽位值補充說明。
  • 指代消解(Coreference Resolution):判斷在對話中代詞所代表的實體或事件,例如威諾格拉德模式(Winograd Schema)的示例
  • 省略恢復:判斷使用者在對話中所省略的內容。
  • 情感分析(Sentiment analysis):識別使用者對話中的主觀資訊,例如正面或負面,或尋找更複雜的狀態,例如開心、生氣、哀傷等;可以讓機器與人交互時更有溫度。
  • 意圖確認:當意圖識別的置信度(Confidence)不足時,請使用者再次進行確認。
  • 拒絕識別:當識別的意圖超出服務範圍、涉及敏感內容或置信度過低時,系統可拒絕回覆。

不同類型的聊天機器人(請參考聊天機器人的類型與對比),其自然語言理解著重的技術有所不同,如下:

一、問答系統(Question Answering system):

著重於識別問題中的資訊詞,例如問題詞(Who What Where When Why How)、焦點詞、主題詞、中心動詞等,與自然語言理解略有不同,比較偏向自然語言處理的範疇;以模板比對、基於統計、基於深度學習的語意分析,基於深度學習的端對端生成(此方法目前處於研究階段),以上四種方法為主流。主要評估指標為召回率(Recall)、精確率(Precision)、F-Score。

二、任務導向對話系統(Task-Oriented Dialogue system)

著重於將自然語言,轉換成機器可讀的語意表示,例如分為使用者意圖(User Intent)及槽位值(Slot Value)。具體工作有中文分詞、詞性標註、命名實體識別、指代消解、句法分析等。以基於規則、基於統計、基於深度學習的意圖識別與槽位填充,以上三種方法為主流;主要評估指標為意圖分類準確率(Accuracy)、槽位填充的F-Score。

三、閒聊系統(Chit-Chat Dialogue system)

著重於個性化,以及情感分析(使用自然語言處理來識別對話中的主觀資訊,例如正面或負面等)。以對話庫檢索、基於深度學習的端對端生成,以上兩種方法為主流。主要評估指標為詞重疊率和向量距離。

自然語言理解的實作方法

如上所述,自然語言理解可視為分類和序列標註問題,通常分為基於規則、基於統計、基於深度學習三種方法:

  • 採用基於規則的方法,優點在於容易調整修正,而且不需仰賴訓練資料,缺點是當場景變多時,規則數量也大幅增加,將變得難以維護。
  • 採用基於統計的方法,優點在於系統強健性高(Robustness),而且容易維護。缺點是訓練出來的模型較難解釋和修正。常用支持向量機( Support Vector Machine, SVM)或自適應增強(Adaptive Boosting, )進行意圖分類,隱藏式馬可夫模型(Hidden Markov Model, HMM)或條件隨機域(Conditional Random Field, CRF)進行分詞、實體識別。
  • 採用基於深度學習的方法,優點在於其效果最佳,系統強健性高,而且容易維護,缺點是需要大量的訓練資料,模型的空間與時間複雜度高 ,而且幾乎無法解釋與修正, 如同黑盒子一般。常用Attention-based RNN及LSTM等模型,進行意圖偵測與槽位填充等任務。

自然語言理解相關技術的其他用途

自然語言理解涉及的自然語言處理技術,除了用於聊天機器人,也可用於其他用途:

  • 垃圾郵件偵測 (Spam Detection):分析大量的資料歸納出特徵,協助使用者過濾垃圾郵件,例如Gmail中的垃圾郵件匣。
  • 搜尋引擎建議(Search Engine Suggestions):透過預測使用者輸入的字詞,主動推薦搜尋的內容,例如在Google搜尋輸入些許字詞,所出現的推薦搜尋清單。
  • 機器翻譯(Machine Translation):將某種自然語言翻譯成另一種自然語言,例如Google翻譯的英翻中功能。
  • 自動摘要(Automatic Summarization):分析一篇或多篇文章,自動產生一段大意,常應用在新聞短訊中。

參考文獻

[對話式AI-1] Chatbot的類型與對比(問答、對話與閒聊系統)

由於常常跟客戶和外部工程師雞同鴨講,最後發現大家對聊天機器人的定義都不一樣;你知道Chatbot可以分成三類嗎?對話式AI專欄的第一篇,就來介紹一下「各類Chatbot的用途」,並針對「開發方法」、「特點」、「關鍵評價指標」及「應用場景」等進行深入對比,讓你一次搞懂Chatbot,不再一知半解。

類別問答系統任務導向對話系統閒聊系統
英文Question Answering systemTask-Oriented Dialogue systemChit-Chat Dialogue system
功能回答使用者問題代替使用者完成任務陪伴使用者閒聊
領域特定領域特定領域 開放領域
方法基於Web檢索、基於知識庫、基於社群模組化(基於規則、資料驅動)、端對端(資料驅動)基於檢索、基於生成
特點單輪對話,著重問句分析(識別資訊詞)多輪對話,著重對話管理多輪對話,著重個性化及情感分析
關鍵指標召回率(Recall)、精確率(Precision)、F-Measure任務完成率、對話耗時、對話輪數、機器模擬使用者評分詞重疊率、詞向量距離、機器模擬使用者評分
應用場景FAQ、教育助理、訂票閒聊、陪伴
知名案例IBM WatsonSiri、Google Assistant微軟小冰、SimSimi
實作方法基於知識庫的問答系統模組化的任務導向對話系統應用搜尋引擎檢索,或訓練Seq2seq模型生成