国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于代碼倉庫分析的代碼推薦研究

2021-12-23 23:18:37李囈瑾寧浩宇劉秀
科學(xué)與信息化 2021年2期
關(guān)鍵詞:編程語言置信度開發(fā)者

李囈瑾 寧浩宇 劉秀

云南電網(wǎng)有限責(zé)任公司信息中心 云南 昆明 650217

代碼倉庫分析下的代碼推進(jìn)方法與機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘有密切的聯(lián)系。我們可以將機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘作為代碼倉庫分析下代碼推薦方法的基礎(chǔ)。以下是本文對基于代碼倉庫分析的代碼推薦方法相關(guān)研究。

1 機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘

1.1 機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘工具分析

weka是機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘常見工具,weka的特點(diǎn)就是非商業(yè)化,是一種免費(fèi)的開源機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘軟件,weak是建立在Java編程語言基礎(chǔ)之上的,對于多數(shù)的操作系統(tǒng)均有較好的兼容性,可為用戶提供數(shù)據(jù)分類、預(yù)處理、關(guān)聯(lián)分析等功能。weak中數(shù)據(jù)輸入格式為二維矩陣,文件格式后有ARFF的后綴名稱,所輸入的數(shù)據(jù)一般為一個(gè)或者多個(gè)實(shí)例,并由一組屬性對實(shí)例進(jìn)行補(bǔ)充說明。

1.2 機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘技術(shù)分析

機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)過多年發(fā)展已經(jīng)形成了基于不同思想下的機(jī)器學(xué)習(xí)算法。不同機(jī)器學(xué)習(xí)算法之間存在一定的聯(lián)系性。舉例來說,數(shù)值預(yù)測機(jī)器學(xué)習(xí)算法可以在輸出數(shù)值對應(yīng)區(qū)間設(shè)定好后,在分類算法中應(yīng)用,這樣就將分類算法與數(shù)值預(yù)算算法聯(lián)系在一起。由此可見不同的機(jī)器學(xué)習(xí)算法是相互關(guān)聯(lián)的。假設(shè)學(xué)習(xí)概念模型是機(jī)器學(xué)習(xí)算法運(yùn)行的前提,所謂假設(shè)學(xué)習(xí)概念模型就是預(yù)先確定概念模型。通常情況下,規(guī)則模型、聚類模型、線性模型、表模型以及樹模型是常使用的概念模型。以上模型帶有較強(qiáng)的抽象性,機(jī)器學(xué)習(xí)算法需要在具體學(xué)習(xí)場景中對模型結(jié)構(gòu)進(jìn)行適當(dāng)調(diào)整[1]。舉例來說,機(jī)器學(xué)習(xí)算法模型如果使用的是決策樹模型,則需要在已知數(shù)據(jù)基礎(chǔ)下對每個(gè)葉子中間節(jié)點(diǎn)和節(jié)點(diǎn)進(jìn)行確定,由此構(gòu)建出與實(shí)際學(xué)習(xí)場景相適應(yīng)的決策樹模型。

2 編程語言及其相關(guān)工具分析

2.1 Java語言

