熊建華,韓永國,廖 競,寇露彥,吳昌述
(西南科技大學 計算機科學與技術學院,四川 綿陽 621010)
信息抽取(Information Extraction,IE)利用計算機技術來識別文檔的有效信息,并將這些信息轉換成適合計算機的存儲、處理和檢索的結構化形式。信息抽取開辟了更加豐富的知識使用方式,有助于高效、有效地分析海量文本數據。信息抽取任務依照抽取內容可以劃分為:命名實體識別、事件抽取、關系抽取等。關系抽取是其中的重要子任務之一,主要目的是從文本中抽取實體之間的語義關系,通過三元組的形式對文本中包含的知識進行組織。開放關系抽取是指在不事先定義關系類型的情況下,直接對語料進行關系數據的抽取。相比于傳統關系抽取,開放關系抽取能充分利用開放語料,擴展出更多的關系類型,為自然語言處理的下游任務提供更好的支持。
開放關系抽取最早是在英文領域提出的。在英文開放關系抽取研究中出現了TextRunner[1]、WOE[2]、Reverb[3]、ClauseIE[4]、OLLIE[5]等多種經典系統。其中,TextRunner與Reverb都是利用詞性標記和正則表達式制定抽取規則進行抽取。ClauseIE通過英語語法知識將句子分解為子句進行抽取。WOE與OLLIE是基于自監督學習的抽取系統,利用已有的高質量關系數據標注數據,構建訓練數據集,然后從訓練數據集中學習關系抽取的模板。近年來,有學者嘗試使用深度學習網絡對開放關系進行端對端的抽取。文獻[6]中利用編碼器-解碼器框架進行開放關系抽取。該方法可以不定義任何抽取模式,直接進行抽取。文獻[7]利用BERT和多頭注意注意力機制融合句子和謂語特征,通過序列標注的方法進行開放關系抽取。
相比于英文開放關系抽取,中文開放關系抽取研究仍然處于起步階段,且中文開放關系抽取人工標記數據集較少,大部分研究仍然采用基于規則和模板的方式進行無監督的抽取。文獻[8]中提出了一種無監督的中文開放關系抽取方法。該方法利用實體距離、關系詞位置等特征抽取候選關系數據,隨后利用信息增益、句式規則進行關系過濾。該方法在大規模網絡文本語料中的準確率達到了80%。文獻[9]首次提出多元組的中文開放關系抽取,首先,識別出語料中的基本名詞短語作為實體詞,將句子中的謂語動詞作為候選關系詞;然后,根據句法規則將與關系詞相連的所有實體都添加到關系組中,可以同時抽取二元組和多元組。該方法在百度百科數據集上的抽取準確率達到了 81%。文獻[10]以句法分析結果的根節點為入口,遞歸查找所有動詞的主語、賓語成分,再根據句法規則進行補充調整,最終有效地獲取句子中復雜的多元實體關系。文獻[11]從手工標注的少量地質領域數據學習關系抽取模板進行開放關系抽取,有效解決了地質領域關系復雜的問題。文獻[12]首次將中文開放關系抽取視為序列生成任務,利用指針生成網絡對文本進行端對端的抽取。然而該方法仍然是在基于模板抽取的數據集上進行訓練的。
綜上所述,目前中文開放關系抽取的主要方法都是基于規則和模板的,這些方法需要以自然語言處理工具的處理結果為基礎進行抽取。然而自然語言處理工具在處理復雜長句時,分詞、詞性標注、句法分析的準確率都明顯下降,嚴重影響關系抽取的質量。另一方面,在復雜長句中通常存在多個關系數據,現有的開放關系抽取模板很難做到全面覆蓋。因此,該文借助序列到序列神經網絡模型將復雜長句簡化為多個結構簡單的子句,然后,利用自然語言處理工具對每個子句分別進行處理,最后,通過詞性、句法等約束實現開放關系抽取。
目前中文領域暫時沒有長句簡化相關的數據集。該文使用手工標注和回譯策略兩種方法構建了一個中文長句簡化語料庫。
首先,采用2019年中文維基百科的數據,進行長句簡化數據集的手工標注。中文維基百科數據的內容豐富,詞語、句法相對規范,數據量大是中文自然語言處理研究中常用的數據集,具有一定的權威性和可靠性。在進行手工標注前,需要先對中文維基百科數據進行預處理。如圖1所示,首先,對數據按句號進行分句;然后,使用哈工大的LTP(Language Technology Platform)工具對句子進行分詞,篩選出詞數大于30的句子;最后,利用LTP對句子進行實體識別,篩選出包含兩個以上實體的句子,確保選出的句子包含關系數據。

