智能問答與對話系統

本文參考自《大數據智能》,僅作科普

問答到對話

  • 人機交互的趨勢

    \(\mathrm{CLI} \to \mathrm{GUI} \to \mathrm{CUI}\)

    命令行到圖形到對話

  • 日常聊天側重於交流和應答,不一定是問題。

    可利用檢索模型、機器翻譯模型、深度學習模型及情感模型。

對話系統的基本過程

  • 語音識別(Automated Speech Recognition)
  • 語音合成(Speech Synthesis) = 文本-語音轉換(Text-To-Speech, TTS)
  • 語音信號中還可以提取語氣、語速、情緒等信息

複雜場景還可以結合其他的輸入(如動作)

文本對話系統的常見場景

  • 首先說話有”情商“高低,現有技術主要解決”智商“部分,機器想學好如何”說話“任重而道遠。

  • 應用場景:

    • 尋求確切的答案和知識:例如搜索相關信息“附近有什麼餐館”
    • 爲達成一個目標而指示機器完成一項功能:對Siri說“提醒我明早9點開會”
    • 無特定目的的聊天、寒暄等:“微軟小冰”調侃打趣之類的

    可能上述幾種互相穿插

問答系統的主要組成

  • 問題理解:理解問題是什麼(例如區分“北京溫度是多少”和“太陽天氣是多少”)
  • 知識檢索:將問題組織成一個計算機可理解的檢索式,其格式由知識庫的結構決定(“北京面積有多大”,如果用百科全書搜索就是在“北京市”這個詞條內檢索“面積”這一屬性信息)
  • 答案生成:用搜索引擎獲得的若干相關文檔,然後從這些文檔的大量內容中提取到核心的段落、句子或者詞語

文本問答系統

知識組織形式不同,問答系統有很多種,文本問答系統是最基本的一類,也是各類問答的基礎

問題理解

問題理解的內容

可以把問答系統的目標定義爲解答這樣一個問題:

誰(Who)對誰(Whom)在何時(When)何地(Where)做了什麼(What)是怎麼做的(How),爲什麼這樣做(Why)?

中英文基本要素的提問形式是相近的。研究人員整理出若干種分類體系(taxonomy),既有平面分類(flat),又有層次分類(hierarchical),便於對答案進行篩選。

  • UIUC分類體系:雙層的層次結構體系,主要針對事實類問題,設計了6個大類和50個小類。大類包括縮寫、實體(某種事物)、描述(詢問定義、原因等)、人物、地點和數值
  • Moldovan等人的分類體系:也是雙層的層次結構體系,第一層主要針對問句的形式(疑問詞),第二層針對答案的類別。
  • Radev等人的單層平面分類設計了17個類別,包括人物、數字、描述、原因、地點、定義、縮寫、長度、日期等
  • 可以根據問題所屬的垂直領域(主題)進行分類,如天氣類、導航類、參觀類等,然後交給特定的端口處理。

問題理解的方法

問題中提取關鍵成分過程主要涉及NLP中的語義分析技術。

  • 直觀的做法:字符串模板匹配。

    例如查詢關鍵詞“XXX是什麼”,那麼“XXX”就是關鍵詞。

    優勢在於清晰直觀,易於理解和編寫;缺點在於無法適應千變萬化的語言表達形式。

  • 靈活的技術:從詞法、句法入手。將問句進行詞性標註,做句法分析。

    例如可以用一個 \(\lambda - \mathrm{DCS}\) 表達式,便於知識庫進行運算:

    微信圖片_20210510111916

    其構建過程由如下幾種操作完成:

    • 一元實體(Unary):實體詞,例如“西雅圖”
    • 二元卷席(Binary):屬性詞,例如“出生地點”

    完整知識可以以三元組給出,例如(比爾·蓋茨,出生地點,西雅圖)。

    • 連接(Join):將一元實體與二元關係連接,得到關係另一側所有可能的實體,用點(“.”)表示(例子可以見圖)
    • 交集(Intersection):兩個一元實體集合的相交部分,用 \(\prod\) 表示。例如“職業.科學家 \(\prod\) 出生地點.西雅圖”代表所有出生在西雅圖的科學家
    • 計數(Aggregate):一元實體集合的元素數量,記作 \(\mathrm{count(\cdot)}\)

    如問:湯姆·克魯斯出演過多少部電視劇?其 \(\lambda - \mathrm{DCS}\) 表達式爲 \(\mathrm{count(類型.電視劇\prod 演員.湯姆·克魯斯)}\)

雖然其更加靈活,但是計數儲備較多、門檻高,未必適合於小規模系統的快速開發和部署。

問題擴展

  • 同義詞詞語的多樣性:“貝克漢姆”和“小貝”。可能可以藉助《同義詞詞林》。
  • 大數據中的知識也需要進行句法分析,答案可以作爲標註用於指導有監督的學習過程

知識檢索

大數據時代,結構化數據少而精,非結構化數據多而全。可以利用這兩方面優勢,來滿足用戶需要。

非結構化信息檢索

  • 直觀的理解:搜索引擎,從問題中提取關鍵詞,便可以查詢索引,得到與這些關鍵詞最相關的文檔。再通過後續的篩選和提取步驟,生成最終答案。
  • 主要障礙:商業授權許可和網絡延遲。我們可以自建索引,搭建自己的搜索引擎。如Lucene等開源搜索引擎框架給開發者提供極大便利。