Java編程語言具有跨平臺性的特點(diǎn),是一種可以面向?qū)ο蟮木幊陶Z言。Java編程語言的前身是Oak語言,該語言產(chǎn)生于1990年。目前全球互聯(lián)網(wǎng)在不斷發(fā)展的背景下,Java語言已經(jīng)在各個(gè)手機(jī)應(yīng)用開發(fā)領(lǐng)域和web開發(fā)領(lǐng)域所應(yīng)用,在目前的編程語言中享有重要地位。解釋型、簡單性、健壯性、網(wǎng)絡(luò)技能性、可移植性、安全性以及高性能等是Java語言的特點(diǎn)。Java作為一種編程語言與C++編程語言在語法規(guī)則上有著較大的相似性,我們可以將Java編程語言看成是C++編程語言的進(jìn)一步發(fā)展,但是Java編程語言摒棄了C++編程語言的不足,Java編程語言可以在發(fā)布的JDK包中對常用函數(shù)預(yù)先定義,明確字符串、數(shù)組等的操作。Java編程語言可面向?qū)ο螅坎僮骶梢砸詥挝粓?zhí)行。將Java文件編譯為Class文件是Java程序編譯的特點(diǎn),這些文件均由字節(jié)碼構(gòu)成,在所有平臺上的Java虛擬機(jī)均可以運(yùn)行。早期的Java程序存在運(yùn)行慢的問題,但是伴隨編譯器的不斷發(fā)展,進(jìn)一步優(yōu)化了字節(jié)碼編譯,將其轉(zhuǎn)化為機(jī)器碼,字節(jié)碼和機(jī)器碼在轉(zhuǎn)化的過程中明顯提高了Java程序運(yùn)行速度。Java程序中還具備自動回收管理內(nèi)存的功能,該項(xiàng)功能可為開發(fā)者專注邏輯功能創(chuàng)造良好的條件,能有效解決C++程序運(yùn)行中泄露內(nèi)存的問題。

2.2 Eclipse JDT

Eclipse作為一款集成開發(fā)環(huán)境,Eclipse與Java有高度的相似性,開發(fā)者可以在網(wǎng)絡(luò)上自由瀏覽發(fā)布的源代碼,也可以經(jīng)Eclipse發(fā)布接口開發(fā)插件,進(jìn)一步拓展Eclipse功能。JDT作為一種開發(fā)工具,主要是針對Java編程語言而產(chǎn)生的,是Eclipse自帶的一款編程語言開發(fā)工具。開發(fā)者在JDT發(fā)布的API下可以自主編程,改變以往手動操作Java工程項(xiàng)目和資源的方式。比如開發(fā)者可以創(chuàng)建新的項(xiàng)目、語法分析Java程序、對已有項(xiàng)目生成源代碼、對編程語言中的錯(cuò)誤進(jìn)行檢查并重構(gòu)源代碼等。Eclipse JDT中重要部分之一就是Java模型,Java模型可以對Java工程資源進(jìn)一步分解,將其分解成相應(yīng)的元素模型,構(gòu)建起元素模型與Java工程資源相對應(yīng)的關(guān)系。舉例來說,IJavaModel該元素主要是代表工作區(qū)的根Java元素,它的后代是IJavaProjects;IField該元素代表在類型中的字段聲明;IMethod該元素代表在類型中方法聲明或者構(gòu)造函數(shù)聲明[2]。

2.3 Jsoup

Jsoup作為一種html文件解析器,主要是針對Java產(chǎn)生的。該解析器可以對網(wǎng)絡(luò)上的網(wǎng)址所對應(yīng)的本地html文件或者h(yuǎn)tml文件進(jìn)行解析。Jsoup的API操作方式與JQuery下提供的API操作方式有較大的相似性,可以按照DOM形式提高數(shù)據(jù)讀取速度和操作速度。字符串、文件、URL等的傳入,對html內(nèi)容進(jìn)行分析;采用DOM形式和CSS選擇器搜索、讀取數(shù)據(jù);借助API操作html文件元素、屬性以及文本內(nèi)容等是Jsoup的基本功能。

3 基于人氣指標(biāo)的推薦方法