圖1 維基百科數據預處理流程
通過對篩選后的復雜長句分析發現,大多數句子都可以采用分解法和指稱法[13]進行手工簡化。分解法是將長句中的復雜成分獨立開來,與相應的成分構成若干短句。以語句“狐猴科是哺乳綱靈長目的一科,是樹棲動物,主要分布于非洲的馬達加斯加島”為例。前方主語和后方的并列短語可以直接拆分為結構獨立的子句:“狐猴科屬于哺乳綱靈長目”“狐猴科是樹棲動物”“狐猴科主要分布于非洲的馬達加斯加島”。指稱法是指將長句中的復雜成分用一個詞語來指代,與相應的成分構成“總說”的單句,再把復雜成分一一展開形成“分說”的單句,變成“總分句群”。以語句“龍卷風是在極不穩定天氣下由空氣強烈對流運動而產生的一種伴隨著高速旋轉的漏斗狀云柱的強風渦旋”為例,先抽取出句子主干“龍卷風是一種強風渦旋”,再對句子中的復雜成分進行分說“龍卷風由空氣強烈對流運動產生”“龍卷風伴隨漏斗狀云柱”。
從預處理后的長句數據中隨機抽取出4 000條長度大于30的句子,并按照上述方法對篩選出的句子進行手工簡化。
第二,利用回譯的方法,從英文的長句簡化語料中獲取原始數據,再從中篩選出2 000條數據。這一部分語料來源于WikiSpilt[14]。WikiSpilt數據集是從英文維基百科編輯歷史數據中收集而來的,包含100萬條句子簡化實例。首先,利用谷歌翻譯接口對原始數據集進行翻譯,刪除翻譯后詞語缺失、重復、翻譯錯誤的噪聲數據。然后,利用LTP工具對句子進行分詞和實體識別,篩選出實體數目大于2且原始句子長度大于30的句子及其簡化子句,再從中隨機挑選出2 000條數據。最后,將兩部分數據合并得到6 000條長句簡化數據。
關系抽取模型的大致工作流程如圖2所示。以圖中句子“斯坦福大學于1891年由時任加州參議員及州長的鐵路大亨利蘭·史丹福和他的妻子創辦”為例。先通過長句簡化模型將句子簡化為“斯坦福大學于1891年創辦”“斯坦福大學由亨利蘭·史丹福創辦”“亨利蘭·史丹福時任加州州長”三條簡單句。隨后再利用關系抽取算法對每個子句進行抽取,得到關系三元組數組:(斯坦福大學,創辦于,1891年);(亨利蘭·史丹福,創辦,斯坦福大學);(加州,州長,亨利蘭·史丹福)。接下來將對長句簡化模型、關系抽取兩個部分內容分別進行介紹。

