• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于主題的文檔與代碼間關(guān)聯(lián)關(guān)系的提取研究

      2013-07-11 09:35:48許冶冰
      關(guān)鍵詞:主題詞代碼文檔

      許冶冰,劉 超

      北京航空航天大學(xué) 計(jì)算機(jī)學(xué)院,北京 100191

      基于主題的文檔與代碼間關(guān)聯(lián)關(guān)系的提取研究

      許冶冰,劉 超

      北京航空航天大學(xué) 計(jì)算機(jī)學(xué)院,北京 100191

      1 引言

      軟件由文檔和程序源代碼組成。文檔中包含著豐富的專業(yè)領(lǐng)域知識(shí),包括應(yīng)用需求、軟件設(shè)計(jì)等方面的要求。這些內(nèi)容與相應(yīng)的代碼之間存在著不同程度的語義關(guān)聯(lián),比如某段代碼是關(guān)于某項(xiàng)需求、某項(xiàng)設(shè)計(jì)的具體實(shí)現(xiàn)或與其實(shí)現(xiàn)相關(guān)。發(fā)現(xiàn)和維護(hù)代碼與文檔間的關(guān)聯(lián)關(guān)系(也稱可追蹤鏈),對(duì)程序理解、需求跟蹤、軟件維護(hù)和復(fù)用等許多軟件工程活動(dòng)都能提供很大的幫助[1]。

      文獻(xiàn)[2]將建立軟件文檔和代碼間可追蹤鏈的方法按照其自動(dòng)化程度分為三個(gè)等級(jí):手動(dòng)、半自動(dòng)及全自動(dòng),并對(duì)這三類方法所花費(fèi)的代價(jià)、各自的復(fù)雜度、方法的成熟度及所建立的關(guān)聯(lián)關(guān)系的準(zhǔn)確度進(jìn)行了詳細(xì)的說明和比較。信息檢索(Information Retrieval,IR)是目前被廣泛使用的一種全自動(dòng)建立可追蹤鏈的方法,即通過構(gòu)建信息檢索模型來發(fā)掘軟件文檔和代碼間的關(guān)聯(lián)關(guān)系[1,3-5],如概率模型、向量空間模型(VSM)和潛在語義索引模型(LSI)等。采用信息檢索方法的基本思路是將軟件文檔和代碼都作為一般的文本,把源代碼作為檢索條件,把軟件文檔作為檢索庫(kù),進(jìn)行相應(yīng)的檢索。

      近年來,主題模型在自然語言處理中受到了越來越多的關(guān)注[6],很多研究者已嘗試將主題模型應(yīng)用到文本的分類、聚類、分割[7]等領(lǐng)域。Latent Dirichlet Allocation(LDA)模型作為主題模型的典型代表,已有學(xué)者使用它進(jìn)行軟件可追蹤性方面的研究,并且指出LDA模型的性能比信息檢索方法中的LSI模型更好[8]。

      當(dāng)前針對(duì)中文軟件文檔和代碼間相關(guān)性分析的研究較少,且相關(guān)研究主要還是采用信息檢索的方法,其分析效果有待提高。本文使用LDA模型來進(jìn)行中文軟件文檔和代碼的相關(guān)性分析,研究如何使用主題模型更好地提高軟件及代碼間語義相關(guān)性的提取效果。

      2 軟件特征分析

      2.1 中文軟件的混合語言空間

      在本文中,中文軟件是指其文檔和代碼中主要使用中文進(jìn)行說明和定義的軟件。在中文軟件中,文檔的主體是漢字;而代碼則主要由英文單詞或漢語拼音(或其縮寫)書寫而成。在中文文檔中也會(huì)出現(xiàn)各種英文詞匯、漢語拼音(或其縮寫)等,用于說明領(lǐng)域概念對(duì)應(yīng)的英文術(shù)語、標(biāo)識(shí)軟件的構(gòu)成成分(如類名、方法名)等。這些詞匯也會(huì)用于代碼中,即作為命名各類標(biāo)識(shí)符的基本詞匯。在代碼中,也會(huì)出現(xiàn)中文注釋和各種中文字符串。因此,軟件的中文文檔和代碼實(shí)際上是處于一種包含多種語言的混合型語言空間中。本文為了簡(jiǎn)化稱謂,將該空間中包含的所有詞或詞組統(tǒng)稱為詞匯或單詞,包括中英文詞匯,漢語拼音組成的詞匯,以及由字母數(shù)字組成的標(biāo)識(shí)符等。

      令軟件S所處的語言空間為L(zhǎng)。為簡(jiǎn)化問題,不妨將其看作是由漢字詞匯組成的中文空間(記作H)和英文詞匯(包括漢語拼音詞、英文標(biāo)識(shí)符等)組成的擴(kuò)展的英文空間(記作E)共同構(gòu)成的雙語言空間,記作L。這樣的空間可以用其所包含的詞匯向量表示,記作:

      其中|H|和|E|分別表示H和E的規(guī)模,即詞集中的詞匯數(shù)量。

      對(duì)于任何一個(gè)文檔Di,稱L(Di)=(w1,w2,…,wN)為其特征向量,其中wi為詞Wi在文檔Di中的權(quán)重,比如出現(xiàn)次數(shù)。同樣,對(duì)代碼Cj,稱L(Cj)=(w1,w2,…,wN)為其特征向量,其中wi為詞Wi在代碼中的權(quán)重。

      2.2 軟件中文文檔特征分析

      (1)文檔中存在數(shù)據(jù)詞典

      從關(guān)注軟件制品之間語義關(guān)聯(lián)性的角度看,這種混合型語言空間增添了不同語言之間的翻譯難題。但另一方面,在文檔中同時(shí)給出一個(gè)概念或術(shù)語的中英文名稱(詞匯),也為建立語言間的映射(翻譯)關(guān)系提供了重要的依據(jù),為準(zhǔn)確標(biāo)識(shí)和構(gòu)建中文文檔和代碼之間關(guān)聯(lián)關(guān)系提供了必要的信息。依據(jù)統(tǒng)一、規(guī)范的文檔撰寫要求,文檔中的數(shù)據(jù)詞典是關(guān)于軟件項(xiàng)目中使用的數(shù)據(jù)元素列表,并包含了對(duì)這些元素精確定義,以保證用戶和開發(fā)人員對(duì)所有文檔和代碼(包括其所包含的輸入、輸出、存儲(chǔ)、計(jì)算等)取得共同的理解。數(shù)據(jù)詞典為建立不同語言空間之間的關(guān)聯(lián)性提供了語言間互譯的參照系,記作χ(H,E),其含義為:存在E′?E和H′?H,對(duì)于任意的e∈E′,h∈H′,

      其中,“?”表示“可譯作”。

      事實(shí)上,該參照系的完整性和準(zhǔn)確性正是評(píng)判軟件文檔質(zhì)量(特別是可追蹤性)的重要依據(jù)。

      (2)軟件文檔之間存在依賴關(guān)系

      軟件文檔的種類很多,如需求文檔、設(shè)計(jì)文檔、測(cè)試報(bào)告、用戶手冊(cè)等。這些文檔之間存在著一種特殊的依賴關(guān)系。一般情況下,后產(chǎn)生的文檔中所用的術(shù)語,其含義應(yīng)與此前生成的文檔中給出的定義保持一致,即可以進(jìn)一步充實(shí)其內(nèi)涵,但是不應(yīng)導(dǎo)致歧義。

      (3)軟件文檔具有半結(jié)構(gòu)化的特征

      規(guī)范的軟件文檔具有層次化的章節(jié)結(jié)構(gòu)。各個(gè)章節(jié)中分別描述不同層次的內(nèi)容,或稱主題(Topic)。進(jìn)一步講,對(duì)于任何一個(gè)文檔Di,都可以被劃分為若干個(gè)文檔段,記作

      其中DFk是在同一個(gè)小節(jié)中的一段文本表述,稱作文檔段,Ki是Di中的文檔段總數(shù)。與文檔的章節(jié)結(jié)構(gòu)相對(duì)應(yīng),這些文檔段之間保持著相應(yīng)的樹形結(jié)構(gòu)關(guān)系。

      2.3 代碼特征分析

      軟件代碼中的標(biāo)識(shí)符、常量值(如字符串)、注釋,以及文件名和包名等成分為開發(fā)者理解程序的語義提供了重要的信息。標(biāo)識(shí)符通常由一個(gè)或多個(gè)具有特定語義的中英文詞(或其縮寫)組成,因此,是建立代碼與文檔之間語義關(guān)聯(lián)關(guān)系的重要依據(jù)。通過從這些成分中提取詞匯,可以定義其在語言空間中的特征向量L(Cj)(見2.1節(jié))。對(duì)于上述的代碼Cj,它可以是一個(gè)代碼文件,也可以是一個(gè)包或者類,本文中稱為代碼段。文檔段和代碼段都是一種文本,因此,統(tǒng)稱為文本段。與文檔的結(jié)構(gòu)相似,代碼的組織方式也具有樹形結(jié)構(gòu),如包、類等。

      當(dāng)一個(gè)文檔段和一個(gè)代碼段中都出現(xiàn)同一個(gè)或同一組詞匯時(shí),意味著兩者之間可能存在關(guān)聯(lián)。然而,本文所關(guān)注的并不是這種直接的聯(lián)系,而是試圖尋找各個(gè)文檔段和代碼段的主題,并據(jù)此揭示彼此之間存在的更深層次的語義關(guān)聯(lián),即彼此是否都涉及到相同的主題。

      2.4 主題

      主題反映的是文本所表達(dá)的主要含義,其基本思想是:一個(gè)文本是由若干個(gè)主題隨機(jī)混合形成的。一個(gè)文本通常需要討論若干主題,而文本中出現(xiàn)的(若干個(gè))特定詞匯可以體現(xiàn)出所討論的特定主題。在統(tǒng)計(jì)自然語言處理中,為文本主題建模的方法是視主題為詞匯的概率分布,文本為這些主題的隨機(jī)混合[7]。

      3 LDA主題模型

      本文中所涉及的模型主要包括:信息檢索中的LSI模型和LDA主題模型。由于篇幅原因,關(guān)于LSI模型的詳細(xì)介紹請(qǐng)參考文獻(xiàn)[9]。

      LDA主題模型是由Blei等人[10]于2003年提出的,它由概率潛在語義索引模型(probabilistic Latent Semantic Indexing,pLSI)發(fā)展而來。

      3.1 模型介紹

      圖1是LDA模型的圖模型表示[6]。假設(shè)有T個(gè)主題,D個(gè)文本,且第d個(gè)文本中含有Nd個(gè)詞匯。在圖1中,φt表示第t個(gè)主題的詞匯概率分布,它服從Dirichlet分布;θd表示第d個(gè)文本的主題概率分布,它同樣服從Dirichlet分布。φt和θd又作為多項(xiàng)式分布的參數(shù)分別用于生成單詞和主題。wd,n和zd,n分別表示第d個(gè)文本中第n個(gè)詞匯及其對(duì)應(yīng)的主題。α和β是Dirichlet分布的參數(shù),通常是固定值且為對(duì)稱分布,因此用標(biāo)量表示[6]。

      圖1 LDA圖模型

      根據(jù)LDA模型,在主題總數(shù)為T的情況下,文本d中出現(xiàn)某個(gè)詞匯w的概率可表示為:其中,z是主題變量,P(w|z=j)表示詞匯w屬于主題j的概率,P(z=j|d)表示主題j屬于文本d的概率。

      3.2 參數(shù)估計(jì)

      LDA模型有兩個(gè)參數(shù)需要推斷:(1)“文本-主題”分布θ;(2)“主題-詞匯”分布φ。

      常用的參數(shù)估計(jì)方法有變分貝葉斯推斷(Variational Bayesian Inference)[10]、期望傳播(Expectation-Propagation)和Collapsed Gibbs Sampling等。

      本文選擇Gibbs采樣方法,其基本思想是,通過對(duì)每個(gè)單詞w的主題z進(jìn)行采樣來確定每個(gè)單詞所屬的主題,這樣一來θd和φt的值可以在統(tǒng)計(jì)頻次后計(jì)算出來。由此,問題轉(zhuǎn)換為計(jì)算單詞序列下主題序列的條件概率,然后進(jìn)行主題序列的采樣,計(jì)算公式為:

      其中,w表示所有文本中的單詞構(gòu)成的單詞向量,z是其對(duì)應(yīng)的主題向量。

      Gibbs采用是馬爾可夫鏈蒙特卡洛方法(MCMC)的特例,每次對(duì)聯(lián)合分布的一個(gè)分量進(jìn)行采樣,同時(shí)保持其他分量不變。推導(dǎo)后獲得如下的最終采樣公式[6]:

      其中,假設(shè)wi=t,zi表示第i個(gè)單詞對(duì)應(yīng)的主題變量,﹁i表示剔除其中的第i項(xiàng),表示k主題中出現(xiàn)詞匯v的次數(shù),βv是詞匯v的Dirichlet先驗(yàn),表示文本m中出現(xiàn)主題z的次數(shù),αz是主題z的Dirichlet先驗(yàn)。

      在公式(3)的基礎(chǔ)上,通過下式獲得對(duì)參數(shù)的估計(jì):

      其中,φk,t表示主題k中詞匯t的概率,θm.k表示文本m中主題k的概率。

      Gibbs所采樣的算法使用了期望最大化(EM)思想,算法的詳細(xì)描述請(qǐng)參考文獻(xiàn)[7]。

      本文使用Xuan-Hieu Phan和Cam-Tu Nguyen(http:// gibbslda.sourceforge.net/)用Java語言實(shí)現(xiàn)的JGibbLDA程序進(jìn)行與LDA模型相關(guān)的分析。

      4 關(guān)聯(lián)關(guān)系提取流程

      本文使用LDA模型進(jìn)行關(guān)聯(lián)關(guān)系提取的流程主要分為三個(gè)部分:(1)預(yù)處理;(2)LDA執(zhí)行與相似度計(jì)算;(3)結(jié)果處理。具體如圖2所示。

      4.1 預(yù)處理

      預(yù)處理階段的輸入包括中文軟件文檔及代碼兩部分。

      對(duì)于軟件文檔,首先需要根據(jù)文檔的章節(jié)結(jié)構(gòu)進(jìn)行分割,將其切分成若干個(gè)文檔段,保證每個(gè)文檔段僅屬于同一個(gè)章節(jié),并保證各文檔段的大小近似相等。這樣分割一方面有助于聚焦每個(gè)文檔段的主題,另一方面在一定程度上消除由文檔長(zhǎng)度差異所導(dǎo)致的相似度計(jì)算誤差,同時(shí)提高關(guān)聯(lián)關(guān)系定位的精確度。其次,從中文軟件文檔中提取詞匯時(shí)需要進(jìn)行中文分詞的操作,本文使用Lucene的je-analysis組件進(jìn)行中文分詞。隨后,對(duì)分詞后得到的詞匯集合需要進(jìn)行停用詞的過濾,濾除掉無意思的詞匯,如代詞(你、我、他等)、助詞(的、得、地等)等。如果中文文檔中存在英文詞匯,則需要根據(jù)詞典將其翻譯為中文。詞典包括通用詞典和上述語言間互譯參照系χ(H,E)。在進(jìn)行翻譯時(shí)優(yōu)先考慮χ(H,E)。

      圖2 LDA模型處理流程圖

      對(duì)于代碼(以Java為例),將每個(gè)源程序文件作為一個(gè)代碼段,是一個(gè)類的定義體。首先,從代碼中提取出類名、方法名、屬性名等標(biāo)識(shí)符以及注釋信息等文本成分。對(duì)于標(biāo)識(shí)符,按照特定的分隔符(如下劃線“_”)和駝峰標(biāo)記的特點(diǎn)對(duì)標(biāo)識(shí)符進(jìn)行分割。對(duì)于注釋信息,則使用與文檔類似的方法進(jìn)行分詞。然后,對(duì)從代碼中提取的詞集進(jìn)行停用詞過濾和英文詞翻譯,處理方法與軟件文檔類似。

      經(jīng)過上述對(duì)文檔和代碼的分別處理,獲得了多個(gè)文檔段(由原始文檔切分得到)和代碼段,統(tǒng)稱為文本段{DFi,i= 1,2,…,M},M為文本段總數(shù)。每個(gè)文本段用從它里面提取出的一組詞匯表示,便可得到如下形式的文本詞集:

      該文本詞集中每一行對(duì)應(yīng)一個(gè)文本段,每行的內(nèi)容是該文本段中所包含的詞的列表。

      4.2 LDA執(zhí)行與相似度計(jì)算

      LDA執(zhí)行與相似度計(jì)算階段的輸入是預(yù)處理階段輸出的文本詞集。本文使用Xuan-Hieu Phan和Cam-Tu Nguyen (http://gibbslda.sourceforge.net/)提供的JGibbLDA程序?qū)ξ谋驹~集進(jìn)行處理,原理如第3章所述,其參數(shù)估計(jì)方法采用Gibbs采樣。

      LDA分析所需提供的參數(shù)包括:α和β的初始值、主題數(shù)目、Gibbs采樣的迭代次數(shù)、保存采樣結(jié)果的間隔、與主題最相關(guān)詞的個(gè)數(shù)等。JGibbLDA程序的輸出包括5種文件:(1)LDA模型的輸入?yún)?shù);(2)主題-詞匯分布;(3)文本-主題分布;(4)每個(gè)文本段中詞匯與主題的對(duì)應(yīng);(5)與每個(gè)主題最相關(guān)詞的列表,詞的個(gè)數(shù)由輸入?yún)?shù)決定。

      本文利用JGibbLDA程序輸出的主題-詞匯分布、文本-主題分布等信息來進(jìn)行代碼和文檔的相似度計(jì)算,具體的計(jì)算方法參見本文第5章。經(jīng)計(jì)算獲得代碼段與文檔段之間的相似度列表。

      4.3 結(jié)果處理

      結(jié)果處理階段的輸入是LDA執(zhí)行與相似度計(jì)算階段輸出的文檔段與代碼段之間的相似度列表,列表元素按相似度數(shù)值降序排列。由于所分析的文檔段、代碼段個(gè)數(shù)一般較多,導(dǎo)致相似度列表的規(guī)模較大,為了便于分析和理解,需要按照一定的方法對(duì)列表元素進(jìn)行過濾。常用的過濾方法有以下兩種:

      (1)Cut-Point法[1,3]:按照相似度的大小提取前k個(gè)最相關(guān)的關(guān)聯(lián)。如,設(shè)k=5,則提取與該代碼段最相關(guān)的前5個(gè)文檔段。

      (2)閾值法[3]:按照給定的閾值t進(jìn)行關(guān)聯(lián)關(guān)系的提取。如,設(shè)t=60%,則將所有相似度大于60%的文檔段提取出來。

      本文采用Cut-Point方法進(jìn)行相似度列表的過濾操作。

      5 關(guān)聯(lián)關(guān)系分析方法

      本文使用主題模型進(jìn)行文檔和代碼相關(guān)性分析的主要目的是通過文檔段和代碼段所包含的詞集發(fā)掘其更抽象層次的含義(主題信息),從一個(gè)更深入或更綜合的角度去分析文檔段和代碼段之間的語義關(guān)聯(lián)關(guān)系。其直觀含義是,假定(1)各文檔段準(zhǔn)確地描述了相應(yīng)代碼段所實(shí)現(xiàn)的目標(biāo)、功能或算法;(2)各代碼段中的實(shí)現(xiàn)均符合相應(yīng)的文檔段中的說明,且對(duì)其實(shí)現(xiàn)的目標(biāo)、功能和算法等亦有清楚準(zhǔn)確的注釋;(3)這些文檔和代碼中所涉及的相關(guān)概念、術(shù)語都是統(tǒng)一和規(guī)范的,所有標(biāo)識(shí)符的命名均基于這些概念和術(shù)語;那么,存在關(guān)聯(lián)的代碼段和文檔段將含有相同或相關(guān)的主題信息,反之,如果代碼段和文檔段之間不含有相關(guān)的主題信息,則說明它們之間不存在基于主題的語義關(guān)聯(lián)關(guān)系。

      下面將描述本文如何使用基于LDA方法挖掘出的主題信息來進(jìn)行相似度的分析。

      5.1 主題詞分析方法

      該方法與使用信息檢索模型的方法相似,也是基于詞匯進(jìn)行分析,但這兩種方法在選取詞匯的策略上有所不同。信息檢索模型(VSM、LSI等),主要是基于詞頻進(jìn)行詞匯的選取,通常采用名為TF-IDF的方法來計(jì)算詞的權(quán)重。這種方法考慮了詞頻(TF)以及逆文檔頻率(IDF)的共同影響。

      (1)利用LDA分析得到的“文本-主題”分布及“主題-詞匯”分布,計(jì)算出“文本-詞匯”分布。

      例如,有D個(gè)文本,T個(gè)主題,W個(gè)詞匯,則“文本-主題”分布是一個(gè)D×T的矩陣A,“主題-詞匯”分布是一個(gè)T×W的矩陣B。兩個(gè)矩陣相乘便可得到一個(gè)D×W的矩陣C,這個(gè)矩陣C所對(duì)應(yīng)的就是“文本-詞匯”分布。其中,矩陣C的每一行對(duì)應(yīng)一個(gè)文本段d,每一列對(duì)應(yīng)一個(gè)詞匯w。矩陣C內(nèi)第i行第j列的值Cij代表第j個(gè)詞在第i個(gè)文本中的分布概率pij。

      (2)由步驟1中得到的“文本-詞匯”分布,可以得到一個(gè)詞匯w在一個(gè)文本段d中的分布概率P( ) w|d,然后利用公式(5)計(jì)算詞匯w在文本段d中的香農(nóng)信息[11]:

      I(w)=-N(w)ln P(w|d) (5)其中,N(w)是詞匯w在文本d中出現(xiàn)的頻數(shù)。香農(nóng)信息值越大,說明詞匯在該文本段中的價(jià)值越大。由于P(w|d)≤1,所以I(w)與P(w|d)成反比,而與N(w)成正比,表明只有那些僅在少數(shù)文本段中高頻次出現(xiàn)的詞才是最有價(jià)值(即最有可能代表文本段主題)的詞。因此,可選擇香農(nóng)信息值較大的前k個(gè)詞匯來代表該文本段的主題,將這些詞匯稱為文本段的主題詞。

      經(jīng)過上述兩步后,不但獲得了文本段的主題詞,還得到了主題詞在文本段中的權(quán)值(香農(nóng)信息值)。所有文本段的主題詞構(gòu)成一個(gè)主題詞集合,利用它可以構(gòu)建出新的“文本-詞匯”矩陣M,這個(gè)矩陣M中的每一行對(duì)應(yīng)一個(gè)文本段,每一列對(duì)應(yīng)主題詞集合中的一個(gè)主題詞,其中第i行第j列的元素Mij是第j個(gè)主題詞在第i個(gè)文本段中的香農(nóng)信息值。獲得矩陣M后,可以采用與VSM模型或LSI模型相同的方法進(jìn)行相似度的計(jì)算。

      本文采用與LSI模型相同的方法,先對(duì)M進(jìn)行奇異值分解操作,對(duì)降維后得到的矩陣M1使用信息檢索中最常用的余弦公式計(jì)算文檔段和代碼段間的相似度:

      其中,Q=(q1,q2,…,qm)表示某代碼段向量,D=(d1,d2,…,dm)表示某文檔段向量。

      5.2 預(yù)處理階段的改進(jìn)策略

      根據(jù)軟件文檔和代碼的特點(diǎn),同時(shí)為了提高工具的分析效果,本文在預(yù)處理階段采取如下的改進(jìn)措施:

      (1)數(shù)據(jù)詞典的識(shí)別和提取:數(shù)據(jù)詞典與軟件項(xiàng)目有很強(qiáng)的相關(guān)性,合理地使用數(shù)據(jù)詞典能夠提高對(duì)英文詞匯的翻譯效率。為此,從文檔中提取數(shù)據(jù)詞典,構(gòu)建支持語言間互譯的基本參照系,記作χ1(H,E)。

      (2)文本描述的采集:為了對(duì)代碼中的英文詞匯進(jìn)行與文檔更相關(guān)的翻譯,當(dāng)數(shù)據(jù)詞典中沒有包含可用的英文詞匯時(shí),則首先嘗試從軟件文檔中查找其對(duì)應(yīng)的中文翻譯,失敗后再查詢通用詞典。為此,本文在分析軟件文檔時(shí),預(yù)先在數(shù)據(jù)庫(kù)中建立了一個(gè)擴(kuò)展的中英文術(shù)語描述參照表,記作χ2(H,E),將文檔中出現(xiàn)的英文詞匯作為該表的主鍵,將文本段中包含該英文詞匯的中文語句內(nèi)容作為值保存在表中。采用這種做法是利用在文檔中標(biāo)注中英文對(duì)應(yīng)詞匯的習(xí)慣作法,即對(duì)于文檔中的英文詞匯,如果存在對(duì)應(yīng)的中文翻譯,則該中文翻譯一般位于該英文詞匯所在的句子中。將鄰近范圍限制在一句話之內(nèi),這樣做一方面考慮到上述現(xiàn)象在同一句話的范圍內(nèi)出現(xiàn)的概率較高,另一方面也降低了分析的復(fù)雜性。

      (3)通用同義詞詞庫(kù)的構(gòu)建,記作χ0(H,E),為中英文翻譯提供基礎(chǔ)支持。

      綜上所述,英文詞匯的翻譯流程如圖3所示。

      圖3 英文詞匯翻譯流程圖

      運(yùn)用本文提出的上述方法,研制的一個(gè)軟件文檔與代碼追蹤性分析工具,稱作QESTA(SoftwareQuality-Software Tracibility Analyzer for documentation and code with LDA)。目前,該工具要求數(shù)據(jù)詞典符合如下的基本格式:(1)數(shù)據(jù)詞典以表格形式定義;(2)表的第一列是中文詞匯,第二列是與中文詞匯對(duì)應(yīng)的英文詞匯。同時(shí),采用哈工大信息檢索研究中心語言技術(shù)平臺(tái)中的同義詞詞林資源[12],建立了一個(gè)同義詞數(shù)據(jù)庫(kù),用于改進(jìn)對(duì)同義詞、多義詞的處理,在翻譯時(shí)將同義詞統(tǒng)一為一個(gè)詞。

      6 實(shí)驗(yàn)及結(jié)果分析

      本文使用本課題組為某單位研制的一個(gè)實(shí)用工具(簡(jiǎn)稱CRATES)作為實(shí)驗(yàn)對(duì)象。CRATES用于支持其嵌入式軟件產(chǎn)品系列的構(gòu)件化產(chǎn)品線開發(fā)方法。CRATES含有15 000行左右的Java代碼,124個(gè)類文件以及200多頁的各類文檔。針對(duì)CRATES,本文進(jìn)行了兩個(gè)實(shí)驗(yàn)。

      實(shí)驗(yàn)一的目的是為了確定LDA主題模型相關(guān)參數(shù)的取值,供后續(xù)實(shí)驗(yàn)使用。

      在實(shí)驗(yàn)二中,本文按文檔種類的不同,使用LDA模型和LSI模型對(duì)CRATES進(jìn)行了分析,對(duì)比其效果,從而驗(yàn)證LDA主題模型與常規(guī)的信息檢索模型相比在檢索能力和檢索精確度上的改進(jìn)程度。

      6.1 實(shí)驗(yàn)一

      使用LDA主題模型時(shí),需要設(shè)定3個(gè)參數(shù)的值:(1)α;(2)β;(3)主題數(shù)目T。根據(jù)經(jīng)驗(yàn)[7],一般令α=50/T,β=0.01。因此,本實(shí)驗(yàn)的重點(diǎn)是確定主題數(shù)目T的取值。

      依據(jù)文獻(xiàn)[13]中的定理1,首先計(jì)算出不同主題數(shù)目下主題之間的平均相似度,由此得出主題間平均相似度的變化曲線,用曲線的最低點(diǎn)的T值作為模型最優(yōu)化的主題數(shù)目T0。

      在實(shí)驗(yàn)中,先對(duì)CRATES項(xiàng)目進(jìn)行預(yù)處理,得到其對(duì)應(yīng)的“文本-詞項(xiàng)”矩陣。經(jīng)LDA分析后,得到用于計(jì)算主題之間平均相似度的“主題-詞匯”分布。該分布中的一行對(duì)應(yīng)一個(gè)主題向量,對(duì)任意的兩個(gè)主題向量Zi和Zj,使用公式(6)計(jì)算它們之間的夾角余弦值cos(Zi,Zj),即為兩者的相似度。則根據(jù)文獻(xiàn)[13]中的如下公式(7),可以得到主題數(shù)目為T時(shí)的主題之間的平均相似度avg_cos(T)。

      本實(shí)驗(yàn)中,LDA模型的主題數(shù)目T的取值范圍為[50,400],其中每隔25取一次值。按照不同的迭代次數(shù)(500和1 000)進(jìn)行了兩次實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖4所示。

      從圖4中可以看出,當(dāng)主題數(shù)目T為225時(shí),平均相似度曲線達(dá)到最低點(diǎn)。根據(jù)文獻(xiàn)[13]的結(jié)論,當(dāng)主題間平均相似度達(dá)到最小時(shí),對(duì)應(yīng)的模型達(dá)到最佳性能。因此,后續(xù)實(shí)驗(yàn)的主題數(shù)目T設(shè)定為225。

      6.2 實(shí)驗(yàn)二

      圖4 平均相似度曲線

      本實(shí)驗(yàn)使用兩種方法對(duì)CRATES項(xiàng)目進(jìn)行了分析,包括:(1)LDA主題詞分析方法(簡(jiǎn)稱主題詞方法);(2)基于LSI模型的分析方法(簡(jiǎn)稱LSI方法)。方法2用來與方法1進(jìn)行對(duì)比。

      CRATES項(xiàng)目相對(duì)較小,缺少單獨(dú)的需求文檔和設(shè)計(jì)文檔。本實(shí)驗(yàn)從其研制文檔中抽取出19頁作為需求文檔,抽取61頁作為設(shè)計(jì)文檔,并將全部的代碼文件作為代碼。表1展示了該項(xiàng)目的規(guī)模及處理后的情況。經(jīng)過預(yù)處理后,得到27個(gè)需求文檔段、257個(gè)設(shè)計(jì)文檔段和124個(gè)代碼段。將需求文檔、設(shè)計(jì)文檔分別與代碼進(jìn)行相似度計(jì)算,可以得到27×124規(guī)模的需求-代碼相似度計(jì)算結(jié)果及257× 124規(guī)模的設(shè)計(jì)-代碼相似度計(jì)算結(jié)果。從這兩類結(jié)果中分別抽取相似度排在前500的關(guān)聯(lián)關(guān)系作為樣本空間。對(duì)設(shè)計(jì)-代碼相似度計(jì)算結(jié)果,人工分析其樣本空間中500個(gè)關(guān)聯(lián)關(guān)系的正確性,發(fā)現(xiàn)其中包含122個(gè)正確的關(guān)聯(lián)關(guān)系,它們涉及40個(gè)代碼段和64個(gè)設(shè)計(jì)文檔段。對(duì)需求-代碼相似度計(jì)算結(jié)果,樣本空間的500個(gè)關(guān)聯(lián)關(guān)系中有63個(gè)正確,它們涉及32個(gè)代碼段和20個(gè)需求文檔段。在此基礎(chǔ)上,本文使用查全率(Recall)和查準(zhǔn)率(Precision)[1]來衡量主題詞分析方法與LSI方法的分析效果。

      表1 CRATES規(guī)模概述

      在實(shí)驗(yàn)中,LDA模型的參數(shù)設(shè)置如下:主題數(shù)目T= 225,α=0.22(50/T),β=0.01,采樣迭代次數(shù)niter=1 000,每迭代100次保存一次采樣結(jié)果。

      表2總結(jié)了用Cut-Point方法對(duì)兩類文檔與代碼的相關(guān)性分析結(jié)果進(jìn)行篩選后的情況,其中C-P為Cut-Point值,Sum1表示設(shè)計(jì)文檔和代碼關(guān)聯(lián)鏈提取總數(shù)量,LDA1表示使用主題詞方法分析設(shè)計(jì)文檔與代碼的相似度,LSI1表示使用LSI方法分析設(shè)計(jì)文檔與代碼的相似度,Corr指當(dāng)前方法提取出的正確鏈接數(shù),Reca指查全率,Prec指查準(zhǔn)率,Sum2、LDA2、LSI2的含義與Sum1、LDA1、LSI1相似,它們用于需求文檔和代碼的相似度分析。C-P值從1取到6,即從代碼段與(需求或設(shè)計(jì))文檔段的相似度列表中,分別截取與每個(gè)代碼段最相關(guān)的前1~6個(gè)(需求或設(shè)計(jì))文檔段。圖5是使用表2中數(shù)據(jù)繪制而成的比較圖,從圖中可以看出:

      (1)對(duì)于設(shè)計(jì)文檔與代碼:從查全率看,主題詞方法效果較好,查全率最低為28%、最高為80%,比LSI方法高出約2%到5%。從查準(zhǔn)率看,主題詞方法的效果仍然較好,其查準(zhǔn)率最低為40%、最高為85%,比LSI方法高出約1%到7%。

      (2)對(duì)于需求文檔與代碼:除了C-P為2的情況外,主題詞方法的查全率、查準(zhǔn)率均好于LSI方法,其中查全率高出約1%到16%、查準(zhǔn)率高出約3%到7%。但兩種方法的查準(zhǔn)率均較低(約20%到40%)。

      (3)總體上講,設(shè)計(jì)文檔和代碼分析得到的查全、查準(zhǔn)率相對(duì)于需求文檔和代碼分析得到的查全、查準(zhǔn)率而言均較高。

      圖5 結(jié)果比較圖

      主題詞方法效果較好的原因在于,它從主題角度出發(fā)對(duì)代碼和文檔進(jìn)行分析,使用主題模型分析得到的“文本-主題”分布和“主題-詞匯”分布來挖掘文本段的主題詞,據(jù)此分析出文本段間潛在的主題層面的關(guān)聯(lián)。與LSI相比,這種方法更加關(guān)注各文本段中與其主題高度相關(guān)的一組詞,從而排除了大量“次要”甚至于“無關(guān)”詞匯的干擾。因此,能夠比停留在詞匯層面的信息檢索模型獲得更多的正確的關(guān)聯(lián)關(guān)系。另外,由于設(shè)計(jì)文檔比需求文檔更具體、詳細(xì)且貼近代碼實(shí)現(xiàn),因此設(shè)計(jì)文檔與代碼的關(guān)聯(lián)性更強(qiáng)(樣本空間中正確的關(guān)聯(lián)關(guān)系數(shù)目更多)且更易被發(fā)現(xiàn)(查全、查準(zhǔn)率較高)。

      表2 實(shí)驗(yàn)結(jié)果

      7 總結(jié)與展望

      本文基于LDA主題模型,提出了一種提取中文軟件文檔與代碼之間關(guān)聯(lián)關(guān)系的方法,并實(shí)現(xiàn)了相應(yīng)的原型工具QESTA。實(shí)驗(yàn)表明,本文提出的主題詞分析方法與傳統(tǒng)的信息檢索LSI模型方法相比,不論對(duì)需求文檔還是設(shè)計(jì)文檔,在查全率與查準(zhǔn)率上均有2%到5%的提高??梢姡瑥闹黝}角度出發(fā)去分析和提取中文軟件文檔與代碼之間的關(guān)聯(lián)關(guān)系是可行的,并且能夠獲得比原有的信息檢索模型方法更好的效果。

      這項(xiàng)研究工作還處于起步階段。代碼中標(biāo)識(shí)符的提取以及英文詞匯的合理翻譯,主題信息發(fā)掘方法的改進(jìn),包括各種參數(shù)的優(yōu)化選擇等,以及基于文檔和代碼間的相關(guān)性分析和檢查其相互之間的可追蹤性問題等潛在應(yīng)用是后續(xù)研究的重點(diǎn)。

      [1]Antoniol G,Canfora G,Casazza G,et al.Recovering traceability links between code and documentation[J].IEEE Transactions on Software Engineering,2002,28(10):970-983.

      [2]Spanoudakis G,Zisman A.Software traceability:a roadmap. handbook of software engineering and knowledge engineering[M].Singapore:World Scientific Publishing,2005:395-428.

      [3]Marcus A,Maletic J I.Recovering documentation-to-sourcecode traceability links using latent semantic indexing[C]//Proceedings 25th International Conference on Software Engineering(ICSE'03).USA:[s.n.],2003:125-135.

      [4]賴冠輝.代碼與文檔間關(guān)聯(lián)關(guān)系的提取方法研究和改進(jìn)[D].北京:北京航空航天大學(xué),2009.

      [5]韓曉東,王曉博,劉超.中文文檔與源代碼間關(guān)聯(lián)關(guān)系提取方法的研究[J].合肥工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2010,33(2):188-192.

      [6]徐戈,王厚峰.自然語言處理中主題模型的發(fā)展[J].計(jì)算機(jī)學(xué)報(bào),2011,34(8):1423-1436.

      [7]石晶,胡明,石鑫,等.基于LDA模型的文本分割[J].計(jì)算機(jī)學(xué)報(bào),2008,31(10):1865-1873.

      [8]Asuncion H,Asuncion A,Taylor R.Software traceability with topic modeling[C]//Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering(ICSE'10). Cape Town,South Africa:[s.n.],2010:95-104.

      [9]Deerwester S C,Dumais S T,Landauer T K,et al.Indexing by latent semantic analysis[J].Journal of the American Society for Information Science,1990,41(6):391-407.

      [10]Blei D,Ng A,Jordan M.Latent dirichlet allocation[J].Journal of Machine Learning Research,2003,3:993-1022.

      [11]Li H,Yamanishi K.Topic analysis using a finite mixture model[J].Information Processing and Management,2003,39 (4):521-541.

      [12]Che Wanxiang,Li Zhenghua,Liu Ting.LTP:a Chinese language technology platform[C]//Proceedings of the 23rd International Conference on Computational Linguistics:Demonstrations(COLING'10).Beijing,China:[s.n.],2010:13-16.

      [13]曹娟,張勇東,李錦濤,等.一種基于密度的自適應(yīng)最優(yōu)LDA模型選擇方法[J].計(jì)算機(jī)學(xué)報(bào),2008,31(10):1780-1787.

      XU Yebing,LIU Chao

      School of Computer Science and Engineering,Beihang University,Beijing 100191,China

      In order to establish traceability between Chinese documentations and source codes more effectively,this paper proposes one method based on LDA model.It names the topic word-based Traceability Retrieval Method(TRM)in which the topic words are extracted according to Shannon information.Experimental result shows that,compared with the LSI method,the topic word method can increase the recall and precision from 2%to 5%.

      traceability recovery;topic model;Latent Dirichlet Allocation(LDA);reverse engineering

      軟件文檔及其程序代碼之間的關(guān)聯(lián)性或可追蹤性分析是軟件分析、理解的重要基礎(chǔ)。探討了軟件的中文文檔和程序代碼中蘊(yùn)含的主題及其相關(guān)性。針對(duì)軟件文檔的章節(jié)結(jié)構(gòu)和詞匯空間,以及程序代碼結(jié)構(gòu)、標(biāo)識(shí)符命名空間、注釋風(fēng)格等方面的特點(diǎn),在LDA模型的基礎(chǔ)上提出了一種基于主題詞的軟件中文文檔與代碼間關(guān)聯(lián)關(guān)系的分析方法。該方法依據(jù)詞匯的香農(nóng)信息提取文本段的主題詞。實(shí)驗(yàn)結(jié)果表明,主題詞分析方法與LSI模型分析方法相比在查全率和查準(zhǔn)率上均有2%到5%的提高。

      可追蹤鏈;主題模型;隱含狄利克雷分配(LDA);逆向工程

      A

      TP311.5

      10.3778/j.issn.1002-8331.1208-0521

      XU Yebing,LIU Chao.Research on retrieval methods for traceability between Chinese documentation and source code based on LDA.Computer Engineering and Applications,2013,49(5):70-76.

      許冶冰(1987—),男,碩士,主要研究領(lǐng)域?yàn)檐浖こ獭⑿畔z索;劉超(1958—),男,教授,博士生導(dǎo)師,主要研究領(lǐng)域?yàn)檐浖こ?、軟件測(cè)試。E-mail:xyb0618@126.com

      2012-09-07

      2012-10-16

      1002-8331(2013)05-0070-07

      CNKI出版日期:2012-10-31 http://www.cnki.net/kcms/detail/11.2127.TP.20121031.1000.019.html

      分析方法旨在基于LDA模型分析獲得主題相關(guān)信息,據(jù)此計(jì)算出能代表文本主題的詞匯,使用這些詞匯來構(gòu)成文本的詞集。具體過程如下:

      ◎網(wǎng)絡(luò)、通信、安全◎

      猜你喜歡
      主題詞代碼文檔
      有人一聲不吭向你扔了個(gè)文檔
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      基于RI碼計(jì)算的Word復(fù)制文檔鑒別
      Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
      我校學(xué)報(bào)第32卷第5期(2014年10月)平均每篇有3.04個(gè)21世紀(jì)的Ei主題詞
      我校學(xué)報(bào)第32卷第6期(2014年12月)平均每篇有3.00個(gè)21世紀(jì)的Ei主題詞
      2014年第16卷第1~4期主題詞索引
      河西区| 通道| 昭苏县| 宁德市| 临沭县| 宜城市| 合川市| 西华县| 施甸县| 灵武市| 阜新市| 文成县| 新蔡县| 深圳市| 通山县| 保靖县| 兰考县| 永泰县| 东山县| 怀化市| 新宁县| 东平县| 高淳县| 白城市| 柳林县| 麦盖提县| 大埔区| 萨迦县| 古丈县| 玉龙| 青海省| 信阳市| 大同市| 犍为县| 连云港市| 林甸县| 延川县| 洪雅县| 若尔盖县| 伊通| 涿州市|