何 俊, 劉 鵬, 聶 勇, 吳慎珂, 劉鵬政, 鐘可佳
(南昌大學(xué)信息工程學(xué)院,南昌 330031)
架空輸電線路在設(shè)計安裝以及運行維護(hù)的過程中需要嚴(yán)格遵守相關(guān)的規(guī)范,這些規(guī)范數(shù)據(jù)數(shù)量龐大并且是以文本形式存儲的,如何對這些規(guī)程文檔進(jìn)行存儲和查詢對輸電線路安全施工與規(guī)范作業(yè)具有重要意義。知識圖譜作為一種全新的知識表示方式,融合了深度學(xué)習(xí)技術(shù)與傳統(tǒng)數(shù)據(jù)庫的優(yōu)勢,提供了一種更好的管理知識信息的能力。將知識圖譜與電力領(lǐng)域結(jié)合,可使電力系統(tǒng)獲得挖掘和分析大規(guī)模文本信息中有用知識的能力[1]。2020年9月,國家電網(wǎng)《電力知識圖譜指南》標(biāo)準(zhǔn)提案成為IEEE Standard Association正式批準(zhǔn)立項的國際標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)旨在將電力“數(shù)據(jù)”升華為“知識”,通過知識的關(guān)系網(wǎng)絡(luò),實現(xiàn)多領(lǐng)域協(xié)同分析,有效賦能電網(wǎng)生產(chǎn)運行和企業(yè)經(jīng)營管理等方向。電力知識圖譜并沒有統(tǒng)一構(gòu)建方法,研究人員探索了多種電力知識圖譜的構(gòu)建方法。湯亞宸等[2]構(gòu)建了一套基于圖數(shù)據(jù)庫和知識圖譜的電力設(shè)備質(zhì)量綜合管理系統(tǒng),實現(xiàn)了電力設(shè)備的綜合管理、電力設(shè)備的缺陷分析與簡單的推理。Wu等[3]提出了一種基于Python構(gòu)建電網(wǎng)模型知識圖譜并存儲在圖據(jù)庫中的方法,通過實際案例驗證了該方法的可行性。知識抽取是知識圖譜構(gòu)建的關(guān)鍵技術(shù)[4-6],傳統(tǒng)的電力知識抽取一般有規(guī)則模板法與句法分析法[7-9]。
電力領(lǐng)域知識圖譜的構(gòu)建中知識抽取常使用中文分詞和規(guī)則模板方法[10],但是存在實體邊界不準(zhǔn)確和模板構(gòu)建過于依賴領(lǐng)域?qū)<业葐栴}。隨著深度學(xué)習(xí)技術(shù)應(yīng)用,逐漸采用Pipeline串聯(lián)的實體關(guān)系抽取方法[11-12],這種將實體抽取和關(guān)系抽取串聯(lián)起來的方法靈活性高,但是存在誤差積累問題。實體關(guān)系聯(lián)合抽取方法能夠解決串聯(lián)抽取方法的誤差積累問題,往往由于缺乏關(guān)系標(biāo)注數(shù)據(jù)集在電力領(lǐng)域少有應(yīng)用。因此,本文提出了一種基于Seq2seq的半指針半標(biāo)注實體關(guān)系聯(lián)合抽取輸電規(guī)程文本的方法,利用該模型進(jìn)行知識抽取,將抽取后的知識以三元組的形式存入圖數(shù)據(jù)庫中,最終實現(xiàn)輸電知識圖譜的構(gòu)建。
知識圖譜有自頂向下和自底向上兩種構(gòu)建方法:自頂向下的方法過度依賴領(lǐng)域?qū)<业闹R,由專家定義知識的本體框架,專業(yè)人員進(jìn)行實體、屬性與關(guān)系的填充;自底向上的構(gòu)建方法,則是基于已經(jīng)標(biāo)注好的語料庫,利用機(jī)器學(xué)習(xí)或深度學(xué)習(xí)方法,自動學(xué)習(xí)并實現(xiàn)機(jī)器的自動抽取。根據(jù)輸電規(guī)程文檔的特性,本文參考GB 50545-2010規(guī)程[13]的用詞和用語說明,結(jié)合輸電規(guī)程知識存儲和查詢的目的,采用自底向上的方法構(gòu)建輸電規(guī)程知識圖譜,并構(gòu)建了輸電規(guī)程知識圖譜語義關(guān)系設(shè)計。自底向上的知識圖譜是隨著抽取知識的增加而不斷完善的,在知識抽取初期通過知識圖譜語義關(guān)系框架來進(jìn)行實體的抽取。
輸電知識的語義關(guān)系設(shè)計需考慮到關(guān)系抽取模型的特點,涵蓋輸電規(guī)程文本的所有實體和關(guān)系。因此,本文采用Protégé(本體編輯器)進(jìn)行關(guān)系類型上下位管理,完成輸電規(guī)程知識圖譜的語義關(guān)系設(shè)計。關(guān)系類型分為謂語動詞關(guān)系、限定關(guān)系和要求關(guān)系3大類。其中要求關(guān)系根據(jù)要求的嚴(yán)格程度不同分為12小類,分別為“可”“不可”“宜”“不宜”“應(yīng)”“不應(yīng)”“需”“不需”“必須”“嚴(yán)禁”“不準(zhǔn)”“不得”,每一小類又與謂語動詞一起可組成多種關(guān)系類型。語義關(guān)系設(shè)計是關(guān)系抽取的指導(dǎo)框架,需要兼顧所要抽取的電力數(shù)據(jù)的特點。
知識抽取是知識圖譜構(gòu)建的前置步驟,主要是非結(jié)構(gòu)化文本的實體和關(guān)系抽取,其中關(guān)系抽取是建立圖譜中實體關(guān)聯(lián)的關(guān)鍵環(huán)節(jié)。關(guān)系抽取也稱為三元組抽取[14],任務(wù)是從文本中抽取出兩個或多個實體及其關(guān)聯(lián)關(guān)系。
目前,利用深度學(xué)習(xí)模型進(jìn)行關(guān)系抽取一般的方式:①先抽取實體再抽取實體間的關(guān)系的Pipeline串聯(lián)方法;②實體和關(guān)系聯(lián)合抽取的方法。Pipeline方法由于實體抽取的錯誤會影響關(guān)系抽取的性能,往往導(dǎo)致抽取效果不理想,而實體關(guān)系聯(lián)合抽取策略能夠克服這種誤差積累。
以輸電規(guī)程文本中的規(guī)程規(guī)定作為關(guān)系抽取的對象,由于中文自然語言的復(fù)雜性,所選用的關(guān)系抽取策略需要能夠應(yīng)對復(fù)雜的文本結(jié)構(gòu)。
本文將關(guān)系抽取轉(zhuǎn)化成SPO(主語,謂語,賓語)的三元組抽取形式。通過對規(guī)程文檔中數(shù)據(jù)的特點進(jìn)行分析,總結(jié)其中最常見的規(guī)程三元組樣本數(shù)據(jù)類型如表1所示。規(guī)程文檔常見的三元組類型有4種,分別為(S,P,O)單三元組情況、(P,O,S)三元組語句順序顛倒情況、1個S對應(yīng)多個(P,O)情況和1個(S,P)對應(yīng)于多個O的情況。其他類型語句如缺少S只有(P,O)的情況,多個S對應(yīng)1個(P,O)的情況和多個P對應(yīng)同1個S、O的情況相對較少。
考慮到中文文本的語意復(fù)雜性和抽取效率問題,本文采用一種基于Seq2seq概率圖思想的關(guān)系聯(lián)合抽取方案。
關(guān)系抽取模型需要能抽取出表1所示的三元組類型,主要的問題是實體邊界難以確定會導(dǎo)致實體抽取不完整。本文采用基于Seq2seq的半指針半標(biāo)注模型進(jìn)行關(guān)系抽取,實體的抽取利用兩個指針抽取實體的首尾,解決實體邊界模糊的問題。三元組(SPO)的抽取采用Seq2seq模型先抽取頭實體(S),再抽取關(guān)系(P)和尾實體(O)。這種抽取策略能夠很好地抽取出表1所示的4種三元組數(shù)據(jù)類型。
表1 輸電規(guī)程文本三元組數(shù)據(jù)類型
本文采用的基于Seq2seq的半指針半標(biāo)注的實體關(guān)系聯(lián)合抽取模型[1]如圖1所示。該模型的編碼解碼結(jié)構(gòu)先抽取S,再抽取實體關(guān)系(PO)。實體S的編碼器選擇預(yù)訓(xùn)練模型BERT獲取的編碼層向量,實體S的解碼器為單層網(wǎng)絡(luò),采用指針解碼。實體關(guān)系PO的編碼器為融入了S向量特征的BERT編碼層向量,PO的解碼器為多層指針網(wǎng)絡(luò),其中指針的層數(shù)等于關(guān)系數(shù)量。
圖1 基于Seq2seq的半指針半標(biāo)注的聯(lián)合抽取模型
結(jié)合BERT先驗特征的Seq2seq半指針半標(biāo)注的關(guān)系抽取模型抽取流程如下:
步驟1文本序列轉(zhuǎn)ID后傳入BERT的編碼器,得到編碼序列;
步驟2編碼序列接2個二分類器,預(yù)測S;
步驟3根據(jù)傳入的S,從編碼序列中抽取出S的首尾所對應(yīng)的編碼向量;
步驟4將S的編碼向量融入到BERT編碼序列中;
步驟5抽取的BERT層數(shù)據(jù)中學(xué)習(xí)到了字之間、詞語之間的關(guān)系;
步驟6融入后的序列來預(yù)測該S對應(yīng)的O、P。
在Bert的Transformer模型中,主要的標(biāo)準(zhǔn)化方法是層標(biāo)準(zhǔn)化。將S的編碼向量融入Transformer編碼序列采用的條件層標(biāo)準(zhǔn)化方法,目的是把S作為條件向量融合到層標(biāo)準(zhǔn)化的g和b 2個參數(shù)中,實現(xiàn)S向量的融合。
基于Seq2seq的三元組解碼的條件模型:
知識抽取是知識圖譜的構(gòu)建過程中的關(guān)鍵步驟,本文選擇利用訓(xùn)練完成的關(guān)系抽取模型輔助進(jìn)行知識抽取。采用該模型對輸電文本進(jìn)行逐句抽取,抽取后的三元組存儲在Excel文檔中保存。其中部分三元組還需要人工審核和校準(zhǔn)以提高抽取準(zhǔn)確率。最終抽取得到了10000條規(guī)程三元組。
關(guān)系抽取模型抽取的知識基本上能夠達(dá)到三元組的要求,主要存在的問題是知識漏抽取和錯誤抽取。為保證輸電規(guī)程知識的準(zhǔn)確性,關(guān)系抽取后的知識還需要進(jìn)行人工審核校驗才能導(dǎo)入圖數(shù)據(jù)庫中。利用關(guān)系抽取模型進(jìn)行輸電規(guī)程文本輔助抽取能夠顯著降低人力成本,加快數(shù)據(jù)抽取效率,并且比規(guī)則模板抽取更加靈活。
經(jīng)過抽取后的知識圖譜主要有2種存儲方式,一種是基于RDF的存儲,另一種是基于圖數(shù)據(jù)庫的存儲。以RDF存儲的圖數(shù)據(jù)易于發(fā)布和共享,而以圖數(shù)據(jù)庫存儲在于高效的圖查詢和搜索。本文為了提高知識圖譜的查詢效率,選擇將知識圖譜以三元組形式存入圖數(shù)據(jù)庫Neo4j中,如圖2所示。
圖2 輸電規(guī)程知識圖譜數(shù)據(jù)的可視化
Neo4j是原生圖計算引擎,它存儲和使用的數(shù)據(jù)自始至終都是使用原生的圖結(jié)構(gòu)數(shù)據(jù)進(jìn)行處理的,內(nèi)置的Cypher查詢語言使存儲和查詢簡單快速。本文使用內(nèi)置的Neo4j-import工具將抽取的10000條規(guī)程三元組導(dǎo)入Neo4j中,可以實現(xiàn)圖數(shù)據(jù)的可視化與快速更新。輸電規(guī)程知識圖譜的數(shù)據(jù)的可視化如圖2所示。
深度學(xué)習(xí)往往由于缺乏公共關(guān)系標(biāo)注數(shù)據(jù)集而在電力領(lǐng)域應(yīng)用較少。本文根據(jù)任務(wù)需求和數(shù)據(jù)特點,在知識圖譜語義關(guān)系設(shè)計的框架下進(jìn)行關(guān)系抽取訓(xùn)練數(shù)據(jù)的標(biāo)注。標(biāo)注數(shù)據(jù)是以輸電規(guī)程文檔作為數(shù)據(jù)來源,標(biāo)注的內(nèi)容為輸電領(lǐng)域相關(guān)規(guī)定與要求。人工標(biāo)注三元組數(shù)據(jù)如表1所示的4種三元組類型,共有7000條三元組數(shù)據(jù)。
關(guān)系抽取模型是以Python深度學(xué)習(xí)庫Keras框架搭建的。模型的訓(xùn)練使用云計算平臺OpenBayes為T4的算力容器,運行環(huán)境是TensorFlow1.15,BERT模型選擇為谷歌官方發(fā)布的中文預(yù)訓(xùn)練模型chinese_L-12_H-768_A-12。數(shù)據(jù)集是人工標(biāo)注的7000條三元組,采用80%數(shù)據(jù)訓(xùn)練,20%的數(shù)據(jù)測試。
基本參數(shù)選擇時,考慮到最大輸入詞長與輸入特征有關(guān),Epoch大小的選擇直接影響模型是否達(dá)到穩(wěn)定,Batch_size的選擇需要兼顧到顯卡內(nèi)存和模型訓(xùn)練的速度,學(xué)習(xí)率的選擇也是與模型訓(xùn)練速度有關(guān)。由于實體采用指針解碼,實體首尾指針的閾值的設(shè)置也會直接影響解碼的過程。輸入最大詞長選擇為128,Epoch選擇為45,Batch_size選擇為64,學(xué)習(xí)率選擇為0.1×10-4。頭實體(S)的首尾指針的閾值選擇為0.6和0.5,尾實體(O)的首尾指針的閾值選擇為0.5和0.4。
模型訓(xùn)練時的訓(xùn)練集測試集準(zhǔn)確率、召回率和F1值隨epoch變化如圖3所示。模型訓(xùn)練了45個epoch后達(dá)到穩(wěn)定,實驗結(jié)果表示測試集精確率(Precision)為0.8804,召回率(Recall)為0.7988,F(xiàn)1值為0.8376。結(jié)果表明精確率比召回率高0.0816。
圖3 訓(xùn)練時測試集評價指標(biāo)的變化
通過打印測試集預(yù)測數(shù)據(jù)分析,模型對一句話中只含一條SPO的預(yù)測幾乎全部正確,在1個S對應(yīng)多個PO也能正確預(yù)測,但是在一句話中出現(xiàn)多個不同的S時會出現(xiàn)預(yù)測遺漏或者錯誤。模型的特點是先預(yù)測S再預(yù)測PO,這種策略使得S的正確預(yù)測至關(guān)重要。
為了更加有效地利用知識圖譜,需要一種快速準(zhǔn)確的查詢方式。知識查詢的核心不僅在于能夠支持表現(xiàn)形式豐富的信息需求,以不精確的方式匹配需求和數(shù)據(jù),并對結(jié)果進(jìn)行排序,同時也需要一種簡單高效的搜索方式,以便用戶以直觀的、易用的方式對數(shù)據(jù)進(jìn)行查詢和瀏覽。本文在圖數(shù)據(jù)庫查詢語言Cypher的基礎(chǔ)上,設(shè)計能夠支持自然語言的知識查詢系統(tǒng)。
知識圖譜的查詢大致分為:①初步篩選獲得候選三元組集;②對候選三元組集進(jìn)行嚴(yán)格的篩選,獲得最優(yōu)的三元組集。
常規(guī)的知識圖譜查詢是節(jié)點查詢,首先初步篩選獲得候選實體集,然后通過相鄰節(jié)點特征和關(guān)系特征篩選,獲得最終實體集。由于用戶輸入的查詢語句是相對簡短的,如果按照常規(guī)的節(jié)點查詢法來篩選會有問題,導(dǎo)致語句越短排序越靠前。為了降低語句長度對篩選算法排序結(jié)果的影響,本文結(jié)合余弦相似度的特點提出計算查詢匹配系數(shù)的篩選排序方法。候選三元組集的篩選與排序是通過對所計算的查詢匹配系數(shù)進(jìn)行篩選與排序,從而使相關(guān)度高的三元組結(jié)果排在前面。當(dāng)查詢語句長度遠(yuǎn)短于目標(biāo)三元組時,通過查詢匹配系數(shù)比較查詢語句與目標(biāo)語句的關(guān)聯(lián)程度,查詢匹配系數(shù)越高則認(rèn)為是越優(yōu)的查詢結(jié)果。
查詢匹配系數(shù)計算方法:由查詢語句Q得到列表A,目標(biāo)語句T得到列表B,則查詢語句匹配系數(shù)為
其中得到列表A和B有2種方法:①根據(jù)中文分詞工具HanLP分詞得到兩個列表A1、B1從而得到匹配系數(shù)S1;②通過命名實體識別模型得到2個列表A2、B2從而得到系數(shù)S2。一條自然語言查詢語句由輸電領(lǐng)域的命名實體和其他自然語言文字組成,由于系數(shù)S1是由分詞方法計算得來的,每個文字的權(quán)重是相同的,而系數(shù)S2對輸電命名實體的文字權(quán)重更高。因此綜合系數(shù)S1和S2并設(shè)置閾值α和β,用來對目標(biāo)三元組語句篩選排序。
知識圖譜以三元組的形式存儲在Neo4j數(shù)據(jù)庫中,利用Python與Neo4j的交互訪問圖數(shù)據(jù)庫,返回查詢結(jié)果,查詢結(jié)果以語句形式輸出。
為了評估構(gòu)建的輸電規(guī)程語義搜索系統(tǒng)的查詢效果,通過幾個典型的查詢語句進(jìn)行分析比較節(jié)點查詢和三元組查詢各自的適用場景,并對比兩者的查準(zhǔn)率和召回率。節(jié)點查詢方法是由命名實體匹配知識圖譜中的圖節(jié)點,然后利用編輯詞距方法進(jìn)行圖節(jié)點篩選,最后由節(jié)點返回相應(yīng)三元組語句。本文給出了6個代表性查詢語句:核心骨干網(wǎng)架包括哪些?導(dǎo)線允許溫度?風(fēng)壓不均勻系數(shù)的取值要求?基本風(fēng)速該如何確定?絕緣配合該怎么設(shè)計?耐張段長度該如何確定?三元組查詢和節(jié)點查詢的查準(zhǔn)率和召回率對比結(jié)果如圖4、5所示。
圖4 查準(zhǔn)率結(jié)果圖
對于三元組查詢方式的實際查準(zhǔn)查全率的效果來看,平均查準(zhǔn)率和查全率達(dá)到了75%以上,優(yōu)于知識圖譜中常用的編輯詞距法和N-Grams法。以上6條查詢語句的查準(zhǔn)率有2條查詢語句達(dá)到了100%,其余4條查詢語句在60%~80%之間,對比節(jié)點查詢方式,三元組查詢方式的查全率幾乎都在80%以上。由于查準(zhǔn)率反映檢索準(zhǔn)確性,查全率反映檢索全面性,兩者是成反比關(guān)系。三元組查詢方法在保證更高的查全率前提下,犧牲了部分查準(zhǔn)率。綜合分析查準(zhǔn)率和查全率,結(jié)果表明了三元組查詢方法在保證更高的查全率前提下,查詢效果比節(jié)點查詢法更加精確,效果更佳。實驗證明了實體關(guān)系聯(lián)合抽取方法構(gòu)建的輸電規(guī)程知識圖譜,采用了查詢匹配系數(shù)算法的查詢方法可以更好地實現(xiàn)知識查詢功能,提高知識查詢的查準(zhǔn)率和查全率。
圖5 召回率結(jié)果圖
本文提出的基于Seq2seq的半指針半標(biāo)注實體關(guān)系聯(lián)合抽取輸電規(guī)程文本的方法,其采用指針網(wǎng)絡(luò)解碼提高實體抽取的準(zhǔn)確性,共享編碼層進(jìn)行關(guān)系抽取降低了串聯(lián)抽取方法誤差積累問題。實驗結(jié)果表明:人工標(biāo)注的關(guān)系數(shù)據(jù)庫中測試集F1值達(dá)到0.8376,在知識圖譜查詢測試實驗中查準(zhǔn)率和查全率平均達(dá)到了75%以上,驗證了該方法在輸電規(guī)程文本抽取的有效性。本文自底向上構(gòu)建了輸電規(guī)程知識圖譜,在知識圖譜構(gòu)建過程中創(chuàng)新地采用實體關(guān)系聯(lián)合抽取策略進(jìn)行輸電規(guī)程文本知識抽取,驗證了實體關(guān)系聯(lián)合抽取模型在電力領(lǐng)域關(guān)系抽取的可行性,為電網(wǎng)應(yīng)用創(chuàng)新提供了新的思路。