孫悅明,楊 葉,張 文
(1.中國科學院軟件研究所互聯網軟件技術實驗室,北京100190;2.中國科學院研究生院,北京100049)
系統化調研 (systematic literature review,SLR)旨在對于某一特定研究問題,查找、評估、分析與其相關的所有文獻資料[1],通過文獻調研和閱讀的方法以求解這一特定問題的答案。它主要包含5個步驟:尋找初始文獻集合,篩選文獻,評估篩選出的文獻質量,相關數據抽取,綜合調研結論。一般來說,傳統SLR的工作量會遠多于普通的調研方法[1]。系統化調研時,研究人員需要從多種多樣的資源中收集整理信息,包括電子數據庫,技術文檔,專家咨詢等等。因此,亟需一種能夠幫助減少工作量開銷并保證質量的輔助SLR的方法,本文針對該問題開展研究。
本文提出了一個基于句法分析的軟件估算本體分析方法。通過該方法幫助降低SLR過程中“篩選文獻”步驟所需要的人力開銷。從摘要入手,對摘要進行結構化分析,抽取出概念與知識信息,并構建軟件估算本體 (COSt estimation ONTology,COSONT),應用于軟件估算系統化調研。通過對比實驗,本文證明了應用此方法輔助SLR的有效性。同時,本文所提出的Ontology可以用來輔助研究人員在軟件估算領域眾多其他的經驗研究。方法詳細的結構見圖1。
如圖1所示,本文所使用的數據集由347篇軟件估算論文的摘要組成。利用摘要的內在結構化特點,我們使用句法分析工具分析摘要特定句子的結構,總結出一套句法規(guī)則。通過結構化分析摘要提取出摘要的主體部分。接著從該部分抽取概念知識,得到名詞詞組。最后用這些名詞詞組建立軟件估算Ontology,COSONT,用以組織這些概念知識以及他們之間的關系。通過使用COSONT,可以大幅度的減少SLR第二步驟,也即篩選文獻所需要的工作量。
圖1 方法結構
1.1.1 數據集合
本文收集了軟件工作量估算領域相關的論文。文獻收集按照如下步驟執(zhí)行:①使用“effort prediction”作為原始的查詢字符串。②在4個常用電子數據庫中查找文獻,這4個數據庫是:IEEE Explorer,ACM Digital Library,Springer and Science Direct。我們得到了645篇論文。③人工檢查所有論文的摘要,題目,關鍵字部分,判斷是否真的是軟件估算領域的論文。④對于那些通過如上檢查仍不能確定的論文,通過進一步閱讀全文來判斷是否相關。⑤在整個過程中,本文邀請了領域專家進行監(jiān)督,以保證最終結果的質量與公正性。通過認真的篩選,最終挑選出來了347篇文章,構成了最終數據集。
1.1.2 摘要結構分析
論文的各個部分中,摘要是最重要的部分。一篇組織良好的摘要能夠清楚的概括文章內容,幫助相關研究人員快速找到所需內容。通過仔細分析了大量的摘要之后發(fā)現,絕大部分摘要都包括背景,主體,結論3個部分。其中的主體部分會清晰的概括文章“具體做了哪些工作”,包含相對來說最重要的信息。因此本文需要提取出摘要的主體部分。首先做出如下定義:
定義1 Background:背景部分。
Main part:主體部分。
Conclusion:結論部分。
MAINSEN:主體部分的第一個句子。
CONCLU:結論部分的第一個句子。
則一篇摘要可以表示成背景,主體,結論三部分的集合。
Abstract=(Background,Main part,Conclusion)
主體部分可以表示為首句MAINSEN與其余句子的集合。
Main part=(MAINSEN,…,…)
結論部分可以表示為首句CONCLU與其余句子的集合。
Conclusion=(CONCLU,…,…)
如果能定位出MAINSEN與CONCLU,那么這兩句中間的內容就是摘要的主體部分。基于這一分析,本文提出了一種基于句法規(guī)則的方法定位摘要的主體部分。
本文根據句子分析的統計信息制定規(guī)則。這里使用了Stanford Parser[2]。這個工具可以解析出句子的語法結構。比如,那些詞形成了詞組,哪個詞組是句子的主語或是賓語等。具體的,首先人工標注MAINSEN和CONCLU的集合。然后使用該工具解析這個集合中的每個句子。這些句子的語法成分 (如介詞短語等)包含了一些特定的詞組。比如“In this paper”就經常出現在MAINSEN句子的句首介詞短語中。如果用PP表示介詞短語,NP和VP分別表示句子的主語結構和動賓結構。那么句法規(guī)則可以定義如下。
1.2.1 MAINSEN規(guī)則:
定義2 mainsen-x1:出現在MAINSEN的PP結構中的詞組。
mainsen-x2:出現在MAINSEN的NP結構中的詞組。
mainsen-x3:出現在MAINSEN的VP結構中的詞組。
R1:S=PP,NPVP
R2:S=NP VP
那么一個MAINSEN句子應該匹配R1、R2正則表達式所表示的規(guī)則。其中R1規(guī)則需要匹配PP與VP;R2規(guī)則需要匹配NP與VP。
為了定位一篇摘要的MAINSEN,從前往后的檢查摘要中的每個句子。如果找到了一個句子匹配R1,接下來繼續(xù)檢查它的PP與VP部分是否也包含 mainsen-x1與 mainsen-x3中所定義的詞匯,如果包含,那么它就是該摘要的MAINSEN。如果匹配了R2,還要繼續(xù)檢查它的NP與VP部分是否也包含mainsen-x2與mainsen-x3中定義的詞匯。如果包含,那么它也是該摘要的MAINSEN。如果既不匹配R1也不匹配R2,則這個句子不可能是MAINSEN,繼續(xù)檢查下一個句子,直到全部句子都檢查完為止。
舉個具體的例子,如下的句子分別匹配R1,并且在相應的PP,NP或VP里面包含相應的標示性短語 (以粗體字顯示)。
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:出現在CONCLU的PP結構中的詞組。
conclu-x2:出現在CONCLU的NP結構中的詞組。
conclu-x3:出現在CONCLU的VP結構中的詞組。
Conclu-extra:能夠直接表示一個句子是CONCLU的詞組集合。
R3:S=(PP)+NP VP
CONCLU應該按照如下步驟尋找:
(1)它的位置必須出現在MAINSEN以后
(2)匹配規(guī)則R3,并且在PP,NP,VP結構中分別包含 conclu-x1,conclu-x2,conclu-x3。
(3)如果不匹配R3,那么它必須包含conclu-extra中特定的詞組。
(4)如果都不滿足,那么它不是CONCLU,繼續(xù)向后尋找,直到全部句子都檢查完為止。
值得一提的是,由于一些作者更喜歡在正文里面詳細的描述他們的實驗結果與結論,或者結論過于復雜而在摘要中很難說清楚等原因,一篇摘要中沒有結論的情況也比較常見。
下面的句子匹配R3,并且在相應的語法結構里面包含相應的標示性短語 (以粗體字顯示)。
Results of the study show a significant correlation between the software development effort and all three models.
1.2.3 使用規(guī)則分隔摘要
有了這些規(guī)則,定位時從前往后的掃描摘要中的每一個句子。當遇到一個句子匹配MAINSEN的規(guī)則,則把它標為MAINSEN。繼續(xù)向后掃描,如果接著碰到一個句子匹配CONCLU,則兩個分隔句都找到了。那么在MAINSEN(含)和CONCLU之間的部分就是摘要的主體部分。如果一個摘要只有MAINSEN而沒定位到CONCLU,那么所有MAINSEN(含)后面直到摘要末尾的句子都是摘要的主體部分。
本文手工的標識了347篇文章摘要的MAINSEN與CONCLU,作為標準集合。然后使用上面定義的句法規(guī)則自動的尋找MAINSEN與CONCLU。最后的結果見表1。
表1 自動找到的句子
總的摘要數是347個。正確定位的MAINSEN句子有267句,準確率達到了76.95%。CONCLU的準確率也達到了70.5%。在這個驗證中,準確率是等于召回率的。結果顯示我們基于規(guī)則的方法效果很好。
接下來從摘要的特定部分中抽取概念知識。由于名詞詞組通常都包含了一句話的主要信息,因此首先在摘要的主體部分抽取出所有的名詞短語。但是并不是所有的名詞短語都有意義,我們同時還制定了規(guī)則刪除掉一些沒有實際意義的詞組,比如“a method”或“model”等。剩下的名詞短語就是表示“這篇文章真正講了什么”的概念知識。
通過一個實驗驗證是否從主體部分抽取出來的名詞詞組能夠比較好的代表文章中的內容。本文邀請了4位專家從摘要中人工抽取出他們認為有意義的概念知識作為標準集合,再自動的從摘要中抽取概念知識,驗證結果見表2。
表2 驗證結果
經過統計,自動抽取的詞組的召回率達到了72.428%到84.281%。結果顯示,該方法能夠比較準確的從摘要中抽取出概念知識。下面介紹如何使用這些概念知識構建COSONT。
為了構建COSONT,需要定義軟件估算領域的Ontology結構。現在的軟件估算研究中,廣泛采用了許多經典的機器學習與數據挖掘的算法?;谠谠擃I域多年的研究經驗,本文總結出,通常研究人員比較感興趣的問題是:文章中使用了哪些方法;使用了哪些度量元;以及文章涉及到了哪些軟件工程知識。我們通過對軟件估算領域文章作者給出的關鍵詞進行分析,并把這些關鍵詞分成了三大類別:模型詞匯,度量元詞匯,軟件工程詞匯。
定義4 模型詞匯:文章中所使用的模型或方法,比如KNN;
度量元詞匯:文章方法中所涉及到的度量元,比如準確率,方差等;
軟件工程特征詞匯:軟件估算或軟件工程領域詞匯,比如COCOMO。
本 文 使 用 Protégé[3]構 建 COSt estimation ONTology(COSONT)。首先建立本體的類結構[4]。我們建立 Cost Knowledge類結構表示軟件估算文章。通過對軟件估算論文作者給出的關鍵詞進行分類分析,我們建立了模型,度量元,軟件工程特征詞匯3個類結構以及他們內在的關系。用這三類詞表示每篇文章摘要中所包含的概念知識信息。圖2是實際的類結構。
圖2 COSONT結構
以模型詞匯為例,首先建立一個名為Model的父類。他的子類包含鏈接挖掘方法,分類方法,統計學習方法,基于比較的方法,聚類方法以及關聯規(guī)則分析方法。
接著把從文章中抽取出來的相關概念知識一一添加到這個結構當中。每篇文章都作為Cost Knowledge類的一個實例。從摘要主體部分抽取出來的名詞短語則作為模型詞匯,度量元詞匯,軟件工程詞匯3種類結構的實例,分別加入到相應的類結構中。當所有的內容都添加到COSONT中以后,COSONT就建立好了。
下面詳細介紹使用COSONT自動化輔助SLR與手工SLR的對比實驗。實驗結果將從準確程度與工作量兩個方面進行衡量。
由于回歸與神經網絡是軟件估算中最常用的兩種方法,所以SLR的主要目的就是比較這兩種方法哪一個在軟件估算領域效果更好。該實驗邀請了四位擁有在估算方面SLR經驗的專家。首先給這些專家每個人安排合適的培訓,使得他們對整體任務有所了解。然后針對“篩選文獻”步驟進行實驗。
在實驗中,四位專家需要在文獻集中找到同SLR問題相關的文章。每個人分析347篇中的87篇左右的文章。主要的篩選準則是,摘要中必須同時提到回歸與神經網絡兩種方法。那些純粹的討論與觀點類型的文章則予以刪除。本文使用COSONT來分析摘要的主體部分,找到符合篩選要求的論文。作為對照,幾位專家需要認真閱讀摘要內容,并根據他們個人的經驗判斷排除那些不相關的文章。同時他們還需要記錄各自的工作量 (人時)。手工方法的統計結果見表3。
正如表3所示,一共有11篇文章被篩選了出來。從工作量統計可以看出,手工篩選確實是一項很費人力的工作。4位專家總的工作量是35個人時。然而,相對于手工方法,使用COSONT花費的總的時間可以忽略不計。并且,兩種方法所確定的最終論文集合是相同的。
表3 手工篩選文獻
從實驗結果可以看出,使用COSONT既能得到不錯的SLR效果,又能節(jié)省大量的時間。本文的工作利用了摘要自身的結構化信息。主要的依據是從結構化信息當中獲得的概念知識信息一定會比由普通的關鍵字匹配得到的信息質量要高。并且建立了軟件估算Ontology COSONT組織文獻中的概念知識以及它們之間的關系。
然而本文的工作也存在著一些問題。首先,文獻的正文部分也可以被用來進行概念知識抽取。雖然可能會給實驗帶來很多噪聲,但同時也可能會遺漏很多重要的信息。在將來的工作中,我們將會嘗試分析文獻更多的部分,比如討論部分、結論部分等。其次,本文建立的Ontology僅僅適用于軟件估算。將來需要建立更加普適的軟件工程Ontology結構,以輔助軟件工程不同領域的SLR。
系統化調研 (systematic literature review,SLR)在軟件工程領域得到了廣泛的使用[1]。通過調研大量相關文獻,SLR可以全面準確的回答某個特定的研究問題。其中,第二步驟“篩選文獻”需要幾位評審人員制定嚴格的篩選規(guī)則,并審查大量的文獻,以判斷哪些文獻是同研究問題真正緊密相關的。審查的內容主要包括文獻的標題,關鍵字,摘要等部分。這部分工作需要非常大的工作量。
因此,很多研究都致力于怎樣減輕SLR所需要的工作量。比如,He Zhang[5]等人使用了一個系統化的基于證據的方法來建立一個最優(yōu)的SLR搜索策略。又如El Emam[6]等人使用EDC(electronic data capture)工具來自動化SLR的數據收集與查詢優(yōu)化過程。這些研究都沒有從試圖理解文獻內容的角度來開展研究。而試圖理解文獻正是SLR過程中大量人工判斷工作的基本目的。考慮到這方面因素,我們從試圖理解文獻的角度提出了輔助SLR過程的自動化方法。
Ontology在多個領域都受到了廣泛的應用。首先,它是語義網的重要組成部分[7]。軟件工程各個領域都可以用Ontology來輔助[8]。其次,知識管理領域也使用Ontology來自動的翻譯數據模型[9]。Ontology也被廣泛的應用于軟件工程領域。比如,Yonggang Zhang等人[10]使用Ontology研究軟件工程的安全性。Ontology能夠很好的組織知識,表示知識,并能夠支持機器推理。所以,本文使用Ontology作為研究工作的基礎。
本文提出了一種利用語法與句法分析技術從摘要中自動化的抽取概念知識的方法,利用此方法減輕SLR過程所需要的大量的工作量。首先對摘要進行了結構化劃分。通過基于規(guī)則的方法,摘要可以被劃分成三部分。然后我們從摘要的主體部分抽取概念知識。最后建立了軟件估算Ontology——COSONT自動化的支持SLR過程。本文還通過對比實驗證明了該方法能夠有效的輔助SLR。尤其是降低“篩選文獻”步驟所需要的工作量,同時還保證了與手工SLR近似的效果?;诖耍疚牡呢暙I包括:①結構化分析文章的摘要部分,并從其中抽取概念知識。②在抽取出的概念知識基礎上,建立了軟件估算領域的Ontology結構,并以此來輔助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.