劉 磊, 王 昊, 孫 凱, 郜山權, 劉宣彤
(1. 吉林大學 計算機科學與技術學院, 長春 130012; 2. 外交學院 英語系, 北京 100037)
Node包管理器NPM是node.js默認的, 用JavaScript編寫的軟件包管理系統. 開源開發人員可基于NPM平臺共享或者借用軟件包. 為幫助開發人員更高效地搜索到所需的軟件包, NPM提供了一種標簽搜索機制, 根據具體的標簽推薦相關的軟件包. 因此, NPM平臺通常要求開發人員在發布或更新軟件包時為其分配標簽. 目前, 主流的標簽推薦方法都是利用物體的文本特征實現標簽推薦[1-2], 如EncTagRec++[3]和FastTagRec[4]等. 這些文本特征主要包括Readme文檔或描述文本. 但在NPM軟件包的標簽推薦場景下, 包的Readme文檔主要用于介紹包的使用說明和安裝說明等, 這種類型的文本信息對標簽推薦的作用較小, 且包的描述信息過短, 表達的信息不充足. 本文統計了58 753個軟件包的描述信息, 統計結果表明, 76.7%的包描述文本不超過10個單詞. 因此, 這些傳統的利用Readme文檔或描述文本的標簽方法在NPM軟件包標簽推薦場景下性能較差. 為解決傳統方法在NPM軟件包標簽推薦場景下的局限性, 本文從包的代碼角度出發推薦標簽. 與Readme文本以及描述文本相比, 包的代碼信息能更直觀和具體地描述包的行為. 此外, 文獻[5]對比了傳統標簽推薦方法和深度學習標簽推薦方法在相同標簽工作下的性能, 實驗結果表明, 選擇合適的深度學習方法可能會獲得更有效的結果. 因此, 本文從包的代碼角度出發, 利用深度學習模型為NPM軟件包推薦標簽. 首先, 通過程序分析技術構建出NPM軟件包的函數調用圖, 利用圖遍歷算法遍歷該函數調用圖, 從而將軟件包轉化為一組具有語義信息的函數調用序列;……