尚福華 張洪銘 解紅濤
(東北石油大學計算機與信息技術學院 大慶 163318)
石油井控領域的發展很大程度上取決于從業者創造知識、積累知識和應用知識的能力。人工智能的發展使得傳統的人工作業開始逐步被機器替代,自動化不斷滲透到油田井控培訓的各個方面,比如主觀題自動閱卷、知識問答、智能檢索。這些智能化應用都離不開文本相似度計算。特別是主觀題自動閱卷,文本相似度算法的性能直接影響到井控考試的客觀性和公正性[1]。在目前的研究中,大部分的相似度研究都聚焦于一些通用文本,而面向一些特定領域的研究少之甚少。由于油田井控領域文本相似度計算涉及到一些專業性名詞,對于算法的要求更高,更復雜。使得計算機對井控領域文本的相似度不能像通用的相似度系統那樣通過現有的語義詞典理解其文本語義[2]。這些難點讓很多研究人員望而卻步。因此,實現井控領域的文本相似度計算顯得尤為重要。
在通用領域的相似度計算中,Gomaa W[2]等提出基于字符串(String-Based)的方法,試圖用字符串的重合度來計算句子的相似度,這種方法在存在語義信息缺乏的弊端。為了融入語義信息,Gomaa W[3]和Kadupitiya J[4]等隨后又提出了基于語料庫和基于詞典的方法,通過將句子中的詞和語料庫或者詞典(詞表、大詞林等)進行匹配,獲取詞和詞之間的相似度值,在一定程度上緩解了語義上的問題,但詞并不能完全代表句子的語義,而且,需要人工構建大量的詞表[5]。隨著神經網絡的興起,比如LSTM,BERT,GPT 等,通用句子相似度逐漸走向向量化,先對文本語句進行向量化,再用向量間的距離來計算文本語句的相似度,但神經網絡的方法有時候需要構建大量的語料,工作量較大。雖然,通用句子相似度存在一些弊端,但在準確率方面遠遠高于專業領域的句子相似度計算。這是由于專業詞匯具有不常見性和特殊性,導致在大詞林或者詞向量模型中不能很好地獲取詞匯的表示,僅僅通過對比字符和向量距離是不能判斷專業詞匯之間的相似度的[6]。為了解決專業文本相似度的語義問題,孫海霞[7]等通過提取句子中的本體,作為判斷句子的語義代表,依次對比句子之間的本體語義相似度實現句子相似性的判斷。但本體失去了本身句子的關聯信息。高思丹,袁春風設計了一種基于動態編程模式的語句相似度模型,但針對專業詞語和文本語義的相似度計算仍然缺乏精度[8]。
由于油田井控領域中井控專業詞匯辨識度低的問題,以上研究都難于準確地計算井控專業詞匯間的相似度以及語義層面的相似度。因此,本文提出基于已有的井控知識圖譜和《同義詞詞林》進行井控文本詞語間的語義相似度計算。井控領域知識圖譜能有效補充《同義詞詞林》對井控領域詞匯的語義分析的不足。在井控領域文本相似度計算過程中將兩者進行有效的相互補充,不但能辨別井控文本中的領域詞匯,還可以通過詞匯間的語義關系在語義層面計算井控文本間的相似度。綜合詞語的表層信息,深層的語義關系以及利用依存句法分析得到的語句結構,再結合傳統的語句向量化計算句子層面的井控文本相似度,進而得到更加精準的井控領域文本相似度計算結果。
面對井控領域文本間的相似度計算,本文設計如圖1井控領域文本相似度計算模型進行計算。

