劉 鵬,程浩然,王 瑩,魏 微,丁恩杰
(1.礦山物聯(lián)網(wǎng)應(yīng)用技術(shù)國家地方聯(lián)合工程實驗室,江蘇 徐州 221008;2.中國礦業(yè)大學(xué) 物聯(lián)網(wǎng)(感知礦山)研究中心,江蘇 徐州 221008;3.中國礦業(yè)大學(xué) 信息與控制工程學(xué)院,江蘇 徐州 221116)
中國是煤炭產(chǎn)銷大國,煤礦安全生產(chǎn)一直是關(guān)乎全局的大事。分析煤礦安全生產(chǎn)暴露出的問題,其深層次原因往往包括作業(yè)人員專業(yè)知識缺乏、安全意識淡漠、工種違規(guī)作業(yè)以及安全管理流于形式等重要人為因素。煤礦是一個復(fù)雜的巨系統(tǒng),煤礦工種繁多[1],作業(yè)人員眾多,切實提高煤礦作業(yè)人員的專業(yè)知識,增強煤礦工種人員的專業(yè)安全意識和能力,對減少煤礦事故發(fā)生,有效促進安全生產(chǎn)水平,具有基礎(chǔ)而重大的意義。該文通過對知識圖譜和智能問答理論及實踐研究,通過多源搜集大量煤礦工種專業(yè)知識語料,構(gòu)建了煤礦工種知識圖譜,并基于此實現(xiàn)了智能問答系統(tǒng),為煤礦工種人員準確快速獲得安全生產(chǎn)專業(yè)知識提供一個有益路徑。
國內(nèi)外在智能問答領(lǐng)域的研究經(jīng)歷了很長一段發(fā)展時期。1950年,英國數(shù)學(xué)家阿蘭·圖靈提出了“圖靈測試”[2-3]的概念,被認為是智能問答的前身。20世紀60年代,QA(Question Answering)[4]的概念被正式提出,21世紀初開放域的檢索式問答逐漸發(fā)展起來[5]。2012年,知識圖譜(Knowledge Graph)[6]的概念由Google正式提出,此后,基于知識圖譜的智能問答(Knowledge Graph Question Answering,KGQA)成為研究熱點,其核心在于基于知識圖譜理解用戶問題給出對應(yīng)答案,系統(tǒng)結(jié)合了機器學(xué)習、統(tǒng)計學(xué)習、自然語言處理等學(xué)科領(lǐng)域,主要通過信息檢索[7]、語義分析[8]、深度學(xué)習[9]等技術(shù)手段,從大量數(shù)據(jù)中提取關(guān)鍵信息。之后預(yù)訓(xùn)練模型BERT[10]的提出,使得KGQA的研究又進了一步。Lukovnikov等人[11]使用BERT幫助檢測實體和預(yù)測實體關(guān)系,首次演示了通過BERT完成簡單的KGQA任務(wù),基于查詢標簽相似性的排名獲得答案。Saxena等人[12]利用知識圖譜嵌入的方法提出了EmbedKGQA模型,通過RoBERTa[13]將問題進行詞嵌入。Nair等人[14]提出了一個結(jié)合知識圖譜和預(yù)訓(xùn)練Bert的問答模型,并運用于遠程教育領(lǐng)域。
在煤礦技術(shù)領(lǐng)域,曹現(xiàn)剛等人通過定義煤礦裝備維護的關(guān)鍵概念進行本體建模,利用Neo4j構(gòu)建煤礦裝備維護知識圖譜[15]。尚雅琪以煤礦事故案例為對象,基于深度學(xué)習研究知識圖譜的構(gòu)建過程,并構(gòu)建煤礦事故領(lǐng)域知識圖譜[16]。葉帥[17]通過知識抽取算法構(gòu)建煤礦領(lǐng)域知識圖譜,并基于Spark的樸素貝葉斯分類器實現(xiàn)智能知識查詢。張淑霞[18]對煤礦領(lǐng)域知識進行細分并定義實體間關(guān)系,在此基礎(chǔ)上構(gòu)建知識圖譜,并實現(xiàn)了煤礦領(lǐng)域的知識問答系統(tǒng)。
經(jīng)文獻調(diào)研發(fā)現(xiàn),目前尚沒有煤礦工種操作規(guī)范知識圖譜及智能問答系統(tǒng)的相關(guān)報道。經(jīng)筆者分析研究,煤礦工種知識專業(yè)性極強,來源廣泛且離散,現(xiàn)有圖譜研究方法較難泛化至此領(lǐng)域。而且煤礦工種信息多為完整句式,如果只抽取關(guān)鍵詞三元組,將很難完整準確反映原文涵義。因此,為滿足圖譜構(gòu)建和問答技術(shù)要求,同時保持煤礦工種知識的專業(yè)性和完備性,該文聚焦此領(lǐng)域開展研究工作,主要貢獻如下:
(1)結(jié)合命名實體識別和正則化方法,對煤礦工種信息進行抽取及專業(yè)分類,將各專業(yè)操作人員的崗位職責、操作流程等信息進行結(jié)構(gòu)化存儲及利用,改善了煤礦工種結(jié)構(gòu)化知識嚴重缺失的局面。
(2)通過聯(lián)合訓(xùn)練方式,對用戶問句進行意圖識別和槽位提取,提高了問句解析的正確性,同時將Sentence-Bert用于實體鏈接過程,將問句解析與實體鏈接相結(jié)合,進一步保證了問句解析準確性和答案檢索的專業(yè)完備性。
(3)在業(yè)界首次構(gòu)建了煤礦工種專業(yè)知識圖譜及其智能問答系統(tǒng),為煤礦智能化實踐做出了有益探索。
系統(tǒng)研究內(nèi)容分為兩部分:第一部分為圖譜構(gòu)建,第二部分為智能問答,系統(tǒng)架構(gòu)如圖1所示。
圖1 系統(tǒng)研究總體架構(gòu)
知識圖譜是一種多邊型關(guān)系網(wǎng)絡(luò)圖,由節(jié)點(實體)和邊(節(jié)點之間的連線關(guān)系)組成的<實體,屬性,屬性值><實體,關(guān)系,實體>三元組形式的數(shù)據(jù)構(gòu)成,通過語義網(wǎng)絡(luò)描述事物間的聯(lián)系。
而基于知識圖譜的智能問答的核心在于理解用戶問題,并基于知識圖譜檢索返回答案。
(1)數(shù)據(jù)獲取與信息抽取。
數(shù)據(jù)獲取階段,通過scrapy爬蟲框架從煤礦安全生產(chǎn)網(wǎng)等獲取相關(guān)煤礦數(shù)據(jù)。信息抽取階段,首先通過Re正則化方法抽取工種信息中的崗位人員信息,將作業(yè)工種分成十大專業(yè),構(gòu)成工種類別信息;然后利用序列標注模型Bert-BiLSTM-CRF[19]抽取其中的工種屬性信息,如崗位職責、設(shè)備描述、一般規(guī)定、崗位應(yīng)急處理知識等。通過以上兩步驟,抽取的煤礦工種信息分別如表1和表2所示。
表1 煤礦工種專業(yè)分類(部分)
表2 煤礦工種屬性信息(部分)
(2)三元組知識存儲及展示。
該文采用Neo4j作為煤礦工種知識存儲平臺。與傳統(tǒng)的關(guān)系數(shù)據(jù)庫相比,Neo4j是一種圖數(shù)據(jù)庫,可以有效地對“實體-關(guān)系(節(jié)點-邊)”數(shù)據(jù)進行建模和存儲,有利于對知識進行高效檢索及后續(xù)的知識問答推理。對崗位抽取信息進行數(shù)據(jù)清洗,整理成<實體,關(guān)系,實體>三元組形式,其中實體類型定義有:專業(yè)、崗位、事故、危險源、故障、檢查、注意事項、設(shè)備等,各實體概念下又包含相關(guān)屬性,如崗位屬性有崗位職責、作業(yè)流程等。知識圖譜中的實體間需要建立連接詮釋實體間的聯(lián)系,提高圖譜中的實體及其關(guān)系的表示效果和可搜索范圍,因此歸納關(guān)系有:包含、操作設(shè)備、設(shè)備故障、檢查處理、危險源、注意、遭遇、案例等,形成的煤礦工種知識圖譜Schema如圖2所示,圖譜可視化展示如圖3所示。
圖2 工種知識圖譜Schema
圖3 煤礦工種知識圖譜可視化展示(部分)
基于煤礦工種知識圖譜,進行智能問答系統(tǒng)研究,主要包括三部分內(nèi)容:意圖識別和槽位提取、實體鏈接、查詢語句生成。
(1)意圖識別和槽位提取。
對于用戶輸入的自然語言問題,需對其進行意圖識別,簡單講就是分析判斷用戶要做什么,可將其作為文本分類問題處理;槽位提取,是進一步提取問句中的關(guān)鍵細節(jié)信息,對用戶意圖進行有效補充,以構(gòu)成具體查詢內(nèi)容,可將其視為序列標注任務(wù)。如問句:“采煤機司機發(fā)生事故的原因有哪些?”,意圖識別后可以得知其意圖是詢問“事故原因”,槽位即是句子中的關(guān)鍵信息,即{name:“采煤機司機”,accident:“事故”}。
首先,需處理數(shù)據(jù)集,設(shè)計問題模板,按照8∶2的比例將數(shù)據(jù)集分為訓(xùn)練集和測試集,用于模型訓(xùn)練與測試,如表3所示。
表3 意圖識別和槽位提取數(shù)據(jù)集(部分)
其中intent表示意圖,slot表示槽位,設(shè)計的意圖intent種類包括:包含、遭遇、危險源、注意、操作設(shè)備、檢查處理、設(shè)備故障、設(shè)備故障處理、法律法規(guī)、檢修項目、管理標準、崗位職責、作業(yè)流程、應(yīng)急知識、一般規(guī)定、準備工作、收尾工作、處理措施、事故原因、防范措施、避災(zāi)路線、案例。設(shè)計的槽位slot種類包括:equipment(設(shè)備)、breakdown(故障)、post(崗位)、major(專業(yè))、accident(事故)、source(危險源)、name(崗位名)、注意事項(attention)、事故案例(case)。
隨后,采用特定模型方法進行意圖識別和槽位提取。兩個任務(wù)若分開訓(xùn)練需二次構(gòu)建訓(xùn)練語料,而且會有誤差傳播,造成意圖和槽位不匹配的情況。因此,為提高問句理解的準確性,減少人工標注及高效利用數(shù)據(jù),該文對意圖識別和槽位提取采用聯(lián)合訓(xùn)練和提取,讓文本輸入層和中間層共享特征信息,端到端閉環(huán)完整實現(xiàn),采用Bert-wwm-ext作為基礎(chǔ)模型,模型結(jié)構(gòu)如圖4所示。由圖4可以看出,意圖intent采用[CLS]的輸出進行識別,通過“檢修”一詞可識別出意圖為檢修項目;“掘進機”經(jīng)過e-mbedding層和內(nèi)部編碼層輸出結(jié)果,再對結(jié)果進行序列標注,最終得到槽位類型為“設(shè)備equipment”。
圖4 Bert聯(lián)合模型架構(gòu)
(2)實體鏈接。
通過意圖識別和槽位提取將問句中的“實體提及詞(entity mention)”識別出來后,需要將其與煤礦工種知識圖譜中的“目標實體”聯(lián)系起來,才能形成具體的查詢語句。實體鏈接則是將“實體提及詞”無歧義地指向知識圖譜中“目標實體”的技術(shù)方法,一般包括候選實體生成和實體消歧兩步驟[20]。由于本研究中知識圖譜的實體并不只是單個詞的節(jié)點,還包括句子類型的節(jié)點,因此采用Sentence-Bert(S-Bert)把識別出的提及詞和知識圖譜中的候選實體轉(zhuǎn)換成embeddings,保持其語義完整行,再計算余弦相似度進行相似度匹配,將相似度最大的作為最終的實體鏈接結(jié)果。其架構(gòu)如圖5所示。
圖5 S-Bert架構(gòu)
輸入“設(shè)備電纜破碎”,首先會得到知識圖譜中的候選實體集合,再進行相似度比對,最后預(yù)測出知識圖譜中的節(jié)點實體為“設(shè)備供電電纜破損,容易導(dǎo)致設(shè)備供電故障”,相似度結(jié)果示例如表4所示。
表4 相似度結(jié)果
(3)查詢語句生成。
實現(xiàn)KGQA,最后一步必須要形成對數(shù)據(jù)庫的查詢語句。Neo4j圖數(shù)據(jù)庫有專門的Cypher查詢語句,通過構(gòu)造問題模板,填入意圖和槽位信息,并把實體進行替換,即可形成真實具體的查詢語句,從圖數(shù)據(jù)庫存儲的知識圖譜中查詢到結(jié)果。如問題“掘進專業(yè)包含哪些具體崗位?”,其對應(yīng)的Neo4j查詢Cypher語句模板構(gòu)建如下:cypher = ["MATCH (m:專業(yè))-[r:包含]->(n:崗位) where m.name = '{0}' return m.name, r.name, n.name".format(i) for i in entities]。
由于問題包括崗位職責、檢修項目、應(yīng)急知識等22個意圖,因此可構(gòu)造22種Cypher語句模板,進一步可將其分為關(guān)系類問答、屬性類問答。關(guān)系類問答主要是通過兩實體間的關(guān)系構(gòu)造查詢語句,如遭遇、操作設(shè)備等,屬性類問答則是詢問實體節(jié)點下的具體屬性值,如崗位作業(yè)流程,部分如表5所示。
表5 Cypher問題模板(部分)
實驗運行環(huán)境為Windows10和Geforce RTX 3060,模型搭建采用Python3.7,pytorch1.12。配置參數(shù)為:訓(xùn)練批量大小batchsize為32,問題最長長度max_len為70,學(xué)習率為1e-7,隱藏單元數(shù)hidden_size為768,隱層hidden_dropout為0.1,迭代次數(shù)epoch為50,采用Adam作為優(yōu)化算法,采用交叉熵作為損失函數(shù)。
根據(jù)知識圖譜中存儲的煤礦工種信息和領(lǐng)域知識,構(gòu)建意圖識別和槽位提取數(shù)據(jù)集,再通過數(shù)據(jù)增強技術(shù)擴充此數(shù)據(jù)集,擴充后的數(shù)據(jù)集包含8 158條問句,將其按照8∶2的比例分為訓(xùn)練集和測試集。部分數(shù)據(jù)集樣式如表6所示。
表6 意圖識別和槽位提取數(shù)據(jù)集(部分)
實驗采用精確率(precision)、召回率(recall)以及F1值去評估實驗結(jié)果。如表7和表8所示,與Bert模型分開做意圖識別和槽位提取任務(wù)進行比較,可以發(fā)現(xiàn)該文聯(lián)合模型的效果更優(yōu),能夠識別出大多數(shù)意圖種類,如表9所示。
表7 槽位提取結(jié)果
表8 意圖識別結(jié)果
表9 與BERT對比結(jié)果
為進一步驗證聯(lián)合模型的效果,將其與Attention-RNN[21]和Slot-Gated[22]模型進行對比,結(jié)果如表10所示。通過實驗結(jié)果對比可以發(fā)現(xiàn),該文構(gòu)建的Bert聯(lián)合模型的效果更為優(yōu)越。分析原因可知,將兩個任務(wù)進行聯(lián)合建模,能夠分別提高意圖識別和槽位提取的效果,每個任務(wù)在訓(xùn)練過程中對另一任務(wù)的訓(xùn)練效果均能起到促進作用。而且訓(xùn)練語料均是根據(jù)煤礦工種知識圖譜中的實體屬性關(guān)系等進行構(gòu)建,相當于在意圖識別和槽位提取訓(xùn)練過程中,不斷向這兩個子任務(wù)注入真實知識以及時糾偏,保證它們的聯(lián)合訓(xùn)練結(jié)果都能更接近最優(yōu)解。
表10 模型對比結(jié)果
采用Django框架搭建煤礦工種知識圖譜問答系統(tǒng),系統(tǒng)最核心的功能就是對煤礦工種的操作規(guī)范等信息實現(xiàn)智能問答,并給出知識圖譜中相應(yīng)的查詢實體及關(guān)系子圖分支,顯示該系統(tǒng)具有良好的可解釋性,如圖6所示。
圖6 系統(tǒng)運行效果圖
以煤礦工種操作規(guī)范為語料基礎(chǔ),利用圖數(shù)據(jù)庫構(gòu)建煤礦工種知識圖譜,并在此基礎(chǔ)上采用意圖識別和槽位提取的方式進行領(lǐng)域問答研究,設(shè)計了煤礦工種知識圖譜智能問答系統(tǒng)。實驗證明,該系統(tǒng)可以基本滿足煤礦工種人員的專業(yè)知識問答需求,對于煤礦人員安全上崗具有一定實踐指導(dǎo)意義。未來工作計劃在圖譜內(nèi)容的細節(jié)完備性和復(fù)雜問句理解回答能力方面進一步開展工作。