司文豪,賈雷萍,戚銀城
(1.中國電建集團華中電力設計研究院有限公司,河南 鄭州 450007; 2.華北電力大學電子與通信工程系,河北 保定 071003)
互聯(lián)網上絕大部分原始數(shù)據(jù)都是以非結構化的自然語言形式存在,不能很好地被利用。信息抽取是把文本中包含的信息進行結構化處理,變成表格一樣的組織形式,以方便進一步的分析、處理和應用[1-2]。人物關系抽取是信息抽取的重要研究內容。從文本數(shù)據(jù)中識別出人名命名實體及表達二者關系的描述子,最后以〈people, relation, people〉的三元組的形式存入數(shù)據(jù)庫,可以進一步對人物網絡行為進行分析或應用到知識問答、商業(yè)推薦、廣告系統(tǒng)等領域。
基于機器學習的方法進行人物關系提取效果較好,但是需要人工選定特征。而卷積神經網絡(Convolutional Neural Network, CNN)能從訓練數(shù)據(jù)中自動學習并提取特征,可以解決人工特征少而不全的缺陷,在自然語言處理領域得到應用。文獻[3]提出一種動態(tài)卷積神經網絡(Dynamic Convolutional Neural Network, DCNN)結構,用其進行句子的語義建模。該模型使用動態(tài)池化方式,對一個線性序列做全局池化操作。該模型可以處理不同長度的輸入句子,并在能夠明確捕捉短期和長期關系的句子上引入特征圖。文獻[4]針對答案選擇問題提出了采用雙通道CNN來抽取輸入問題和答案之間的相似性與不相似性,整合成最終的句子向量并計算相似性。文獻[5]提出對單層CNN進行敏感性分析,以探索模型各個組成部分對模型性能的影響,主要用于區(qū)分重要和相對不重要的句子分類設計。
本文將深度學習應用到中文人物關系抽取上,提出一種基于CNN的中文人物關系抽取方法,并將該方法應用到來自互聯(lián)網上的包含大量人物關系描述的中文短文本數(shù)據(jù)集上,用分類的方法抽取人物關系,達到較好效果。
文本樣本數(shù)據(jù)的預處理包括文本收集、文本清洗、編碼處理、文本流的語言學處理和數(shù)學處理等過程。利用爬蟲系統(tǒng)收集的網絡文本是以靜態(tài)頁面代碼的形式存在且包含很多無用數(shù)據(jù),需要進行清洗、統(tǒng)一編碼、分詞、詞性標注、去除停用詞等處理。在分詞和標注詞性的同時還需要給每個詞分配一個權重,代表該詞在句子中的重要程度,即文本流的數(shù)學處理。本文采用基于條件隨機場(Conditional Random Field, CRF)的分詞模型[6]完成分詞工作。
傳統(tǒng)的獨熱表示(one-hot representation)僅僅將詞符號化,不包含任何語義信息。實際上,詞的語義由其上下文決定[7-8]。分布式詞向量表示是用低維稠密的實向量來表示單詞,使得2個語義上相近的詞語映射到向量空間后在距離上相近。此外,低維空間的稠密向量用到深度學習模型中也不會有維數(shù)災難問題。
谷歌的開源工具Word2vec用大量標注的語料通過神經網絡算法來訓練語言模型,獲得每個詞語的向量表示[9-11]。
本文采用搜狗實驗室公開的中文全網新聞語料庫來訓練Word2vec模型,該語料庫包含來自多家新聞站點近20個欄目的分類新聞數(shù)據(jù),涵蓋軍事、教育、財經、旅游、體育、文化等多個領域,中文詞條數(shù)近4億。為了驗證訓練效果,即檢驗詞向量中是否包含了原始詞語的語義信息,利用訓練好的詞向量模型找與“林丹”相近的詞語,并通過余弦距離給出相似程度,相似度最高的前10個結果如表1所示。
表1 與“林丹”相似的詞語表
序號相近詞相似度1陶菲克0.692鮑春來0.653謝杏芳0.614疲于奔命0.605蓋德0.596張寧0.587湯杯0.568招架0.559羽壇0.5510敗下陣來0.52
將訓練好的模型應用到本文預提取人物關系的數(shù)據(jù)集上,來完成將劃分好的詞語轉化成詞向量表達的工作,每一個詞向量的維數(shù)為50。
GE等提出將氣相離散為大量氣體微團[19],借助擬顆粒的運動狀態(tài)來描述氣體運動,氣體與固體顆粒的相互作用由擬顆粒與固體顆粒的作用來代替;通過模擬氣體顆粒與真實固體顆粒之間的碰撞等相互作用,精確把握氣固兩相流動中的一些宏觀現(xiàn)象和微觀特性,這種模型稱為擬顆粒模型。
本文將經典的CNN模型用于中文人物關系抽取,主要工作包含數(shù)據(jù)采集、數(shù)據(jù)預處理和標注,用CNN模型提取特征并分類,總體方案流程如圖1所示。
圖1 總體方案流程圖
設一個句子由n個詞組成,每個詞都用詞向量表示,則該句子可以表示為:
X1:n=X1⊕X2⊕…⊕Xn
(1)
其中Xi∈Rk代表句子中第i個詞的詞向量,且維數(shù)為k,⊕表示拼接操作。通常Xi:i+j表示詞語Xi,Xi+1, …, Xi+j的拼接。
設有一個包含h個詞語的窗口Xi:i+h-1,濾波器W∈Rhk可以抽取一個特征ci:
ci=f(W?Xi:i+h-1+b)
(2)
其中?表示卷積操作,b∈R是偏置項,f是激勵函數(shù)。如果用濾波器遍歷句子中所有可能的詞語窗口,則可得提取的特征:
C=[c1,c2,…,cn-h+1]
(3)
其中C∈Rn-h+1,即特征圖。
本文采用的CNN模型結構[12]如圖2所示。
圖2 CNN模型結構圖
該CNN模型共有4層,具體如下:
1)輸入層是n×k的矩陣,該矩陣由句中所有詞語的詞向量從上而下排列組成,n和k分別表示詞語數(shù)量和詞向量維數(shù)。
2)卷積層通過卷積濾波完成特征抽取。濾波器的個數(shù)為F,濾波器大小為h×k, h表示句子中詞向量的個數(shù)。
3)池化層(Pooling)采用k-Max池化且k=1。這種池化方式可以把變長輸入X整理成固定長度的輸入。
4)全連接+Softmax層。池化層輸出的一維向量以全連接的方式,與Softmax分類器相連,輸出標簽的概率分布。
本文采用隨機梯度下降算法(Stochastic Gradient Descent, SGD[13])訓練,學習率更新方法采用Adadelta[14],可以對學習率進行自適應調整。在模型的全連接層,采用Dropout[15]策略,即隨機選取要休息的神經元。被選中的神經元的權重在本批樣本訓練中不更新,還保留原來的值,等到下批樣本到來時,部分神經元開始工作,另外一批神經元開始休息,防止過擬合的同時也減少了計算量。
由于隨機梯度下降算法每次迭代只對一個訓練樣本計算梯度,直到收斂為止,一旦遇到噪音就會出現(xiàn)局部最優(yōu)解問題。針對該問題,本文在SGD基礎上采用Mini-batch[16]策略,即從所有訓練樣本中選取m個樣本作為一個批次進行迭代,每次迭代也是使用1個樣本,最后得到m個梯度,再加權平均并求和作為本批次的下降梯度,直到收斂為止。
采用百度百科有“娛樂人物”和“行業(yè)人物”標簽的人物數(shù)據(jù)作為待抽取人物關系的數(shù)據(jù)集。如短文本“2010年12月13日,林丹和謝杏芳的愛情長跑修成正果,兩人在廣州市海珠區(qū)民政局登記結婚?!北疚膶?種人物關系進行分類,分別為:配偶、分手(包含夫妻離婚,情侶分手2種情況)、情侶、父母子女、兄弟姐妹,每類關系標注了1000條數(shù)據(jù)。
數(shù)據(jù)集經過預處理、詞向量轉化后得到的結果,以[Revs, W, W2, Word_idx_map, Vocab]格式保存在pkl文件“mr.p”中。由于詞向量的選取對實驗結果有很大影響,其由2個參數(shù)決定:輸入詞矩陣的類型(Static和Non-Static)和詞矩陣的初始化。因此本文進行了3種實驗,來驗證前面得到的詞向量對模型性能的影響:
1)CNN-Rand:詞矩陣隨機初始化,矩陣類型為Non-Static,詞向量作為訓練過程中可優(yōu)化的參數(shù)在訓練過程中進行更新。
2)CNN-Static:詞向量在模型訓練中固定不變,矩陣類型為Static。
3)CNN-Non-Static:用訓練好的詞向量初始化詞矩陣,詞向量作為訓練過程中可優(yōu)化的參數(shù)在訓練過程中進行更新,矩陣類型為Non-Static。
利用3種模型對本文數(shù)據(jù)集進行人物關系抽取實驗,提取配偶、分手、情侶、父母子女、兄弟姐妹這5類人物關系,實驗結果如表2所示。
表2 3種模型的準確率
模型準確率/%CNN-Rand88.91CNN-Static92.67CNN-Non-Static92.87
很顯然,用已經訓練好的詞向量初始化詞矩陣得到的準確率要比隨機初始化詞矩陣的模型準確率高3.76%,表明預訓練的詞向量確實包含了大量原始句子的語義特征,更容易被模型學習并分類。從詞矩陣類型上看,Non-Static比Static在模型準確率上提高了0.2%,說明在CNN模型訓練過程中對詞向量進行適當調優(yōu)也是有效果的。
對于準確率最高的模型CNN-Non-Static,進一步統(tǒng)計每類關系下模型分類正確的數(shù)量,得出該模型的召回率,見表3。
表3 5種人物關系的召回率
關系類別標注數(shù)據(jù)/條召回數(shù)/條召回率/%配偶100092092.0分手100080480.4情侶100079279.2父母子女100094194.1兄弟姐妹100088988.9
由表3可見,父母子女及配偶關系的召回率最好,情侶及分手的召回率相對較差,5類人物關系上的平均召回率為86.92%。情侶及分手的召回率相對較差的主要原因是情侶和分手這2類關系的原始文本對應的人物有可能與配偶關系對應的人物有重合,而一般描述配偶關系的詞語特征比較明顯,描述情侶和分手關系的詞語特征相對模糊。另外,情侶和分手這2類關系還更多依賴輸入語句前后的特征,需要模型具有一定的記憶功能,而本文采用的CNN模型沒有記憶功能,因此影響了這2類關系抽取的準確率和召回率。
本文以互聯(lián)網上大量包含人物關系的中文自然語言文本為研究對象,以抽取其中的人物關系為目的,將人物關系抽取任務轉化成文本分類問題,利用卷積神經網絡提取詞向量特征并對人物關系進行分類。百度百科數(shù)據(jù)集上的實驗結果表明,該方法可以應用到工程中完成對人物關系的抽取任務。
本文在對人物關系分類時,沒有考慮人物性別屬性和人物關系的位置特征,因此無法識別出父子、母子等更細粒度的關系及誰是父親,誰是兒子。這需要在詞向量表達和構建人物關系抽取模型時做進一步優(yōu)化。