韓鑫鑫,賁可榮,張 獻
海軍工程大學(xué) 電子工程學(xué)院,武漢 430033
軍事上,隨著軟件在武器裝備中所占比例的增加,其質(zhì)量的高低嚴重影響了軍用裝備的可靠性,軟件測試作為保證軟件質(zhì)量的重要環(huán)節(jié),逐漸受到軍事領(lǐng)域?qū)<业闹匾暋5浖y試較為復(fù)雜,如何整合軟件測試相關(guān)知識,并智能化地為部隊提供軟件測試輔助決策,成為了亟待解決的問題。知識圖譜作為一種新興技術(shù),它能夠?qū)?fù)雜、海量的數(shù)據(jù)整合到一起,通過挖掘到的關(guān)系將數(shù)據(jù)相互聯(lián)系起來,有著強大的數(shù)據(jù)描述能力和豐富的語義關(guān)系。國內(nèi),Li等人[1]就通過構(gòu)建API 警告知識圖譜解決API(application program interface)警告問題,Xie 等人[2-3]構(gòu)建了軟件知識圖譜輔助軟件知識應(yīng)用。由此可見,構(gòu)建軟件測試知識圖譜,也是解決上述軍用軟件質(zhì)量問題的一種有效手段。圖1 和圖2 展示了配置項測試知識圖譜的部分本體概念和相關(guān)實體,將它們結(jié)合成一套高質(zhì)量的知識體系,例如查詢A 級軟件配置項測試依據(jù)哪些質(zhì)量特性、需要輸入輸出哪些文檔等類似問題,相比較人工查詢文檔和互聯(lián)網(wǎng),知識圖譜瞬間就能得出精準(zhǔn)答案,大大提高了效率。實體質(zhì)量的好壞直接決定了知識圖譜的質(zhì)量好壞,基于對實體提取的需求,本文重點研究命名實體識別技術(shù),提取軟件測試領(lǐng)域相關(guān)實體。
Fig.1 Configuration item testing concept map圖1 配置項測試概念圖
Fig.2 Quality characteristic entity map圖2 質(zhì)量特性實體圖
命名實體識別(named entity recognition,NER)[4]是識別文本中命名實體以及將它們分類為預(yù)定義類別(例如人、位置、組織等)的任務(wù),用作各種自然語言應(yīng)用的基礎(chǔ),例如問答、文本摘要、機器翻譯等,它作為構(gòu)建知識圖譜的重要階段,關(guān)系到最終整個知識圖譜的質(zhì)量好壞。自然語言學(xué)習(xí)會議(Conference on Natural Language Learning,CoNLL)提出命名實體識別的主要任務(wù)是識別人名、地名、機構(gòu)名和其他命名實體[5],而軟件測試命名實體識別作為特定領(lǐng)域的命名實體識別,不同于通用領(lǐng)域,實體識別對象及方法都會有很大區(qū)別,在研究時遇到了以下問題:
(1)前人沒有做過類似工作,軟件測試的本體、實體、屬性等概念沒有統(tǒng)一標(biāo)準(zhǔn),缺少數(shù)據(jù)集;
(2)識別過程中,傳統(tǒng)深度學(xué)習(xí)的字符級特征提取方法還有待提高,沒有完全利用字與詞之間的關(guān)系,且實際上每個字對于詞的特征貢獻都不一樣,但普通方法都未進行處理,導(dǎo)致整個識別方法在本領(lǐng)域的準(zhǔn)確率不是很高。
本文主要針對構(gòu)建知識圖譜的命名實體識別階段展開深入研究,并做出如下主要貢獻:
(1)考慮到目前尚無針對軍用軟件測試領(lǐng)域命名實體識別以及知識圖譜的研究,本文對該方向進行了學(xué)習(xí)和探討,自行收集和整理了軟件測試相關(guān)知識的數(shù)據(jù)集,確立實體類型分類,并進行了標(biāo)注。
(2)本文在前人研究的基礎(chǔ)上,提出了一個CWA-BiLSTM-CRF(character and word attention-bidirectional long short term memory-conditional random field)識別框架,該框架通過字詞融合訓(xùn)練來提取字符級特征,并加入注意力機制衡量字符貢獻語義的權(quán)重,能夠充分利用語義信息,提取出更好的字符級特征。經(jīng)實驗表明,識別效果優(yōu)于原始方法。
早期的實體識別方法一般采用基于詞典和規(guī)則的方法,最具代表性的就是Collins 等人[6]提出的DLCoTrain 方法,對三種基本類別的分類準(zhǔn)確率超過了91%;國內(nèi)軍事上,馮蘊天等人[7]則是用詞典和規(guī)則對識別結(jié)果進行校正,但這些方法都需要太多人工干預(yù)進行規(guī)則構(gòu)造,且移植性較差。后來許多學(xué)者開始關(guān)注基于機器學(xué)習(xí)的實體識別方法,常用的機器學(xué)習(xí)方法有條件隨機場(conditional random fields,CRF)[8]、隱馬爾科夫模型(hidden Markov model,HMM)[9]、支持向量機(support vector machine,SVM)[10]、決策樹(decision tree,DT)[11]、最大熵(maximum entropy,ME)[12]等,其中條件隨機場是主流的選擇,它將文本標(biāo)注變?yōu)樾蛄袠?biāo)注問題,但是傳統(tǒng)機器學(xué)習(xí)方法比較依賴特征工程,此時深度學(xué)習(xí)強大的學(xué)習(xí)和自我調(diào)整能力就逐漸受到人們的歡迎。
國外對于深度學(xué)習(xí)的命名實體識別研究已經(jīng)較為成熟,Kuru 等人[13]將句子分割成字,通過雙向長短期記憶網(wǎng)絡(luò)(bi-directional long short term memory,BiLSTM)+CRF 的組合解碼出每個字的標(biāo)簽概率,實現(xiàn)命名實體識別,但該方法沒有考慮詞級信息。字詞聯(lián)合識別方法是近幾年研究較熱的方向,Aguilar[14]、Ma 等人[15]用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)提取字符級特征,Liu等人[16]用BiLSTM 提取字符級特征,然后都對詞向量進行預(yù)訓(xùn)練,將兩者連接后通過BiLSTM+CRF 的組合模型識別出實體;Peters 等人[17]則是先將詞向量經(jīng)過語言模型進行預(yù)訓(xùn)練,然后用深度學(xué)習(xí)模型進行識別,實驗證明有較好效果;Minh[18]在識別模型中加入詞語形狀特征、布朗集群特征等,也取得了一定的效果;Lample等人[19]除了使用BiLSTM+CRF 的組合,還提出了基于轉(zhuǎn)換方法的模型,對四種語言進行檢驗,效果良好。國內(nèi)醫(yī)學(xué)領(lǐng)域,Dong 等人[20]用CNN 作為分類器進行電子病歷命名實體的識別,取得不錯的結(jié)果。軍事領(lǐng)域方面,王學(xué)鋒等人[21]立足于BiLSTM+CRF 的組合模型,對句子中的單個字進行標(biāo)簽解碼,識別軍事實體;朱佳暉等人[22]則是結(jié)合詞性和字符級特征,通過深度神經(jīng)網(wǎng)絡(luò)對軍事命名實體進行識別,效果較傳統(tǒng)方法都有較大提升。
綜合幾種方法進行比較,字詞結(jié)合的深度學(xué)習(xí)命名實體識別方法較為流行,效果普遍較好,但是該方法還存在著字符級特征提取不完全的情況,為此需對前人的方法進行改進。接下來,本文將分別介紹改進的CWA-BiLSTM-CRF 識別框架、具體的識別步驟以及對于實驗結(jié)果的分析。
本文提出了一個CWA-BiLSTM-CRF 識別框架用于解決命名實體識別問題,體現(xiàn)出了良好的識別效果。該框架主要由兩部分組成:一是改進的字符級特征提取方法;二是BiLSTM+CRF 實體識別模型。下面分別對兩部分的模型進行介紹。
本文對提取字符級特征的傳統(tǒng)方法進行改進,提取過程如圖3 所示。過程共分為四步,下面詳細介紹這四個步驟。
Fig.3 Improved character level feature extraction method圖3 改進的字符級特征提取方法
輸入層:對于輸入的所有文本,首先通過word2id詞典(字詞融合詞典的構(gòu)造方法下一章將予以說明)獲取其字和詞的id,再將文本轉(zhuǎn)換為id 的矩陣作為輸入。
字詞向量構(gòu)造層:接收到id 的矩陣輸入,通過查詢id2vector 詞典(字詞融合詞典的構(gòu)造方法下一章將予以說明)獲取每個字詞的向量表示。此步驟中,字和詞的向量都已經(jīng)過預(yù)訓(xùn)練,詞的向量表示為word=(word1,word2,…,wordm),字的向量表示為char=(char1,char2,…,charn)。相比較傳統(tǒng)方法,經(jīng)過預(yù)訓(xùn)練的字向量預(yù)測效果更好。一般字符級特征提取只針對詞內(nèi)的字符進行特征提取,但這會損失詞內(nèi)字和詞語本身最原始的聯(lián)系。本方法則是將詞向量添加在字向量序列之前,字向量序列后空白的位置用零向量Padding補齊,直至序列長度填滿為固定值,得到字詞融合向量feature=(wordi,chari1,chari2,…,charin,Padding),其中charin表示第i個詞的第n個字向量。字詞的融合訓(xùn)練,可以提取到最原始的字符級特征,不會損失字和詞之間的初始聯(lián)系。
BiLSTM 層:BiLSTM 包含了一個前向和后向的長短期記憶網(wǎng)絡(luò)(long short term memory,LSTM),能夠獲取豐富的語義特征,解決長距離的語義信息丟失問題,并且很好地彌補了LSTM 只能單向獲取語義特征的缺陷。LSTM 通過輸入門、遺忘門和輸出門來控制信息的取舍。
Ιt表示輸入門,F(xiàn)t表示遺忘門,Ot表示輸出門,每個句子的分布式表示為x=[x1,x2,…,xn],xt表示t時刻的輸入,ht表示t時刻的輸出,Ct表示t時刻細胞單元的狀態(tài),w和b分別表示隱藏層權(quán)值和偏置,σ表示sigmoid函數(shù),最后輸出h可由式(1)計算得到。
BiLSTM 則是將兩個反向的LSTM 組合在一起,將每個時刻的前后LSTM 輸出值進行拼接,作為此時刻的狀態(tài)輸出值。有正向LSTM 的輸出),反向LSTM 的輸出),將兩者進行拼接,輸出結(jié)果hi=。
注意力機制層:每個字對于詞的語義貢獻是不一樣的,但以往字符級特征提取方法都忽略了這一點。本文方法通過注意力機制[23-24],計算BiLSTM 最終隱藏狀態(tài)與輸出結(jié)果的余弦值,衡量不同字對特征的重要性,能夠使提取的字符級特征更加準(zhǔn)確。有最終隱藏狀態(tài)ht,輸出結(jié)果,αi表示第i個字的輸出權(quán)重,則改進的字符級特征h,可由式(2)計算得到。最終得到的字符級特征,將會作為第二部分BiLSTM+CRF 實體識別模型的部分特征輸入。
針對軟件測試領(lǐng)域命名實體的特點,本文構(gòu)建了基于BiLSTM 和CRF 的命名實體識別模型,識別過程如圖4所示。模型共分為四層,下面進行詳細介紹。
輸入層:對于輸入的所有文本,首先通過word2id詞典獲取其字和詞的id,并根據(jù)固定的截斷值將句子長度進行截斷,再將文本轉(zhuǎn)換為id 的矩陣作為輸入。
特征矩陣構(gòu)造層:接收到id 的矩陣輸入,通過查詢id2vector 詞典,獲取每個詞的向量表示x=[x1,x2,…,xn],再連接詞性向量m=[m1,m2,…,mn],與之前提取的字符級特征h=[h1,h2,…,hn]前后拼接,組成詞嵌入向量w=(x,m,h),以矩陣的形式輸入給下一層深度神經(jīng)網(wǎng)絡(luò)。
BiLSTM 層:不同于字符級特征提取方法里的BiLSTM 層,本層在拼接完兩個反向LSTM 層的結(jié)果之后,根據(jù)隱藏層單元數(shù)目及標(biāo)簽數(shù)目,設(shè)置輸出權(quán)值wh和偏置bh,最終結(jié)果可由式(3)計算得到。
其中,hi為兩個反向LSTM 層的拼接結(jié)果。最后將g的最后一維變換為標(biāo)簽數(shù)目,得到每個標(biāo)簽的概率分布。但是此概率分布直接用作最后的識別結(jié)果是不合理的,會導(dǎo)致標(biāo)簽輸出的組合序列不正確,因此需要添加一個CRF 層來解決這個問題。
CRF輸出層:CRF層可以作為BiLSTM 的 解 碼層,來解決上層結(jié)果中不合理的序列問題。與BiLSTM 連接的CRF 層,主要學(xué)習(xí)的是標(biāo)簽之間的狀態(tài)轉(zhuǎn)移矩陣,通過BiLSTM 層的輸出矩陣(EmissionScore)和狀態(tài)轉(zhuǎn)移矩陣(TransitionScore)進行運算,解碼出每個標(biāo)簽的最終概率,在條件x的前提下,概率P(y|x)可由式(4)計算得到。
Fig.4 BiLSTM+CRF entity recognition model圖4 BiLSTM+CRF 實體識別模型
根據(jù)軟件測試的需要以及與軟件測試領(lǐng)域?qū)<业纳逃?,初步確立了十種常用實體類型,不同實體類型下又分有不同屬性和內(nèi)容,類型名稱、代號和樣例如表1 所示。這十類實體通過國軍標(biāo)、海軍裝備細則以及互聯(lián)網(wǎng)三種來源進行獲取,每個實體都有一個來源屬性,根據(jù)該屬性區(qū)分實體是從哪里獲取,在運用知識圖譜進行知識問答時,可以按照來源屬性調(diào)整實體推薦的優(yōu)先級,例如面向海軍軟件,則可以優(yōu)先推薦來源于海軍裝備細則的實體。本文所有實體均是先從國軍標(biāo)和海軍裝備細則相關(guān)文檔內(nèi)獲取,保證規(guī)范性和權(quán)威性。
Table 1 Entity type表1 實體類型
現(xiàn)代互聯(lián)網(wǎng)上資源豐富,部隊裝備軟件越來越趨向于使用開源代碼,開源軟件出現(xiàn)的頻率越來越高,其測試標(biāo)準(zhǔn)不可避免地會與民用軟件測試標(biāo)準(zhǔn)接軌。在這樣的環(huán)境下,軟件測試知識圖譜不能只關(guān)注于軍用測試標(biāo)準(zhǔn),而應(yīng)將民用測試標(biāo)準(zhǔn)的部分也作為知識圖譜的補充內(nèi)容,做到更加全面。因此,除了國軍標(biāo)和海軍裝備細則相關(guān)文檔,還需從互聯(lián)網(wǎng)關(guān)于軟件測試的知識中提取出對應(yīng)實體進行補充。
由于軟件測試領(lǐng)域現(xiàn)在還沒有相關(guān)的開源數(shù)據(jù)集,所有訓(xùn)練文本語料均是自行獲得和整理,因此命名實體需要進行人工標(biāo)注。本文采用簡單高效的BIO 標(biāo)注方式對實體進行標(biāo)注,B-前綴為開頭的標(biāo)注表示實體的第一個單詞,I-前綴為開頭的標(biāo)注表示實體的中間及結(jié)尾部分,O 表示非實體。以測試類型為例,B-TS 表示測試類型實體的開始,I-TS 表示測試類型實體的中間及結(jié)尾。在標(biāo)注完成之后,對數(shù)據(jù)集中的命名實體進行分析,統(tǒng)計得到標(biāo)注的實體總數(shù)達到5 132 個,其中以測試類型、測試文檔、測試工具、測試方法四類實體的標(biāo)注數(shù)量居多。
本文首先對字和詞進行預(yù)訓(xùn)練,構(gòu)建字詞融合詞典,經(jīng)實驗證明使用效果優(yōu)于單一的詞典。本文識別框架使用的字詞融合詞典共有三個,分別是id2word 詞典、word2id 詞典和id2vector 詞典,每個詞典在深度學(xué)習(xí)模型里均會用到。
獲取到原始文本語料之后,通過結(jié)巴(jieba)分詞工具,將語料進行分詞、分字以及詞性標(biāo)注。本文使用word2vec[25]對分詞和分字后的語料進行預(yù)訓(xùn)練,生成初始字向量和詞向量,向量維數(shù)一般在100~200 之間。預(yù)訓(xùn)練后,對每個詞和字進行編號,生成唯一的id,若存在字和詞是一致的情況,則選擇語義更為豐富的詞向量進行id 編號。將對應(yīng)的字詞和id 存入id2word 和word2id 詞典,id2word 詞典 可以通過id 查詢到字詞,word2id 詞典可以通過字詞查詢到id。最后將每個字詞的id 和對應(yīng)的字詞向量存入id2vector詞典,該詞典可以通過id 查詢出對應(yīng)的字詞向量。
在上述準(zhǔn)備步驟完成之后,將已分好詞的文本及已標(biāo)注的文本作為命名實體識別模型的輸入,開始命名實體識別過程。
第一步,將分詞文本輸入給第一層改進的字符級特征提取模型,模型會自動識別詞語內(nèi)的單字,并通過融合詞典將文本轉(zhuǎn)換為可識別的字詞向量,交由BiLSTM 網(wǎng)絡(luò)訓(xùn)練出改進的字符級特征。
第二步,將詞向量、詞性向量和改進的字符級特征首尾拼接成詞嵌入向量,作為第二層BiLSTM+CRF 模型的輸入,模型最終會分配給每個實體類別一個分數(shù),通過分數(shù)高低判斷該詞語屬于哪種實體類別。
整個過程采用批處理的方式,批處理方式能夠提高訓(xùn)練效率,縮短訓(xùn)練時間,但批處理的規(guī)模不能過大,否則會導(dǎo)致模型學(xué)習(xí)效果不佳。另外,為防止過擬合現(xiàn)象的發(fā)生,本文在模型訓(xùn)練過程中加入了Dropout[26]機制,該機制已證明能夠有效解決過擬合問題,提高了模型識別的效果。
本文提取實體的數(shù)據(jù)源由三部分組成:一是與軟件測試相關(guān)的國軍標(biāo)系列標(biāo)準(zhǔn);二是海軍裝備細則;三是互聯(lián)網(wǎng)權(quán)威測試網(wǎng)站中的相關(guān)文章。經(jīng)過內(nèi)容篩選之后,具體如表2 所示。文本總計95 000 字內(nèi)容,共標(biāo)注52 982 個詞或字,其中實體標(biāo)注5 132個,非實體標(biāo)注37 143 個。文本以txt 的格式進行存儲,去除無意義的符號,其余正常符號予以保留。
Table 2 Entity data source表2 實體數(shù)據(jù)來源
本文的硬件實驗環(huán)境包括:Intel?CoreTMi7-7700HQ CPU 2.80 GHz,RAM 8.00 GB,Windows 10操作系統(tǒng),NVIDIA GTX1060 6G GDDR5 獨立顯卡。軟件實驗環(huán)境包括:Python 3.6.4,beautifulsoup4 4.6.3,tensorflow 1.5.0,jieba 0.39,gensim 3.6.0,Anaconda3(64-bit)。其中beautifulsoup4 工具用于網(wǎng)絡(luò)文本爬取,jieba工具用于文本分詞。
準(zhǔn)確率、召回率和F1 值通常用來評價命名實體識別效果,F(xiàn)1 值能夠體現(xiàn)整體測試效果,因此本文主要以F1 值為主要評價指標(biāo),可由式(5)計算得到。實驗中,對命名實體的邊界和類型全部判斷正確,才算成功識別出一個實體。
其中,TP(true positive)表示被正確地劃分為正例的個數(shù),F(xiàn)P(false positive)表示被錯誤地劃分為正例的個數(shù),F(xiàn)N(false negative)表示被錯誤地劃分為負例的個數(shù)。
本文主要做了兩部分的實驗:實驗1 是探究迭代次數(shù)和批處理次數(shù)對于本文提出方法的影響,并依此確立這兩個參數(shù);實驗2 是將本文提出方法與其他常用的字詞聯(lián)合識別方法進行比較,驗證識別效果。兩個實驗均采用五折交叉驗證法進行驗證。
實驗1 的結(jié)果如圖5 所示。由圖可知,當(dāng)批處理次數(shù)為10 時,其整體效果為最優(yōu)。而當(dāng)批處理次數(shù)不變時,F(xiàn)1 值隨著迭代次數(shù)的增加而升高,到達一定次數(shù)時,F(xiàn)1 值會到達一個最大值,而后緩慢變小趨于穩(wěn)定。由于在迭代次數(shù)為50 的時候,本文改進方法有最優(yōu)F1 值為88.93%,因此根據(jù)結(jié)果,本文將批處理次數(shù)設(shè)置為10,迭代次數(shù)設(shè)置為50,此時的識別效果是最好的。
Fig.5 Effect of iteration and batch number on improved method圖5 迭代和批處理次數(shù)對本文改進方法的影響
實驗2 所有識別模型的命名實體識別階段均是采用BiLSTM+CRF 的組合,區(qū)別在于字符級特征提取階段所采用的方法,目前常用的字符級特征提取網(wǎng)絡(luò)為循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)、CNN 和BiLSTM 網(wǎng)絡(luò),因此選取這三種網(wǎng)絡(luò)作為對比方法。方法1 是用普通RNN 網(wǎng)絡(luò)提取字符級特征;方法2 是用CNN 網(wǎng)絡(luò)提取字符級特征;方法3 是用BiLSTM 網(wǎng)絡(luò)提取字符級特征;方法4 是采用本文改進的字符級特征提取方法。四種方法的參數(shù)保持一致:迭代次數(shù)設(shè)為50,批處理次數(shù)設(shè)為10,字、詞向量設(shè)為150 維,學(xué)習(xí)速率設(shè)為0.001,隱藏層單元數(shù)目設(shè)為250,dropout參數(shù)設(shè)為0.5,結(jié)果對比如表3 所示。
從實驗結(jié)果中可以看出,普通RNN 提取字符級特征的效果最差,F(xiàn)1 值只有80.73%。BiLSTM 的召回率高于CNN,但準(zhǔn)確率低于CNN,兩者的總體效果相差不多。而在使用本文方法后,與CNN 相比,準(zhǔn)確率和召回率都有提升,尤其是召回率提高了3.5 個百分點;與BiLSTM 相比,準(zhǔn)確率和召回率也都有提升,尤其是準(zhǔn)確率提高了3.88 個百分點。以上結(jié)果說明本文提出的CWA-BiLSTM-CRF 框架能夠更好地提取字符級特征,獲取字詞語義關(guān)系,準(zhǔn)確率和召回率較其他主流方法有提升,并具有最優(yōu)F1值為88.93%,適用于軟件測試領(lǐng)域的命名實體識別,符合軍用軟件準(zhǔn)確性的嚴格要求,有較好的識別能力。
Table 3 Evaluation results of four methods表3 四種方法的評估結(jié)果 %
本文主要研究了面向軍用軟件測試領(lǐng)域的命名實體識別任務(wù),考慮到目前尚無針對該領(lǐng)域命名實體識別以及知識圖譜的研究,本文首次嘗試對該方向進行了學(xué)習(xí)和探討,構(gòu)建了用于命名實體識別的軟件測試知識數(shù)據(jù)集,并在前人研究的基礎(chǔ)之上提出了一種改進的識別框架(CWA-BiLSTM-CRF)。該框架充分融合了字詞以及上下文之間的語義聯(lián)系,能挖掘出更具代表性的詞嵌入特征。實驗分別對RNN、CNN、BiLSTM 以及本文改進的字符級特征提取方法進行了對比,改進后的方法得出的準(zhǔn)確率、召回率和F1 值有較大提升,能夠用于軟件測試領(lǐng)域的命名實體識別任務(wù)。
命名實體識別是構(gòu)建知識圖譜的重要步驟,本文最終目的是完成軍用軟件測試知識圖譜,構(gòu)建智能問答系統(tǒng),輔助解決軟件質(zhì)量問題。下一階段主要研究內(nèi)容包括拓寬實體類型,挖掘?qū)嶓w關(guān)系,并對語義推理展開深入研究,完成知識圖譜的構(gòu)建。