張凱強,倪亞晨
(四川大學(xué)計算機學(xué)院,成都610065)
互聯(lián)網(wǎng)誕生不久,用戶便可以在網(wǎng)絡(luò)中生產(chǎn)和傳播資源,根據(jù)資源主題,用戶群體和和使用方式的不同,分為各種網(wǎng)絡(luò)社區(qū),如社交網(wǎng)絡(luò)社區(qū)Facebook、QQ、微信等,主要是以在網(wǎng)絡(luò)上進行社交活動的社區(qū);問答社區(qū)[1],如Google Answer、百度知道和知乎等,這類社區(qū)允許用戶提問并且回答他人的問題。在線技術(shù)社區(qū),如 GitHub、StackOverflow、CSDN 等,這類社區(qū)主要是供技術(shù)愛好者或者從業(yè)者們使用[2],來分享和提高自己的技術(shù)。
在線技術(shù)社區(qū)主要有兩種形式,一種是以代碼為核心,代表網(wǎng)站是:2008年上線的GitHub,其是現(xiàn)在全球最大的開源代碼托管平臺,以及2014年上線的碼云Gitee,面向國內(nèi)技術(shù)開發(fā)者的代碼托管平臺等,這類平臺主要是供在線技術(shù)社區(qū)用戶管理和學(xué)習(xí)代碼;另外一種是以技術(shù)問答為中心,代表網(wǎng)站是:2008年由兩位技術(shù)博主創(chuàng)建的技術(shù)知識問答社區(qū)StackOverflow,以及1999年創(chuàng)立的中國專業(yè)IT社區(qū)CSDN,這類在線技術(shù)社區(qū)主要以用戶提問,其他用戶來回答的形式來提供服務(wù)。
作為一種集成化的知識資源共享和信息資源傳播平臺,在線技術(shù)社區(qū)為用戶提供了技術(shù)交流、技術(shù)咨詢和共享空間,深受技術(shù)相關(guān)從業(yè)者和愛好者的青睞。用戶可以在社區(qū)發(fā)表博客或帖子來記錄分享自己對某一問題的經(jīng)驗看法,或者在自己的代碼倉庫上傳自己的項目代碼用以管理代碼,也可以瀏覽或收藏自己感興趣的內(nèi)容或者拉取自己感興趣的別人上傳的代碼倉庫,還可以針對自己遇到的技術(shù)難題或者疑問提出咨詢,以及參與自己感興趣的話題的討論等。例如,全球最大的開源技術(shù)社區(qū)StackOverflow,擁有超過800萬的用戶以及3800萬帖子[3],每天還有新用戶的加入和產(chǎn)生大量的博客和帖子,以及瀏覽、點贊、評論、收藏等行為,還有現(xiàn)今全球最大的代碼托管平臺GitHub,現(xiàn)已擁有超過4000萬開發(fā)人員以及超過1億的代碼倉庫[4],每天有上千萬的用戶上傳他們自己的代碼,或者對感興趣的項目進行收藏、拉取等。
做好在線技術(shù)社區(qū)的用戶研究對于社區(qū)運營者來說十分重要,有助于他們了解用戶行為,管控用戶內(nèi)容,并更好地了解用戶需求,從而為用戶提供更加精準(zhǔn)的推薦和個性化服務(wù),從而增加用戶粘性和社區(qū)活躍度。
本文概括了當(dāng)前當(dāng)前最流行的在線技術(shù)社區(qū)GitHub和StackOverflow的用戶研究,根據(jù)研究內(nèi)容的不同分為用戶本身研究和用戶內(nèi)容研究兩類,分別進行了研究論述,并且對下一步的研究工作進行了討論。
在線技術(shù)社區(qū)的用戶會在平臺上托管自己的代碼,寫帖子進行技術(shù)交流,或者回答別人的問題,提出自己的疑問等,這些用戶在社區(qū)中所產(chǎn)生的文檔、代碼等都是用戶產(chǎn)生的內(nèi)容,是用戶研究中的重要部分,很多研究者都對此進行了研究。
Baltes S.和 Kiefer R.等人[5,6]研究了在 GitHub 數(shù)據(jù)倉庫中的代碼對于StackOverflow上的代碼引用問題,他們提出了一個實證研究設(shè)計并得出結(jié)果,分析了在GitHub項目中StackOverflow代碼片段的標(biāo)明引用和未標(biāo)明引用的現(xiàn)象,研究表明,平均而言,在所有倉庫中平均3.22%標(biāo)明了對StackOverflow代碼片段的引用,在受歡迎的倉庫中為7.33%,此外,研究還發(fā)現(xiàn)開發(fā)人員更傾向于在整個StackOverflow引用而不是特定的答案。對于Java倉庫,至少有三分之二的復(fù)制代碼片段未標(biāo)明引用。
Baltes S.、Dumani L.和 Treude C 等人[7]研究了StackOverflow上帖子的演變與其他平臺的關(guān)系,他們構(gòu)建了SOTorrent,一個開放的基于官方SO數(shù)據(jù)轉(zhuǎn)儲的數(shù)據(jù)集。SOTorrent提供對整個帖子和單個文本或代碼塊級別的SO內(nèi)容的版本歷史的訪問。它通過聚合來自文本塊的URL和通過收構(gòu)建了SOTorrent,一個開放的基于官方SO數(shù)據(jù)轉(zhuǎn)儲的數(shù)據(jù)集。SOTorrent提供對整個帖子和單個文本或代碼塊級別的SO內(nèi)容的版本歷史的訪問。它通過聚合來自文本塊的URL和通過收集引用將SO帖子連接到其他平臺表單從GitHub文件到SO帖子。在研究提供了對SO帖子演變的見解,例如,帖子編輯通常很小,在帖子初始創(chuàng)建后不久發(fā)生,而且代碼很少,此外,我們的分析揭示了后期編輯和評論之間的密切關(guān)系。
Treude C.和Wagner M.[8]則使用GH和SO的文本數(shù)據(jù)來對主題模型的配置參數(shù)進行了研究,他們發(fā)現(xiàn):①主題建模參數(shù)配置的常用經(jīng)驗法則不適用于實驗中使用的GH和SO語料庫;②從GitHub和Stack Over?flow抽取的語料庫具有不同的特征,需要不同的配置才能實現(xiàn)良好的模型擬合;③他們的模型可以可靠地預(yù)測看不見的語料庫的良好配置。這些發(fā)現(xiàn)支持研究人員和從業(yè)人員在分析軟件存儲庫中包含的文本數(shù)據(jù)時有效地確定適合主題建模的配置。
Cai X.、Zhu J.、Shen B.等人[9]提出了 GRETA,一種基于圖形的新方法,用于在GitHub上為存儲庫分配標(biāo)簽。GRETA的核心見解是:①使用StackOverflow中的領(lǐng)域知識為GitHub構(gòu)建實體標(biāo)簽圖(ETG);②通過采用隨機游走算法為存儲庫分配標(biāo)簽。他們已經(jīng)實現(xiàn)了GRETA,并使用GRETA的標(biāo)簽分配結(jié)果為GitHub開發(fā)了一個存儲庫搜索引擎。并且針對幾種基線方法評估了GRETA,以研究其標(biāo)記GitHub存儲庫的有效性。結(jié)果顯示,GRETA的F-Measure達到了35%,優(yōu)于基線方法。此外,基于GRETA的搜索引擎獲得比GitHub提供的搜索引擎更高的NDCG值,表明帶有標(biāo)記存儲庫顯著增強了GitHub上的搜索能力。
Liu X.、Shen B.、Zhong H.[10]等人提出了一種名為EXPSOL的方法,該方法使用支持向量機訓(xùn)練的模型推薦在線資源作為新報告的異常相關(guān)錯誤的解決方案。他們對來自StackOverflow的數(shù)千個問題和來自GitHub的固定問題進行了兩次評估,并取得了很好的效果。
除了上述的用戶內(nèi)容,如代碼、文檔等的研究之外,關(guān)于用戶研究的另外一個重要部分便是關(guān)于用戶本身的研究,如用戶興趣、用戶社交、用戶行為等。
Lee K.W.和Lo D.[11]研究了GH和SO中開發(fā)人員的跨平臺興趣,研究發(fā)現(xiàn)開發(fā)人員在GitHub和Stack?Overflow中有共同的興趣;平均而言,39%的開發(fā)人員在GitHub倉庫和StackOverflow的問題屬于相同的興趣。此外,開發(fā)人員與其他共同參與兩個平臺活動的開發(fā)人員有著類似的興趣。特別是,與共同參與其他平臺活動的其他開發(fā)人員相比,共同提交和共同請求同一GitHub倉庫并共同回答StackOverflow同一問題的開發(fā)人員有著更加相似興趣。
Venkataramani R.、Gupta A.、Asadullah A.等人[12]開發(fā)了一個模型,通過挖掘開發(fā)人員在不同開源項目中的活動來對開發(fā)人員在目標(biāo)領(lǐng)域的專業(yè)知識進行排名,并且為StackOverflow開發(fā)了一個推薦系統(tǒng),使用了從GitHub提取的數(shù)據(jù)。
Badashian A.S.[13]提出了一個更現(xiàn)實的錯誤分配任務(wù)。首先,開發(fā)了一個開發(fā)人員專業(yè)知識的新模型,考慮了他們的代碼開發(fā)的貢獻,以及他們對相關(guān)問答(Q&A)平臺的貢獻。其次,采用經(jīng)濟學(xué)的角度來進行任務(wù)分配,并且建議將任務(wù)從“將一個bug或者問題分配給最佳開發(fā)人員”到“為一組合格且可用的開發(fā)人員分配多個未解決的bug或者問題”。
Vasilescu B.、Filkov V.、Serebrenik A.[14]研 究 了StackOverflow活動與開發(fā)過程之間的相互作用,并通過最大社交編碼庫GitHub的代碼更改來驗證。他們的研究表明,活躍的GitHub提交者會向其他人提出更少的問題并提供更多的問題答案。此外,活躍的Stack?Overflow提問者以比不提問題的開發(fā)人員的開發(fā)行為更加分散。最后,研究表明StackOverflow活動率與GitHub中的代碼更改活動相關(guān)。
Wu Y.、Kropczynski J.、Shih P.C.等人[15]研究發(fā)現(xiàn)對GitHub上類似的代碼倉庫的貢獻會導(dǎo)致用戶在GitHub上相互跟隨,并且互聯(lián)網(wǎng)上有一個軟件開發(fā)者的生態(tài)系統(tǒng),包括很多平臺,如Forrst、Twitter和Hack?er News等。開發(fā)人員在這些平臺上進行社交介紹和其他交互,并與GitHub上的代碼倉庫進行交流,他們將GitHub描述為更大的開發(fā)人員交互生態(tài)系統(tǒng)的一部分用來研究用戶的社交活動。
Y.Xiong、Z.Meng、B.Shen、W.Yin[16]提出了一種在GitHub和StackOverflow中挖掘開發(fā)人員行為的新方法。這種方法使用CART決策樹鏈接來自兩個社區(qū)的帳戶,利用來自用戶名,用戶行為和寫作方式的特征。然后,通過T圖分析,基于LDA的主題聚類和跨站點標(biāo)記迭代遍歷站點開發(fā)人員行為。并進行了幾次實驗來評估這種方法。結(jié)果表明,他們的身份聯(lián)系方法的精度和F-Score高于以往的方法。特別是,他們發(fā)現(xiàn):①活躍的issue提交者也是積極的問題提問者;②對于大多數(shù)開發(fā)人員來說,他們在GitHub中的內(nèi)容主題與他們在StackOverflow中的問題和答案的主題相似;③開發(fā)人員對StackOverflow的關(guān)注隨著他們當(dāng)前參與GitHub的項目發(fā)生變化;④開發(fā)人員對GitHub的關(guān)注與他們的答案相關(guān),而不是StackOverflow中的問題和評論。
隨著在線技術(shù)社區(qū)的發(fā)展,用戶和用戶產(chǎn)生的內(nèi)容越來越多,做好在線技術(shù)社區(qū)用戶的研究對于在線技術(shù)社區(qū)的高質(zhì)量發(fā)展有著重要作用,本文上述羅列了典型的在線技術(shù)社區(qū)GitHub和StackOverflow的用戶研究概況,我們可以看出現(xiàn)有的研究大多是關(guān)于用戶的某個方面的研究,如興趣或者技術(shù)特長或者社交等,缺少對于用戶更加全面的研究,而現(xiàn)在火熱的用戶畫像技術(shù)便是解決之道。
我們下一步的研究工作便是使用GitHub和Stack?Overflow數(shù)據(jù)來對用戶進行更加全面準(zhǔn)確的畫像,從用戶自然屬性,用戶擅長領(lǐng)域、用戶興趣等多個方面來刻畫,并將我們的畫像應(yīng)用于推薦系統(tǒng)中。