問答系統的發展歷程

一部問答系統發展史就是一部人工智能史。伴隨着人工智能的興衰,問答系統也經歷了半個多世紀的浮沉,直到今天仍然方興未艾。筆者近期一直在從事對話式智能助手的研發,因此對問答系統的歷史、現狀、學術界的研究方向及業界的解決方案均有持續 follow,本文即是對該方向輸入的一番整理。希望對從事「類聊天機器人」領域的同仁有所幫助。

問答系統簡介

問答系統(Question Answering System,QA System)是用來回答人提出的自然語言問題的系統。從狹義上來說,問答系統是聊天機器人的其中一個組成部分(圖 1)。
聊天機器人的分類
按照知識領域,可以將問答系統分類爲“具體領域”以及“開放領域”。具體領域系統專注於回答特定領域的問題,如醫藥、體育、政府事務等。開放領域系統則希望不設限問題的內容範圍,天文地理無所不問。

按照問題類型,又可作如下劃分:

事實型問題:WH 問題,例如 when / who / where 等;
是非型問題:Is Beijing the capital of China?
對比型問題:Which city is larger, Shanghai or Beijing?
觀點型問題:What is Chinese opinion about Donald Trump?
原因/結果型問題:how / why / what 等。
是非型和對比型這類客觀問題以 事實型問題 爲核心(對於是非型問題 Is Beijing the capital of China? ,事實型問題 What is the capital of China? 是其回答的基礎。對於對比型問題 Which city is larger, Shanghai or Beijing? ,事實型問題 How large is Shanghai? 和 How large is Beijing? 是其回答的基礎。),因此我們又可以簡單地將問題類型分爲 事實型 和 非事實型。針對兩類問題類型的解決方案大相徑庭。

經典方法

基於信息檢索是傳統問答系統的經典方法。其按照以下的流程工作:
在這裏插入圖片描述

問題解析:

1 處理問題:處理用戶輸入的自然語言問題,系統對於問題進行處理和分析,並對問題進行分類,確定問題類型;
2 生成搜索關鍵詞:問題中的一些詞不適合作爲搜索關鍵詞,另一些詞的搜索權重則較高。系統需要對於用戶的問題進行分析,來獲得不同關鍵詞的權重。
3 信息檢索:系統使用從用戶的問題中得到的關鍵詞,對於數據庫中的文檔與關鍵詞的計算匹配程度,從而獲取若干個可能包含答案的候選文章,並且根據它們的相似度進行排序;
答案抽取:

段落提取:段落(paragraph)是包含答案的一個小節。問答系統與搜索引擎的區別在於用戶期望其返回精確的答案,而不是一個文章或段落。爲此首先要從文章中提取出可能包含答案的段落;
答案提取:在答案可能出現的段落被提取到以後,問答系統需要精確抽取段落中所包含的答案。這一步會用到問題分類。同時根據問題的關鍵詞,對於段落中的詞進行語義分析,最終找到最有可能是答案的字段。

基於知識圖譜的問答

什麼是知識圖譜
“奧巴馬出生在火奴魯魯”
“姚明是中國人”
“謝霆鋒的爸爸是謝賢”
這些就是一條條知識,而把大量的知識匯聚起來就成爲了知識庫。我們可以在 Wiki 百科、百度百科等百科全書查閱到大量的知識。然而,這些百科全書的知識組建形式是非結構化的自然語言,這樣的組織方式很適合人們閱讀但並不適合計算機去處理。爲了方便計算機的處理和理解,我們需要更加形式化、簡潔化的方式去表示知識,那就是知識圖譜。

知識圖譜是結構化的語義知識庫,用於以符號形式描述物理世界中的概念及其相互關係,其基本組成單位是三元組(SPO: Subject, Predicate, Object 分別表示主語、屬性、賓語)。

三元組是一種通用表示方式,即 G=(E,R,S),其中 E={e1,e2,⋯,e|E|} 是知識庫中的實體集合,共包含 |E| 種不同實體;R={r1,r2,⋯,r|E|} 是知識庫中的關係集合,共包含 |R| 種不同關係;S⊆E×R×E 代表知識庫中的三元組集合。

三元組的基本形式主要包括:

實體1 - 關係 - 實體2
概念 - 屬性 - 屬性值
知識圖譜的三元組
圖 3:三元組的基本形式(圖片來自《揭開知識庫問答KB-QA的面紗1·簡介篇》)

實體是知識圖譜中的最基本元素,不同的實體間存在不同的關係。概念主要指集合、類別、對象類型、事物的種類,例如人物、地理等;屬性主要指對象可能具有的屬性、特徵、特性、特點以及參數,例如國籍、生日等;屬性值主要指對象指定屬性的值,例如中國、1988-09-08 等。每個實體用一個全局唯一確定的 ID 來標識,每個屬性 - 屬性值對(attribute-value pair,AVP)可用來刻畫實體的內在特性,而關係可用來連接兩個實體,刻畫它們之間的關聯。

回到最初的例子: “奧巴馬出生在火奴魯魯” 可以用三元組表示爲 (BarackObama(實體1), PlaceOfBirth(關係), Honolulu(實體2))。

什麼是知識圖譜問答

