劉曄暉,趙海燕,曹 健,陳慶奎
1(上海市現(xiàn)代光學(xué)系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,光學(xué)儀器與系統(tǒng)教育部工程研究中心,上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)2(上海交通大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,上海 200030)
開(kāi)源軟件開(kāi)發(fā)已經(jīng)成為一個(gè)趨勢(shì).在開(kāi)源社區(qū)中,開(kāi)發(fā)者需要共同參與Issue(問(wèn)題)解決過(guò)程(Issue Resolution Process).如果Issue持續(xù)得不到解決,將大大影響整個(gè)軟件項(xiàng)目的進(jìn)度,也將挫傷開(kāi)發(fā)者的積極性.因此,為每一個(gè)Issue來(lái)尋找潛在的感興趣的開(kāi)發(fā)者具有非常顯著的意義,也引起了學(xué)術(shù)界的興趣.近年來(lái),一些學(xué)者提出了不同的方法,他們從Issue內(nèi)容的相似性[1-3]、Issue提出者與開(kāi)發(fā)者之間的社交關(guān)系[4,5]以及Issue的特征,例如是否包含代碼等[6,7]出發(fā)來(lái)提出相應(yīng)的Issue參與者推薦方法.
Issue解決過(guò)程本質(zhì)上是一個(gè)軟件維護(hù)過(guò)程.早在1976年,Swanson等人就對(duì)軟件維護(hù)進(jìn)行了分類[1].后來(lái),一些研究者又加入了新的分類.在研究者們的推動(dòng)下,ISO/IEC 14764的標(biāo)準(zhǔn)中對(duì)不同的維護(hù)類型進(jìn)行了定義,其中,糾正性維護(hù)的目的是改正已經(jīng)發(fā)現(xiàn)的錯(cuò)誤,而適應(yīng)性維護(hù)是為了增加軟件新功能,完善性維護(hù)則為了提高軟件的性能,預(yù)防性維護(hù)是對(duì)已開(kāi)發(fā)號(hào)的軟件進(jìn)行進(jìn)一步的更改,目的是避免將來(lái)再出現(xiàn)錯(cuò)誤.
不同的維護(hù)活動(dòng)類型,即不同的Issue類型對(duì)于Issue解決過(guò)程中開(kāi)發(fā)者的參與應(yīng)該存在潛在的影響.因此,本文提出了3個(gè)相關(guān)的問(wèn)題,并通過(guò)設(shè)計(jì)相應(yīng)的模型來(lái)進(jìn)行回答:
1)我們能否對(duì)Issue的類別通過(guò)計(jì)算機(jī)進(jìn)行自動(dòng)的類別判斷?
2)在Issue解決過(guò)程中,是不是某些開(kāi)發(fā)者會(huì)傾向于參與特定類別的Issue的解決過(guò)程?
3)如果前兩個(gè)問(wèn)題成立,那么把Issue的類別信息自動(dòng)添加后,能否提高參與者推薦算法的性能表現(xiàn)?
為此,我們?cè)贕ithub上挑選了若干個(gè)代碼倉(cāng)庫(kù),這些代碼倉(cāng)庫(kù)具有一定的流行度,也具有一定的代表性.為了開(kāi)展我們的經(jīng)驗(yàn)性研究,我們通過(guò)爬蟲獲取了這些倉(cāng)庫(kù)中的Issue信息.數(shù)據(jù)集的詳細(xì)信息見(jiàn)表1.
表1 Issue數(shù)據(jù)集的信息Table 1 Information of Issue dataset
有不少人對(duì)Issue進(jìn)行了類別研究,本文中我們參考了Murgia等人對(duì)Issue的分類[8].目的是要對(duì)Issue進(jìn)行自動(dòng)的類別判斷,這顯然是一個(gè)有標(biāo)簽的分類問(wèn)題.我們提出并實(shí)現(xiàn)了一種基于卷積和注意力機(jī)制的Issue自動(dòng)分類深度神經(jīng)網(wǎng)絡(luò)模型;在此基礎(chǔ)上,我們對(duì)開(kāi)發(fā)人員是否對(duì)Issue的類別具有傾向性進(jìn)行了研究,結(jié)果證明,某些開(kāi)發(fā)者在參加Issue結(jié)果過(guò)程時(shí),會(huì)傾向于選擇特定類型的Issue;基于上述結(jié)果,我們對(duì)Issue進(jìn)行特征化表示,同時(shí)對(duì)開(kāi)發(fā)者也根據(jù)歷史數(shù)據(jù)進(jìn)行向量化表示,在此基礎(chǔ)上,可以計(jì)算開(kāi)發(fā)者對(duì)某一Issue的興趣,從而實(shí)現(xiàn)針對(duì)特定問(wèn)題的開(kāi)發(fā)者的自動(dòng)推薦.
后面的文章的章節(jié)組織方式為:在第2節(jié)中我們對(duì)Issue解決過(guò)程的研究現(xiàn)狀、特別是開(kāi)源軟件開(kāi)發(fā)中的Issue解決相關(guān)研究進(jìn)行了介紹;第3節(jié)提出了基于深度學(xué)習(xí)的Issue分類模型;第4節(jié)對(duì)開(kāi)發(fā)者在志愿參與Issue解決過(guò)程時(shí)是否對(duì)特定的Issue類別具有傾向性進(jìn)行了研究;第5節(jié)介紹了開(kāi)發(fā)者推薦算法;第6節(jié)介紹了推薦實(shí)驗(yàn)的結(jié)果,并圍繞這些結(jié)果進(jìn)行了討論.最后,文中對(duì)將來(lái)可以開(kāi)展的工作進(jìn)行展望.
在開(kāi)源社區(qū)中,經(jīng)常會(huì)累積大量的未解決的Issue.等待開(kāi)發(fā)者主動(dòng)來(lái)解決這些Issue通常耗費(fèi)大量的時(shí)間,甚至于某些Issue無(wú)人問(wèn)津.將推薦方法運(yùn)用到開(kāi)源社區(qū)的Issue解決過(guò)程中,有助于提高Issue解決的速度、Issue解決的比例以及Issue解決的質(zhì)量.為此,許多研究者們進(jìn)行了不同的探索.例如,Kamineni等人提出了一種估計(jì)Issue語(yǔ)義相似度的方法以搜索相似的Issue[9,10];Dong等人設(shè)計(jì)了一個(gè)回答者推薦系統(tǒng),它將Issue推薦給有針對(duì)性專業(yè)知識(shí)、能夠回答該Issue的開(kāi)發(fā)者,他們同時(shí)還揭示了對(duì)Issue進(jìn)行及時(shí)處理可以促進(jìn)提問(wèn)者和回答者之間的互動(dòng)性,從而能夠進(jìn)一步激勵(lì)開(kāi)發(fā)者參與到Issue解決過(guò)程中去并積極地改進(jìn)他們的答案[11];Wang等人同樣采用了語(yǔ)義技術(shù)來(lái)推薦參與者[12].雖然這些方法也能夠?yàn)镮ssue來(lái)推薦開(kāi)發(fā)者,但是本文研究的是Issue類別如何影響開(kāi)發(fā)者的積極性,以及自動(dòng)化標(biāo)注Issue類別是否能夠提高推薦效果,在這一方面,目前尚無(wú)其他人的研究.
對(duì)Issue進(jìn)行分類在機(jī)器學(xué)習(xí)上是一個(gè)分類問(wèn)題.同時(shí),我們所依據(jù)的又主要是Issue相關(guān)的文本,因此它可以歸為文本分類問(wèn)題.在信息檢索等領(lǐng)域,文本分類技術(shù)也是其中的一個(gè)核心技術(shù).利用機(jī)器學(xué)習(xí)技術(shù)對(duì)文本進(jìn)行自動(dòng)分類已經(jīng)經(jīng)過(guò)了較長(zhǎng)時(shí)間的研究,有許多方法被提了出來(lái).我們可以利用文本分類的方法對(duì)Issue進(jìn)行分類.例如,Fan等人提出根據(jù)Issue的文本摘要對(duì)Issue進(jìn)行分類,經(jīng)過(guò)實(shí)驗(yàn),他們發(fā)現(xiàn)支持向量機(jī)能夠取得較好的性能[13].
然而,在現(xiàn)實(shí)中,文本具有多樣性,這容易造成傳統(tǒng)的機(jī)器學(xué)習(xí)文本分類器的泛化能力不強(qiáng).另一方面,如何選取合適的特征進(jìn)行文本分類也是一個(gè)挑戰(zhàn).而深度學(xué)習(xí)的非線性表達(dá)能力,其逐層進(jìn)行特征提取的工作過(guò)程能夠較好地解決文本分類中的一些技術(shù)挑戰(zhàn),所以受到了普遍應(yīng)用,例如,Fan等人按照word2vec模型從大規(guī)模語(yǔ)料庫(kù)中訓(xùn)練漢語(yǔ)單詞向量,然后基于詞向量獲得漢語(yǔ)問(wèn)題語(yǔ)義特征向量[14];Liu等人則提出了一種基于LSTM-CNN的問(wèn)題答案匹配方法[15].
目前,在對(duì)Issue進(jìn)行開(kāi)發(fā)者推薦中,還沒(méi)有系統(tǒng)的考慮問(wèn)題類別對(duì)開(kāi)發(fā)者積極性的影響.為此,首先要進(jìn)行的一個(gè)研究是是不是開(kāi)發(fā)者確實(shí)對(duì)Issue的類別具有選擇性.為了對(duì)這一假設(shè)進(jìn)行檢驗(yàn),我們使用的是基于關(guān)聯(lián)規(guī)則挖掘的方法.如果能夠發(fā)現(xiàn)具有顯著性的關(guān)聯(lián)規(guī)則,則說(shuō)明這個(gè)假設(shè)對(duì)于某些開(kāi)發(fā)者是成立的.而開(kāi)發(fā)者推薦的基本過(guò)程是針對(duì)每一個(gè)Issue,去計(jì)算每個(gè)開(kāi)發(fā)者與這個(gè)Issue的匹配程度,匹配程度高,那么這個(gè)開(kāi)發(fā)者就可以得到推薦.為此,需要從每個(gè)開(kāi)發(fā)者過(guò)去參與的Issue中學(xué)習(xí)開(kāi)發(fā)者的特征.
為了進(jìn)行文檔分類,在機(jī)器學(xué)習(xí)中,許多模型都被嘗試使用,例如邏輯回歸,支持向量機(jī)、樸素貝葉斯、決策樹(shù)等.在應(yīng)用這些模型前,我們首先需要進(jìn)行特征提取和特征選擇.特征選擇的結(jié)果對(duì)最后的性能具有非常顯著的影響,而特征選擇又高度依賴于經(jīng)驗(yàn)和對(duì)業(yè)務(wù)知識(shí)的理解.所以特征選擇是一個(gè)困難的工作.深度學(xué)習(xí)方法能夠在原始特征表示的基礎(chǔ)上,通過(guò)大量的參數(shù)學(xué)習(xí)自動(dòng)獲得抽象的、有效的特征,從而降低了特征工程的工作量和難度.因此,深度學(xué)習(xí)受到了普遍的關(guān)注.
盡管深度學(xué)習(xí)也已經(jīng)成功的應(yīng)用于文本分類的任務(wù),但是并沒(méi)有針對(duì)Issue分類的深度學(xué)習(xí)模型.本文中使用了一種深度學(xué)習(xí)模型,它結(jié)合了詞嵌入、卷積神經(jīng)網(wǎng)絡(luò),并添加了注意力機(jī)制,從而實(shí)現(xiàn)了對(duì)Issue的自動(dòng)分類.
在該模型中,它包含了以下的主要步驟:
1.對(duì)數(shù)據(jù)進(jìn)行預(yù)處理.首先對(duì)收集到的Issue的標(biāo)題以及它們的內(nèi)容進(jìn)行整理和清洗,先把Issue的標(biāo)題和描述文本合并成一個(gè)文本,然后對(duì)該文本進(jìn)行分詞,去除停用詞、數(shù)字和非字母,將文本轉(zhuǎn)成小寫,提取詞干等一系列文本的操作.
2.訓(xùn)練與驗(yàn)證.按照Issue的標(biāo)號(hào)對(duì)數(shù)據(jù)進(jìn)行排序.然后,將整個(gè)數(shù)據(jù)集平均分割成11份,通過(guò)“十折交叉驗(yàn)證”的方法在數(shù)據(jù)集上進(jìn)行模型的訓(xùn)練與驗(yàn)證[16].該部分又可以分為3個(gè)小步驟:
1)利用訓(xùn)練集訓(xùn)練一個(gè)分類模型,這里我們采用了CNN模型來(lái)獲取問(wèn)題的特征.
2)通過(guò)采用注意力機(jī)制對(duì)CNN模型提取出來(lái)的文本特征進(jìn)行進(jìn)一步的學(xué)習(xí).
3)在驗(yàn)證集上進(jìn)行驗(yàn)證,將測(cè)試集中的Issue進(jìn)行同樣的文本處理后作為輸入,從而可以獲得文本類別.
3.對(duì)分類模型的預(yù)測(cè)效果進(jìn)行測(cè)試.由于前面使用了“十折交叉驗(yàn)證”對(duì)模型進(jìn)行了訓(xùn)練,所以我們使用10輪預(yù)測(cè)結(jié)果準(zhǔn)確度均值作為該分類模型的最終評(píng)價(jià)效果.
本文所提方法的核心是基于混合3層卷積神經(jīng)網(wǎng)絡(luò)和注意力機(jī)制的問(wèn)題分類方法(Atten-3CNN),其模型結(jié)構(gòu)如圖1所示,該模型的思想主要包含以下3個(gè)方面:
圖1 Atten-3CNN模型結(jié)構(gòu)圖Fig.1 Atten-3CNN model structure
1.文本向量化.假設(shè)一個(gè)文本中包含的詞語(yǔ)個(gè)數(shù)為l,詞匯表大小為D,如果對(duì)文本進(jìn)行one-hot編碼需要的矩陣為l×D,通過(guò)word2vec進(jìn)行詞向量化(分類器的詞向量維度為d),得到的文本可以用l×d表示.
2.采用3層CNN提取文本特征.根據(jù)Song等人的研究結(jié)果可知,采用3、4、5的卷積核使CNN分類效果更好[17].因此,我們選用了3×d、4×d、5×d的卷積核對(duì)l×d矩陣進(jìn)行卷積操作,也就是用矩陣Wj×d(j=3,4,5)與文本矩陣進(jìn)行相乘,如公式(1)所示.
Sj=Wj×d·S[i:i+j-1]
(1)
其中,j表示卷積核大小,Sj∈Rl-j+1表示進(jìn)行卷積后的特征向量,i=1,…,l表示文本矩陣的行下標(biāo).
接著,將3層卷積操作后得到的文本特征向量進(jìn)行池化操作.此處,我們對(duì)每一個(gè)特征向量取其最大值:
vj=max(Sj)
(2)
3.注意力機(jī)制(Attention).通過(guò)注意力機(jī)制來(lái)調(diào)整特征權(quán)重.該過(guò)程主要分為權(quán)重學(xué)習(xí)和文本特征更新兩步:
1)權(quán)重更新.對(duì)M個(gè)卷積核抽取得到的特征,通過(guò)學(xué)習(xí)算法自動(dòng)調(diào)整各個(gè)特征對(duì)最后分類結(jié)果的影響程度(即權(quán)重aj),Attention模塊如下:
cj=tanh(Wj?Vj+bj)
(3)
aj=softmax(cj)
(4)
2)更新文本特征.新的文本特征是把注意力權(quán)重與CNN提取的文本特征進(jìn)行相乘,如公式(5)所示:
(5)
4.用交叉熵?fù)p失函數(shù)(categorical_crossentropy)訓(xùn)練模型[18].交叉熵可以衡量?jī)蓚€(gè)概率分布的差別,此處,我們用來(lái)計(jì)算當(dāng)前訓(xùn)練得到的概率分布與真實(shí)分布的差異情況,其計(jì)算如公式(6)所示.
(6)
交叉熵值越小,兩個(gè)概率分布就越接近,我們的預(yù)測(cè)也就越準(zhǔn)確.
根據(jù)Murgia等人在實(shí)際問(wèn)題中的研究,Issue可以分成糾正、適應(yīng)、完善或預(yù)防性維護(hù)等類型.在提出Issue時(shí),現(xiàn)代開(kāi)源平臺(tái)經(jīng)常允許提出者添加一些標(biāo)簽,而這些標(biāo)簽與Issue類型有一定的關(guān)系.表2顯示了標(biāo)簽和類型的對(duì)應(yīng)關(guān)系.
表2 Issue標(biāo)簽/維護(hù)類型對(duì)應(yīng)關(guān)系Table 2 Table of corresponding relationships between Issue-labels and maintenance-type
而在Github上,部分Issue上是有標(biāo)簽的,依據(jù)這些標(biāo)簽就可以對(duì)Issue來(lái)分類.我們依據(jù)這些標(biāo)簽構(gòu)建了訓(xùn)練集,訓(xùn)練集中Issue類別分布如圖2所示.
圖2 訓(xùn)練集Issue類別分布情況Fig.2 Distribution of Issue categories on the training set
我們對(duì)Issue分類模型進(jìn)行了的對(duì)比分析,其結(jié)果如表3所示.其中,基于深度學(xué)習(xí)進(jìn)行的文本分類均采用keras庫(kù)中的categorical_crossentropy對(duì)損失函數(shù)進(jìn)行訓(xùn)練.我們?cè)O(shè)定epochs=10,batch_size=64,圖3顯示了Atten-3CNN模型的損失函數(shù)在每一輪訓(xùn)練中的變化情況.
圖3 Atten-3CNN模型損失函數(shù)變化情況Fig.3 Atten-3CNN model loss function changes
由表3可知,Atten-3CNN獲得了最高的預(yù)測(cè)準(zhǔn)確度.這表明,對(duì)Issue進(jìn)行自動(dòng)分類是可行的.
表3 分類算法準(zhǔn)確度Table 3 Classification algorithms accuracy
人們?cè)谧鞒龈鞣N選擇時(shí),都有不同的偏向性.例如有些人喜歡解決相對(duì)容易的問(wèn)題,有些人則喜歡解決具有較高挑戰(zhàn)性的問(wèn)題.這就促使我們提出我們的假設(shè),不同的人員可能對(duì)不同的Issue類型具有選擇性.
我們采用關(guān)聯(lián)規(guī)則挖掘的方法檢驗(yàn)這一假設(shè)是否成立.我們通常用支持度、提升度、置信度來(lái)衡量關(guān)聯(lián)規(guī)則的質(zhì)量[19].規(guī)則SupX→Y表示事件包含X和Y的概率,規(guī)則ConfX→Y表示X發(fā)生下Y發(fā)生的概率;對(duì)規(guī)則進(jìn)行置信度分析可以來(lái)確定前提和結(jié)論是誰(shuí)影響誰(shuí):如果規(guī)則在方向(X→Y)上的置信度顯著高于在方向(Y→X)上的置信度時(shí),我們說(shuō)X影響Y而不是Y影響X;Lift是由規(guī)則的置信度以及其結(jié)果的支持度的比值,如果Lift=1,則表示X和Y沒(méi)有相關(guān)性;如果Lift<1,則說(shuō)明規(guī)則沒(méi)有參考價(jià)值;如果Lift>1,則表示我們獲得的規(guī)則有價(jià)值.
我們?cè)谖墨I(xiàn)[20]一文中用該方法成功地研究了Issue的特點(diǎn)與開(kāi)發(fā)者是否愿意參與該Issue解決過(guò)程的關(guān)系.此處我們單獨(dú)研究開(kāi)發(fā)者對(duì)Issue類型的選擇性.
表4-表7顯示了各種Issue類型與開(kāi)發(fā)人員之間的規(guī)則.
表4 issue_category=adaptive→user類型的關(guān)聯(lián)規(guī)則Table 4 Association rules of type issue_category=adaptive→user
表4列出了針對(duì)適應(yīng)性類型的Issue的關(guān)聯(lián)規(guī)則.例如,規(guī)則1中表明,在“realm-cocoa”中,如果Issue類型是適應(yīng)性的,開(kāi)發(fā)人員“kevinmlong”參與的概率將比一般人增加324%.
同時(shí),我們也檢驗(yàn)了其他Issue類型上開(kāi)發(fā)人員的選擇性,結(jié)果列在了表5-表7中.這些結(jié)果表明對(duì)于部分人員,確實(shí)對(duì)Issue類型具有顯著的選擇性.當(dāng)然,對(duì)于另外一些人員可能還沒(méi)表現(xiàn)出顯著的選擇性.這就啟發(fā)我們,對(duì)于Issue類型敏感的開(kāi)發(fā)人員,我們?cè)谕扑]時(shí)需要重點(diǎn)考慮Issue類型與他的匹配.
表5 issue_category=corrective→user類型的關(guān)聯(lián)規(guī)則Table 5 Association rules of type issue_category=corrective→user
表6 issue_category=perfective→user類型的關(guān)聯(lián)規(guī)則Table 6 Association rules of type issue_category=perfective→user
表7 issue_category=preventive→user類型的關(guān)聯(lián)規(guī)則Table 7 Association rules of type issue_category=preventive→user
經(jīng)過(guò)Issue類別自動(dòng)分類后,可以把每個(gè)Issue表示為以下的兩種形式:
I=[textLen,codeyes,codeno,inner,outer]
(7)
I=[textLen,codeyes,codeno,inner,
outer,adap,corr,perf,prev]
(8)
公式(7)表示的是不帶Issue類型的表示,公式(8)是帶Issue類型的表示,為了便于表達(dá),adap表示適應(yīng)性Issue,corr表示糾正性Issue,perf表示完善性Issue,prev表示預(yù)防性Issue.
為了對(duì)開(kāi)發(fā)者的特征進(jìn)行表達(dá),我們采用了以下的方法:
1)對(duì)屬性取值進(jìn)行歸一化處理:各項(xiàng)屬性的數(shù)值范圍大小不一在后續(xù)計(jì)算中將產(chǎn)生不利影響.因此,把不同范圍的屬性取值進(jìn)行歸一化,其計(jì)算方法如公式(9)所示:
(9)
得到的x′ij為第i個(gè)樣本的第j個(gè)屬性的數(shù)值(i=1,2,…,n;j=1,2,…,m).
2)獲取第j個(gè)屬性下第i個(gè)樣本占該指標(biāo)的權(quán)重:
(10)
3)計(jì)算第j個(gè)屬性的熵:
(11)
4)計(jì)算信息熵的冗余度,它代表了在該屬性上的差異性:
dj=1-ej,j=1,…,m
(12)
5)獲得各項(xiàng)屬性的權(quán)重:
(13)
得到了每個(gè)開(kāi)發(fā)者的特征表示后,我們需要計(jì)算Issue與各個(gè)開(kāi)發(fā)者的匹配程度,匹配程度越高的就越優(yōu)先推薦.由于Issue也與開(kāi)發(fā)者特征一樣表示成了相同維度的特征向量,所以可以計(jì)算這兩個(gè)向量的內(nèi)積,從而得到匹配的分?jǐn)?shù).我們?yōu)檫@個(gè)Issue推薦最高得分的N名開(kāi)發(fā)者.
為了驗(yàn)證加入Issue類別自動(dòng)分類后的推薦效果,我們進(jìn)行了一系列的實(shí)驗(yàn).
此處,最重要的是召回率,它的計(jì)算方式如公式(14)所示.
(14)
其中,Issues表示Issue測(cè)試集,R(i)表示Top-N推薦列表,T(i)表示實(shí)際中參與Issue討論過(guò)程的開(kāi)發(fā)者集合.
為了分析我們的方法對(duì)于不同支持度下的關(guān)聯(lián)規(guī)則發(fā)現(xiàn)的Issue類型敏感開(kāi)發(fā)者的效果,我們獲取了支持度Sup(X→Y)=0.1%和Sup(X→Y)=0.2%時(shí)的Issue類型敏感開(kāi)發(fā)者.然后依據(jù)Issue與開(kāi)發(fā)者特征的匹配得分,將得分最高的Top-N個(gè)開(kāi)發(fā)者進(jìn)行推薦,表8中是支持度為0.1%和0.2%下的不同結(jié)果.
表8中的結(jié)果表明,提高支持度可以選出對(duì)Issue類型更有選擇性的開(kāi)發(fā)者,我們參考了他感興趣的Issue類型進(jìn)行推薦,就更有針對(duì)性,因此性能也能得到進(jìn)一步的提高.
表8 Sup=0.1%和Sup=0.2%時(shí)Issue類型敏感人群Top-N推薦的RecallTable 8 Recall of Top-N recommendation for problem-sensitive people when Sup=0.1% and Sup=0.2%
在過(guò)去的研究工作中,研究者們采用了計(jì)算Issue表達(dá)的相似度計(jì)算或基于評(píng)論網(wǎng)絡(luò)的社交關(guān)系進(jìn)行Issue參與者推薦[20].將我們的方法與這兩種基本算法進(jìn)行性能對(duì)比.我們的方法在Top-6,Top-8和Top-10上都比對(duì)比的兩個(gè)算法的最佳效果要好.其中,在realm-coco倉(cāng)庫(kù)上,我們的方法的召回率提升了16.71%,而在jasmine倉(cāng)庫(kù)上召回率提升了5.46%;在istio倉(cāng)庫(kù)上,召回率提升了13.59%,在metabase倉(cāng)庫(kù)上效果最為顯著,提升了22.5%的召回率.僅僅在elixir倉(cāng)庫(kù)上不太顯著,提升了0.78%的召回率.
此外,為了顯示Issue類別對(duì)開(kāi)發(fā)者的影響,我們比較了加入Issue類別(sensitive with issue type)以及不加入Issue類別(sensitive without issue type)時(shí)針對(duì)Issue敏感人群的Top-N的推薦效果.同時(shí),我們針對(duì)所有人群也進(jìn)行了相同的實(shí)驗(yàn),結(jié)果如表9所示.
為了更清晰的展示結(jié)果我們將表9中的數(shù)據(jù)畫成圖4.從圖中可以看出,對(duì)于Issue類別敏感人群,在所有的倉(cāng)庫(kù)上加入Issue類別比不加入Issue類別可以獲得更高的推薦性能.同時(shí),從圖4(c)和圖4(d)可以看出針對(duì)Issue不敏感人群加入Issue類別也可以提高推薦性能,因此在參與者推薦系統(tǒng)中,應(yīng)該針對(duì)開(kāi)發(fā)者對(duì)Issue類別的敏感度選取合適的候選者進(jìn)行推薦.
表9 不同人群Top-N推薦的RecallTable 9 Recall of Top-N recommendation for different groups
圖4 不同算法下參與者推薦Recall比較Fig.4 Comparison of participant recommendation Recall under different algorithms
由于Issue是有一定的類別的,因此本文針對(duì)添加Issue的類別可能對(duì)于開(kāi)發(fā)者推薦有一定的幫助的猜想進(jìn)行了驗(yàn)證.為了進(jìn)行這個(gè)驗(yàn)證,我們提出了一種Issue自動(dòng)分類的深度學(xué)習(xí)模型,經(jīng)過(guò)測(cè)試,該模型具有一定的準(zhǔn)確性,可以得到應(yīng)用.然后,我們進(jìn)行開(kāi)發(fā)者推薦的研究.我們發(fā)現(xiàn),某些開(kāi)發(fā)者對(duì)Issue類別具有一定的敏感性,對(duì)這樣一類開(kāi)發(fā)者推薦特定類別的Issue能夠提高推薦效果.我們也發(fā)現(xiàn),對(duì)于一些類別不敏感的的開(kāi)發(fā)者,加入問(wèn)題類別并不起到效果.這也說(shuō)明,開(kāi)發(fā)者確實(shí)具有不同的特性,需要針對(duì)他們的特性來(lái)提供相應(yīng)的推薦模型.
本文的工作還有許多可以拓展的空間,例如在本文提出的方法中我們選取了部分特征來(lái)刻畫開(kāi)發(fā)者的模型,然而,還存在一些潛在的特征可能對(duì)開(kāi)發(fā)者參與Issue解決存在重要的影響.在未來(lái)的工作中,我們可以加入更多的特征,或者利用一些特征選擇的方法,來(lái)找到更好的特征以提高開(kāi)發(fā)者推薦的效果.