一種基于群體評論的開源軟件推薦方法
【技術領域】
[0001] 本發明涉及一種開源軟件項目自動化推薦的方法,尤其涉及在互聯網開源社區中 存在大量開源軟件項目的條件下,一種能夠基于群體評論對開發者正在開發的軟件項目進 行有效的組合軟件推薦方法。
【背景技術】
[0002] 隨著計算機技術的快速發展和革新,尤其是互聯網技術的興起,軟件已經滲入人 們購物、交流、學習、生活等各個方面。2011年,著名風險投資人以及網景創始人托馬斯.舒 爾茨發表文章稱"軟件正在吞噬整個世界"。實際上,在此過程中開源軟件扮演著關鍵角色, 其以豐富開放的軟件資源、開發者資源以及知識資源被越來越多的軟件企業及個人所依 賴。以Google為代表的大型互聯網公司積極參與、引導并借鑒開源資源推導項目發展,而 一些中小型企業則依賴和復用開源模塊實現高質量的軟件開發和發布。充分、高效的利用 開源軟件資源已經成為互聯網軟件企業持續保持競爭力的關鍵因素。
[0003] 開源軟件迅速發展,一方面為開發者提供了大量可復用資源,縮短了軟件開發過 程中的開發時間和成本,給軟件開發者帶來了極大的便利;另一方面,開源軟件規模巨大, 數量高速增長且分布廣泛,同時還在不斷演化。面對海量的軟件資源,用戶很難從中快速準 確檢索到自己真正需要的軟件資源,對開源軟件資源的利用效率反而下降,這就是所謂的 信息過載。目前,針對這個問題的辦法之一就是以搜索引擎為代表的信息檢索系統,比如 G〇〇gle、Baidu等,它們在幫助用戶獲取信息方面發揮著極其重要的作用。但使用搜索引擎 的不同用戶在使用同一個關鍵詞檢索時,得到結果是相同的,而用戶需求卻是多元化和個 性化的,通過以搜索引擎為代表的信息檢索系統獲得的結果不能滿足用戶的個性化需求, 無法很好的解決軟件資源信息過載的問題。因此,開源生態系統急需一種新型技術來解決 開源軟件資源的快速定位問題。
【發明內容】
[0004] 本發明要解決的技術問題是:針對現有互聯網軟件信息檢索技術的不足,提出一 種基于互聯網開源社區中群體評論的開源軟件自動推薦方法。該方法將分布在互聯網軟件 社區各類軟件資源有效集成,通過對大規模開發者群體和用戶群體對開源資源的評論進行 深度分析和挖掘,為開發者推薦最相關的開源資源,使軟件開發人員能夠快速利用更大范 圍的相關軟件信息和資源進行高效開發。
[0005] 本發明的技術方案包括以下步驟:
[0006] 步驟101、建立開源軟件數據服務器SDS(SoftwareDataServer),采用通用的Web 爬蟲技術從互聯網的主要開源社區中采集開源軟件資源信息數據,包括開源軟件項目數據 和評論文檔數據,所述項目數據包括開源軟件的項目名稱、項目標簽、項目主頁,評論文檔 數據包括文檔標題和文檔標簽。
[0007] 步驟102、獲取用戶本地開發項目p的特征,主要包括本地項目名稱和本地項目標 簽,并提取SDS中已采集獲得的項目名稱、項目標簽和文檔標題、文檔標簽,對本地開發項 目及SDS中采集的項目與評論文檔進行關聯匹配。
[0008] 步驟103、計算SDS中每一個項目q與本地開發項目p的標簽文本相似性,標簽文 本表示為由項目標簽組成的單詞集合,提取項目P與項目q的項目標簽,并將其表示為由自 身標簽組成的標簽集合Tp和Tq,利用公¥:十算項目P與項目q的標 簽文本相似性。
[0009] 步驟104、計算SDS中每一個項目q與項目p的相關性,根據步驟102中的關聯匹 配結果將項目P和q表示為向量Vp和Vq,向量的每一維表示與之相關聯的評論文檔,向量 值表示匹配權重,根據余弦相似性公式
'計算相關性。
[0010] 步驟105、生成本地開發項目p的推薦列表,并將推薦指數值排在前N的項目的主 頁返回給用戶,其中推薦指數值的計算是對項目相似性和相關性進行線性加權,公式表示 為:Score(q-p) =WiXTDoc^qHwjjXCoop^q),其中,Score表示為項目q對項目p的 推薦指數值,Wpw2均取為0. 5。
[0011] 進一步地,步驟101中對所述項目標簽和文檔標簽進行預處理,所述預處理包括: 將項目標簽和文檔標簽轉換為其詞根后將相同的詞根的標簽合并,刪除標簽數小于3的項 目。
[0012] 進一步地,步驟102中的關聯匹配具體步驟包括:
[0013] 步驟102. 1、用項目名稱與評論文檔進行匹配,以所述項目名稱為關鍵詞查找評論 文檔,若所述評論文檔具有與所述項目名稱相同的標簽,則為所述評論文檔與項目建立關 聯,并賦予權值W1;
[0014] 步驟102. 2、用項目名稱在評論文檔標題中進行檢索匹配,以項目名稱為關鍵字搜 索所有評論文檔,若某個評論文檔標題包含該關鍵字,則將該評論文檔與項目建立關聯,并 賦予權值W2;
[0015] 步驟102. 3、在所有已建立的關聯中,對項目標簽與評論文檔標題進行匹配,統計 評論文檔標題中包含項目標簽的個數X,利用X計算項目與評論文檔關聯權值W4,計算公式 為:W3= 〇.5*log2 (x2+1),采用對數運算表明標簽個數x與可信度的關系;
[0016] 步驟102. 4、在所有已建立的關聯中,對項目標簽與評論文檔的標簽進行匹配,統 計在兩者共同出現的標簽個數y,計算權值:W4= 0. 6*log2 (y2+l);
[0017] 步驟102. 5、計算最終關聯權重,權重公式表示為:W=Wi,選 取合適的閥值決定軟件項目是否與評論文檔相關聯,當權值w大于閾值q時,認為該文檔與 開源項目是關聯的,關聯結果以[軟件項目,評論文檔,權重]的形式存儲在數據庫中,軟件 項目包括本地開發項目及SDS中采集的項目。
[0018] 進一步地,步驟104中的根據步驟102中的關聯匹配結果將項目p和q表示為向 量Vp和Vq,向量Vp和Vq的值根據分別包含項目P和q匹配結果的結果集中的權重值確定, 項目P可表示為Vp=(wpl,wp2,..,wpn);項目q可以表示成Vq=(Wql,Wq2,..,Wqk),WpjWqk 分別是結果集中的權重值,η和k均大于等于1。
[0019] 采用本發明可以達到以下技術效果:
[0020] 本發明不僅適用于軟件企業內部的集中式軟件開發過程,也適用于開源模式的軟 件開發過程。本發明根據開源社區中的軟件項目的特征,首先從互聯網的開源社區中獲取 軟件項目資源,然后根據資源特點進關聯匹配,并基于該匹配結果計算項目相關性和相似 性,實現相關軟件推薦。此外,本方法首次將軟件項目推薦機制引入開發環境,能夠極大提 高件項目的重用和開發效率。本方法能夠從海量軟件數據庫中定位相關軟件項目,并自動 返回給開發者,從而有助于提高軟件開發效率和資源重用效率。
【附圖說明】
[0021] 圖1為本發明軟件項目推薦方法的流程圖;
[0022] 圖2為本發明的實施例涉及的網絡節點交互示意圖;
【具體實施方式】
[0023] 下面結合實施例直觀的說明本發明的效果。圖1和圖2分別是本實施例的流程圖 和網絡節點交互示意圖。本實施例包含本地軟件目錄服務器SDS、協同開發社區網站SF和 知識分享社區網站SP。其中軟件項目P是開發者D正在本地開發環境(如Eclipse)中實 施開發的項目。本發明將從SF中找到與P最相關的前N個軟件項目,并將其項目開發社區 的主頁列表反饋給開發者D,該執行過程包括以下步驟:
[0024] 步驟101、建立一個開源軟件數據服務器SDS(SoftwareDataServer)。采用通用 的Web爬蟲技術從互聯網的主要開源社區中采集開源軟件資源信息數據,包括開源社區中 的開源軟件項目數據和評論文檔數據。所述項目數據包括開源軟件的項目名稱、項目標簽、 項目主頁,評論文檔數據包括文檔標題和文檔標簽。對所述的項目標簽和文檔標簽進行預 處理,所述預處理包括:將項目和文檔標簽轉換為其詞根后將相同的詞根的標簽合并,刪除 標簽數小于3的項目。
[0025] 利用詞根提取技術對項目和帖子的標簽進行預處理。例如通過分詞、刪除停用 詞。詞根提取,將項目和帖子標簽轉換為單詞包。如MozillaFirefox在OpenHub上的標 簽描述信息"cssweb-browserdevelopmentclientwebxhtmlgtkhtmltabbiedhttp Mozillachromejavascriptbrowserxulwwwhtml5",分詞后得到單詞包{css、web_ browser、development、client、web、xhtml、gtk、html、tabbied、http、Mozilla、chrome、 javascript、browser、xul、www、html5},詞根提取,將一個詞的不同形態轉換為其詞根, 處理后得到 {css、web-brows、develop、client、web、xhtml、gtk、html、tabbied、http、 Mozilla、chrome、javasoript、brows、xul、www、html5} 〇
[0026] 步驟102、獲取用戶本地開發項目p的特征,主要包括本地項目名稱和本地項目標 簽,并提取SDS中已采集獲得的項目名稱、項目標簽和文檔標題、文檔標簽,對本地開發項 目及SDS中采集的項目與評論文檔進行關聯匹配。關聯匹配方法可以采用現有的方法,只 要最終能達到將本地項目及采集的開源項目在一定的條件下進行匹配和關聯即可。本申請 中采用的匹配具體步驟包括:
[0027] 步驟102. 1、用項目名稱與評論文檔進行匹配,以所述項目名稱為關鍵詞查找評論 文檔,若所述評論文檔具有與所述項目名稱相同的標簽,則為所述評論文檔與項目建立關 聯,并賦予權值Wp
[0028] 以開源軟件MySQL為例,匹配過程為:從SDS中查找包含標簽"MySQL"(不區分大 小寫)的所有評論文檔,如果評論文檔D包含標簽"MySQL",則建立項目MySQL與評論文檔 D的關聯,并將這次的關聯賦予權值I(在實際的計算中,取W1= 1)。
[0029] 步驟102. 2、用項目名稱在評論文檔標題中進行檢索匹配,以項目名稱為關鍵字搜 索所有評論文檔,若某個評論文檔標題包含該關鍵字,則將該評論文檔與項目建立關聯,并 賦予權值^,在實際的計算中,取W2= 0.8。
[0030] 步驟102. 3、在所有已建立的關聯中,對項目標簽與評論文檔標題進行匹配,統計 評論文檔標題中包含項目標簽的個數X,利用X計算項目與評論文檔關聯權值w3,計算公式 為:W3= 〇.5*log2 (x2+1),采用對數運算表明標簽個數x與可信度的關系。
[0031] 例如項目MySQL有標簽"(^丨3&386"、"1115^91"、"861^61'",某一個評論文檔S標題 為"Howtotransfermysqldat