徐鴻飛,李英娜
(1.昆明理工大學 信息工程與自動化學院,云南 昆明 650500;2.云南省計算機應用重點實驗室(昆明理工大學),云南 昆明 650500)
電力安全規程數據包含各種類型的文本數據。電力安全文本數據分析的結果,可為電力現場檢修、電力設備管理、電網故障處置提供決策支持。電力安全規程中實體關系抽取的實現,能夠使電力安全工作獲得挖掘和分析大規模文本數據中有用知識的能力。
實體關系抽取,旨在從海量結構或非結構文本中抽取出類別實體和分類關系,是構建復雜的知識數據庫的關鍵步驟。
采用早期的基于規則和詞典抽取,需要利用人工標注數據或通過已有詞典使用概率和模式匹配等方法實現,在少量數據應用時取得了良好的效果[1]。但基于規則和詞典的方法要求條件高,需要大量時間和人力,不利于大量數據處理;因此研究者們提出了使用機器學習的方法進行實體關系抽取,希望使用算法建模并學習處理數據,然后對特定任務做出預測。機器學習方法有監督學習、半監督學習和無監督學習3種方式。為了減少人工依賴和增加抽取任務的可遷移性,研究者們又提出了采用遠程監督方式進行實體關系抽取。遠程監督通過文本對齊方式,將知識語料庫和待處理文本相同實體對進行同類標記,自動訓練大量樣本,生成特征訓練分類器[2]。
由于機器學習方式用到的特征依然人工完成,而深度學習具有從低維映射高維,從而發現數據更多特征的優點,因此可以很好地用于實體關系抽取任務中[3]。文獻[4]使用雙向長短時記憶網絡(Bi-directional long short-term memory,BiLSTM)加條件隨機場(Conditional random fields,CRF)模型進行訓練,并將融合遷移學習用于數據集的命名實體識別任務,取得91.53%的準確率。文獻[5]針對中文語法句式復雜、現有神經網絡抽取模型提取特征和語義表征能力差的問題,使用Bert預訓練模型融合實體對和實體類型等多特征信息進行抽取,提高了F1值。文獻[6]針對非結構化文本實體關系抽取存在上下文環境信息不能準確表征,導致實體關系抽取模型準確率不高的問題,提出一種新型實體關系抽取模型。該模型使用雙向門控循環單元獲得語序信息,然后加入注意力機制關注某些序列特征,最后采用分段卷積神經網絡學習特征并進行抽取。實驗證明,該模型具有較好的性能。文獻[7]針對遠程監督關系抽取方法常常忽略實體對的類型信息和句子語法信息的問題,提出使用實體周圍詞文本的注意力機制融合依存句法分析的雙向長短時記憶網絡的抽取器進行實體關系抽取,從而提高了抽取的精度和召回率。
現有的關于利用神經網絡模型實現實體關系抽取方面的研究,其關注點通常集中于實體關系抽取性能和F1值。同時,在這些研究中,對于實驗數據集本身有嚴格限制:只能使用通過人工方式多次標注核對獲得的高質量數據集,或者使用公開高標準數據。這些高質量、高標準的數據集都集中在通用領域。對于其他專業領域高標準數據集缺乏的問題,目前還沒有比較好的解決方法。
電力安全領域尚缺乏公開的可用于進行實體關系抽取相關研究的高標準數據集。同時,目前自有數據集也面臨質量不高、標注存在噪聲等問題。
電力安全規程相關文本數據,具有數量龐大、多元、異構、多維度、多形式的特點。在諸多電力安全規程文本數據中,非結構化數據居多,而且非結構化數據中存在很多與電力安全無關的語句。這些語句對電力安全規程實體關系抽取以及后續的圖譜構建會造成一定影響[8]。
鑒于此,本文結合自有電力安全規程數據集,首先針對標注噪聲問題,提出使用句袋注意力機制對數據集進行降噪;然后使用主流實體關系抽取方法 Bert+BiLSTM+CRF,對實體關系進行抽取[9]。
自有數據集使用的文本種類復雜,內容中難免出現頻率不一的無關語句。對無關語句定義為,句子中未出現相關實體和關系的語句。無關語句會對實體關系抽取產生不同程度的影響,即噪聲引入。噪聲會對語義特征產生影響,也就是無關語句對模型語義表征造成的影響。消除無關語句影響,可以對句子預先進行處理,在使用神經網絡模型層抽取之前進行降噪。本文在抽取模型前使用句子注意力機制對句子進行分類處理[10],避免錯誤信息的誤差傳播,以有效減少句子引入的噪音,增加信息抽取的準確性,優化了計算資源分配,提高模型訓練效果。
為實現實體關系抽取,本文模型使用基于深度學習的4層結構,分別為:進行句子降噪處理的預處理層、使用Bert模型的輸入層、使用BiLSTM和CRF算法的模型層,如圖1所示。