傳統信息檢索任務的相關性計算方法不一定適用於問答任務,問答任務的檢索式已經經過篩選了。檢索出的文檔應當儘量滿足所有查詢詞的查詢條件,要儘量全。

  • 常用的策略:以段落爲單位,計算連續少量段落是否出現了所有關鍵詞,可以去除一些相關性不高的文檔。取一個儘量短的窗口,包含儘量多的問題關鍵詞。

    經典做法:標準基數排序(Standard Radix Sort) 以如下三個因素排序:

    • 相同順序的關鍵詞數目
    • 最遠關鍵詞間距
    • 未命中關鍵詞數

結構化知識檢索

  • 百科類知識:識別主條目的時候易於定位答案。

  • 關係類知識:兩個事物 \(E_1, E_2\) 和他們的關係 \(R\) 表示成一個三元組 \((E_1, R, E_2)\) 例如 \((北京,面積,16801平方公里)\) 。DBpedia和YAGO是從維基百科中取出組織關係結構的數據庫。

    可以從百科類知識和非結構化知識中抽取構建出關係類知識,並且可以根據需求針對特定垂直領域手機數據,自行組織成結構化知識。(例如“某某相機多少錢?”)

本體與推理

蜜蜂有幾條腿?\(\to\) 蜜蜂是一種昆蟲 \(\to\) 昆蟲有六條腿 \(\to\) 蜜蜂有六條腿

人工智能的一大重要分支——專家系統,依賴於精確組織的知識結構。整理好知識領域,可以搭建這樣的技術框架。

人工整理知識庫(基於專家系統方式)的問答技術已經逐漸退出了歷史舞臺。現在利用互聯網語料自動挖掘實體關係、知識圖譜的思路爲其注入了新鮮血液。

基於深度神經網絡模型,讓機器自動學習知識並完成推理,也是有前景的研究方向。FaceBook有個數據集bAbI可用於文本理解和推理。 端到端的神經網絡模型,可以充分發揮其“記憶”功能,將事實隱式地存儲在向量、權重中,從而完成推理。

答案生成

問題的關鍵詞和答案的詞語之間存在某種聯繫,因此可以考察問題和候選答案的相似度,此外也可能存在句式之間的關聯。

如“北京的面積是多少?”可以把“多少”替換成答案。

端到端的閱讀理解問答技術

  • 端到端:在原始輸入到最終輸出間減少人的干預,只考模型自己學習。

避免了傳統機器學習方法設計特徵的環節,而讓模型隱式地學習特徵,通常比專家設計的還要好。

模型的一些“記憶”機制可以記住長距離的上下文信息,自動將多句話的重要知識存儲在數字模型中,不需要人工設計知識結構和記憶邏輯,只需要足夠的訓練數據。

什麼是閱讀理解任務

即閱讀一段文章,回答有關文章的若干問題,以理解文中事實爲主。

有一個基於維基百科的閱讀理解任務數據集SQuAD,有多個團隊的數學模型超過了人類的平均得分(如BERT,CMU的QANet,百度,猿輔導等)。

在這些任務中,知識庫以非結構化的篇章形式出現,閱讀理解時需要包含一些簡單的推理過程。

閱讀理解任務的模型

前面提及的參賽隊伍的模型有一些共性:

2ebdb429293fcd4d147c5db4df43bc3

  • 輸入和編碼:先做詞(字符)嵌入/人工提取一些特徵(如詞性、命名實體),作爲向量。然後把問題和段落各兩三個向量拼接在一起,輸入到BiRNN、BiLSTM或其他序列模型進行處理,從而分別形成問題和段落的編碼表示。

  • 問題-段落的融合:最簡單的辦法是把問題向量和段落向量相乘,矩陣元素表示相關程度;也可以採用attention機制,那麼此時可以得到二者的關聯。

    還有一些加強的方式,例如反覆自乘、重複幾遍上述運算,重複計算段落與段落之間的關聯。

  • 確定答案:要求找到答案的具體位置,通常使用指針網絡(Pointer Network),把問題與前面注意力層的段落表示相結合,即可計算出答案在段落內的概率分佈,最大值就是起始位置。然後問題與起始位置相作用,即可得到答案的結束位置。(或者利用語言學特徵進行重排,找到最佳答案)

閱讀理解任務的其餘工程技巧

  • 集成學習:前幾名的隊伍都是用集成學習,多個弱分類器的集成效果反而可能強過一個強分類器,單一模型得到的訓練結果並非每次相同;集成模型可以達到好的綜合效果。
  • 瓶頸及其突破:深度神經網絡的一大瓶頸是訓練數據的數量,比賽提供的數據量有限。谷歌大腦團隊的模型是較快的CNN,因此設計了方法增加訓練數據量。例如將英文翻譯成法文得到 \(k\) 種版本(有一定的語言上的差異),然後將法文翻譯回英文( \(k\) 種),那麼累計有 \(k^2\) 種,極大增加了訓練語料數量。

前景與挑戰

問答系統在大數據的支撐下有了相當大的進展,大數據更多的知識,使得有問必答;另一方面,深度學習模型提高了問答系統的準確性。

可預見的未來,問答系統的基本技術將廣泛應用於各個領域,使機器逐漸從“用知識”變爲“學知識”。

中文領域的問答技術發展迅速,例如《一站到底》的汪仔,將語音識別、圖像處理、語義理解多種技術融合。


問答系統設計的技術較多,既包括語義分析、信息檢索,又涉及知識的挖掘與管理。需要我們對我們每個環節一絲不苟,在方方面面下功夫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章