以知識圖譜構建事實型的問答系統,也稱之爲 KB-QA(Knowledge Base Question Answering)。即給定自然語言問題,通過對問題進行語義理解和解析,進而利用知識圖譜進行查詢、推理得出答案。對事實型問答而言,這種做法依賴知識圖譜準確率比較高,同時也要求我們的知識圖譜是比較大規模的,因爲 KB-QA 無法給出在知識圖譜之外的答案。

知識圖譜問答
圖 :基於知識圖譜的問答系統工作流程(圖片來自中科院劉康在知識圖譜與問答系統前沿技術研討會中的報告)

主流方法
通過知識圖譜爲知識源回答問題時,一個問題的答案對應於知識圖譜的一個子結構。所以其問答過程的核心在於將自然語言問題映射爲知識圖譜上的結構化查詢。

一個 RDF 知識圖譜示例
圖 :一個 RDF 知識圖譜示例(圖片來自崔萬雲的博士學位論文《基於知識圖譜的問答系統關鍵技術研究》)

自然語言問題及其在知識圖譜中的屬性對應
圖 :自然語言問題及其在知識圖譜中的屬性對應(圖片來自崔萬雲的博士學位論文《基於知識圖譜的問答系統關鍵技術研究》)

基於知識圖譜的問答系統,需要解決兩個核心問題:

如何理解問題語義,並用計算機可以接受的形式進行表示(問題的理解和表示);
以及如何將該問題表示關聯到知識圖譜的結構化查詢中(語義關聯)。
傳統的主流方法可以分爲三類:

語義解析(Semantic Parsing)

該方法是一種偏語言學的方法,主體思想是將自然語言轉化爲一系列形式化的邏輯形式(logic form),通過對邏輯形式進行自底向上的解析,得到一種可以表達整個問題語義的邏輯形式,通過相應的查詢語句在知識庫中進行查詢,從而得出答案。下圖紅色部分即邏輯形式,綠色部分 where was Obama born 爲自然語言問題,藍色部分爲語義解析進行的相關操作,而形成的語義解析樹的根節點則是最終的語義解析結果,可以通過查詢語句直接在知識庫中查詢最終答案。
語義解析

該圖片來自論文:Semantic Parsing on Freebase from Question-Answer Pairs

信息抽取(Information Extraction)

該類方法通過提取問題中的實體,通過在知識庫中查詢該實體可以得到以該實體節點爲中心的知識庫子圖,子圖中的每一個節點或邊都可以作爲候選答案,通過觀察問題依據某些規則或模板進行信息抽取,得到問題特徵向量,建立分類器通過輸入問題特徵向量對候選答案進行篩選,從而得出最終答案。

向量建模(Vector Modeling)

該方法思想和信息抽取的思想比較接近,根據問題得出候選答案,把問題和候選答案都映射爲分佈式表達(Distributed Embedding),通過訓練數據對該分佈式表達進行訓練,使得問題和正確答案的向量表達的得分(通常以點乘爲形式)儘量高,如下圖所示。模型訓練完成後則可根據候選答案的向量表達和問題表達的得分進行篩選,得出最終答案。

向量建模

該圖片來自論文:Question answering with subgraph embeddings

基於閱讀理解的問答

機器閱讀理解在 NLP 領域近年來備受關注,自 2016 年 EMNLP 最佳數據集論文 SQuAD 發表後,各大企業院校都加入評測行列。利用機器閱讀理解技術進行問答即是對非結構化文章進行閱讀理解得到答案,又可以分成抽取式 QA 和生成式 QA。

抽取式

抽取式 QA 讓用戶輸入若干篇非結構化文本及若干個問題,機器自動在閱讀理解的基礎上,在文本中自動尋找答案來回答用戶的問題。抽取式 QA 的某個問題的答案肯定出現在某篇文章中。

抽取式 QA 的經典數據集是 SQuAD(斯坦福問答數據集),這是一個閱讀理解數據集,由衆包人員基於一系列維基百科文章的提問和對應的答案構成,其中每個問題的答案是相關文章中的文本片段或區間。SQuAD 一共有 107,785 個問題,以及配套的 536 篇文章。

SQuAD 示例:

內容:阿波羅計劃於 1962 至 1972 年間進行,期間得到了同期的雙子座計劃(1962 年 - 1966 年)的支持。雙子座計劃爲阿波羅計劃成功必需的一些太空旅行技術做了鋪墊。阿波羅計劃使用土星系列火箭作爲運載工具來發射飛船。這些火箭還被用於阿波羅應用計劃,包括 1973 年到 1974 年間支持了三個載人飛行任務的空間站 Skylab,以及 1975 年和前蘇聯合作的聯合地球軌道任務阿波羅聯盟測試計劃。
問題:哪一個空間站於 1973 到 1974 年間承載了三項載人飛行任務?
答案:Skylab 空間站
基於機器閱讀理解模型的問答流程如下圖所示:

基於機器閱讀理解模型的問答流程
該圖片來自阿里小蜜團隊吉仁的文章《阿里小蜜機器閱讀理解技術探索與實踐》

生成式

與抽取式 QA 的問題答案來自一篇文章的某個詞語、句子不同,生成式 QA 答案形式是這樣的:

答案完全在某篇原文;
答案分別出現在多篇文章中;
答案一部分出現在原文,一部分出現在問題中;
答案的一部分出現在原文,另一部分是生成的新詞;
答案完全不在原文出現(Yes / No 類型)。
目前比較好的數據集有 MSRA 的 MS MARCO 。針對這個數據集,國內的百度和猿題庫都給出了自己的評測。

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