軟件開發(fā)過程中,多數(shù)的開發(fā)人員會選擇使用API,所謂API就是應(yīng)用編程接口。但是API的使用需要開發(fā)者對API扎實(shí)記憶。API記憶對開發(fā)者來說不免是一項(xiàng)挑戰(zhàn),尤其是在遇到開發(fā)問題時(shí),開發(fā)人員需要將所要解決的問題輸入到搜索引擎中,之后瀏覽搜索引擎中篩選出來的博客或者論壇,對其中含有代碼的示例頁面進(jìn)行查看。隨后參考示例中的方法,將其直接復(fù)制到網(wǎng)頁上或者進(jìn)行相應(yīng)的修改。Stack OverFlow作為IT專業(yè)問答網(wǎng)站,全球使用者居高不下,該網(wǎng)站主要側(cè)重于TI領(lǐng)域上的知識分享和問題解決方法。企業(yè)級應(yīng)用開發(fā)和移動應(yīng)用開發(fā)中Java在Stack OverFlow上享有非常重要的地位,據(jù)資料顯示Java問題數(shù)量在Stack OverFlow網(wǎng)站上一直處于前三位。以上足以說明Stack OverFlow網(wǎng)站上有許多值得開發(fā)人員借鑒的和效仿的內(nèi)容。但是分析之前API方法推薦研究相關(guān)資料,多數(shù)研究學(xué)者的代碼倉庫為開源工程代碼,這樣側(cè)重于開源代碼上的研究是為了解決某一領(lǐng)域問題為研究目標(biāo),而不能將API涉及多個(gè)方面,將其局限在了特定的方向。基于此就需要開發(fā)者將代碼倉庫作為Stack OverFlow數(shù)據(jù)轉(zhuǎn)儲post中的示例代碼,基于人氣指標(biāo)的推薦方法不僅可以有效控制代碼倉庫體量,將體量控制在較小的程度,而且也可以繼續(xù)擴(kuò)大API應(yīng)用范圍,使其涉及更多的方面。Favorite Count Answer Count等是居高不下的人氣指標(biāo),這些指標(biāo)也常作為API方法的參考權(quán)重值[3-4]。

Stack Overflow數(shù)據(jù)分析和處理主要包括五部分內(nèi)容,一是提取Java有關(guān)的Post Type,將Post Type作為Question的post;二是過濾posts表里Post Type是Answer的post;三是用Jsoup分析post,將Java代碼片段分離出來,Post表中需要以html的格式存儲body字段,將其作為網(wǎng)頁上的主要內(nèi)容。全球人氣居高不下的Stack OverFlow網(wǎng)站使用的是自定義標(biāo)簽,自定義標(biāo)簽可以格式化文本插入的實(shí)例代碼;四是對分離出來的Java代碼片段進(jìn)行語法分析,判斷是否是Java代碼;五是提取post中的人氣指標(biāo),按照API方法對人氣權(quán)重進(jìn)行計(jì)算[5-6]。

CSCC、BCC、BMN是目前與Java相關(guān)的API方法推薦主要工具。其中CSCC有較高的文本相似度,可實(shí)現(xiàn)對推薦API方法的排序;BCC是建立在出現(xiàn)頻率基礎(chǔ)之前的,可滿足推薦API方法的排序要求;BMN則是先進(jìn)行K-NN分類,之后在頻率基礎(chǔ)上對推薦API方法排序。

4 基于優(yōu)化Apriori算法的代碼推薦方法

Apriori算法可以有效節(jié)約頻繁項(xiàng)集的生成時(shí)間,能將一些完全不可能是頻繁項(xiàng)集的集合在最早的時(shí)間內(nèi)消除。舉例來說,定律1中支持度大于min-support是這個(gè)集合的特點(diǎn),則被列為頻繁項(xiàng)集,該集合的子集也理所應(yīng)當(dāng)是頻繁項(xiàng)集。定律2中支持度小于min-support是這個(gè)集合的特點(diǎn),則被列為非頻繁項(xiàng)集,該集合中的子集也理所應(yīng)當(dāng)是非頻繁項(xiàng)集。結(jié)合定律1和定律2在Apriori算法下具體步驟所示如下,步驟一:設(shè)定最小置信度和最小支持度;步驟二:對數(shù)據(jù)庫中的全部事務(wù)進(jìn)行讀取,一維候選集為任何一項(xiàng),對每個(gè)候選一維選集置信度進(jìn)行計(jì)算,所選擇的一維頻繁集則為大于最小置信度的項(xiàng);步驟三:對全部的一維頻繁集進(jìn)行掃描,一維頻繁集生成二維候選集,并對全部的二維候選集置信度進(jìn)行計(jì)算,所選擇的二維候選集則為大于最小置信度的項(xiàng);步驟四:對上述步驟二和步驟三進(jìn)行重復(fù),由此生成高一級的候選集,并對候選集置信度進(jìn)行計(jì)算,這級的頻繁項(xiàng)也為大于最小置信的項(xiàng)。一直到新的頻繁集不能產(chǎn)生為止;步驟五:求出全部頻繁集S所有的非空子集A,并求出A的補(bǔ)集B。如果非空子集A的置信度和補(bǔ)集B的置信度大于最小置信度,則A→B的規(guī)則是存在的。連續(xù)做連接和減枝操作是Apriori算法的特點(diǎn)[7-8]。

