孫悅明,楊 葉,張 文
(1.中國(guó)科學(xué)院軟件研究所互聯(lián)網(wǎng)軟件技術(shù)實(shí)驗(yàn)室,北京100190;2.中國(guó)科學(xué)院研究生院,北京100049)
系統(tǒng)化調(diào)研 (systematic literature review,SLR)旨在對(duì)于某一特定研究問(wèn)題,查找、評(píng)估、分析與其相關(guān)的所有文獻(xiàn)資料[1],通過(guò)文獻(xiàn)調(diào)研和閱讀的方法以求解這一特定問(wèn)題的答案。它主要包含5個(gè)步驟:尋找初始文獻(xiàn)集合,篩選文獻(xiàn),評(píng)估篩選出的文獻(xiàn)質(zhì)量,相關(guān)數(shù)據(jù)抽取,綜合調(diào)研結(jié)論。一般來(lái)說(shuō),傳統(tǒng)SLR的工作量會(huì)遠(yuǎn)多于普通的調(diào)研方法[1]。系統(tǒng)化調(diào)研時(shí),研究人員需要從多種多樣的資源中收集整理信息,包括電子數(shù)據(jù)庫(kù),技術(shù)文檔,專家咨詢等等。因此,亟需一種能夠幫助減少工作量開(kāi)銷并保證質(zhì)量的輔助SLR的方法,本文針對(duì)該問(wèn)題開(kāi)展研究。
本文提出了一個(gè)基于句法分析的軟件估算本體分析方法。通過(guò)該方法幫助降低SLR過(guò)程中“篩選文獻(xiàn)”步驟所需要的人力開(kāi)銷。從摘要入手,對(duì)摘要進(jìn)行結(jié)構(gòu)化分析,抽取出概念與知識(shí)信息,并構(gòu)建軟件估算本體 (COSt estimation ONTology,COSONT),應(yīng)用于軟件估算系統(tǒng)化調(diào)研。通過(guò)對(duì)比實(shí)驗(yàn),本文證明了應(yīng)用此方法輔助SLR的有效性。同時(shí),本文所提出的Ontology可以用來(lái)輔助研究人員在軟件估算領(lǐng)域眾多其他的經(jīng)驗(yàn)研究。方法詳細(xì)的結(jié)構(gòu)見(jiàn)圖1。
如圖1所示,本文所使用的數(shù)據(jù)集由347篇軟件估算論文的摘要組成。利用摘要的內(nèi)在結(jié)構(gòu)化特點(diǎn),我們使用句法分析工具分析摘要特定句子的結(jié)構(gòu),總結(jié)出一套句法規(guī)則。通過(guò)結(jié)構(gòu)化分析摘要提取出摘要的主體部分。接著從該部分抽取概念知識(shí),得到名詞詞組。最后用這些名詞詞組建立軟件估算Ontology,COSONT,用以組織這些概念知識(shí)以及他們之間的關(guān)系。通過(guò)使用COSONT,可以大幅度的減少SLR第二步驟,也即篩選文獻(xiàn)所需要的工作量。
圖1 方法結(jié)構(gòu)
1.1.1 數(shù)據(jù)集合
本文收集了軟件工作量估算領(lǐng)域相關(guān)的論文。文獻(xiàn)收集按照如下步驟執(zhí)行:①使用“effort prediction”作為原始的查詢字符串。②在4個(gè)常用電子數(shù)據(jù)庫(kù)中查找文獻(xiàn),這4個(gè)數(shù)據(jù)庫(kù)是:IEEE Explorer,ACM Digital Library,Springer and Science Direct。我們得到了645篇論文。③人工檢查所有論文的摘要,題目,關(guān)鍵字部分,判斷是否真的是軟件估算領(lǐng)域的論文。④對(duì)于那些通過(guò)如上檢查仍不能確定的論文,通過(guò)進(jìn)一步閱讀全文來(lái)判斷是否相關(guān)。⑤在整個(gè)過(guò)程中,本文邀請(qǐng)了領(lǐng)域?qū)<疫M(jìn)行監(jiān)督,以保證最終結(jié)果的質(zhì)量與公正性。通過(guò)認(rèn)真的篩選,最終挑選出來(lái)了347篇文章,構(gòu)成了最終數(shù)據(jù)集。
1.1.2 摘要結(jié)構(gòu)分析
論文的各個(gè)部分中,摘要是最重要的部分。一篇組織良好的摘要能夠清楚的概括文章內(nèi)容,幫助相關(guān)研究人員快速找到所需內(nèi)容。通過(guò)仔細(xì)分析了大量的摘要之后發(fā)現(xiàn),絕大部分摘要都包括背景,主體,結(jié)論3個(gè)部分。其中的主體部分會(huì)清晰的概括文章“具體做了哪些工作”,包含相對(duì)來(lái)說(shuō)最重要的信息。因此本文需要提取出摘要的主體部分。首先做出如下定義:
定義1 Background:背景部分。
Main part:主體部分。
Conclusion:結(jié)論部分。
MAINSEN:主體部分的第一個(gè)句子。
CONCLU:結(jié)論部分的第一個(gè)句子。
則一篇摘要可以表示成背景,主體,結(jié)論三部分的集合。
Abstract=(Background,Main part,Conclusion)
主體部分可以表示為首句MAINSEN與其余句子的集合。
Main part=(MAINSEN,…,…)
結(jié)論部分可以表示為首句CONCLU與其余句子的集合。
Conclusion=(CONCLU,…,…)
如果能定位出MAINSEN與CONCLU,那么這兩句中間的內(nèi)容就是摘要的主體部分。基于這一分析,本文提出了一種基于句法規(guī)則的方法定位摘要的主體部分。
本文根據(jù)句子分析的統(tǒng)計(jì)信息制定規(guī)則。這里使用了Stanford Parser[2]。這個(gè)工具可以解析出句子的語(yǔ)法結(jié)構(gòu)。比如,那些詞形成了詞組,哪個(gè)詞組是句子的主語(yǔ)或是賓語(yǔ)等。具體的,首先人工標(biāo)注MAINSEN和CONCLU的集合。然后使用該工具解析這個(gè)集合中的每個(gè)句子。這些句子的語(yǔ)法成分 (如介詞短語(yǔ)等)包含了一些特定的詞組。比如“In this paper”就經(jīng)常出現(xiàn)在MAINSEN句子的句首介詞短語(yǔ)中。如果用PP表示介詞短語(yǔ),NP和VP分別表示句子的主語(yǔ)結(jié)構(gòu)和動(dòng)賓結(jié)構(gòu)。那么句法規(guī)則可以定義如下。
1.2.1 MAINSEN規(guī)則:
定義2 mainsen-x1:出現(xiàn)在MAINSEN的PP結(jié)構(gòu)中的詞組。
mainsen-x2:出現(xiàn)在MAINSEN的NP結(jié)構(gòu)中的詞組。
mainsen-x3:出現(xiàn)在MAINSEN的VP結(jié)構(gòu)中的詞組。
R1:S=PP,NPVP
R2:S=NP VP
那么一個(gè)MAINSEN句子應(yīng)該匹配R1、R2正則表達(dá)式所表示的規(guī)則。其中R1規(guī)則需要匹配PP與VP;R2規(guī)則需要匹配NP與VP。
為了定位一篇摘要的MAINSEN,從前往后的檢查摘要中的每個(gè)句子。如果找到了一個(gè)句子匹配R1,接下來(lái)繼續(xù)檢查它的PP與VP部分是否也包含 mainsen-x1與 mainsen-x3中所定義的詞匯,如果包含,那么它就是該摘要的MAINSEN。如果匹配了R2,還要繼續(xù)檢查它的NP與VP部分是否也包含mainsen-x2與mainsen-x3中定義的詞匯。如果包含,那么它也是該摘要的MAINSEN。如果既不匹配R1也不匹配R2,則這個(gè)句子不可能是MAINSEN,繼續(xù)檢查下一個(gè)句子,直到全部句子都檢查完為止。
舉個(gè)具體的例子,如下的句子分別匹配R1,并且在相應(yīng)的PP,NP或VP里面包含相應(yīng)的標(biāo)示性短語(yǔ) (以粗體字顯示)。
In this paper,we propose an approach that converts cost estimation into a classification problem and that classifies new software projects in one of the effort classes,each of which corresponds to an effort interval.
1.2.2 CONCLU規(guī)則
定義3 conclu-x1:出現(xiàn)在CONCLU的PP結(jié)構(gòu)中的詞組。
conclu-x2:出現(xiàn)在CONCLU的NP結(jié)構(gòu)中的詞組。
conclu-x3:出現(xiàn)在CONCLU的VP結(jié)構(gòu)中的詞組。
Conclu-extra:能夠直接表示一個(gè)句子是CONCLU的詞組集合。
R3:S=(PP)+NP VP
CONCLU應(yīng)該按照如下步驟尋找:
(1)它的位置必須出現(xiàn)在MAINSEN以后
(2)匹配規(guī)則R3,并且在PP,NP,VP結(jié)構(gòu)中分別包含 conclu-x1,conclu-x2,conclu-x3。
(3)如果不匹配R3,那么它必須包含conclu-extra中特定的詞組。
(4)如果都不滿足,那么它不是CONCLU,繼續(xù)向后尋找,直到全部句子都檢查完為止。
值得一提的是,由于一些作者更喜歡在正文里面詳細(xì)的描述他們的實(shí)驗(yàn)結(jié)果與結(jié)論,或者結(jié)論過(guò)于復(fù)雜而在摘要中很難說(shuō)清楚等原因,一篇摘要中沒(méi)有結(jié)論的情況也比較常見(jiàn)。
下面的句子匹配R3,并且在相應(yīng)的語(yǔ)法結(jié)構(gòu)里面包含相應(yīng)的標(biāo)示性短語(yǔ) (以粗體字顯示)。
Results of the study show a significant correlation between the software development effort and all three models.
1.2.3 使用規(guī)則分隔摘要
有了這些規(guī)則,定位時(shí)從前往后的掃描摘要中的每一個(gè)句子。當(dāng)遇到一個(gè)句子匹配MAINSEN的規(guī)則,則把它標(biāo)為MAINSEN。繼續(xù)向后掃描,如果接著碰到一個(gè)句子匹配CONCLU,則兩個(gè)分隔句都找到了。那么在MAINSEN(含)和CONCLU之間的部分就是摘要的主體部分。如果一個(gè)摘要只有MAINSEN而沒(méi)定位到CONCLU,那么所有MAINSEN(含)后面直到摘要末尾的句子都是摘要的主體部分。
本文手工的標(biāo)識(shí)了347篇文章摘要的MAINSEN與CONCLU,作為標(biāo)準(zhǔn)集合。然后使用上面定義的句法規(guī)則自動(dòng)的尋找MAINSEN與CONCLU。最后的結(jié)果見(jiàn)表1。
表1 自動(dòng)找到的句子
總的摘要數(shù)是347個(gè)。正確定位的MAINSEN句子有267句,準(zhǔn)確率達(dá)到了76.95%。CONCLU的準(zhǔn)確率也達(dá)到了70.5%。在這個(gè)驗(yàn)證中,準(zhǔn)確率是等于召回率的。結(jié)果顯示我們基于規(guī)則的方法效果很好。
接下來(lái)從摘要的特定部分中抽取概念知識(shí)。由于名詞詞組通常都包含了一句話的主要信息,因此首先在摘要的主體部分抽取出所有的名詞短語(yǔ)。但是并不是所有的名詞短語(yǔ)都有意義,我們同時(shí)還制定了規(guī)則刪除掉一些沒(méi)有實(shí)際意義的詞組,比如“a method”或“model”等。剩下的名詞短語(yǔ)就是表示“這篇文章真正講了什么”的概念知識(shí)。
通過(guò)一個(gè)實(shí)驗(yàn)驗(yàn)證是否從主體部分抽取出來(lái)的名詞詞組能夠比較好的代表文章中的內(nèi)容。本文邀請(qǐng)了4位專家從摘要中人工抽取出他們認(rèn)為有意義的概念知識(shí)作為標(biāo)準(zhǔn)集合,再自動(dòng)的從摘要中抽取概念知識(shí),驗(yàn)證結(jié)果見(jiàn)表2。
表2 驗(yàn)證結(jié)果
經(jīng)過(guò)統(tǒng)計(jì),自動(dòng)抽取的詞組的召回率達(dá)到了72.428%到84.281%。結(jié)果顯示,該方法能夠比較準(zhǔn)確的從摘要中抽取出概念知識(shí)。下面介紹如何使用這些概念知識(shí)構(gòu)建COSONT。
為了構(gòu)建COSONT,需要定義軟件估算領(lǐng)域的Ontology結(jié)構(gòu)?,F(xiàn)在的軟件估算研究中,廣泛采用了許多經(jīng)典的機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘的算法?;谠谠擃I(lǐng)域多年的研究經(jīng)驗(yàn),本文總結(jié)出,通常研究人員比較感興趣的問(wèn)題是:文章中使用了哪些方法;使用了哪些度量元;以及文章涉及到了哪些軟件工程知識(shí)。我們通過(guò)對(duì)軟件估算領(lǐng)域文章作者給出的關(guān)鍵詞進(jìn)行分析,并把這些關(guān)鍵詞分成了三大類別:模型詞匯,度量元詞匯,軟件工程詞匯。
定義4 模型詞匯:文章中所使用的模型或方法,比如KNN;
度量元詞匯:文章方法中所涉及到的度量元,比如準(zhǔn)確率,方差等;
軟件工程特征詞匯:軟件估算或軟件工程領(lǐng)域詞匯,比如COCOMO。
本 文 使 用 Protégé[3]構(gòu) 建 COSt estimation ONTology(COSONT)。首先建立本體的類結(jié)構(gòu)[4]。我們建立 Cost Knowledge類結(jié)構(gòu)表示軟件估算文章。通過(guò)對(duì)軟件估算論文作者給出的關(guān)鍵詞進(jìn)行分類分析,我們建立了模型,度量元,軟件工程特征詞匯3個(gè)類結(jié)構(gòu)以及他們內(nèi)在的關(guān)系。用這三類詞表示每篇文章摘要中所包含的概念知識(shí)信息。圖2是實(shí)際的類結(jié)構(gòu)。
圖2 COSONT結(jié)構(gòu)
以模型詞匯為例,首先建立一個(gè)名為Model的父類。他的子類包含鏈接挖掘方法,分類方法,統(tǒng)計(jì)學(xué)習(xí)方法,基于比較的方法,聚類方法以及關(guān)聯(lián)規(guī)則分析方法。
接著把從文章中抽取出來(lái)的相關(guān)概念知識(shí)一一添加到這個(gè)結(jié)構(gòu)當(dāng)中。每篇文章都作為Cost Knowledge類的一個(gè)實(shí)例。從摘要主體部分抽取出來(lái)的名詞短語(yǔ)則作為模型詞匯,度量元詞匯,軟件工程詞匯3種類結(jié)構(gòu)的實(shí)例,分別加入到相應(yīng)的類結(jié)構(gòu)中。當(dāng)所有的內(nèi)容都添加到COSONT中以后,COSONT就建立好了。
下面詳細(xì)介紹使用COSONT自動(dòng)化輔助SLR與手工SLR的對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果將從準(zhǔn)確程度與工作量?jī)蓚€(gè)方面進(jìn)行衡量。
由于回歸與神經(jīng)網(wǎng)絡(luò)是軟件估算中最常用的兩種方法,所以SLR的主要目的就是比較這兩種方法哪一個(gè)在軟件估算領(lǐng)域效果更好。該實(shí)驗(yàn)邀請(qǐng)了四位擁有在估算方面SLR經(jīng)驗(yàn)的專家。首先給這些專家每個(gè)人安排合適的培訓(xùn),使得他們對(duì)整體任務(wù)有所了解。然后針對(duì)“篩選文獻(xiàn)”步驟進(jìn)行實(shí)驗(yàn)。
在實(shí)驗(yàn)中,四位專家需要在文獻(xiàn)集中找到同SLR問(wèn)題相關(guān)的文章。每個(gè)人分析347篇中的87篇左右的文章。主要的篩選準(zhǔn)則是,摘要中必須同時(shí)提到回歸與神經(jīng)網(wǎng)絡(luò)兩種方法。那些純粹的討論與觀點(diǎn)類型的文章則予以刪除。本文使用COSONT來(lái)分析摘要的主體部分,找到符合篩選要求的論文。作為對(duì)照,幾位專家需要認(rèn)真閱讀摘要內(nèi)容,并根據(jù)他們個(gè)人的經(jīng)驗(yàn)判斷排除那些不相關(guān)的文章。同時(shí)他們還需要記錄各自的工作量 (人時(shí))。手工方法的統(tǒng)計(jì)結(jié)果見(jiàn)表3。
正如表3所示,一共有11篇文章被篩選了出來(lái)。從工作量統(tǒng)計(jì)可以看出,手工篩選確實(shí)是一項(xiàng)很費(fèi)人力的工作。4位專家總的工作量是35個(gè)人時(shí)。然而,相對(duì)于手工方法,使用COSONT花費(fèi)的總的時(shí)間可以忽略不計(jì)。并且,兩種方法所確定的最終論文集合是相同的。
表3 手工篩選文獻(xiàn)
從實(shí)驗(yàn)結(jié)果可以看出,使用COSONT既能得到不錯(cuò)的SLR效果,又能節(jié)省大量的時(shí)間。本文的工作利用了摘要自身的結(jié)構(gòu)化信息。主要的依據(jù)是從結(jié)構(gòu)化信息當(dāng)中獲得的概念知識(shí)信息一定會(huì)比由普通的關(guān)鍵字匹配得到的信息質(zhì)量要高。并且建立了軟件估算Ontology COSONT組織文獻(xiàn)中的概念知識(shí)以及它們之間的關(guān)系。
然而本文的工作也存在著一些問(wèn)題。首先,文獻(xiàn)的正文部分也可以被用來(lái)進(jìn)行概念知識(shí)抽取。雖然可能會(huì)給實(shí)驗(yàn)帶來(lái)很多噪聲,但同時(shí)也可能會(huì)遺漏很多重要的信息。在將來(lái)的工作中,我們將會(huì)嘗試分析文獻(xiàn)更多的部分,比如討論部分、結(jié)論部分等。其次,本文建立的Ontology僅僅適用于軟件估算。將來(lái)需要建立更加普適的軟件工程O(píng)ntology結(jié)構(gòu),以輔助軟件工程不同領(lǐng)域的SLR。
系統(tǒng)化調(diào)研 (systematic literature review,SLR)在軟件工程領(lǐng)域得到了廣泛的使用[1]。通過(guò)調(diào)研大量相關(guān)文獻(xiàn),SLR可以全面準(zhǔn)確的回答某個(gè)特定的研究問(wèn)題。其中,第二步驟“篩選文獻(xiàn)”需要幾位評(píng)審人員制定嚴(yán)格的篩選規(guī)則,并審查大量的文獻(xiàn),以判斷哪些文獻(xiàn)是同研究問(wèn)題真正緊密相關(guān)的。審查的內(nèi)容主要包括文獻(xiàn)的標(biāo)題,關(guān)鍵字,摘要等部分。這部分工作需要非常大的工作量。
因此,很多研究都致力于怎樣減輕SLR所需要的工作量。比如,He Zhang[5]等人使用了一個(gè)系統(tǒng)化的基于證據(jù)的方法來(lái)建立一個(gè)最優(yōu)的SLR搜索策略。又如El Emam[6]等人使用EDC(electronic data capture)工具來(lái)自動(dòng)化SLR的數(shù)據(jù)收集與查詢優(yōu)化過(guò)程。這些研究都沒(méi)有從試圖理解文獻(xiàn)內(nèi)容的角度來(lái)開(kāi)展研究。而試圖理解文獻(xiàn)正是SLR過(guò)程中大量人工判斷工作的基本目的??紤]到這方面因素,我們從試圖理解文獻(xiàn)的角度提出了輔助SLR過(guò)程的自動(dòng)化方法。
Ontology在多個(gè)領(lǐng)域都受到了廣泛的應(yīng)用。首先,它是語(yǔ)義網(wǎng)的重要組成部分[7]。軟件工程各個(gè)領(lǐng)域都可以用Ontology來(lái)輔助[8]。其次,知識(shí)管理領(lǐng)域也使用Ontology來(lái)自動(dòng)的翻譯數(shù)據(jù)模型[9]。Ontology也被廣泛的應(yīng)用于軟件工程領(lǐng)域。比如,Yonggang Zhang等人[10]使用Ontology研究軟件工程的安全性。Ontology能夠很好的組織知識(shí),表示知識(shí),并能夠支持機(jī)器推理。所以,本文使用Ontology作為研究工作的基礎(chǔ)。
本文提出了一種利用語(yǔ)法與句法分析技術(shù)從摘要中自動(dòng)化的抽取概念知識(shí)的方法,利用此方法減輕SLR過(guò)程所需要的大量的工作量。首先對(duì)摘要進(jìn)行了結(jié)構(gòu)化劃分。通過(guò)基于規(guī)則的方法,摘要可以被劃分成三部分。然后我們從摘要的主體部分抽取概念知識(shí)。最后建立了軟件估算Ontology——COSONT自動(dòng)化的支持SLR過(guò)程。本文還通過(guò)對(duì)比實(shí)驗(yàn)證明了該方法能夠有效的輔助SLR。尤其是降低“篩選文獻(xiàn)”步驟所需要的工作量,同時(shí)還保證了與手工SLR近似的效果?;诖?,本文的貢獻(xiàn)包括:①結(jié)構(gòu)化分析文章的摘要部分,并從其中抽取概念知識(shí)。②在抽取出的概念知識(shí)基礎(chǔ)上,建立了軟件估算領(lǐng)域的Ontology結(jié)構(gòu),并以此來(lái)輔助SLR。
[1]Kitchenham B A,Emilia Mendes,Guilherme Horta Travassos.Cross versus within-company cost estimation studies:A systematic review[J].IEEE Trans Software Eng,2007,33(5):316-329.
[2]Marie-Catherine de Marneffe,Bill MacCartney,Christopher D Manning.Generating typed dependency parses from phrase structure parses[C]//Genoa,Italy:LREC,2006.
[3]Tania Tudorache,Natasha Noy Jennifer Vendetti,Timothy Redmond.Collaborative ontology development with protégé[R].Amsterdam,2009.
[4]Michel V,En Bossche,Peter Ross,et al.Ontology driven software engineering for real life applications[C]//Innsbruck,Austria:SWESE,2007.
[5]He Zhang,Muhammad Ali Babar,Paolo Tell.Identifying relevant studies in software engineering[J].Information and Software Technology,2010,53(6):625-637.
[6]Khaled El Emam,Elizabeth Jonker,Margaret Sampson,et al.The use of electronic datacapture tools in clinical trials:Web-survey of 259 Canadian trials[J].Journal of Medical Internet Research,2009,11(1):e8
[7]Zhao Yajing,Dong Jing,Tu Peng.Ontology classification for semantic-web-based software engineering[J].IEEE Transactions on Services Computing,2009,2(4):303-317.
[8]Hans-Jorg Happel,Stefan Seedorf.Applica-tions of ontologies in software engineering[C]//SWESE,held at ISWC,2006.
[9]Kurt Schneider.Experience and knowledge management in software engineering[M].Springer,2009:99-109.
[10]Zhang Yonggang,Juergen Rilling,Volker haarslev.An ontologybased approach to software comprehension-reasoning about security concerns[C]//Computer Software and Applications Conference,2006:333-342.