尚福華 張洪銘 解紅濤
(東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 大慶 163318)
石油井控領(lǐng)域的發(fā)展很大程度上取決于從業(yè)者創(chuàng)造知識(shí)、積累知識(shí)和應(yīng)用知識(shí)的能力。人工智能的發(fā)展使得傳統(tǒng)的人工作業(yè)開始逐步被機(jī)器替代,自動(dòng)化不斷滲透到油田井控培訓(xùn)的各個(gè)方面,比如主觀題自動(dòng)閱卷、知識(shí)問(wèn)答、智能檢索。這些智能化應(yīng)用都離不開文本相似度計(jì)算。特別是主觀題自動(dòng)閱卷,文本相似度算法的性能直接影響到井控考試的客觀性和公正性[1]。在目前的研究中,大部分的相似度研究都聚焦于一些通用文本,而面向一些特定領(lǐng)域的研究少之甚少。由于油田井控領(lǐng)域文本相似度計(jì)算涉及到一些專業(yè)性名詞,對(duì)于算法的要求更高,更復(fù)雜。使得計(jì)算機(jī)對(duì)井控領(lǐng)域文本的相似度不能像通用的相似度系統(tǒng)那樣通過(guò)現(xiàn)有的語(yǔ)義詞典理解其文本語(yǔ)義[2]。這些難點(diǎn)讓很多研究人員望而卻步。因此,實(shí)現(xiàn)井控領(lǐng)域的文本相似度計(jì)算顯得尤為重要。
在通用領(lǐng)域的相似度計(jì)算中,Gomaa W[2]等提出基于字符串(String-Based)的方法,試圖用字符串的重合度來(lái)計(jì)算句子的相似度,這種方法在存在語(yǔ)義信息缺乏的弊端。為了融入語(yǔ)義信息,Gomaa W[3]和Kadupitiya J[4]等隨后又提出了基于語(yǔ)料庫(kù)和基于詞典的方法,通過(guò)將句子中的詞和語(yǔ)料庫(kù)或者詞典(詞表、大詞林等)進(jìn)行匹配,獲取詞和詞之間的相似度值,在一定程度上緩解了語(yǔ)義上的問(wèn)題,但詞并不能完全代表句子的語(yǔ)義,而且,需要人工構(gòu)建大量的詞表[5]。隨著神經(jīng)網(wǎng)絡(luò)的興起,比如LSTM,BERT,GPT 等,通用句子相似度逐漸走向向量化,先對(duì)文本語(yǔ)句進(jìn)行向量化,再用向量間的距離來(lái)計(jì)算文本語(yǔ)句的相似度,但神經(jīng)網(wǎng)絡(luò)的方法有時(shí)候需要構(gòu)建大量的語(yǔ)料,工作量較大。雖然,通用句子相似度存在一些弊端,但在準(zhǔn)確率方面遠(yuǎn)遠(yuǎn)高于專業(yè)領(lǐng)域的句子相似度計(jì)算。這是由于專業(yè)詞匯具有不常見(jiàn)性和特殊性,導(dǎo)致在大詞林或者詞向量模型中不能很好地獲取詞匯的表示,僅僅通過(guò)對(duì)比字符和向量距離是不能判斷專業(yè)詞匯之間的相似度的[6]。為了解決專業(yè)文本相似度的語(yǔ)義問(wèn)題,孫海霞[7]等通過(guò)提取句子中的本體,作為判斷句子的語(yǔ)義代表,依次對(duì)比句子之間的本體語(yǔ)義相似度實(shí)現(xiàn)句子相似性的判斷。但本體失去了本身句子的關(guān)聯(lián)信息。高思丹,袁春風(fēng)設(shè)計(jì)了一種基于動(dòng)態(tài)編程模式的語(yǔ)句相似度模型,但針對(duì)專業(yè)詞語(yǔ)和文本語(yǔ)義的相似度計(jì)算仍然缺乏精度[8]。
由于油田井控領(lǐng)域中井控專業(yè)詞匯辨識(shí)度低的問(wèn)題,以上研究都難于準(zhǔn)確地計(jì)算井控專業(yè)詞匯間的相似度以及語(yǔ)義層面的相似度。因此,本文提出基于已有的井控知識(shí)圖譜和《同義詞詞林》進(jìn)行井控文本詞語(yǔ)間的語(yǔ)義相似度計(jì)算。井控領(lǐng)域知識(shí)圖譜能有效補(bǔ)充《同義詞詞林》對(duì)井控領(lǐng)域詞匯的語(yǔ)義分析的不足。在井控領(lǐng)域文本相似度計(jì)算過(guò)程中將兩者進(jìn)行有效的相互補(bǔ)充,不但能辨別井控文本中的領(lǐng)域詞匯,還可以通過(guò)詞匯間的語(yǔ)義關(guān)系在語(yǔ)義層面計(jì)算井控文本間的相似度。綜合詞語(yǔ)的表層信息,深層的語(yǔ)義關(guān)系以及利用依存句法分析得到的語(yǔ)句結(jié)構(gòu),再結(jié)合傳統(tǒng)的語(yǔ)句向量化計(jì)算句子層面的井控文本相似度,進(jìn)而得到更加精準(zhǔn)的井控領(lǐng)域文本相似度計(jì)算結(jié)果。
面對(duì)井控領(lǐng)域文本間的相似度計(jì)算,本文設(shè)計(jì)如圖1井控領(lǐng)域文本相似度計(jì)算模型進(jìn)行計(jì)算。
圖1 井控領(lǐng)域文本相似度計(jì)算模型框架圖
首先基于井控文本的關(guān)鍵詞手工整理或命名實(shí)體識(shí)別獲取井控領(lǐng)域的專業(yè)詞匯?;谔崛〉膶I(yè)詞匯,構(gòu)建井控領(lǐng)域詞表。然后將該詞表對(duì)LTP 分詞的外部詞典進(jìn)行補(bǔ)充,進(jìn)而能更加準(zhǔn)確地對(duì)井控領(lǐng)域詞匯進(jìn)行分詞。然后采用LTP 分別對(duì)井控領(lǐng)域文本進(jìn)行分詞和詞性標(biāo)注。預(yù)處理之后進(jìn)行依存句法分析提取關(guān)系詞對(duì)。井控領(lǐng)域文本相似度計(jì)算分為詞語(yǔ)和句子兩個(gè)層面。利用井控知識(shí)圖譜和同義詞詞林分別對(duì)專業(yè)領(lǐng)域和通用詞匯進(jìn)行相似度分析,獲取井控文本間基于關(guān)系詞對(duì)的相似度SW。再通過(guò)Word2vec 或者Glove 詞向量模型獲取詞匯的平均向量,以此作為句子的向量表示,通過(guò)對(duì)井控文本間句子向量進(jìn)行距離計(jì)算,獲取基于句子層面的相似度Ss。
最后,對(duì)關(guān)系詞對(duì)相似度和句子相似度分配不同的權(quán)重進(jìn)行加和,得到井控文本A 與井控文本B的最終文本相似度值。
井控文本預(yù)處理主要分為三個(gè)部分,數(shù)據(jù)清洗、中文分詞和詞性標(biāo)注,流程圖如圖2所示。
圖2 文本預(yù)處理流程
數(shù)據(jù)清洗:去除井控文本中的一些臟數(shù)據(jù),比如一些對(duì)文本語(yǔ)義沒(méi)有貢獻(xiàn)的停用詞,Html 標(biāo)簽,特殊符號(hào),標(biāo)點(diǎn)等,將數(shù)據(jù)處理為高質(zhì)量文本。
中文分詞:使用LTP 進(jìn)行中文分詞,將文本處理為以詞為單位的文本。
詞性標(biāo)注:使用LTP 進(jìn)行詞性標(biāo)注,將文本的詞標(biāo)記其詞性,為后續(xù)依存句法分析做準(zhǔn)備。
為了將井控領(lǐng)域文本中的詞匯進(jìn)行語(yǔ)義層面的相似度計(jì)算。本文利用LTP 對(duì)已完成預(yù)處理的井控文本進(jìn)行依存句法分析得到詞匯間的語(yǔ)法結(jié)構(gòu)信息。表1 為井控文本例句的分析結(jié)果(依存關(guān)系類型參考LTP 語(yǔ)言云[9])??梢钥闯?,經(jīng)過(guò)依存句法分析,句子中每個(gè)成分都可以與至少其他一個(gè)成分構(gòu)成關(guān)聯(lián)。
表1 句法分析結(jié)果
通過(guò)句法分析,將一個(gè)句子分解成了詞與詞的句法關(guān)系樹,每個(gè)成分通過(guò)不同的句法關(guān)系相連接。文本由句子組成進(jìn)而得到能表達(dá)文本語(yǔ)義信息的全部關(guān)系詞對(duì)。
關(guān)系詞對(duì)就是由富含語(yǔ)義的詞和相應(yīng)的依存關(guān)系組成的句法三元組。例如“工人采用適當(dāng)?shù)你@井液密度來(lái)控制地層孔隙壓力”,經(jīng)過(guò)詞性標(biāo)注后得到,“工人”是主語(yǔ),“采用”是謂語(yǔ)。以“工人”為核心詞的關(guān)系詞對(duì)為(工人,SVB,采用)。
經(jīng)過(guò)依存句法分析后,井控文本S 可表成:S=((x1,r1,x2),(x3,r2,x4),…,(xi,rj,xi+1),…,(xn,rm,xn+1))。(xi,rj,xi+1)表示一個(gè)關(guān)系詞對(duì),其中xi為中心詞,xi+1為依存詞,rj為依存關(guān)系類型?;诰浞ǚ治鼋Y(jié)果,本文主要選取依存關(guān)系為SBV(主謂關(guān)系),HED(核心關(guān)系),VOB(動(dòng)賓關(guān)系)的關(guān)系詞對(duì)做相似度分析。
井控文本A 和井控文本B 都得到了這樣一個(gè)組關(guān)系詞對(duì)集合,之后,繼續(xù)對(duì)著兩組詞對(duì)中對(duì)應(yīng)的詞對(duì)間的詞匯集合進(jìn)行相似度計(jì)算。
2.3.1 井控領(lǐng)域?qū)I(yè)詞匯相似度
在本節(jié)中,主要基于井控知識(shí)圖譜對(duì)關(guān)系詞對(duì)間的井控專業(yè)詞匯間進(jìn)行相似度計(jì)算。井控知識(shí)圖譜是由人工構(gòu)造的知識(shí)庫(kù),里面涵蓋了井控領(lǐng)域大部分的專業(yè)詞匯。因?yàn)橹R(shí)圖譜能夠更好地將詞匯和詞匯之間的關(guān)系進(jìn)行表示,因此,在本文中,主要采用井控知識(shí)圖譜計(jì)算領(lǐng)域詞匯的相似度。
在井控知識(shí)圖譜中,首先需要獲取節(jié)點(diǎn)的向量表示,基于節(jié)點(diǎn)之間的向量表示,計(jì)算節(jié)點(diǎn)之間的距離。那么,如何獲取節(jié)點(diǎn)的向量表示是非常關(guān)鍵的。這直接影響到后面的專業(yè)詞匯相似度計(jì)算。
專業(yè)詞匯相似度是通過(guò)引入井控系統(tǒng)領(lǐng)域的詞匯進(jìn)行計(jì)算。專業(yè)詞匯可以看成是知識(shí)圖譜的節(jié)點(diǎn),以N(E,n)表示,E 表示與其相關(guān)聯(lián)的邊的集合,注意E 是有方向的,實(shí)際意義表示詞匯的屬性,關(guān)系,描述等,n 表示與其相鄰的節(jié)點(diǎn)的集合。節(jié)點(diǎn)與節(jié)點(diǎn)之間在知識(shí)圖譜中的距離,節(jié)點(diǎn)間的密度以及每個(gè)節(jié)點(diǎn)之間的關(guān)系類型,都是需要考慮的。所以,我們給定節(jié)點(diǎn)f 和節(jié)點(diǎn)p的距離D為
其中V 表示節(jié)點(diǎn)向量,節(jié)點(diǎn)向量是通過(guò)所有向量節(jié)點(diǎn)和邊計(jì)算得出。
其中N 表示節(jié)點(diǎn)的數(shù),wi表示與其相鄰的第i 個(gè)節(jié)點(diǎn)的之間的邊的權(quán)重。該權(quán)重是通過(guò)歸一化的結(jié)果。即公式:
通過(guò)知識(shí)圖譜,可以將領(lǐng)域詞匯以節(jié)點(diǎn)表示,詞匯之間的關(guān)系以邊來(lái)表示。每個(gè)詞匯在初始時(shí),使用Word2vec 初始化每個(gè)節(jié)點(diǎn)的向量,以詞匯之間的關(guān)系權(quán)重初始化邊的值。基于式(4)對(duì)每個(gè)節(jié)點(diǎn)的邊的值進(jìn)行歸一化,比如節(jié)點(diǎn)M 有3 條邊,值分別為[0.7,0.8,0.5],經(jīng)過(guò)式(4)后,變?yōu)椋?.35,0.4,0.25],然后基于式(3)獲取該節(jié)點(diǎn)新的向量V。這樣一來(lái),每個(gè)節(jié)點(diǎn)就有一個(gè)向量表示,當(dāng)井控領(lǐng)域詞匯進(jìn)入知識(shí)圖譜查詢時(shí),獲得詞匯的向量,然后基于式(2),計(jì)算向量距離,即可獲得專業(yè)詞匯的相似度。
2.3.2 通用詞匯相似度
不在井控知識(shí)圖譜中出現(xiàn)的實(shí)體一律視為非專業(yè)詞匯即通用詞匯。也可理解為不在井控詞典中出現(xiàn)的詞匯即視為通用詞。為了解決通用詞匯間的相似度計(jì)算,在此采用同義詞詞林作為語(yǔ)義知識(shí)源進(jìn)行計(jì)算。
本文采用的詞林為《哈工大同義詞詞林?jǐn)U展版》來(lái)進(jìn)行非專業(yè)詞匯間的相似度計(jì)算。《同義詞詞林?jǐn)U展版》通過(guò)對(duì)老版同義詞詞林詞匯類別進(jìn)行深層分析與補(bǔ)充,在詞匯結(jié)構(gòu)的原型上補(bǔ)充完善成五層樹形詞語(yǔ)結(jié)構(gòu)。使得詞林中的詞匯間的層次結(jié)構(gòu)和分類更加完善[10]。不同層級(jí)的相似度計(jì)算如下:
1)若兩個(gè)義項(xiàng)不在同一查樹上:Sim(A,B)=f
2)若兩個(gè)義項(xiàng)在同一查樹上:
(1)若在第2層分支
(2)若在第3層分支
(3)若在第4層分支
(4)若在第5層分支
以“人”(編碼:Aa01A01=)與“小孩”(編碼:Ab04B01=)為例,當(dāng)詞進(jìn)入同義詞詞林進(jìn)行查詢時(shí),可得A 編碼開頭的詞匯有1309 個(gè),則n=1309,在第二層,人的編碼是a,小孩的編碼是b 所以k=1。所以Sim=0.65*[(1309-1+1)/1309]=0.65。
對(duì)井控文本進(jìn)行依存句法分析后,分析出了中所有詞與詞之間的語(yǔ)法關(guān)系,我們將能表達(dá)這種語(yǔ)義關(guān)系的句法三元組稱作關(guān)系詞對(duì)。一段文本便可由一組關(guān)系詞對(duì)進(jìn)行表示。文本間的相似度計(jì)算便可轉(zhuǎn)換成兩組關(guān)系詞對(duì)間的相似度計(jì)算。
經(jīng)依存句法分析出的每個(gè)依存關(guān)系都有相對(duì)應(yīng)使用這個(gè)句法關(guān)系的中心詞和依存詞。這個(gè)由中心詞,依存詞和依存關(guān)系組成的三元組又稱句法三元組(中心詞,依存關(guān)系,依存詞),在本文叫做關(guān)系詞對(duì)。所以兩個(gè)關(guān)系詞對(duì)的相似度綜合以下兩點(diǎn)進(jìn)行計(jì)算:一是關(guān)系類型間的相似度;二是中心詞之間和依存詞之間的相似度[11]。
因此,為了更好地對(duì)井控領(lǐng)域文本進(jìn)行相似度計(jì)算,本文設(shè)計(jì)了如圖3相似度算法。
當(dāng)通過(guò)LTP工具獲得了文本的關(guān)系詞對(duì)之后,文本A 和文本B 的關(guān)系詞對(duì)集合就拿到了。這時(shí),需要兩兩對(duì)集合中的詞進(jìn)行詞匯相似度計(jì)算。由于文本中的詞可能會(huì)出現(xiàn)兩種類型:井控領(lǐng)域詞匯,通用詞匯。兩兩組合就分為三種情況:
一個(gè)詞為井控領(lǐng)域詞匯,一個(gè)詞為通用詞匯:由于專業(yè)詞和通用詞一般不具有同義關(guān)系,因此,本文直接賦予相似度值為0.1;
兩個(gè)詞均為井控領(lǐng)域詞匯:將兩詞去知識(shí)圖譜中進(jìn)行查詢,獲得專業(yè)詞匯之間的相似度;
兩個(gè)詞均為通用詞匯:將兩詞去大詞林中進(jìn)行查詢,獲得通用詞匯之間的相似度;
經(jīng)過(guò)上述處理后,即可獲得井控文本A 中的關(guān)系詞對(duì)和井控文本B 中的關(guān)系詞對(duì)的相似度分?jǐn)?shù),構(gòu)成了M×N 的相似度分?jǐn)?shù)矩陣。(M 表示文本A 的詞對(duì)個(gè)數(shù),N 表示文本B 的詞對(duì)個(gè)數(shù)),然后對(duì)M 的每一行,取最大分?jǐn)?shù),就可以使井控文本A 中的每個(gè)關(guān)系詞對(duì)找到在井控文本B 中相對(duì)應(yīng)的關(guān)系詞對(duì)得到Nmax(A,B)={SQmax1,SQmax2,…,SQmaxm}。
所以,井控文本間基于關(guān)系詞對(duì)的文本相似度計(jì)算如式(4):
其中m 表示兩個(gè)井控文本中能夠相匹配的所有關(guān)系詞對(duì)的對(duì)數(shù),如m=0,表示兩個(gè)井控文本沒(méi)有匹配到相似的關(guān)系詞對(duì),即井控文本A 與井控文本B 的文本相似度是0。經(jīng)過(guò)上述處理,就得到了井控文本A 和井控文本B 之間的基于關(guān)系詞對(duì)的文本相似度分?jǐn)?shù)Sw。
由于句子的復(fù)雜性,關(guān)系詞對(duì)間的相似性并不能真正意義上代表句子的相似度。因此,在井控領(lǐng)域文本相似度計(jì)算中,引入了句子相似性進(jìn)行計(jì)算,防止因?yàn)槟承┨厥饩渥釉斐上嗨贫扔?jì)算偏差。文章主要采用Word2vec 中文詞向量模型,基于井控文本的分詞結(jié)果(去停用詞),依次從Word2vec獲取每個(gè)詞的詞向量[V0,V1,…,Vn],然后進(jìn)行mean pooling,得到句子的向量Vs[11]。最終通過(guò)余弦相似度來(lái)得出井控文本A 和井控文本B 之間在句子層面的文本相似度Ss如式(5):
最終的井控領(lǐng)域文本相似度綜合了關(guān)系詞對(duì)相似度和句子向量?jī)蓚€(gè)不同層面的相似度。其中關(guān)系詞對(duì)間的相似度又充分考慮到了井控領(lǐng)域詞匯和通用詞匯,分別進(jìn)行了詞語(yǔ)相似度計(jì)算。最終得到井控領(lǐng)域文本間的相似度下如式:
其中,和βw和βs分別是基于關(guān)系詞對(duì)和基于向量句子的文本相似度的權(quán)重,β取值范圍為(0,1),且βw+βs=1。
為了驗(yàn)證本文所提出的相似度模型在井控領(lǐng)域文本相似度計(jì)算的準(zhǔn)確度。選取油田井控培訓(xùn)教材中的十道課后習(xí)題,將這十道課后習(xí)題對(duì)應(yīng)的學(xué)生答案文本與標(biāo)準(zhǔn)答案文本作為評(píng)測(cè)數(shù)據(jù)。將人工標(biāo)準(zhǔn)打分分?jǐn)?shù)除以該題總分轉(zhuǎn)換為文本間的人工相似度值。文本相似度計(jì)算模型的結(jié)果越接近人工相似度值則模型的準(zhǔn)確度越高。
針對(duì)本文設(shè)計(jì)的井控文本相似度模型及其對(duì)比模型的準(zhǔn)確度主要通過(guò)以下三種指標(biāo)進(jìn)行綜合測(cè)評(píng):
1)均方根誤差(Root Mean Square Error,RMSE)[12],范圍?。?,+∞],公式如下:
2)平均絕對(duì)誤差(Mean Absolute Error,MAE)[12],范圍?。?,+∞],其公式如下:
3)對(duì)稱平均絕對(duì)百分比誤差(Symmetric Mean Absolute Percentage Error,SMAPE)[12]。范圍?。?,200],公式如下:
其中,N 代表樣本的數(shù)量,Pi為模型預(yù)測(cè)的文本相似度分?jǐn)?shù),Gi為人工計(jì)算的相似度值。這三個(gè)評(píng)測(cè)方法都是負(fù)向相似度,分?jǐn)?shù)越低,說(shuō)明效果越好。即當(dāng)測(cè)評(píng)值等于0,該模型無(wú)限接近人工計(jì)算;模型三種測(cè)評(píng)值越大,說(shuō)明誤差越大。
針對(duì)井控領(lǐng)域文本,我們通過(guò)對(duì)比實(shí)驗(yàn)將本文設(shè)計(jì)的文本相似度計(jì)算方法同目前準(zhǔn)確度較高的三種方法:基于語(yǔ)義相似度及命名實(shí)體識(shí)別的文本相似度計(jì)算方法(方法1)[13]、基于短文本相似度計(jì)算方法(方法2)[14]、基于加權(quán)Word2vec算法的文本相似度計(jì)算方法(方法3)[15]。一起與標(biāo)準(zhǔn)人工打分所得的人工相似度值進(jìn)行計(jì)算結(jié)果對(duì)比。其結(jié)果如表2所示。
對(duì)表2 中各方法所得分?jǐn)?shù)通過(guò)3 種測(cè)評(píng)指標(biāo):RMSE、MAE 和SMAPE 計(jì)算不同方法與人工打分的接近度得到表3。從表3 中可以看到,本文的相似度方法在三個(gè)測(cè)評(píng)指標(biāo)上取得的值相對(duì)其他方法都是較小的。即面向井控領(lǐng)域文本,本文的相似度計(jì)算方法相對(duì)于其他方法更能接近人工計(jì)算。這說(shuō)明本方法的設(shè)計(jì)面向井控領(lǐng)域的文本相似度相計(jì)算是有很好效果的,準(zhǔn)確地進(jìn)行了井控領(lǐng)域的詞匯相似度計(jì)算,改善了井控文本相似度計(jì)算精度。對(duì)于其他相似度方法,存在無(wú)法很好地對(duì)井控專業(yè)術(shù)語(yǔ)進(jìn)行識(shí)別的現(xiàn)象,或缺乏對(duì)語(yǔ)句的語(yǔ)義語(yǔ)法分析,導(dǎo)致最后相似度結(jié)果與人工相似度的結(jié)果有較大偏差。
表3 四種相似度計(jì)算方法準(zhǔn)確度
本文設(shè)計(jì)提出的井控領(lǐng)域文本相似度計(jì)算模型,利用依存句法技術(shù)獲取文本中包含語(yǔ)義信息的核心關(guān)系詞對(duì),有效增強(qiáng)了對(duì)文本中詞語(yǔ)間語(yǔ)義關(guān)系的辨識(shí)能力。然后基于井控知識(shí)圖譜和同義詞詞林計(jì)算關(guān)系詞對(duì)間詞語(yǔ)的相似度,有效提高了井控專業(yè)詞匯間相似度計(jì)算的準(zhǔn)確度。結(jié)合基于詞向量的句子相似度計(jì)算,最終實(shí)現(xiàn)了井控領(lǐng)域的文本相似度計(jì)算。經(jīng)過(guò)一系列的實(shí)驗(yàn)對(duì)比,本方法在RMSE、MAE 和SMAPE 指標(biāo)上都優(yōu)于其它方法,說(shuō)明本方法的相似度計(jì)算值和人工計(jì)算相似度分?jǐn)?shù)擬合度最高。有效提高了油田井控領(lǐng)域文本相似度計(jì)算的準(zhǔn)確度。