圖1 井控領域文本相似度計算模型框架圖
首先基于井控文本的關鍵詞手工整理或命名實體識別獲取井控領域的專業詞匯?;谔崛〉膶I詞匯,構建井控領域詞表。然后將該詞表對LTP 分詞的外部詞典進行補充,進而能更加準確地對井控領域詞匯進行分詞。然后采用LTP 分別對井控領域文本進行分詞和詞性標注。預處理之后進行依存句法分析提取關系詞對。井控領域文本相似度計算分為詞語和句子兩個層面。利用井控知識圖譜和同義詞詞林分別對專業領域和通用詞匯進行相似度分析,獲取井控文本間基于關系詞對的相似度SW。再通過Word2vec 或者Glove 詞向量模型獲取詞匯的平均向量,以此作為句子的向量表示,通過對井控文本間句子向量進行距離計算,獲取基于句子層面的相似度Ss。
最后,對關系詞對相似度和句子相似度分配不同的權重進行加和,得到井控文本A 與井控文本B的最終文本相似度值。
井控文本預處理主要分為三個部分,數據清洗、中文分詞和詞性標注,流程圖如圖2所示。

圖2 文本預處理流程
數據清洗:去除井控文本中的一些臟數據,比如一些對文本語義沒有貢獻的停用詞,Html 標簽,特殊符號,標點等,將數據處理為高質量文本。
中文分詞:使用LTP 進行中文分詞,將文本處理為以詞為單位的文本。
詞性標注:使用LTP 進行詞性標注,將文本的詞標記其詞性,為后續依存句法分析做準備。
為了將井控領域文本中的詞匯進行語義層面的相似度計算。本文利用LTP 對已完成預處理的井控文本進行依存句法分析得到詞匯間的語法結構信息。表1 為井控文本例句的分析結果(依存關系類型參考LTP 語言云[9])??梢钥闯?,經過依存句法分析,句子中每個成分都可以與至少其他一個成分構成關聯。

