石玉敬,陳 超,鄒 昆,趙亞蛟,華傳健,何 滄
(凱德技術(shù)長沙股份有限公司,長沙 410003)
需求分析工作是需求工程的研究以及其應(yīng)用中的重中之重,同時(shí)體系需求工程的研究也是目前體系工程研究的關(guān)鍵,需求是系統(tǒng)或者體系為解決問題或完成目標(biāo)所必須滿足的條件或能力。文獻(xiàn)[1]重點(diǎn)針對網(wǎng)絡(luò)信息體系等重難點(diǎn)問題的研究思路進(jìn)行了探討,在體系需求工程關(guān)鍵技術(shù)上有一定的突破。文獻(xiàn)[2]提出了裝備體系需求論證的研究框架,能夠在理論方法上為裝備體系需求論證和頂層設(shè)計(jì)提供支撐。文獻(xiàn)[3]利用UML(unified modeling language)對裝備體系需求工程建模技術(shù)進(jìn)行研究,結(jié)果表明該方法更適合進(jìn)行需求描述。從上文可知,在需求分析之前的一個(gè)重要任務(wù)就是將一條條隱藏在非結(jié)構(gòu)化文本中的需求條目全部抽取出來,如果忽略掉某些需求可能會導(dǎo)致整個(gè)項(xiàng)目的失敗,因此需求的提取成功與否是需求分析乃至需求工程能夠順利進(jìn)行下去的關(guān)鍵。
相較于軟件開發(fā)中的其他語句,需求的描述通常分散甚至隱含在不同語句、段落、文檔之中,同時(shí)某些非需求條目與軟件需求十分相似,導(dǎo)致它們之間難以辯別,因此需求相對來說不易被提取。而面對海量的非結(jié)構(gòu)化文本,通過人工提取的方法付出的人力、時(shí)間和經(jīng)濟(jì)的成本太大,并且可能會出現(xiàn)疏漏的地方。所以,將需求抽取的工作進(jìn)行一定程度的自動(dòng)化,即在需求分析軟件中添加一個(gè)對需求條目進(jìn)行識別和分類的功能,對需求分析過程的效率和質(zhì)量能夠有巨大的提升。同時(shí)目前對于需求抽取的研究成果較少,因此本研究將基于深度學(xué)習(xí)模型探究更有效的需求抽取方法并解決工業(yè)界實(shí)際案例需求。
由于需求分析的重要性,自動(dòng)化的需求文本分析工具一直是需求工程領(lǐng)域的研究熱點(diǎn)。而目前的主流研究方法是將需求提取當(dāng)成文本分類任務(wù),主要的需求分類方法有三種:基于規(guī)則和詞性的分類方法[4]、基于傳統(tǒng)機(jī)器學(xué)習(xí)的分類方法[5]和基于深度學(xué)習(xí)的分類方法[6]?;谝?guī)則和詞性的分類方法除了要求對語言學(xué)參與規(guī)則制定之外,同時(shí)還需要領(lǐng)域內(nèi)專家進(jìn)行輔助,不僅需要大量時(shí)間來制定規(guī)則模型,而且模板的泛化能力較差,如果用于其他領(lǐng)域,抽取結(jié)果往往不盡人意,因此該方法逐漸被其他兩種方法取代。文獻(xiàn)[7]提出了一種基于支持向量機(jī)(support vector machine,SVM)的需求分類方法,能夠較為不錯(cuò)地對功能需求和非功能需求進(jìn)行分類。文獻(xiàn)[8]使用用戶評論作為數(shù)據(jù)集對比四種分類技術(shù)和三種傳統(tǒng)機(jī)器學(xué)習(xí)算法組成的十二種組合方法的分類性能,最后挑選出最適合作需求分類的方法。文獻(xiàn)[9]基于詞性規(guī)則和依存句法規(guī)則結(jié)合特征提取和分類的方法將安全關(guān)鍵軟件需求實(shí)現(xiàn)自動(dòng)分類,與其他方法相比,準(zhǔn)確率有了明顯的提升。由此可見基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法能有效對需求進(jìn)行分類,但是傳統(tǒng)機(jī)器學(xué)習(xí)模型需要手動(dòng)構(gòu)建離散變量特征值作為模型的輸入,由于人工輸入存在一定的主觀性和局限性,在一定程度上影響分類的準(zhǔn)確性,隨著硬件的更新和算法的突破,基于深度學(xué)習(xí)的分類方法已經(jīng)成為大勢所趨。文獻(xiàn)[10]采用深度學(xué)習(xí)特征提取和分類技術(shù),提出一種基于BERT(bidirectional encoder representation from transformers)模型和長短期記憶網(wǎng)絡(luò)LSTM(long short term memory)相結(jié)合進(jìn)行文本分類的BERT-LSTM 網(wǎng)絡(luò)模型進(jìn)行需求分類,最終結(jié)果與其他方法相比達(dá)到了最佳。文獻(xiàn)[11]使用基于提示學(xué)習(xí)的BERT 模型,將K分類選擇問題轉(zhuǎn)化為二分判斷問題,獲得了最佳的分類結(jié)果。文獻(xiàn)[12]將Word2vec 向量與卷積神經(jīng)網(wǎng)絡(luò)TextCNN 相結(jié)合,實(shí)驗(yàn)結(jié)果證明深度學(xué)習(xí)的方法要明顯優(yōu)于其他方法。
由上文可知,目前有關(guān)于需求抽取和需求分類的研究大都集中在軟件需求上面,而關(guān)于需求抽取的研究成果極少,同時(shí)需求的提取難度相對較高。因此,本研究將構(gòu)建首個(gè)中文需求抽取語料庫,并且提出一種基于深度學(xué)習(xí)的需求抽取方法,同時(shí)對比目前的主流文本分類方法探究更適合工業(yè)界實(shí)際的需求抽取方法。
1.2.1 BERT模型
BERT[13]是一種Transformer 的多層雙向編碼器,其本質(zhì)是通過神經(jīng)網(wǎng)絡(luò)特有的結(jié)構(gòu)進(jìn)行訓(xùn)練得到BERT 模型,基于預(yù)先訓(xùn)練好的BERT 模型能夠完成絕大部分自然語言處理任務(wù)。這是因?yàn)锽ERT模型的訓(xùn)練語料包括維基百科和圖書語料庫,規(guī)格十分龐大。同時(shí)BERT模型是一個(gè)“深度雙向”的模型,這意味著BERT 模型能夠獲取文本中上下文的信息,這也能確保BERT模型能夠完整地提取到文本信息。
BERT 使用輸入掩碼和基于Transformer 的片段標(biāo)記,將大量的無標(biāo)簽文本轉(zhuǎn)化為一個(gè)引導(dǎo)式學(xué)習(xí)問題。輸入掩碼用于引導(dǎo)模型根據(jù)上下文判斷當(dāng)前單詞是否合適,而片段標(biāo)簽則用于判斷下一句話是否連貫。其網(wǎng)絡(luò)結(jié)構(gòu)模型如圖1所示。
圖1 BERT網(wǎng)絡(luò)結(jié)構(gòu)
RoBERTa-wwm[14]模型是BERT 模型的變種,RoBERTa-wwm 與BERT 相比主要有兩方面提升,首先是RoBERTa 預(yù)訓(xùn)練模型與BERT 相比具有動(dòng)態(tài)Mask、取消NSP 任務(wù)、設(shè)置更大的batchsize訓(xùn)練、更多的訓(xùn)練數(shù)據(jù)、更長的訓(xùn)練時(shí)間等優(yōu)化策略,因此泛化能力更強(qiáng);其次是Ro-BERTa 使用基于全詞掩碼的中文訓(xùn)練方式,該訓(xùn)練方式可以有效提高預(yù)訓(xùn)練模型效果。
1.2.2 BiLSTM 模型
長短期記憶網(wǎng)絡(luò)(long short-term memory network,LSTM)在1997 年被提出,LSTM[15]結(jié)構(gòu)內(nèi)部有三個(gè)門:輸入門、遺忘門和輸出門。遺忘門決定從神經(jīng)網(wǎng)絡(luò)的單元狀態(tài)中丟棄哪些信息,輸入門決定在單元狀態(tài)中存儲哪些新信息,輸出門根據(jù)過濾后的新單元狀態(tài)決定輸出值。輸出層根據(jù)過濾后的新細(xì)胞狀態(tài)決定輸出的值。BiLSTM(bi-directional long short-term memory)[16]在網(wǎng)絡(luò)結(jié)構(gòu)上與LSTM 網(wǎng)絡(luò)類似,主要由前向LSTM 和后向LSTM 組成,相較于單向的LSTM模型,BiLSTM 算法能夠?qū)W習(xí)到更多的上下文信息。BiLSTM的網(wǎng)絡(luò)模型如圖2所示。
圖2 BiLSTM網(wǎng)絡(luò)模型
1.2.3 BERT-BiLSTM 模型
BERT-BiLSTM 模型的構(gòu)建流程首先是將BERT預(yù)訓(xùn)練模型輸出的文本向量輸入到BiLSTM層進(jìn)一步做特征提取,在BiLSTM 層中將雙向加權(quán)向量進(jìn)行全連接處理,輸出層由全連接層和Softmax 組成,Softmax函數(shù)接收到新輸出的向量之后對文本進(jìn)行分類操作。BERT-BiLSTM網(wǎng)絡(luò)模型結(jié)構(gòu)如圖3所示。研究所用模型是將BERT-BiLSTM模型中的BERT 替換為RoBERTa-wwm,通過RoBERTa-wwm 的優(yōu)勢提高需求抽取的準(zhǔn)確性。
圖3 BERT-BiLSTM 網(wǎng)絡(luò)模型結(jié)構(gòu)
由于目前缺少中文軟件需求的數(shù)據(jù)集,因此該研究的數(shù)據(jù)集主要來源于凱德股份的需求池、需求規(guī)格說明書以及網(wǎng)絡(luò)上有關(guān)需求工程研究的博客和文檔等一系列需求相關(guān)的文檔。其中需求條目和非需求條目的數(shù)量見表1。同時(shí)該研究將數(shù)據(jù)集中的80%作為訓(xùn)練集,20%作為訓(xùn)練集。
表1 需求條目數(shù)量表
該研究用于評價(jià)需求抽取效果的評價(jià)指標(biāo)為精確率(Precision)、召回率(Recall)和F1 值(F1-mesure)。其具體公式見式(1)~式(3)。
其中:TP表示真陽性(true positive,TP);FP表示假陽性(false positive,F(xiàn)P);TN表示真陰性(true negatives,TN);FN表示假陽性(false negative,F(xiàn)N)。
實(shí)驗(yàn)采用的BERT模型為BERT-Base-Chinese版本,RoBERTa-wwm 版本為RoBERTa-wwm-ext-Chinese,實(shí)驗(yàn)相關(guān)超參數(shù)設(shè)置見表2。
表2 實(shí)驗(yàn)超參數(shù)取值
研究選取了幾種主流的深度學(xué)習(xí)的分類方法作為基準(zhǔn)模型來評估本方法的有效性,主要包括TextCNN、BERT、BiLSTM、BERT-BiLSTM。各模型在需求條目數(shù)據(jù)集上的分類效果見表3。
表3 需求抽取效果對比
由上文的分類效果對比可得,研究構(gòu)建的模型在各方面皆優(yōu)于當(dāng)前文本分類主流的幾種算法,由此可見本研究算法的優(yōu)越性。
對比表3 中的結(jié)果可以看出,TextCNN 模型相較BiLSTM 模型F值提升了1.49 個(gè)百分點(diǎn),這是由于TextCNN 擅長捕獲更短的序列信息,Bi-LSTM擅長捕獲更長的序列信息,而數(shù)據(jù)集中大部分需求條目都是字符長度較短的句子,因此BiLSTM 無法最大程度發(fā)揮自身的長處,導(dǎo)致準(zhǔn)確率不如TextCNN。而BERT 模型屬于預(yù)訓(xùn)練模型,模型一開始就能更好地理解文本,同時(shí)Transformer 的雙向特征能夠使模型更容易學(xué)習(xí)到前后文信息,因此F值相較TextCNN 提升了1.61 個(gè)百分點(diǎn)。BERT 和BiLSTM 都能夠很好地提取到字符特征,因此這兩個(gè)模型的組合能夠?qū)υ~向量做進(jìn)一步處理,使得需求抽取的效果更佳,因此BERT-BiLSTM 相較BERT 的F值提升了4.73 個(gè)百分點(diǎn)。RoBERTa-wwm-BiLSTM 模型效果是所有算法中表現(xiàn)最出色的,這是因?yàn)镽oBERTa-wwm 與BERT 相比具有的兩大優(yōu)勢,這兩大優(yōu)勢能夠讓RoBERTa-wwm 有更好的表現(xiàn)。所以RoBERTa-wwm-BiLSTM 模型的最終效果要明顯優(yōu)于其他需求抽取模型。
隨著需求工程研究逐漸深入,需求分析等任務(wù)的研究同樣進(jìn)行得如火如荼,而在進(jìn)行這些研究之前將需求抽取出來對于需求工程的研究進(jìn)展有很大的積極意義。但是需求條目相較于其他語句和其他分類任務(wù)難度較大,且目前也沒有需求條目公開的中文訓(xùn)練集。這導(dǎo)致需求工程的研究在工業(yè)界和學(xué)術(shù)界的進(jìn)展都十分緩慢。
因此本研究首先基于凱德股份數(shù)據(jù)庫以及網(wǎng)絡(luò)上的有關(guān)于需求工程研究的博客和文檔,構(gòu)建首個(gè)中文需求抽取數(shù)據(jù)庫,再針對需求條目描述提出了一種RoBERTa-wwm-BiLSTM 抽取方法,并對其效果進(jìn)行了實(shí)際測試。結(jié)果表明其精確率、召回率和F值依次達(dá)到94.74%、93.33%和93.65%,說明該方法與目前主流的分類方法相比有了比較明顯的提升,是比較適合在工業(yè)界進(jìn)行需求抽取的一種方法。該研究所構(gòu)建語料庫和所提方法能夠?yàn)橹笮枨蟪槿〉难芯看蛳禄A(chǔ),同時(shí)為其他需求抽取任務(wù)甚至其它文本分類任務(wù)提供借鑒。
盡管本研究取得了一定的成果,但是也存在一定的不足,后續(xù)研究將會繼續(xù)擴(kuò)大需求抽取的數(shù)據(jù)集,針對工業(yè)界的特點(diǎn),在算法層面上提高需求抽取的速度和準(zhǔn)確率,最后與凱德股份開發(fā)的KD-DSP 凱德數(shù)字體系工程平臺進(jìn)行結(jié)合,研發(fā)出更強(qiáng)大的體系工程平臺。