圖1 整體架構圖Fig. 1 Overall architecture
預處理層:基于句袋注意力機制對文本進行預處理。通過句子相似度計算,將句子分為若干句袋;使用注意力算法賦予語句不同權重值;最后,將一部分權重值低的句子直接丟棄。
輸入層:使用Bert模型進行詞向量表征,提取語句基于前后文的語義信息。
模型層使用BiLSTM和CRF算法進行信息抽取。
本文采用Word2vec向量劃分句袋模型。
首先使用 jieba對句子進行分詞處理。使用Word2vec獲取每個詞的 Vector。然后,將所有Vector相加并求平均,得到Sentence Vector。計算句子夾角余弦值,得出句子相似度。將數據分為n個相似句袋t={t1,t2,···,tn}。其中,表示在句袋ti中有m個句子。
Attention是一種讓模型充分學習并關注重點信息的機制[11],其使用雙向長短時記憶網絡(BiLSTM)Encoder-Decoder結構。
Encoder把所有輸入序列編碼成一個包含語義特征的固定長度隱向量(或上下文向量context)c。
與 Seq2Seq模型的 Decoder使用一個向量c計算隱藏層的情況不同,Attention在Decoder的每個時間輸入不同的向量c來進行計算。計算過程如圖2。

圖2 句袋注意力機制結構圖Fig. 2 Structure diagram of sentence bag attention mechanism
當前位置上下文向量c,是由Encoder部分所有隱狀態h和對應權重值α加權求和得到:


隱狀態hj和輸入隱狀態s′j的相關性etj通過前一階段的輸入隱狀態s′j-1和當前隱狀態hj計算得到。使用 softmax進行歸一化,得到權重atj。這個權重表示了當前位置隱狀態hj對當前位置輸入隱狀態sj的影響程度。
使用上一個輸入sj–1、上一個輸出yj–1和當前位置的上下文向量cj更新當前位置輸入隱狀態sj,然后計算出當前輸出yj。

將同一句袋內的句子權重進行加和歸一化,按照大小進行排序,根據排序結果權重值去除噪音句子。
Bert模型是基于Transformer構建的,如圖3所示。Transformer采用Encoder-Decoder架構,分別使用6層Encoder和Decoder堆疊在一起,如圖4所示。本文模型采用中文Bert_base Chinese模型。

圖3 Bert模型架構圖Fig. 3 Bert model architecture diagram

圖4 Transformer結構圖Fig. 4 The Transformer structure diagram
首先對數據進行Embedding處理。Bert以單個句子序列的方式進行輸入,還可以將2個句子組成的句子對的形式輸入模型訓練。在句子開頭插入[CLS]符號;該符號本身沒有任何語義,但其編碼整個句子的語義,同時在句子中間插入[SEP]符號,用來充當分割句子的標志位。對于中文數據集,對句子進行分字處理,對單個字進行向量化。將詞語級詞嵌入向量(Token embeddings)、句子信息嵌入向量(Segment embeddings)和位置嵌入向量(Position embeddings)進行拼接。詞嵌入向量是詞語映射的低維稠密向量;句子嵌入向量表示輸入句子的區分;位置嵌入向量是詞語在句子中的位置信息。拼接后的向量包含了句子信息和位置信息。這些向量被用作下游模型的高質量特征輸入。
將Embedding送入到Encoder層,Self-Attention處理完將數據送入前饋神經網絡,然后歸一化,送入下一個 Encoder層。Self-Attention可以學習句子內部詞語依賴關系信息以及句子結構。由于Self-Attention和每個詞都要計算 Attention,所以可以獲得長距離依賴關系。計算Embedding和矩陣相乘,得到Query、Key和Value 3個矩陣;然后計算Query和Key矩陣相乘。為了防止結果過大,使用 SoftMax函數歸一化為概率分布[12,13],公式如下:

