作者丨崔萬雲
學校丨復旦大學博士
研究方向丨問答系統,知識圖譜
領域問答的基礎在於領域知識圖譜。對於特定領域,其高質量、結構化的知識往往是不存在,或者是極少的。本章希望從一般文字描述中抽取富含知識的句子,並將其結構化,作為問答系統的知識源。特別的,對於不同的領域,其“知識”的含義是不一樣的。有些資料對於某一領域是關鍵知識,而對於另一領域則可能毫無意義。傳統的知識提取方法沒有考慮具體領域特徵。
本章提出了領域相關的富含知識的句子提取方法,DAKSE。DAKSE 從領域問答語料庫和特定領域的純文字文件中學習富含知識的句子表示。本章在真實資料上的實驗驗證了 DAKSE 可以以很高的準確率和召回率提取出富含知識的句子。本章還進一步將 DAKSE 的結果應用於領域資訊提取,以自動提取結構化的領域知識。
1.概述
當我們在閱讀文件搜尋目標資訊時,人類並不會以穩定的速度來瀏覽所有的詞語。相反,人的眼睛會四處移動,定位文字的有意義部分,並建立一個整體的感知。掃視的能力能幫助人類跳過大量無用的資訊,並專注於富含知識的句子。這引發了一個問題:機器如何像人類一樣提取富含知識的句子?這個問題在本文中被稱為富含知識句子的抽取問題。
例如,當閱讀示例 7.1 中的史丹佛大學的語料庫時,AI 研究者會認為句子 s1 富含更多的資訊,給予更多的關注。相比之下,大學生可能跳過 s1,但會關注 s2。因此,一個句子是否富含知識對於不同的使用者是不同的。富含知識的句子提取系統需要為 AI 研究人員提取 s1,為大學生提取 s2。
從純文字抽取知識的問題已經作為開放資訊抽取(Open IE),關係抽取和句子抽取被進行了研究。開放資訊抽取從純文字中提取所有的結構化關係。關係抽取只提取指定的關係(例如來自知識庫的謂詞)。句子抽取提取有意義的句子,通常用於文件概括問題。富含知識的句子提取與這三個問題的專注點不同。
與開放資訊抽取相比,富含知識的句子抽取著重於抽取句子。如示例 7.1 所示, 一個句子是否富含知識取決於不同使用者的需求。一個統一的開放資訊抽取框架是不知道不同使用者的需求的。在示例 7.1 中,開放資訊抽取系統不能為不同的使用者分別提取 s1 和 s2。因此,開放資訊抽取不能直接用於富含知識的句子抽取。
與關係抽取相比,富含知識的句子提取是無監督的。關係提取僅識別指定的關係, 而不同的使用者關注不同的關係。在例子 7.1,透過知道“學費”對於在校大學生是富含 知識的關係,關係抽取系統可以從 s2 中為大學生抽取相應的知識。然而,對於不同的不同使用者,他們有多樣的需求,並且對於特定需求的一個定義良好的模式標註資料是不存在的。在大多數情況下,一個領域往往沒有預定義模式和大量的標籤資料。這使得對於來自不同使用者的多種需求,關係提取是不適用的。
與句子提取相比,富含資訊的句子提取可以滿足使用者不同的興趣。但是一個句子在句子抽取中是否“有意義”是和使用者無關的。
富含知識的句子抽取的關鍵是連線句子的知識和使用者的需求。然而,這種需求對於不同的使用者是不同的。而通常沒有足夠的資料來完全描繪一個人的特定需求。如示例 7.1 中所建議的,領域是自定義需求的關鍵特徵。只有當抽取系統確定 s1 屬於 AI 領域, 它才會將其識別對於AI研究者的富含知識的句子。本文的目的是識別領域相關的富含知識的句子(DKS)。
為了使抽取方法能夠處理領域需求,本章使用了領域問答語料庫。在給定領域的 QA 語料庫中,答案句子對於該領域肯定是富含知識的。系統學習答案句子的表示方法。如果某個句子具有類似的表示,它將被識別為 DKS。
在學習一個領域的句子表示的時候,傳統的模型包括 主題模型和語言模型。 但是它們不能直接用於富含知識句子的提取。富含知識句子的抽取問題和它們主要有兩個區別:(1)QA 語料庫的答案和句子在純文字格式的表示不一樣。一些元素通常在 答案中會被省略。比如在示例 7.1 中,答案中省略了實驗室的名稱。因此,直接學習答案的表示通常會導致純文字中的句子識別的更多錯誤。(2)當從純文字學習句子表示時,其上下文是重要的特徵。傳統模型的著重於表示句子本身,而沒有考慮它的上下文。
本文提出了一種資料驅動方法 DAKSE,它包含無監督的種子 DKS 標記和有監督的 DKS 分類。DAKSE 首先透過匹配純文字句子和回答語句來標記種子 DKS。這樣就彌合了它們之間的差距。然後系統進一步使用神經網路來學習 DKS 分類器。該網路包含用於對候選語句和其上下文句子建模的三個並行的 LSTM。
應用:富含知識的句子抽取的結果不止可以判定一個句子對於使用者是否是富含知識的,對以下幾個 NLP 任務也是有益的:
- 領域資訊抽取 開放資訊抽取從給定語料庫中提取所有結構化三元組。因此,如果開放資訊抽取使用富含知識句子抽取系統抽取的句子,那麼它就可以提取特定領域的三元組。
- 問答系統 QA 系統依賴大量的問答語料對進行訓練。但現有的問答語料對是有限的。因此,從純文字自動生成問答語料對可以豐富 QA 語料庫。而富含知識的句子實際上就是問題的答案。自動問題生成技術可以被進一步用來生成完整的 QA 對。
- 自動摘要 文件摘要可以使用富含知識的句子提取作為預處理步驟,來識別有意義的句子。對領域知識的識別可以使得自動摘要更加定製化。
貢獻 下面總結本章工作的貢獻:
- 本章提出了富含知識的句子抽取的問題,並且分析了它的領域相關性。
- 本章提出了一種資料驅動方法 DAKSE,用於富含知識的句子抽取問題。本章使用 QA 語料庫中的答案為給定領域生成種子 DKS。
- 本章在真實資料集上評估了 DAKSE 提取出的句子的效果,包括客戶服務領域(中國移動客戶服務)和百科全書領域(百度百科)。本章還將結果應用於領域資訊的提取。
本章結構 本章的其餘部分組織如下:首先概述了 DAKSE 的系統架構。接著,本章描述了 DAKSE 如何在預處理步驟中使用領域 QA 語料庫來標記訓練資料。然後詳細闡述用於 DKS 分類的神經網路模型。最後展示了兩個領域的實驗結果,並將結果應用於領域資訊提取。
2.相關工作及其不足
本章中的工作涉及幾個相關主題,包括開放資訊抽取,知識庫中的關係抽取和句子抽取。
開放資訊抽取 開放資訊抽取系統使用自由關係而不是預定義的模式從自然語言文字中抽取結構化資訊。結果以(Beijing, is the capital of, China)的三元組形式展示。 現在已經出現了許多經典的開放資訊抽取系統。TextRunner 首先引入了開放資訊抽取問題。Reverb 揭示了 TextRunner 的兩個典型問題:不相關資訊抽取和非資訊抽取。 Reverb 透過新增句法約束來解決 TextRunner 的這兩個典型錯誤。Stanford open IE 進一步利用句子的語言結構來解決了長程依賴問題。這些開放資訊抽取系統在很少監督的情況下提取知識。但使用者往往只關注一些特定的主題或領域。這些系統會給具有特定需求的使用者帶來很多無用的元組。
關係抽取 關係抽取問題是指從自然語言文字中學習實體關係。它們通常以有監督的方式學習,需要很多帶標記的樣本用於訓練模型。使用關係的自然語言模式從文字中提取新的關係。該方法的學習過程是迭代式的,在每次迭代中學習新的模式和新的關係。使用強化學習來生成新查詢,同時更新提取的值。在關係提取中,這些關係是預定義的(比如來自知識庫)。但在本章的問題中,對每個使用者的有意義的關係是未知的。
句子抽取 專注於從文件中提取“有意義的”句子。該方法主要用於文件摘要任務。首先使用一個簡單的貝葉斯分類器來提取句子和彙總文件。他們使用許多統計特徵,如固定短語特徵,大寫字母特徵來表示句子。自從那以後,很多方法被提出來解決這個問題,包括 TF-IDF 方法,基於圖的方法,基於神經網路的方法。 這些句子提取方法從靜態的角度考慮一個句子是否具有意義,“有意義”意味著一個句子可以總結文件。相反,本章認為某個句子是否有意義是動態的,它的意義取決於特定使用者。也就是說,他們的方法沒有考慮“領域”作為句子提取的特徵。
3.系統概覽
圖 7.1 展示了 DAKSE 的系統架構。在種子 DKS 標註模組中,系統利用 QA 語料庫標記種子 DKS 來進行進一步訓練。透過使用這些種子 DKS 作為訓練資料,系統構建了一個深層神經網路(DKS 分類器)來學習這些種子 DKS 的表示。透過使用 DKS 分類器,DAKSE 在純文字語料庫中提取更多的 DKS。本節接下來會給出更多細節,同時給出一 個示例(例 7.2),展示 DAKSE 是如何工作的。
▲ 圖 7.1:DAKSE 的系統架構
種子 DKS 標註是 DAKSE 識別種子 DKS 的預處理步驟。需要注意的是,在特定領域的 QA 語料庫中的答案,對於該領域使用者是富含知識的。但是由於答案和純文字之間的差距,DAKSE 不直接使用這些答案作為種子 DKS。因為答案通常會省略元素,這使得它們的表示不同於純文字的表示。這裡系統認為如果純文字語料庫中的某個句子與至少一個 QA 語料庫中的答案具有高相似性,那麼它就是 DKS。透過這種方式,DAKSE 透過 QA 語料庫來標記種子 DKS。然後在 DKS 分類器中學習這些種子 DKS 的表示。
DKS 分類器透過使用種子 DKS 作為訓練資料,DAKSE 從純文字中抽取的 DKS 學習一個深層神經網路。該模型將句子及其上下文句子視為特徵。
例 7.2. 在圖 7.1,DAKSE 試圖從文字語料庫中提取 AI 領域的 DKS。首先,在種子 DKS 標記模組中,系統產生種子 DKS。需要注意的是,直接使用答案作為種子 DKS 在這種情況下效果不好。因為 s2 與答案完全不同,很難根據答案將 s2 分類為 DKS。 DAKSE 首先計算純文字語句和答案之間的相似性。它透過識別出 s1 與答案具有高相似性,將 s1 標記為種子 DKS。然後 DAKSE 學習 s1 的分類器,並使用分類器在文字語料庫中提取新的 DKS。由於 s1 和 s2 非常相似,s2 也被歸類為 DKS。注意這裡上下文特徵也有助於分類。
4 .種子 DKS 標註
本節詳細介紹種子 DKS 標註模組。該模組將純文字語料庫中的一些句子標記為種子 DKS。這些種子 DKS 會進一步用於訓練 DKS 分類器。
為了確定一個句子是否是 DKS,DAKSE 利用領域 QA 語料庫。如前文所述,領域 QA 語料庫中的答案是富含知識的。如果一個純文字句子與至少一個領域 QA 語料庫中的答案具有高相似性,DAKSE 就認為它是種子 DKS。這裡相似度使用 BM25 計算。
用 BM25 計算相似度給定一個純文字語句 s1,一個回答語句 s2,和單詞集合 w1 , ..., wn , 它們的 BM25 分數為:
這裡 IDF(wi) 是 wi 的逆文件頻率權重(與該單詞在 QA 語料中出現的文件個數有關),f (wi, s1) 是 wi’s 在 s1 中的詞頻,|s1| 是 s1 的長度 , avgsl 是純文字語料庫的平均句子長度。k1 和 b 是超引數。它們分別被設定為常用值:1.5 和 0.75。
如果存在一個答案語句 s2,使得 bm25 (s1,s2) > δ,那麼系統標記這個純文字語句 s1 為一個種子 DKS。根據前人經驗,這篇論文設定 δ = 0.4。
5. DKS 分類器
本節詳細說明 DKS 分類器。 DKS 分類器判斷一個純文字語料中的句子是否是一 個 DKS。它將種子 DKS 視為正確標準並從中學習。分類器考慮目標語句本身和其兩個上下文語句作為分類的特徵。系統為三個句子構建三個具有類似結構的三個並行網路(一個嵌入層和一個 LSTM 層)。然後系統在輸出層中聚合它們的輸出來生成目標句子的總得分。
▲ 圖 7.2:為 DKS 分類器構建的神經網路
詞向量層為分別為每個句子使用單獨的嵌入矩陣。更正式的說,對於一個有前驅句子 s2 和後繼句子 s3 的目標句子 s1,句子 si 中的單詞 w 使用詞向量矩陣 Mi 來做向量化:
這裡 r(w) ∈ {0, 1}|V| 是 w 的 one-hot 表示,|V| 是詞彙表大小
。
LSTM層 詞向量層的結果被傳遞到 LSTM 層,LSTM 層用於對詞序列的長依賴性進行建模。LSTM 層由儲存器單元序列組成,每個單元從嵌入層和前驅單元獲得輸入。儲存器單元具有四個基本元件:輸入門,忘記門,狀態儲存單元和輸出門。首先,忘記門接收來自嵌入層和前驅單元的輸入,並且決定丟棄哪個值。然後輸入門決定更新哪個值。狀態儲存單元儲存更新的值。最後,輸出門決定要輸出什麼。
這裡使用的LSTM版本來自於論文 [108]。該模型記憶單元有如下複合函式:
這裡 σ 函式是一個 sigmoid 函式,i,f,o,c 分別是輸入門,忘記門,輸出門,單元啟用向量,j 用於計算新的 c 值,W,b 是 LSTM 層的引數。
輸出層:該層連線 LSTM 的結果,並使用 sigmoid 函式來確定目標語句的得分,來判斷目標語句是否為 DKS。
這裡 hp、hi、ha 是 LSTM 層的三個輸出,σ 是 sigmoid 函式,Ws、bs 是該層的引數。
模型訓練 訓練過程使用種子 DKS 標記模組標記出的種子 DKS 作為正樣本訓練數 據。模型將無意義的句子作為負樣本訓練資料。這些句子隨機取樣自中文小說。訓練資料的更多細節可以在實驗部分找到。模型使用二元交叉熵作為損失函式。令 X = {x1,...,xn} 為訓練資料,這樣每個 xi 包括目標語句和它的上一句語句和下一句語句,Y = {y1,y2,...,yn} 是它們對應的標籤(0 或者 1)。對於引數 θ,xi 在輸出層對應的輸出分數為 score (xi;θ)。如果 score(xi;θ)≥0.5,模型預測 xi 的標籤 fˆ(xi;θ)=1,否則為 0。對於引數 θ , 對應的目標函式為:
至於詳細的實現,在訓練過程使用隨機引數初始化,利用反向傳播演算法來訓練引數,使用 mini-batched AdaGrad 演算法進行非凸最佳化,相應的學習率為 0.001,詞向量的維度設定為 128,每個 LSTM 層包含 128 個單元。
6 .實驗
6.1. 實驗設定
所有的實驗在一個雙路 Intel CPU E5-2620 v2 @ 2.10GHz,128GB 記憶體,GeForce GTX 980 GPU 的機器上執行。
資料集:實驗在兩個領域應用 DAKSE:中國移動客戶服務和百度百科。對於每個領域,實驗首先透過種子 DKS 標記模組來標記種子 DKS。這些 DKS 被認為是正樣本。然後實驗新增相等數量的非 DKS 作為負樣本。這些非 DKS 是從中文小說中隨機選擇的句子,小說中的句子通常來說不包含知識。
▲ 表 7.1:中國移動客服的前五 5DKSs
- 中國移動客戶服務包含中國移動公司的服務文件。純文字語料庫包含 363354 個句子。 QA 語料庫包含 9570 個 QA 對,它們是來自中國移動呼叫中心的常見問題及其答案。
- 百度百科是最大的中文百科。本實驗從百度百科上抓取了 2074116 個句子。實驗使用百度知道作為 QA 語料庫,從中隨機選取了 500000 箇中的 QA 對。很多百度知道中的問題是和百度百科中的知識相關的。
- 基準實驗:實驗使用兩個基礎的方法來和 DAKSE 做對比。
- 主題模型+SVM 實驗使用 LDA 來計算每個句子的主題分佈。這些主題分佈之後會被當作該句子的特徵,用於 SVM 分類。實驗將種子 DKS 標註模組得到的句子作為正樣本,加入小說中的句子作為負樣本。
- 語言模型 實驗在種子 DKS 上訓練出一個語言模型,對於一個新的句子,如果它的困惑度(Perplexity)小於一個給定的閾值,該模型認為它是一個 DKS。
6.2. 中國移動客戶服務
本小節評估 DAKSE 在中國移動客戶服務語料上的效果。首先,實驗給出提取的 DKS 的直觀感受,然後評估抽取出來的 DKS 的有效性。
DKS 概覽:DAKSE 從純文字語料庫提取總共 63543 個 DKS。為了給出 DKS 的直觀感受,表格 7.1 中列出了前 5 的 DKS(由 DKS 輸出層中的分數排序,該分數表現了分類的置信度)。實驗發現了一些有趣的結果如下:
- DAKSE 提取出了領域富含知識的句子。所有這些 DKS 都是客戶服務領域的資訊。
- DAKSE 提取了一些非常複雜的知識。例如 dks2 包含訊息提醒關係中的不同角色:傳送者(XXT 平臺)、資訊(服務將很快收費)、接受者等等。
- 抽取出來的 DKS 覆蓋多種型別。
實驗結果的有效性:實驗透過兩種方式來評估 DAKSE 是否可以很好地區分 DKS 和非 DKS。首先,透過假設種子 DKS 是正確的,實驗評估 DKS 分類器是否很好地提取出了 DKS。實驗選擇 80% 的樣本進行訓練,其餘的用於測試。訓練過程從小說中新增相等數量的負樣本。結果表示在表 7.2 中。
▲ 表 7.2:中國移動客戶服務結果評估
同時使用手工標註來評估 DKS 的有效性。實驗隨機選擇 100 個 DKS。並邀請來自相關領域的志願者標記 DKS 是否包含目標領域的有效知識。所有 DKS 被手動分成三種型別:(1) 正確 如果 DKS 是目標領域的有效知識;(2) 不相關 如果 DKS 包含知識,但與目標領域不相關;(3) 不正確 如果 DKS 沒有包含知識資訊。結果展示在表 7.3 中。
▲ 表 7.3:中國移動客戶服務人工標籤結果
表 7.2 和表 7.3 中的結果驗證了 DAKSE 能夠以很高的準確率和召回率抽取出 DKS。 這裡手工標註的正確率略小於精度,因為表 7.2 中的正確標準中包含一些噪聲(即一些標註為種子 DKS 的實際上是非 DKS)。
6.3. 百度百科
本節評估 DAKSE 在中文百度百科上的效果。與中國移動的客戶服務相比,百科領域更為寬泛。實驗使用該語料庫來展示 DAKSE 在更一般領域的有效性。
DKS概覽:DAKSE 抽取共 1806239 個 DKS。表 7.4 列出了前 5 個 DKS,用來對抽取結果提供一些直觀的展示。實驗發現 DAKSE 為百度百科領域提取出了有效的 DKS。
▲ 表 7.4:百度百科前 5 的 DKS
實驗結果的有效性:類似於中國移動客戶服務中的度量方法,假設種子 DKS 是正確的。評估結果展示在表 7.5 中。表 7.6 中展示了手動標記的結果,該結果驗證了本章方法的有效性。
▲ 表 7.5:百度百科的評估結果
▲ 表 7.6:百度百科的人工標註結果
6.4. 特徵貢獻
DAKSE 將目標語句本身(Inner)和其上下文語句(Context)視為特徵。 實驗評估了這些特徵在百度百科上做 DKS 分類的貢獻,結果展示在圖 7.3 中。這裡 “Inner”指模型只使用目標句子作為特徵。“Context”指模型只使用上下文作為特 徵。“Inner+Context”是本章提出的模型。
這些模型的召回率幾乎是一樣的,然而透過新增上下文特徵,精度有所提高。該結果驗證了這兩個特徵的貢獻。
▲ 圖 7.3:特徵貢獻
6.5. 應用:領域資訊抽取
開放資訊提取系統是從自然語言語料庫提取所有結構化元組。因此,透過使用 DKS 作為語料庫,可以實現特定領域的資訊提取,所有提取的元組都屬於該特定領域。
實驗使用 Stanford Open IE 進行資訊提取。由人手工來評估提取的元組是否正確。中國移動客戶服務語料上抽取的元組精度為 74%。百度百科語料上抽取的元組精度為 62%。
為了給出提取的元組的直觀描述,表格 7.7 展示了來自中國移動客戶服務語料庫的 DKS 的元組中頻率前 10 的關係,並將結果與原始文字語料庫中抽取出的關係進行比較。結果表明,根據 DKS 抽取出的元組中的關係更加清晰。這些關係直接指向使用者的需求(例如 can visit link for)。相比之下,直接從原始語料庫中抽取出的關係更模糊。
▲ 表 7.7:中國移動客服服務語料中的前 10 關係
提取的前幾個 DKS 的元組展示在表 7.8 中。可以看出,這些元組具有很高的質量並且與相應的領域相關。這些元組將是構建特定領域結構化知識庫的良好資料來源。這也驗證了 DAKSE 有益於領域資訊提取。
▲ 表 7.8:中國移動客服語料抽取出的資訊
7.小結
本章研究了針對特定領域的富含知識的句子提取的問題。在沒有給定領域的預定義模式的情況下,本章利用領域 QA 語料庫標記種子 DKS,構建了 DAKSE 系統,實現了文字語料庫中的 DKS 的自動識別。
本章在兩個不同的領域進行了充分的實驗,結果驗證 DAKSE 能夠有效地識別 DKS。實驗還將抽取出的結果應用於開放資訊抽取技術上,提取出了特定領域的結構化的知識。