Apriori算法的優(yōu)化可以從以下幾方面分析,一是優(yōu)化生成頻繁集。Apriori計(jì)算復(fù)雜度對條數(shù)和項(xiàng)數(shù)有較高的敏感性。想要進(jìn)一步優(yōu)化Apriori算法就需要從生成頻繁集階段入手,在Apriori算法運(yùn)行前,就需要借助Java編程語言進(jìn)行裁剪輸入;二是優(yōu)化生成規(guī)則。生成規(guī)則的優(yōu)化需要秉持以下選取原則,原則一如果當(dāng)前對象能調(diào)用的API方法不在頻繁集中,可排除;原則二選出當(dāng)前頻繁項(xiàng)中可以調(diào)用出來的API方法,將其定義為Y,隨后將Y的補(bǔ)集求出來。如果Y的補(bǔ)集不是API方法下的非空子集,可排除。基于優(yōu)化Apriori算法的代碼推進(jìn)方法與人氣指標(biāo)的推薦方法是相互關(guān)聯(lián)的,兩者結(jié)合可進(jìn)一步創(chuàng)新代碼倉庫分析下的代碼推進(jìn)方法[9-10]。

5 結(jié)束語

綜上所述,基于代碼倉庫分析的代碼推薦方法是軟件開發(fā)領(lǐng)域研究的熱門話題。以上就是本文對基于代碼倉庫分析的代碼推薦方法相關(guān)介紹,希望可進(jìn)一步豐富該領(lǐng)域研究內(nèi)容。

猜你喜歡
編程語言置信度開發(fā)者
硼鋁復(fù)合材料硼含量置信度臨界安全分析研究
壓力-體積轉(zhuǎn)換在CFC編程語言中的實(shí)現(xiàn)解析
Java編程語言的特點(diǎn)與應(yīng)用
正負(fù)關(guān)聯(lián)規(guī)則兩級置信度閾值設(shè)置方法
淺談不同編程語言對計(jì)算機(jī)軟件開發(fā)的影響
電子制作(2018年1期)2018-04-04 01:48:36
16%游戲開發(fā)者看好VR
CHIP新電腦(2016年3期)2016-03-10 13:06:42
面向?qū)ο骔eb開發(fā)編程語言的的評估方法
置信度條件下軸承壽命的可靠度分析
軸承(2015年2期)2015-07-25 03:51:04
iOS開發(fā)者調(diào)查
電腦迷(2015年8期)2015-05-30 12:27:10
iOS開發(fā)者調(diào)查
電腦迷(2015年4期)2015-05-30 05:24:09
宾阳县| 栾川县| 二连浩特市| 荔波县| 南部县| 贵定县| 江阴市| 达孜县| 济源市| 怀仁县| 隆回县| 河曲县| 田东县| 石屏县| 丁青县| 延长县| 彝良县| 西安市| 山丹县| 大渡口区| 昭苏县| 静宁县| 灵山县| 浦江县| 吉林省| 西盟| 简阳市| 营口市| 蓝田县| 奉化市| 麟游县| 肥城市| 泾川县| 科技| 兴国县| 陇南市| 邢台县| 繁昌县| 沂南县| 杭锦旗| 赞皇县|