式中:Q、K、V為Query、Key和Value 3個矩陣;dk為向量的維度。
Decoder還包含Mask multi-head attention層。多頭注意力機制使用多維度輸入提取重點關注內容:

預訓練時,隨機使用Mask掩蓋15%的詞,然后采用非監督方法預測該位置的詞。使用大量語料進行預訓練[14],獲得全局特征向量,引入句子之間的語義信息。經過Bert模型處理過的嵌入層,文本詞向量獲得大量句子級詞語相關特征。
BiLSTM模型分為2個獨立的長短時記憶網絡,分別以正序和倒序輸入到2個長短時記憶神經網絡(LSTM)中進行特征提取,將2個向量拼接后作為最終的特征表達。
LSTM 使用鏈式結構選擇記憶信息,使模型解決了長距離依賴問題,避免信息快速流失[15]。LSTM與RNN類似,但LSTM在隱藏層中增加了門控機構,分為遺忘門、輸入門和輸出門,結構如圖5。

圖5 長短時記憶網絡結構圖Fig. 5 Long and short memory network structure diagram

式中:xt為當前時刻的輸入;h為隱藏層狀態值;ht–1為前一時刻狀態值;W為ht–1的權重系數;Wf為遺忘門權重;Wi為輸入門權重;Wo為輸出門權重;Wc為特征提取過程中權重;U為xt的權重系數;Uf為遺忘門權重;Ui為輸入門權重;Uc為特征提取過程中權重;b為偏置值;bf為遺忘門偏置;bi為輸入門偏置;bo為輸出門偏置;bc為特征提取過程中的偏置值;tanh為正切雙曲函數;σ表示激活函數Sigmoid。
計算過程如下:首先通過遺忘門前一個時刻的隱藏層單元計算丟棄信息的概率值f(t),通過輸入門計算需要更新的狀態信息i(t);然后使用tanh計算需要添加的狀態信息a(t),更新記憶狀態值c(t);前一時刻狀態值ht–1中的部分狀態信息o(t)在輸入門中計算得出,然后就能得出當前時刻的狀態值,即前向傳播特征信息h(t)。
雙向傳播使用序列信息進行傳播,傳播方向是從后向前傳播,得到帶有后向傳播特征的序列信息;然后將2個不同方向得到的序列信息相加,即可得到融合了前向傳播特征與后向傳播特征的完整序列信息。
CRF是一種基于無向圖的概率判別模型。CRF不依賴獨立性假設,避免了標簽引入的偏差。
隨機過程:無限實數集T中存在無限多個隨機變量,這些變量依賴于實數集參數,記為X(t),t∈T。根據條件概率分別進行判別。計算輸入輸出條件下的另一組隨機變量:形式為對數線性模型,方法使用極大似然估計。
無向圖G=(V,E),G是中心節點。隨機變量的集合Y={Yv|v∈V},v是索引。給出一個隨機變量X,計算出每個隨機變量Yv。這些變量如果都能滿足馬爾可夫性:

則此時的概率分布P(Y|X)就滿足條件,就可以稱為一個條件隨機場。v表示在無向圖G=(V,E)中一個節點。w=v代表所有與這個節點有邊相連接的節點;w≠v代表所有沒有邊和此節點相連接的其他節點。Yv是節點v對應的一個隨機變量;Yw是w節點的隨機變量。
計算條件概率P(Y|X),使用到了勢函數和圖結構。通過使用指數函數,然后引用特征函數,條件概率為:

