基于程序分析和神经网络语言模型的代码推荐研究

来源 :上海师范大学 | 被引量 : 0次 | 上传用户:qazaq1313
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
大型项目,如内核,驱动程序和第三方库都遵循一个代码风格,并且有反复出现的模式。在本文中,我们探索基于NNLM的代码推荐,使用源文件上下文作为输入预测下一个token,并探索可能潜在的一些模式。使用词向量来表示代码令牌和基于自然语言处理的机器学习技术,我们能够捕捉有趣的模式,并且能够预测像传统的IDE那样通过简单的基于语法和语义的方法不能进行预测的代码,我们的方法尝试去自动学习这些语法或模式。针对以往的方法主要是针对特定的一种语言,如研究较多的强类型语言Java和近来研究的弱类型动态性语言Javascript,我们尝试构建了不基于任何特定语言的模型,实现了基于C语言的Linux内核的预测,准确率为56.1%,基于Python语言的网络库Twisted,43.6%的准确率。然后基于Python语言的弱类型及动态特性,我们提出先使用AST做预处理,然后使用word2vec做预训练,再进行实验达到了56.3%的准确率。首先,我们是构建不基于任何特定语言的语法及语义的模型,然后基于Python的弱类型、动态性,我们进一步使用AST规则,训练更大的权威的开源数据集,提取出更具代表性的tokens,接着使用wrod2vec预训练,然后再进行实验,并与之前的实验进行对比,准确率得到了进一步提高,python的准确率达到了56.3%。具体工作如下:1.使用自然语言处理提取tokens的方法,将代码中的注释等去掉,然后直接token化,构建词向量作为神经网络输入,并进行实验,利用几个重要的评价准确性的指标对实验结果进行评估,最后分析了一些潜在的模式。2.基于python语言的特点,选取更大的开源数据集,对代码库中的代码建立抽象语法树进行语法分析,提取出代表使用模式的tokens,接着使用word2vec预训练,最后进一步实验。3.对比两个实验,发现使用AST预处理,word2vec预训练后,准确率得到了提升,最后,对上下文中的令牌对预测下一个令牌的贡献值进行了统计。
其他文献
中职生人数不断增加,呈现的心理问题也越来越多,运用传统的心理辅导方法已无法满足学生的心理咨询需求。焦点解决短期心理咨询作为一种新型的、经济快速的咨询方法适合于学校
目的探讨儿童肾透明细胞肉瘤(CCSK)的多层螺旋CT(MDCT)影像学特点。方法回顾性分析2013年10月~2017年6月,经病理证实的8例CCSK的MDCT影像资料,结合文献复习进行分析。本组男5
何谓好慈善?古罗马慈善伦理思想家塞涅卡(Lucius Annaeus Seneca)提出只有"善施"才是一种真正的好慈善。所谓善施,包涵三个层面的意蕴:意向性层面(善意)、介质性层面(善物)和
针对公司某型冲洗阀在主泵转速逐渐上升至1500r/min左右时,冲洗流量会出现跃升的现象,为了理解并解决出现此现象的问题,利用AMESim仿真软件搭建公司闭式系统冲洗阀模型进行仿
针对整体试验台架中非能动换热器(PHX)的缩比设计问题,本文对不同核电堆型、不同事故中PHX的工作特点进行了分析。通过建立PHX控制方程并进行模化分析,获得了PHX模拟体与原型
介绍了一种耐温150℃的辐射交联阻燃聚烯烃热收缩材料的配方、制备工艺及其性能。采用LDPE作基材,添加适量EVA改善LDPE与阻燃剂的相容性,加入10%~30%的EPDM提高热收缩材料的柔软
采用尿素水解法,以氯化镧和尿素为原料制备纳米氧化镧,并且采用X射线衍射(XRD)、扫描电镜(SEM)和差热-热重分析(TG-DTA)等手段对其产物进行了表征。研究了反应物浓度比、超声
【目的】明确硅肥施用最佳时期并揭示超级稻硅素高效吸收、利用机理。【方法】采用大田试验,以江苏地区大面积推广种植的粳型超级稻品种武运粳24号和淮稻9号为材料,研究不同
通过浸渍方法 ,制备了 5 %~ 90 % (质量分数 )担载量Na2 CO3 /草粉脱硫剂 .实验结果表明 ,较小的草粉粒度(≤ 0 2 8mm)和较低的气体流量 (4 0mL/min)有利于SO2 脱除 ,但是脱
运用VAR模型对1978-2014年西藏经济增长、产业结构与城乡居民收入差距进行协整检验、脉冲响应函数和方差分解等分析,得出经济增长、产业结构与城乡居民收入差距间存在长期的