圖2 基于長句簡化的關系抽取流程
目前關于中文復雜長句的簡化主要是利用符號進行分割[15-17]。但基于符號分割的句子,僅能分割出原本結構獨立的子句,部分結構不獨立的子句中仍然包含有關系數據。并且根據對上文構建的復雜長句數據集的統計發現,在復雜長句中還存在許多沒有逗號的句子。可見利用符號進行長句簡化存在著較大的局限性。因此,該文借鑒英文長句簡化的思想[18-20],直接利用機器翻譯領域的序列到序列神經網絡模型對長句簡化任務進行建模,將其作為單語言的翻譯任務。
現有的序列到序列模型通常采用RNN與LSTM神經網絡,存在編碼器結構過于簡單以及編碼階段信息利用率低的問題,在語料資源較少的情況下,性能較差。BERT[21]模型通過結合多維語義特征獲取詞向量,可以得到更細粒度的文本上下文表示,極大地提升了模型的特征提取能力。如圖3所示,該文以BERT的雙向Transformer結構作為基礎,構建序列到序列模型。由于本身結構限制,BERT模型通常只用于輸入編碼,并不能直接適用于文本生成任務。因此,采用UniLM[22]的seq2seq Mask機制對BERT的Transformer結構進行改造,僅對輸入部分的第二段文本進行下三角遮掩。這樣當Mask字段處在第一段文本時,模型可以利用文本中的所有token信息進行預測。當Mask字段處在第二段文本時,模型可以利用第一段文本的全部token信息,同時還可以利用Mask字段本身和它左側的全部token信息。通過這種方式,可以實現序列到序列的效果。

圖3 長句簡化模型結構
為了減少不必要的計算,加快模型訓練速度,對BERT模型的vocab.txt文件進行了精簡,只保留語料中使用到的token。訓練階段,將復雜句S1和簡單句子集S2連接成一個序列,以[SOS]s1[EOS]s2[EOS]的格式輸入,S2中各個子句間使用“。”進行分割。根據詞表獲取序列的Token后,再對序列的詞、位置、Segment(用于區分輸入序列和目標序列)進行embedding計算,最后將三種embedding求和得到最終的文本向量。英文中各個單詞本身帶有分隔符,而中文詞語通常由多個字詞連接組成。原始的BERT模型在預訓練過程中,采用的是以字粒度為基礎的Mask方式,會分割原本完整的中文詞語。因此,引入BERT-WWM[23]預訓練模型參數,BERT-WWM利用全詞Mask方式進行訓練,將同一詞語進行整體遮掩,能更好地保證中文句子的語義完整性。
在預測階段,加載訓練好的模型權重,輸入待簡化長句進行預測,在解碼時利用beamSearch搜索算法優化預測序列得到簡化句子集。
在關系抽取部分,仍然采用與主流開放關系抽取一致的思路,利用詞性、句法規則進行抽取。然而與傳統方法不同的是,該文抽取的句子是經過長句簡化模型處理得到的,句子結構簡單且類型大致相同。因此,不需要制定豐富、完備的范式,僅需要制定簡潔規則進行抽取即可。關系抽取算法的具體步驟為:
(1)利用LTP工具處理簡化后的句子,獲取詞性標注,依存句法分析的結果。
(2)獲取句子的主語和賓語作為基礎實體。將與句子核心詞相連的實體詞作為起點向前搜索,如果存在與實體詞具有定中關系的名詞、名詞性動詞等,則將其與起點的實體詞組合成語義完整的實體。
(3)根據依存句法分析結果找到句子的核心詞。
(4)以核心詞為起點,對與之相連的詞語進行判斷。如果存在并列的動詞或者動補結構的介詞,則將其與核心詞組合成新的關系詞,如果不存在則直接將核心詞作為關系詞。
(5)將關系詞與對應實體組成關系三元組輸出。
(6)將各個子句中抽取出的關系數據進行合并成關系數組輸出。
綜上所述,關系抽取算法首先按照主謂賓的句法結構進行了抽取,然后在此基礎上,對存在定中結構的實體詞進行了補充,對關系詞相連接的動詞和介詞進行了處理。
從構建的長句簡化數據集中抽取出1 000條句子對作為長句簡化的測試集,其余5 000條作為訓練集。關系抽取部分,從長句簡化的1 000條測試數據中抽取出2 479條關系數據,作為關系抽取的測試集。
長句簡化部分,采用哈工大的BERT-WWM預訓練參數,設置最大序列長度為70,Epochs設為55,初始學習率為1e-5,Beam_search解碼時的Beam_size為5。選取SARI值、BLUE值和訓練時間作為長句簡化模型的評估指標。SARI值通過對比原句、參考子句、預測子句中的詞語計算句子的簡化性。BLUE值是字符串相似性度量,可以衡量簡化子句與原句的相似性。
選用了如下三種基準模型進行長句簡化對比實驗:
(1)Seq2Seq+Attention:該模型將序列到序列框架與注意力機制結合,是目前研究文本生成任務的標準結構模型。
(2)Pointer-Generator:該模型在Seq2Seq模型的基礎上,通過指針網絡選擇生成詞,能有效解決生成過程中出現的未登錄詞的情況。
(3)BERT+LSTM:該模型采用Seq2Seq基礎架構,將Encoder替換為雙向Transformer編碼,Decoder 采用LSTM。使用BERT模型對編碼端參數進行初始化處理,解碼端從初始狀態訓練。
如表1所示,提出的長句簡化模型測試結果的SARI值和BLUE值分別為76.67%和60.65%,相比其他基準模型有較好的提升。此外,所提模型的訓練時間相比其他模型也有所減少,這是因為BERT模型提供了更豐富的上下文信息,使模型能更快收斂。

