一種基于眾包的軟件開發(fā)問題自動應(yīng)答方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明提出了一種基于眾包的軟件開發(fā)問題自動應(yīng)答方法,屬于軟件數(shù)據(jù)挖掘與 分析領(lǐng)域。
【背景技術(shù)】
[0002] 隨著信息科技的進(jìn)步以及電子化時代的到來,人們更傾向于在網(wǎng)絡(luò)上尋求問題的 解決方法和途徑。眾包就是互聯(lián)網(wǎng)帶來的新的生產(chǎn)組織形式。眾包是一種分布式的問題解 決和生產(chǎn)模式。問題以公開招標(biāo)的方式傳播給未知的解決方案提供者群體。用戶(這里指 眾包里的"眾")典型地組成在線社區(qū)并提交方案。群"眾"還要審查方案,發(fā)現(xiàn)最好的。這 些最好的方案最后由最先提出問題的一方(眾包人,crowdsourcer)所有,并且群"眾"中勝 出的個人有時會被獎勵。
[0003] 在本發(fā)明作出之前,隨著眾包(crowd)模式的流行,諸如Stack Overf low, Sourceforge等軟件論壇受到越來越多的開發(fā)者的喜愛。Q&A網(wǎng)站的使用人數(shù)也日益增多, 伴隨著使用人數(shù)的劇增,網(wǎng)站上的數(shù)據(jù)也成倍增長,而這也就造成了用戶提交的問題不能 得到及時的解決,造成信息被淹沒的現(xiàn)象。在之前的研究中,集中在對用戶提出的問題的研 究,包括問題的質(zhì)量,未被回答的問題的特征,旨在幫助用戶提出更易于理解和被回答的問 題。之前的研究并沒有直接解決用戶對答案的迫切需求,僅僅改善問題的質(zhì)量,而Q&A網(wǎng)站 不僅僅有問題,忽略了對答案的研究。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的就在于克服上述缺陷,研制一種基于眾包的軟件開發(fā)問題自動應(yīng)答 方法。
[0005] 本發(fā)明的技術(shù)方案是:
[0006] -種基于眾包的軟件開發(fā)問題自動應(yīng)答方法,其主要技術(shù)步驟如下:
[0007] (1)用tag-LDA對用戶提交的問題進(jìn)行標(biāo)簽推薦;
[0008] (2)將標(biāo)簽同問題庫Stack Overflow中的歷史問題答案對進(jìn)行匹配,選出相關(guān)問 題答案對;
[0009] (3)在答案質(zhì)量評估機(jī)制中對所有問題和答案進(jìn)行預(yù)處理,將答案的內(nèi)容與用戶 提出的問題進(jìn)行內(nèi)容匹配,計算出內(nèi)容相似度;
[0010] (4)根據(jù)答案提出者的歷史表現(xiàn),計算答案的可信度;
[0011] (5)根據(jù)其他用戶和問題提出者的反饋,計算答案的采納度;
[0012] (6)根據(jù)評估機(jī)制計算得到的相似度,可信度和采納度三個角度分別進(jìn)行排序;
[0013] (7)根據(jù)排序結(jié)果,為用戶推薦出答案和提出者信息。
[0014] 所述步驟(2)標(biāo)簽匹配的計算公式如下:
[0015] 相似度=相同標(biāo)簽個數(shù)/所有標(biāo)簽個數(shù)
[0016] 并將相似度高于0. 30的問題答案對導(dǎo)出。
[0017] 所述步驟(3)預(yù)處理過程包括以下步驟:
[0018] a)移除數(shù)字;
[0019] b)對一些按照駝峰規(guī)則和有下劃短線相連的組合詞進(jìn)行分詞;
[0020] c)去除英語停用詞;
[0021] d)將詞語的不同形式進(jìn)行歸一化;
[0022] 內(nèi)容相似度的計算公式如下:
[0024] 其中A,B是表示文檔一和文檔二的量化表示。文檔一和文檔二經(jīng)過分詞,去停用 詞,移除數(shù)字,詞根化等預(yù)處理過程,將剩余的單詞按一定順序數(shù)值化后形成向量A,B。在 信息檢索中,每個詞條擁有不同的度,一個文檔是由一個由有權(quán)值的特征向量表示的,權(quán)值 的計算取決于詞條在該文檔中出現(xiàn)的頻率。余弦相似度因此可以給出兩篇文檔其主題方面 的相似度。
[0025] 所述步驟(4)答案可信度的計算公式如下:
[0026] 可信度=標(biāo)簽得分/總聲望值。
[0027]
[0028] 所述步驟(5)答案采納度的計算公式如下:
[0029] 采納度=vote 值 /view 值。
[0030]
[0031] 此外,需要知道的是Stack Overflow會把vote量最多的作為best answer,另外 問題提出者可以把自己中意的答案選為acc印t answer,這兩種答案的采納度明顯高于其 他答案,所以分別為best answer和accept answer加2個vote。
[0032] 本發(fā)明的優(yōu)點和效果:
[0033] (1)目前與眾包知識相關(guān)的研究有很多,但是并沒有針對軟件開發(fā)問題自動應(yīng)答, 而本發(fā)明最終輸出的是相關(guān)答案及其提出者信息。
[0034] (2)本發(fā)明從內(nèi)容相似度,提出者可信度和答案采納度三個角度提供用戶相關(guān)答 案,適應(yīng)不同的用戶需求。
[0035] (3)本發(fā)明不僅推薦出相關(guān)答案,最終還會推薦出答案的提出者信息,以便在用戶 未找到滿意的答案或?qū)Υ鸢赣胁糠忠蓡枙r,與提出者直接溝通,達(dá)到解決問題的最終目的。
[0036] 本發(fā)明是一種基于眾包知識的軟件開發(fā)問題自動應(yīng)答推薦技術(shù),利用歷史庫中已 有問題和答案(即眾包知識),挖掘出合適答案和提出者信息推薦給用戶,極大地減少了信 息淹沒的可能性。
[0037] 本發(fā)明最終會從內(nèi)容相似度,提出者可信度,答案采納度三個角度為用戶推薦相 關(guān)答案及答案的提出者信息,有利于軟件開發(fā)者在使用Q&A網(wǎng)站時更快的獲得解決問題的 方法和選擇滿足自己需求的答案,降低了問題得不到解答的可能性。
【附圖說明】
[0038] 圖1 一一軟件開發(fā)問題自動應(yīng)答方法的整體流程示意圖。
[0039] 圖2 Tag-LDA模型的不意圖,用于推薦標(biāo)簽。
[0040] 圖3--Stack Overflow上用戶提交的用戶問題示例示意圖。
[0041] 圖4--Stack Overflow上的一個答案示例示意圖。
[0042] 圖5--Stack Overflow上的一個答案示例示意圖。
[0043] 圖6--Stack Overflow上一個用戶的主頁,用于計算用戶可信度示意圖。
[0044] 圖7--Stack Overflow上一個用戶的主頁,用于計算用戶可信度示意圖。
【具體實施方式】
[0045] 本發(fā)明的技術(shù)思路是:
[0046] 本發(fā)明運(yùn)用到了 Tag-LDA主題模型,對文檔,單詞,標(biāo)簽進(jìn)行建模。Tag-LDA是對 Latent Dirichlet Allocation模型的一種延伸。通過Tag-LDA主題模型,可以推薦和文檔 內(nèi)容相關(guān)的多個標(biāo)簽,并且對每個標(biāo)簽和文章相關(guān)程度的概率進(jìn)行估算,如圖2是Tag-LDA 主題模型的示意圖。輸出結(jié)果后,按照概率高低進(jìn)行排序,挑選出最能表達(dá)文檔內(nèi)容的作為 推薦標(biāo)簽。本發(fā)明運(yùn)用Tag-LDA來為問題文檔推薦標(biāo)簽。
[0047] 下面具體說明本發(fā)明。
[0048] 本發(fā)明提供一種基于眾包知識的軟件開發(fā)問題自動應(yīng)答推薦技術(shù),下面結(jié)合附圖 對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明:
[0049] 如圖1所示的程序:
[0050] (1)用tag-LDA對用戶提交的問題進(jìn)行標(biāo)簽推薦;
[0051] (2)將標(biāo)簽同問題庫Stack Overflow中的歷史問題答案對進(jìn)行匹配,選出相關(guān)問 題答案對;
[0052] (3)在答案質(zhì)量評估機(jī)制中對所有問題和答案進(jìn)行預(yù)處理,將答案的內(nèi)容與用戶 提出的問題進(jìn)行內(nèi)容匹配,計算出內(nèi)容相似度;
[0053] (4)根據(jù)答案提出者的歷史表現(xiàn),計算答案的可信度;
[0054] (5)根據(jù)其他用戶和問題提出者的反饋,計算答案的采納度;
[0055] (6)根據(jù)評估機(jī)制計算得到的相似度,可信度和采納度三個角度分別進(jìn)行排序;
[0056] (7)根據(jù)排序結(jié)果,為用戶推薦出答案和提出者信息。
[0057] 具體說明:
[0058] (1)根據(jù)用戶提交的用戶問題,利用tag-LDA推薦標(biāo)簽,將生成的tag文檔提交給 用戶,由用戶選擇滿意的標(biāo)簽。如圖3所示,為一個用戶提交的問題,問題文檔如下:
[0061] 經(jīng)過 tag-LDA 處理后推薦出 java,junit,tdd,private,unit-test 等標(biāo)簽,由用 戶選擇出最滿意的標(biāo)簽。(此處用戶選擇了標(biāo)簽java,junit,tdd,private,unit-test);
[0062] (2)根據(jù)第一步所得到的標(biāo)簽對