表1 句法分析結果
通過句法分析,將一個句子分解成了詞與詞的句法關系樹,每個成分通過不同的句法關系相連接。文本由句子組成進而得到能表達文本語義信息的全部關系詞對。
關系詞對就是由富含語義的詞和相應的依存關系組成的句法三元組。例如“工人采用適當的鉆井液密度來控制地層孔隙壓力”,經過詞性標注后得到,“工人”是主語,“采用”是謂語。以“工人”為核心詞的關系詞對為(工人,SVB,采用)。
經過依存句法分析后,井控文本S 可表成:S=((x1,r1,x2),(x3,r2,x4),…,(xi,rj,xi+1),…,(xn,rm,xn+1))。(xi,rj,xi+1)表示一個關系詞對,其中xi為中心詞,xi+1為依存詞,rj為依存關系類型?;诰浞ǚ治鼋Y果,本文主要選取依存關系為SBV(主謂關系),HED(核心關系),VOB(動賓關系)的關系詞對做相似度分析。
井控文本A 和井控文本B 都得到了這樣一個組關系詞對集合,之后,繼續對著兩組詞對中對應的詞對間的詞匯集合進行相似度計算。
2.3.1 井控領域專業詞匯相似度
在本節中,主要基于井控知識圖譜對關系詞對間的井控專業詞匯間進行相似度計算。井控知識圖譜是由人工構造的知識庫,里面涵蓋了井控領域大部分的專業詞匯。因為知識圖譜能夠更好地將詞匯和詞匯之間的關系進行表示,因此,在本文中,主要采用井控知識圖譜計算領域詞匯的相似度。
在井控知識圖譜中,首先需要獲取節點的向量表示,基于節點之間的向量表示,計算節點之間的距離。那么,如何獲取節點的向量表示是非常關鍵的。這直接影響到后面的專業詞匯相似度計算。
專業詞匯相似度是通過引入井控系統領域的詞匯進行計算。專業詞匯可以看成是知識圖譜的節點,以N(E,n)表示,E 表示與其相關聯的邊的集合,注意E 是有方向的,實際意義表示詞匯的屬性,關系,描述等,n 表示與其相鄰的節點的集合。節點與節點之間在知識圖譜中的距離,節點間的密度以及每個節點之間的關系類型,都是需要考慮的。所以,我們給定節點f 和節點p的距離D為
其中V 表示節點向量,節點向量是通過所有向量節點和邊計算得出。
其中N 表示節點的數,wi表示與其相鄰的第i 個節點的之間的邊的權重。該權重是通過歸一化的結果。即公式:
通過知識圖譜,可以將領域詞匯以節點表示,詞匯之間的關系以邊來表示。每個詞匯在初始時,使用Word2vec 初始化每個節點的向量,以詞匯之間的關系權重初始化邊的值?;谑剑?)對每個節點的邊的值進行歸一化,比如節點M 有3 條邊,值分別為[0.7,0.8,0.5],經過式(4)后,變為[0.35,0.4,0.25],然后基于式(3)獲取該節點新的向量V。這樣一來,每個節點就有一個向量表示,當井控領域詞匯進入知識圖譜查詢時,獲得詞匯的向量,然后基于式(2),計算向量距離,即可獲得專業詞匯的相似度。
2.3.2 通用詞匯相似度
不在井控知識圖譜中出現的實體一律視為非專業詞匯即通用詞匯。也可理解為不在井控詞典中出現的詞匯即視為通用詞。為了解決通用詞匯間的相似度計算,在此采用同義詞詞林作為語義知識源進行計算。
本文采用的詞林為《哈工大同義詞詞林擴展版》來進行非專業詞匯間的相似度計算?!锻x詞詞林擴展版》通過對老版同義詞詞林詞匯類別進行深層分析與補充,在詞匯結構的原型上補充完善成五層樹形詞語結構。使得詞林中的詞匯間的層次結構和分類更加完善[10]。不同層級的相似度計算如下:
1)若兩個義項不在同一查樹上:Sim(A,B)=f
2)若兩個義項在同一查樹上:
(1)若在第2層分支
(2)若在第3層分支
(3)若在第4層分支
(4)若在第5層分支
以“人”(編碼:Aa01A01=)與“小孩”(編碼:Ab04B01=)為例,當詞進入同義詞詞林進行查詢時,可得A 編碼開頭的詞匯有1309 個,則n=1309,在第二層,人的編碼是a,小孩的編碼是b 所以k=1。所以Sim=0.65*[(1309-1+1)/1309]=0.65。
對井控文本進行依存句法分析后,分析出了中所有詞與詞之間的語法關系,我們將能表達這種語義關系的句法三元組稱作關系詞對。一段文本便可由一組關系詞對進行表示。文本間的相似度計算便可轉換成兩組關系詞對間的相似度計算。
經依存句法分析出的每個依存關系都有相對應使用這個句法關系的中心詞和依存詞。這個由中心詞,依存詞和依存關系組成的三元組又稱句法三元組(中心詞,依存關系,依存詞),在本文叫做關系詞對。所以兩個關系詞對的相似度綜合以下兩點進行計算:一是關系類型間的相似度;二是中心詞之間和依存詞之間的相似度[11]。
因此,為了更好地對井控領域文本進行相似度計算,本文設計了如圖3相似度算法。
當通過LTP工具獲得了文本的關系詞對之后,文本A 和文本B 的關系詞對集合就拿到了。這時,需要兩兩對集合中的詞進行詞匯相似度計算。由于文本中的詞可能會出現兩種類型:井控領域詞匯,通用詞匯。兩兩組合就分為三種情況:
一個詞為井控領域詞匯,一個詞為通用詞匯:由于專業詞和通用詞一般不具有同義關系,因此,本文直接賦予相似度值為0.1;
兩個詞均為井控領域詞匯:將兩詞去知識圖譜中進行查詢,獲得專業詞匯之間的相似度;
兩個詞均為通用詞匯:將兩詞去大詞林中進行查詢,獲得通用詞匯之間的相似度;
經過上述處理后,即可獲得井控文本A 中的關系詞對和井控文本B 中的關系詞對的相似度分數,構成了M×N 的相似度分數矩陣。(M 表示文本A 的詞對個數,N 表示文本B 的詞對個數),然后對M 的每一行,取最大分數,就可以使井控文本A 中的每個關系詞對找到在井控文本B 中相對應的關系詞對得到Nmax(A,B)={SQmax1,SQmax2,…,SQmaxm}。
所以,井控文本間基于關系詞對的文本相似度計算如式(4):
其中m 表示兩個井控文本中能夠相匹配的所有關系詞對的對數,如m=0,表示兩個井控文本沒有匹配到相似的關系詞對,即井控文本A 與井控文本B 的文本相似度是0。經過上述處理,就得到了井控文本A 和井控文本B 之間的基于關系詞對的文本相似度分數Sw。
由于句子的復雜性,關系詞對間的相似性并不能真正意義上代表句子的相似度。因此,在井控領域文本相似度計算中,引入了句子相似性進行計算,防止因為某些特殊句子造成相似度計算偏差。文章主要采用Word2vec 中文詞向量模型,基于井控文本的分詞結果(去停用詞),依次從Word2vec獲取每個詞的詞向量[V0,V1,…,Vn],然后進行mean pooling,得到句子的向量Vs[11]。最終通過余弦相似度來得出井控文本A 和井控文本B 之間在句子層面的文本相似度Ss如式(5):
最終的井控領域文本相似度綜合了關系詞對相似度和句子向量兩個不同層面的相似度。其中關系詞對間的相似度又充分考慮到了井控領域詞匯和通用詞匯,分別進行了詞語相似度計算。最終得到井控領域文本間的相似度下如式:
其中,和βw和βs分別是基于關系詞對和基于向量句子的文本相似度的權重,β取值范圍為(0,1),且βw+βs=1。
為了驗證本文所提出的相似度模型在井控領域文本相似度計算的準確度。選取油田井控培訓教材中的十道課后習題,將這十道課后習題對應的學生答案文本與標準答案文本作為評測數據。將人工標準打分分數除以該題總分轉換為文本間的人工相似度值。文本相似度計算模型的結果越接近人工相似度值則模型的準確度越高。
針對本文設計的井控文本相似度模型及其對比模型的準確度主要通過以下三種指標進行綜合測評:
1)均方根誤差(Root Mean Square Error,RMSE)[12],范圍?。?,+∞],公式如下:
2)平均絕對誤差(Mean Absolute Error,MAE)[12],范圍取[0,+∞],其公式如下:
3)對稱平均絕對百分比誤差(Symmetric Mean Absolute Percentage Error,SMAPE)[12]。范圍?。?,200],公式如下:
其中,N 代表樣本的數量,Pi為模型預測的文本相似度分數,Gi為人工計算的相似度值。這三個評測方法都是負向相似度,分數越低,說明效果越好。即當測評值等于0,該模型無限接近人工計算;模型三種測評值越大,說明誤差越大。
針對井控領域文本,我們通過對比實驗將本文設計的文本相似度計算方法同目前準確度較高的三種方法:基于語義相似度及命名實體識別的文本相似度計算方法(方法1)[13]、基于短文本相似度計算方法(方法2)[14]、基于加權Word2vec算法的文本相似度計算方法(方法3)[15]。一起與標準人工打分所得的人工相似度值進行計算結果對比。其結果如表2所示。
對表2 中各方法所得分數通過3 種測評指標:RMSE、MAE 和SMAPE 計算不同方法與人工打分的接近度得到表3。從表3 中可以看到,本文的相似度方法在三個測評指標上取得的值相對其他方法都是較小的。即面向井控領域文本,本文的相似度計算方法相對于其他方法更能接近人工計算。這說明本方法的設計面向井控領域的文本相似度相計算是有很好效果的,準確地進行了井控領域的詞匯相似度計算,改善了井控文本相似度計算精度。對于其他相似度方法,存在無法很好地對井控專業術語進行識別的現象,或缺乏對語句的語義語法分析,導致最后相似度結果與人工相似度的結果有較大偏差。

表3 四種相似度計算方法準確度
本文設計提出的井控領域文本相似度計算模型,利用依存句法技術獲取文本中包含語義信息的核心關系詞對,有效增強了對文本中詞語間語義關系的辨識能力。然后基于井控知識圖譜和同義詞詞林計算關系詞對間詞語的相似度,有效提高了井控專業詞匯間相似度計算的準確度。結合基于詞向量的句子相似度計算,最終實現了井控領域的文本相似度計算。經過一系列的實驗對比,本方法在RMSE、MAE 和SMAPE 指標上都優于其它方法,說明本方法的相似度計算值和人工計算相似度分數擬合度最高。有效提高了油田井控領域文本相似度計算的準確度。