基于语义上下文的代码补全

来源 :哈尔滨工业大学 | 被引量 : 0次 | 上传用户:zhongsichuang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着计算机技术的快速发展,软件规模和复杂度也日益增大,随着开发需求的激增,为了降低软件开发的难度,缩短开发周期,研究学者们将目光投向了软件自动化开发上。在智能化软件开发中,代码补全实现了由编译器根据上下文中现有代码建议下一个可能的代码Token,例如方法调用或对象字段。近年来随着深度学习的应用,该方向涌现出大量科研成果,推进了软件智能化发展。在现有研究中,大多将代码视作语言文本送入自然语言处理中的序列模型实现代码补全。但是自然语言处理模型对于生成Token不存在于词典中时使用UNK替代,这对于程序是无意义,且代码对比于自然语言,还有更重要的结构信息,比如代码的执行顺序和程序逻辑。针对以上问题,本文使用树和图进行代码表示,提出了基于抽象语法树和指针生成器混合网络的代码补全、基于代码属性图和指针生成器网络的代码补全、基于代码属性图和图神经网络的代码补全。在基于抽象语法树和指针生成器混合网络的代码补全的方法中,使用抽象语法树表示代码,遍历后转换成序列,使用自然语言处理模型学习。为了丰富节点语义信息和结构信息,在学习节点隐藏层状态时使用父节点状态表示,同时为了解决UNK问题,提出选择器在代码上文中复制一个Token进行替代生成。基于抽象语法树和指针生成器混合网络模型的准确率是77.221%,较LSTM基线模型准确率提升了4.92%,较LSTM+父节点信息模型准确率提升了0.908%。在基于代码属性图和指针生成器网络的代码补全的方法中,考虑到执行代码语句的顺序以及采用特定执行路径所需满足的条件也十分重要,加入了程序数据依赖和控制依赖信息。数据依赖表示一个被定义的变量被使用或被更改,控制依赖代表当前节点的操作执行受限于某一个节点的执行。将两种依赖信息抽象为路径序列,使用指针生成器网络进行学习,实现代码补全。基于代码属性图和指针生成器网络模型的准确率是78.180%,较基于抽象语法树和指针生成器混合网络模型提升了0.959%。在基于代码属性图和图神经网络的代码补全的方法中,使用图形表示捕获数据依赖和控制依赖信息。门控图神经网络可以学习有不同边的图结构,在抽象语法树的结构上,添加边。细化数据依赖信息,对变量使用和计算添加边表示过程。对待生成节点构造子图,网络学习每个节点的向量表示,进而学习完整图的向量表示,将代码补全等同于分类问题,完成Token推荐。基于代码属性图和图神经网络模型的准确率是41.655%,较使用不细分数据依赖信息训练模型提升了5.922%。效果不如前两种方法,但这是首次实现使用图实现Token粒度的代码补全,具有研究意义。
其他文献
随着互联网时代的到来,信息化已经成为当今社会的趋势。随着计算机技术在工业界、产业界以及人们日常生活中的广泛应用,产生了海量的数据。在海量数据中,往往包含着丰富的信息,有待于发掘和分析,为智能化时代的智慧问答、辅助决策、推荐系统等提供更加有力的支撑手段和理论依据。因此,从海量的数据中提取有效的信息,并归纳总结成能够为各行各业提供帮助的知识,已经成为大数据时代人们的共同目标。在人工智能技术、机器学习技
为了解决司法文书的语法错误纠正及文本质量估计问题,本文通过多种方法及实验研究上述问题的解决方法。通过研究当今研究现状,了解当前领域的常用解决方案,并融合司法文书相关特征,对于司法文书文本纠错问题,提出面向司法文书的基于规则和语言模型的纠错方法以及基于深度模型的纠错方法;对于司法文书文本质量估计问题,提出基于语义理解的文本质量估计方法。通过实验,证明上述方法可以较为有效地对司法文书中的语法错误进行纠
大多常规的行人重识别数据集都是在较短时间跨度内收集的,这期间行人的服饰与外观基本不会发生改变。但在例如商场监控、罪犯追踪等很多现实应用中,同一个人的衣服可能会更换,不同的人也可能穿着相似的衣服,常规的行人重识别方法过于依赖行人的服装信息来进行行人匹配,不适用于这种服装变化场景下的行人重识别任务。本文针对服装变化的行人重识别问题进行探究,基于深度卷积生成式对抗网络提出了一种特征解耦方法,用于分离服装
研究一个组织的架构对于了解该组织的运作方式、定义组织的性质、发现其关键节点、发掘核心部门和锁定重要人物以及判断该组织运行状况、刻画组织全貌等方面都有着重要作用,在情报咨询、商业调查、投资分析、打击非法组织等方面有着广泛的应用。现有的组织架构构建算法多是基于对单一数据源的分析,这种方法的缺陷在于很难刻画出目标组织的架构全貌。针对以上问题,本文提出了课题研究目标,即构建出一个基于多源数据的,包含信息采
近年来智慧教育获得快速发展,使得学习者可以获得丰富的学习资源以及自由的学习时间,也使平台积累了海量的在线教学和学习数据,这些数据进一步被用于优化教学质量,从而受到广泛的关注。然而,当前在线教育平台仍然存在以下问题:(1)在线课程质量良莠不齐,评价标准亟需规范;(2)同类型课程数量众多,使得学习者难以区分不同课程之间的优劣,无法真正为学习者推荐个性化的课程资源。因此,在线教育亟需规范在线课程评价标准
随着人类科技水平与经济快速发展,人类社会城镇化进程逐渐加快,与此同时人类的心脏疾病的发病率也在逐年上升。目前广泛采用的12导联心电图通过采集人体胸前和肢端的心电信号生成心电图,12导联心电设备主要的缺点是覆盖的胸前点位数量少,并且没有背部电位缺少足够的敏感性和特异性,无法准确的描述分析一些复杂的心脏电生理活动。256导联心电采集是一种使用大量电极覆盖患者胸部和背部的采集方法,相比12导联其可以提供
计算机视觉中的深度目标检测技术是一项非常重要的技术,为了准确提取有价值的信息,对视频或图像中的物体进行定位和分类非常重要。然而,存在着一些问题,基于云的深度学习模型运行响应延迟较长,而且由于移动网络的不稳定性和有限的网络带宽,这些都会影响用户体验。同时,由于移动设备资源有限,深度学习模型对设备的算力和存储能力要求很高,不能直接部署在资源有限的移动设备上。因此如何将深度学习任务部署到边缘计算环境中是
医学概念编码是给临床医疗文本中的医学相关概念分配标准医学术语对应的编码。由于编码量大以及人工编码成本高效率低等原因,实现医学概念自动编码具有重要的研究意义和应用价值,因此本文开展了基于深度学习的医学概念自动编码方法的研究。目前基于深度学习的医学概念自动编码方法主要分为以下两类:一类是基于文本分类的医学概念自动编码方法,受分类标签空间影响,这类方法对于标准术语词典所含标准医学术语个数敏感;另一类是基
在农业生产中,植物病害是影响农作物最终产量和品质的一个关键因素,因此及时准确地检测出作物的病害情况,在农业领域意义重大。以往对于农田作物病害的检测十分依赖专业的植保人才,近年来,通过无人机进行数据的快速采集,之后再利用深度学习、数字图像处理等技术对图像进行病害识别的方案得到了越来越多的关注。本文针对在使用图像实例分割模型进行叶片级别的病害识别时需要进行大量标注的问题,提出了一种先通过叶片边缘将密集
近年来,我国人口老龄化趋势不断加速,老年人养老产业供需缺口持续扩大,养老服务种类繁多复杂,老年人对智能化的养老方式的需求难以满足,而物联网技术的蓬勃发展、物联网应用的大规模出现给智慧养老提供了新方案,但具体应用下物联网设备冗多繁杂、异构化,缺乏可配置、可扩展的统一接入方案,养老智能场景缺乏用户开发能力,难以满足老年人自定义需求。本文针对以上问题,研究物联网技术在智慧养老领域的应用。本文首先研究了基