式中:λk和μl為對應的權重值;tk和sl為局部特征。
tk為一個定義在邊上的特征函數,稱為轉移特征;其不僅依賴當前位置,還依賴上一個位置。sl是定義在節點上的特征函數,稱為狀態特征;其僅僅依賴當前位置。當2個函數滿足特征條件時,取值為1;否則取值為0。Z(x)為規范化因子,功能是在所有可能的輸出序列上進行求和。
使用特征函數打分,分別得出不同標注網絡的得分,然后選擇可能性最高的,作為最終標注網絡。
本文采用自有電力安全規程數據集進行消融實驗和對比實驗。用消融實驗驗證句袋注意力機制對數據集降噪效果。用對比實驗驗證算法的抽取效果。
本文使用帶 GPU的計算機進行實驗,使用Python語言的版本為 Python3.6,使用的 Pytorch的版本為Pytorch1.14。
鑒于目前還沒有公開的電力安全規程相關數據集,本文采用已有電力規程文檔和電力安全規程相關文檔組成的文本數據,包括:新版電力安全工作規程、國家電網電力安全工程典型工作票、國家電網安全事故調查規程、電力通信安全規程、電力建設安全工作規程、電網安全規程精編、電力安全管理規定、電力安全隱患、輸電系統可靠性評價規程、農村安全用電規程,電力安全技術監察規程等。
由于數據集多為非結構化數據,因此使用人工方式進行數據清理,去除將標點符號、句子標號、空白區域和多余文檔格式等。
統計結果顯示,在字數為10個以下的句子中,有完整實體關系三元組的比例不足20%。在10個字以上的句子中,此比例隨字數上升明顯:因此,去除字數為10以下的句子。
采用 BIO(B-begin,I-inside,O-outside)方式進行實體關系標注。通過人工的方式構建實體關系結構。標注分為實體關系標注和無關語句標注,如表1所示。

表1 電力規程人工標注數據實例Tab. 1 Example of manual annotation data of power regulation
自有數據集的句式結構特征單一,但實體關系類型比較復雜,所以:本文采用主(a-s)謂(d-f)賓(g-h)形式進行實體–關系–實體標注。
無關語句標注。針對未出現與安全規程相關的實體關系語句,將語句所有字詞標注為O。
使用多次人工校對和軟件校對進行標注校驗,以保證數據集的準確性和可靠性。
實驗數據集文本10 000條,按照8:1:1的比例劃分訓練集、測試集和驗證集。
進行多次調參實驗。使用 Adam優化器來更新迭代參數。當訓練效果達到最優時,學習率設置為0.000 03,學習衰減率0.000 01,隱藏層共768層,最大序列長度128,dropout為0.4。
實驗使用準確率(precision,P)、召回率(recall,R)和F1值作為實驗的評價指標[16]。
消融實驗設置:將使用句袋注意力機制的模型與未使用句袋注意力機制的模型進行對比;其他實驗條件設置相同。訓練模型使用Bert-BiLSTM-CRF進行實驗,結果如表2所示。

表2 有無注意力機制實驗結果對比Tab. 2 Comparison of experimental results with and without attention mechanism%
由表2所示的實驗結果可知,使用句袋注意力對句子進行預處理之后,準確率、召回率和F1值均有4.0%以上的提高。由此證明,句袋注意力對實驗效果有提高的作用。
圖6所示為Bert-BiLSTM-CRF模型在不同迭代次數時的運行結果。由圖6可知,模型運行迭代到12輪時,F1值達到90.5%,以后結果趨于穩定,穩定在90.0%以上,在第22輪時,結果達到最高值 91.5%,后續迭代不高于最高值,因此本次實驗設置為30次迭代。

圖6 不同epochs下的F1值Fig. 6 F1 values at different epochs
將本文模型(Bert-BiLSTM-CRF)與目前主流的Bert-BiGRU-CNN、Bert-BiLSTM-Attention、Bert-CRF模型進行對比:實驗使用數據均為進行過句子降噪的同一數據集,運行在同一臺計算機上,均為同一軟件環境;結果如表3所示。

表3 不同模型效果對比Tab. 3 Effect comparison of different models%
由表3可知,本文模型在準確率、召回率和F1值3個指標方面均取得最好效果。本文模型F1值為 91.5%,為 4個模型中最高。Bert+BiGRU+CNN是對比模型中效果比較好的,但是和本文模型仍有 1.3%的差距。但是整體看來,使用 Bert模型的對比模型,結果均達到 80.0%以上,由此可見,Bert模型對于中文的表征性能達到很高的水平。
在電力安全規程缺少高質量數據集的情況下,本文引入句袋注意力機制,使用Bert預訓練模型進行表征,然后使用神經網絡加機器學習的抽取模型,對自有電力安全規程進行實體關系抽取。
實驗結果證明,利用句袋注意力機制能夠減少噪聲影響,能夠提高模型抽取性能。這對于后續實體關系消岐工作和關系圖譜構建都有重要的意義。
通過本實驗,能夠基本構建出高質量電力安全規程實體關系數據集,但仍有諸多工作和實驗中產生的問題需要進一步的思考和解決。未來研究方向為非連續關系識別和實體關系消岐。