[發明專利]一種具有高準確度的代碼片段推薦方法有效
| 申請號: | 201810611256.4 | 申請日: | 2018-06-14 |
| 公開(公告)號: | CN108717470B | 公開(公告)日: | 2020-10-23 |
| 發明(設計)人: | 黃志球;艾磊;李偉湋;周宇;尹小花;張靜 | 申請(專利權)人: | 南京航空航天大學 |
| 主分類號: | G06F16/33 | 分類號: | G06F16/33;G06F40/30 |
| 代理公司: | 常州佰業騰飛專利代理事務所(普通合伙) 32231 | 代理人: | 滕詣迪 |
| 地址: | 211106 江蘇省南京市江寧區*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 具有 準確度 代碼 片段 推薦 方法 | ||
本發明提供的具有高準確度的代碼片段推薦方法,包括:將項目進行切割、劃分,生成類文件、代碼片段、代碼片段方法體和代碼片段注釋;將代碼片段方法體和代碼片段注釋生成代碼片段方法體向量和代碼片段注釋向量;對每個類文件進行編譯和反編譯,從反編譯文件中提取代碼片段的指令序列;將用戶輸入的查詢生成查詢向量,根據查詢向量與代碼片段文本特征之間的文本相似度,篩選出一組文本相似度最高的初步推薦結果;根據初步推薦結果中的所有代碼片段之間的語義相似度,對初步推薦結果進行二次篩選和重新排序,形成最終推薦結果;本發明彌補了現存方法使用特征單一、推薦結果沒有經過過濾,導致推薦準確度不高的缺陷;適用于開源代碼片段推薦領域。
技術領域
本發明屬于開源代碼片段推薦的技術領域,具體涉及一種具有高準確度的代碼片段推薦方法。
背景技術
代碼片段是指能夠完成一定功能的一組代碼的有序集合。當開發人員面對不熟悉的開發任務或需要使用不熟悉的API接口時,代碼片段是一個很好的參考工具。開發人員能夠從中學習功能實現方法或者API使用模式,甚至直接對已有代碼片段進行修改,以完成相關開發任務。隨著計算機技術和軟件行業的發展,網絡上的開源項目越來越多。這些開源項目被發布在一些開源軟件項目的托管平臺上,開發人員能夠通過在這些平臺上查找需要的開源項目并瀏覽項目中的所有文件,以找到自己真正感興趣的部分。在軟件開發過程中,使用開源項目作為參考,能夠幫助開發人員盡快理解不熟悉的開發任務,掌握不熟悉的API接口,有效提高其工作效率,從而有效地節約軟件開發的成本。但是,如何從數以百萬計的開源項目中查找到自己需要的項目,又如何從一個項目中找到自己感興趣的某個文件或者某個方法,是研究人員面臨的難題。而著眼于研究這一問題的研究統稱為代碼推薦。
目前較為成熟的代碼推薦方法有:ROSF、SSI、Portfolio等。這些研究所使用的代碼特征雖然可以細分為多個類別,如:方法完全限定名稱、文檔信息、兄弟方法名稱等,但這些特征本質上均為代碼的文本特征,僅使用文本信息進行代碼片段推薦將會造成代碼片段的部分語義信息的丟失,從而造成推薦結果的不準確;并且已有研究在對推薦結果進行篩選和排序時多使用代碼片段與查詢之間的文本相似度和啟發式規則,這種方式由于沒有考慮到推薦結果之間的聯系,也會造成推薦結果的不準確或誤排。
發明內容
本發明克服現有技術存在的不足,所要解決的技術問題為:提供一種具有高準確度的代碼片段推薦方法,彌補了現存方法使用特征單一、推薦結果沒有經過過濾,導致推薦準確度不高的缺陷。
為了解決上述技術問題,本發明采用的技術方案為:一種具有高準確度的代碼片段推薦方法,包括:將項目庫中的所有項目進行切割、劃分,生成對應的類文件、代碼片段、代碼片段方法體和代碼片段注釋;采用詞向量模型,將獲得的代碼片段方法體和代碼片段注釋生成對應的代碼片段方法體向量和代碼片段注釋向量,作為代碼片段的文本特征;為獲得的每個類文件進行運行環境搭建,并對每個類文件進行編譯和反編譯,然后從反編譯文件中提取代碼片段的指令序列,作為代碼片段的語義特征;采用詞向量模型,將用戶輸入的查詢生成對應的查詢向量,根據查詢向量與代碼片段文本特征之間的文本相似度,篩選出一組文本相似度最高的初步推薦結果;根據初步推薦結果中的所有代碼片段之間的語義相似度,對初步推薦結果進行二次篩選和重新排序,形成最終推薦結果,并返回給用戶選擇。
優選地,所述將項目庫中的所有項目進行切割、劃分,生成對應的類文件、代碼片段、代碼片段方法體和代碼片段注釋,具體包括:提取項目庫中所有項目的所有類文件,并形成類文件數據集;對每個類文件進行解析,將類文件切割為多個代碼片段,形成代碼片段數據集,并為每個代碼片段賦予一個起唯一識別作用的代碼ID;獲取所有代碼片段的方法體和注釋,并形成方法體數據集和注釋數據集;分別建立每一代碼片段、代碼片段方法體、代碼片段注釋到對應的代碼ID的索引。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京航空航天大學,未經南京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810611256.4/2.html,轉載請聲明來源鉆瓜專利網。





