楊紅
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
GitHub是一個(gè)基于網(wǎng)頁的提供版本控制存儲(chǔ)和托管服務(wù)的Git,根據(jù)GitHub 2017年發(fā)布的年度報(bào)告顯示,目前GitHub社區(qū)開發(fā)者已經(jīng)達(dá)到2400萬,150萬個(gè)組織機(jī)構(gòu)包括Microsoft、Facebook、Google和Apple等全球科技巨頭,超過6700萬個(gè)資源庫信息,自2016年9月以來提交行為到達(dá)10億次[1],且這些數(shù)目還在迅速增長。托管在GitHub上面的項(xiàng)目可以通過標(biāo)準(zhǔn)的Git命令進(jìn)行訪問和操作,同時(shí)GitHub還提供一系列社交網(wǎng)絡(luò)具有的功能,例如贊、關(guān)注和評論等,在開源世界中享有深遠(yuǎn)的聲望,逐漸形成了自己的社交化編程文化(Social Coding),用戶可以通過使用GitHub的發(fā)現(xiàn)(Explore)或者搜索功能發(fā)現(xiàn)感興趣的內(nèi)容,之后選擇復(fù)刻他人項(xiàng)目參與到開發(fā)中。
軟件開發(fā)是一個(gè)參與者高度合作的過程,開發(fā)過程中不乏交流分享。在GitHub中,開發(fā)者們可以通過提交評論(Commit Comments)來表達(dá)他們的觀點(diǎn),開發(fā)者可以表達(dá)對項(xiàng)目的滿意程度或者提出在開發(fā)過程中遇到的問題,這些評論信息表達(dá)了開發(fā)者們的情感色彩和情感傾向性,如喜怒哀樂等,通過開發(fā)者們發(fā)表的提交評論的情感分析,我們希望挖掘其中潛在的規(guī)律。
本文從分析GitHub上提交評論的角度出發(fā),使用情感分析工具SentiStrength進(jìn)行情感打分,對軟件開發(fā)過程中的影響因素進(jìn)行了分析,提出了提交評論頻率和提交評論最大惰性時(shí)間對項(xiàng)目情感打分的影響進(jìn)行了分析。
隨著開源軟件的快速發(fā)展,世界各地的開發(fā)者都通過互聯(lián)網(wǎng)參與到項(xiàng)目的協(xié)作開發(fā)中,同時(shí)GitHub作為目前最為流行的代碼托管和社交編程網(wǎng)站,也得到了眾多開發(fā)者的青睞。Zhang Yang[2]等研究了GitHub中@提及符號(hào)對軟件開發(fā)的影響,選取GitHub上的兩個(gè)項(xiàng)目Ruby on Rails和AngularJS數(shù)據(jù),通過定性和定量分析得出@提及符號(hào)吸引了更多的參與者,尤其在困難的問題上使用較多,促進(jìn)開發(fā)人員之間的協(xié)作。Ray Baishakhi[3]等研究了GitHub中編程語言對軟件質(zhì)量的影響,收集了GitHub中17種語言的728個(gè)項(xiàng)目,29000作者和150萬提交的大量數(shù)據(jù),將多元回歸建模與可視化文本分析相結(jié)合,通過控制如團(tuán)隊(duì)規(guī)模、項(xiàng)目規(guī)模和項(xiàng)目歷史等的證明編程語言對軟件質(zhì)量有適當(dāng)顯著的影響。
Emitza Guzman[4]等通過定量情緒總結(jié)研究了軟件開發(fā)團(tuán)隊(duì)中成員情緒,將概率建模與情感分析技術(shù)相結(jié)合,自動(dòng)提取和總結(jié)在協(xié)作工件中表達(dá)的情感,實(shí)驗(yàn)使用三個(gè)開發(fā)團(tuán)隊(duì)在三個(gè)月內(nèi)產(chǎn)生的1000個(gè)提交信息,缺陷報(bào)告,郵件和Twitter信息。崔安頎[5]提出了基于情感記號(hào)的情感詞典構(gòu)造與情感分析方法,提出不穩(wěn)定性程度、在線話題可能性程度與標(biāo)簽作者信息熵這三種度量,使用標(biāo)簽分類發(fā)現(xiàn)微博熱點(diǎn)事件。
GitHub擁有數(shù)據(jù)量龐大的開源軟件倉庫,對于其中開源軟件的數(shù)據(jù)采集有多種方法,例如爬蟲抓取和GitHub API等,本文使用的方法是調(diào)用GHTorrent[6-7],使用Google BigQuery來,獲取GHTorrent上的數(shù)據(jù),BigQuery可以使用類似SQL語句的方法來對GHTor?rent的MySQL數(shù)據(jù)庫進(jìn)行查詢,同時(shí)對查詢結(jié)果提供CSV和JSON格式下載。圖1為數(shù)據(jù)采集過程中主要涉及的4張表的關(guān)系。
圖1 數(shù)據(jù)表關(guān)系圖
GHTorrent監(jiān)控著GitHub上的每一次更改,并且將每一次的更改以JSON字符串的形式存儲(chǔ)在Mon?goDB數(shù)據(jù)庫中,通過公開的GHTorrent on the Google Cloud,在BigQuery中使用如下所示的部分SQL語句進(jìn)行查詢:
通過執(zhí)行上述SQL語句,可以獲得項(xiàng)目名稱,提交作者ID,提交ID,提交評論者ID,評論內(nèi)容和評論創(chuàng)建時(shí)間等信息。
對于獲取的研究數(shù)據(jù),由于存在部分內(nèi)容缺失和評論使用非常規(guī)語言造成原始數(shù)據(jù)下載亂碼情況,因此對數(shù)據(jù)進(jìn)行預(yù)處理操作,刪除其中的亂碼數(shù)據(jù),通過git log查詢補(bǔ)全部分?jǐn)?shù)據(jù)缺失信息。
(1)SentiStrength
SentiStrength是一種詞匯情感提取工具,已經(jīng)有研究證明SentiStrength對于處理短文本具有很高的精度,例如在Twitter和電影評價(jià)中。通過對GitHub中的提交評論樣本進(jìn)行隨機(jī)抽取手工查看,結(jié)果顯示這些評論內(nèi)容通常都比較簡短而且廣泛使用表情,而SentiSt?rength除了提供文字的分析外,還可以對文字表情比如:)等進(jìn)行分析,因此選用SentiStrength可以極好地分析開發(fā)者的提交評論情感。
在SentiStrength中,有一個(gè)字典中存儲(chǔ)了各個(gè)單詞和常用的表情符號(hào)分配的固定分?jǐn)?shù),其中帶有積極情緒的詞組情感分值賦值范圍為[1,5],其中5分代表情感極其正面,而帶有消極情緒的賦值范圍則為[-5,-1],其中-5分代表情感極其負(fù)面,(-1,1)表示中性情感。對于在文本中同時(shí)出現(xiàn)積極情緒和消極情緒傾向的觀點(diǎn)時(shí),SentiStrength會(huì)使用字典中配置好的情感詞表,否定詞表,程度副詞表,疑問詞表和常用表情符號(hào)等非規(guī)范化用語詞表來計(jì)算得出文本的積極情緒和消極情緒強(qiáng)度。表1表示SentiStrength情感強(qiáng)度度量信息。
表1 SentiStrength情感強(qiáng)度度量信息表
表2表示了采集數(shù)據(jù)中典型的Commit Comments的情感得分。
對于開發(fā)人員提交評論的頻率研究,主要采用了類似商品條形碼的形式分析,可以有效地表示開發(fā)人員提交評論的可視化,可視化圖形由長度相等的平行豎線段組成,這些豎線從左至右分別按照時(shí)間順序依次排列,時(shí)間以天作為基本單位,其中一條豎線代表對應(yīng)的這天有開發(fā)人員進(jìn)行提交評論操作,顏色的深淺則表示當(dāng)天的提交評論次數(shù)多少,顏色越深代表當(dāng)天提交次數(shù)越多,空白則表示在對應(yīng)的時(shí)間內(nèi)沒有提交評論發(fā)生。由于頻率分析結(jié)果類似于商品條形碼,因此被稱為頻率條形碼可視化。圖2表示實(shí)驗(yàn)中一個(gè)頻率條形碼可視化分析結(jié)果。
表2 典型Commit Comments情感分析
圖2 頻率條形碼可視化
對于項(xiàng)目提交評論的情感分析,主要采用SentiSt?rength工具進(jìn)行分析,將GHTorrent上獲取的數(shù)據(jù)導(dǎo)入SentiStrength工具中。實(shí)驗(yàn)表明,每個(gè)項(xiàng)目的平均得分提交評論平均情感得分傾向于中性分?jǐn)?shù)0,因?yàn)楹芏嘣u論都是描述技術(shù)方面,開發(fā)者在進(jìn)行技術(shù)交流的時(shí)候也只會(huì)有輕微的情感傾向,圖3表示實(shí)驗(yàn)數(shù)據(jù)中6個(gè)項(xiàng)目的平均情感得分,圖4描述6個(gè)項(xiàng)目的情感得分分布情況。
圖3 部分項(xiàng)目平均情感得分
圖4 項(xiàng)目情感得分分布情況
(1)影響因素定義
定義1:評論提交頻率(CCF)
項(xiàng)目評論提交頻率指的是每月提交評論數(shù),可由如下公式計(jì)算獲得:
其中,PC_ALL表示項(xiàng)目提交評論總數(shù),M_NUM表示項(xiàng)目提交評論總間隔月數(shù)。
定義2:最大惰性時(shí)間占比(MIT)
最大惰性時(shí)間占比指的是項(xiàng)目未有評論提交的最大時(shí)間間隔占項(xiàng)目總時(shí)間的比率,可由如下公式計(jì)算獲得:
其中,ITend表示最大惰性區(qū)間結(jié)束時(shí)間,IT_start表示最大惰性區(qū)間開始時(shí)間,D_NUM表示項(xiàng)目總時(shí)間。
(2)相關(guān)性分析框架
本文進(jìn)行的分析框架如圖5所示,主要包括數(shù)據(jù)收集,數(shù)據(jù)預(yù)處理,處理硬性因素?cái)?shù)據(jù)和影響因素相關(guān)性分析四個(gè)主要步驟,其中數(shù)據(jù)收集包括查詢數(shù)據(jù)和獲取及保存數(shù)據(jù)兩步。
通過選取實(shí)驗(yàn)評價(jià)指標(biāo),分析項(xiàng)目情感得分與項(xiàng)目提交評論頻率和最大惰性時(shí)間占比之間的關(guān)系。按照本文提出的相關(guān)性分析框架進(jìn)行實(shí)驗(yàn)之后得到的提交評論因素與評論情感相關(guān)性如圖6所示。
實(shí)驗(yàn)共選取GitHub上76個(gè)開源項(xiàng)目共計(jì)3941條評論進(jìn)行相關(guān)性分析,從圖6可以看出,項(xiàng)目開發(fā)人員評論情感得分是由其評論頻率和評論最大惰性時(shí)間占比共同影響的,當(dāng)提交評論頻率越大同時(shí)評論最大惰性時(shí)間占比越小時(shí),也就是開發(fā)人員大量對項(xiàng)目進(jìn)行討論并且持續(xù)參與討論時(shí),這樣的項(xiàng)目往往能獲得較高的情感得分。因此對于開發(fā)者來說,在進(jìn)行項(xiàng)目Fork時(shí),建議選擇提交評論較頻繁且評論惰性區(qū)間較小的項(xiàng)目進(jìn)行開發(fā)學(xué)習(xí)。
利用本文得出的結(jié)論進(jìn)行進(jìn)一步思考,對于開發(fā)者在對GitHub開源軟件開發(fā)過程中提出幾點(diǎn)建議。
(1)盡量提高開發(fā)者評論的頻率,這樣或有利于開發(fā)者進(jìn)行積極討論,有助于項(xiàng)目難題解決和順利推進(jìn);
圖5 相關(guān)性分析框架
(2)盡量在開發(fā)過程中進(jìn)行持續(xù)性的討論,這樣或有利于開發(fā)者協(xié)同跟進(jìn)項(xiàng)目進(jìn)度,盡快發(fā)現(xiàn)解決問題,從而提高開發(fā)效率;
(3)開發(fā)者盡量進(jìn)行友好的討論氛圍,在討論問題時(shí)集中焦點(diǎn),集中解決難題,有助于開發(fā)進(jìn)度提升。
圖6 開發(fā)人員提交評論因素與評論情感相關(guān)性分析
本文主要對開源社區(qū)GitHub中的提交評論行為進(jìn)行情感分析,分析了開發(fā)者提交評論頻率與評論最大惰性時(shí)間占比與項(xiàng)目情感得分之間的關(guān)系,通過調(diào)用GHTorrent進(jìn)行實(shí)驗(yàn)數(shù)據(jù)獲取,利用SentiStrength工具進(jìn)行情感分析,實(shí)驗(yàn)得出了一些對GitHub開源軟件開發(fā)過程的有力結(jié)論。由于GitHub軟件開發(fā)過程復(fù)雜,本文分析的影響因素還需要在后續(xù)工作中改進(jìn),考慮多影響因素之間的相關(guān)性。
參考文獻(xiàn):
[1]https://octoverse.github.com/.
[2]Zhang Y,Wang HM,Yin G et al.Social Media in GitHub:the role of@-mention in Assisting Software Development.Science China-Information Sciences,2017:60-3.
[3]Ray B,Posnett D,Devanbu P,Filkov V.A Large-Scale Study of Programming Languages and Code Quality in GitHub.Communications of the ACM,2017:91-100.
[4]E.Guzman and B.Bruegge.Towards Emotional Awareness in Software Development Teams.In Foundations of Software Engineering-FSE'13,pages 671-674,2013.
[5]崔安頎.微博熱點(diǎn)事件的公眾情感分析研究[D].清華大學(xué),2013.
[6]Georgios Gousios,Bogdan Vasilescu et al.Lean GHTorrent:GitHub Data on Demand.MSR'14.2014.
[7]http://ghtorrent.org/