表1 長句簡化模型對比實驗結果
關系抽取部分,將準確率(P)、召回率(R)和F1值作為關系抽取模型的評估指標,計算公式如下:
(1)
(2)
(3)
其中,C1表示抽取結果中正確的關系條數,C2表示抽取的總的關系條數,C3表示測試集中存在的關系總數,F1值是準確率和召回率的調和平均值。
選取了CORE[24]、DSNFS[25]系統進行開放關系抽取對比,CORE利上下文信息及句法結構信息進行開放關系抽取,取得了較好的效果。DSNFS對中文中存在的特殊語言現象進行了總結,提出了一種基于依存語義范式的抽取方法,可以對網絡文本進行無監督的靈活的抽取。為了了解長句簡化方法對開放關系抽取方法的改進效果,將兩種模型分別在原始長句和簡化后的句子上進行實驗。將在簡化句子的實驗結果表示為CORE-SS和DSNFS-SS。
從表2可以看出,文中關系抽取方法準確率最高,召回率僅次于DSNFS-SS,這是因為DSNFS的抽取規則更加全面,可以覆蓋更多的情況。而CORE-SS與DSNFS-SS相比直接在復雜長句上進行抽取的CORE與DSNFS效果有較大的提升。說明基于長句簡化的關系抽取方法,能夠有效地提升開放關系抽取系統對復雜長句的抽取效果。

表2 開放關系抽取對比實驗結果 %
最后,對抽取中的錯誤關系數據和未抽取出的關系數據進行了分析,分析結果如表3所示。其中35%的錯誤是由關系詞識別錯誤產生的,由于該文僅選擇了動詞詞性的詞語作為關系詞,而部分句子中的關系詞是與動詞相鄰的名詞作為關系指示詞。其中28%的錯誤源于嵌套實體,由于在復雜長句中,除了句子本身結構復雜導致的句子長度增長外,還存在句子中實體詞較長的情況。該文僅利用自然語言處理工具進行了簡單的實體識別,沒有處理實體由多個實體嵌套的情形。20%由詞性標注導致的錯誤,由于中文中部分詞既可以做動詞又可以做名詞,自然語言處理工具對這類詞的識別容易出錯。13%錯誤來自簡化句子內容缺失,由于長句簡化模型在句子生成過程中,遺失了部分內容,從而將錯誤傳遞給了關系抽取模塊。4%由句法分析錯誤導致,經過長句簡化后,大部分的句子都能夠得到正確的句法分析結果,然而仍然存在少量句子句法分析錯誤。

表3 錯誤分析
該文提出了一種基于長句簡化的中文開放關系抽取方法。首先,利用序列到序列模型對復雜長句進行化簡,然后,針對化簡后的句子進行開放關系抽取。實驗結果表明,該方法能有效提高開放關系抽取對復雜長句抽取的準確率和召回率。此外,對實驗結果中的錯誤進行了歸納總結,為之后的研究提供了參考。