基于群智的开源代码标注与检索技术研究与实现

来源 :国防科技大学 | 被引量 : 0次 | 上传用户:bbs_zj
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着软件系统的日益庞大与复杂,软件开发中存在着大量的重复行为,这些行为存在于软件开发过程中的分析、设计、编码、测试等各个阶段,因此为了把软件开发的成本降低,提高软件的开发效率,我们需要进行不同层度的软件复用。而随着软件复用的不断发展,按照抽象程度可以分为代码复用、设计复用、分析复用以及测试复用这几个复用级别,而在这四类中,代码复用是软件开发过程中最常见的一种复用行为。与此同时,随着开源社区的不断发展,开源社区为我们进行软件复用提供了海量的资源,因此我们可以充分利用这些资源进行软件开发,提高开发效率,降低开发成本。而要能够在软件开发过程进行复用行为,我们就需要进行检索,通过检索,找到我们想要的复用资源;但由于自然语言与代码语言存在着巨大的语义鸿沟,导致目前已有的代码检索引擎效果普遍不佳,因此亟需一个快速、精准的代码检索引擎,帮助开发者快速的定位代码资源。本文立足于Github开源社区中的大量可复用代码资源,研究了两种检索算法并设计实现了一个基于群智的代码标注与检索原型系统:第一,在用户意图理解方面,我们提出了基于用户自然语言查询扩展的代码检索算法。我们首先通过机器学习训练出一个词向量模型,然后通过关键词提取,词性分析找出用户搜索的重点,之后通过对用户的查询关键词进行扩展,利用扩展后的用户查询语句去进行代码检索,提升代码检索的召回率和准确率。第二,在解决自然语言与代码语言语义鸿沟方面,我们提出了基于代码标注的代码检索算法。我们首先利用Codepedia平台收集与软件项目相关的高质量代码标注,然后将代码标注与代码片段关联起来,通过提取注释中的关键词与用户查询中的关键词进行匹配,理解用户意图,解决自然语言与代码语言的语义鸿沟,提高代码检索的召回率和准确率,然后利用Elastic Search搜索引擎提高代码检索的效率。第三,在平台方面,我们搭建了一个基于群智的代码检索复用系统。我的基于群智的代码检索复用是以众包的形式发放任务,让开发者及学生群体参加到平台的众包任务中来,在阅读优秀开源代码的同时为开源代码添加高质量的代码标注,为此我们设立了一系列完善的机制包括:用户引导机制,代码标注机制,用户反馈机制,用户激励机制等
其他文献
恶意软件是在计算机系统上执行恶意任务的程序。随着互联网技术的发展,恶意软件攻击的频率呈指数级增长,恶意攻击已成为威胁互联网安全的关键所在。恶意软件的检测方法对于防
我国民航旅客运输量在近年来不断攀升,这给机场航站楼的管理带来了巨大的压力。传统监控系统需要人工监测,非常耗时耗力,难以满足航站楼安全管理的需求。因此,智能监控技术的
随着全球经济一体化的发展,国家与国家之间的贸易量日益增长,国际航运业的发展越来越重要。因此,航运业受到人们的广泛关注。通过合理规划航线,使船舶按照预期航线航行,可以
航空发动机涡轮叶片作为发动机的核心零件,其性能的优劣直接影响着发动机的空气动力性能以及使用寿命。为了最有效的利用发动机叶片的性能以及降低叶片的制造成本,在发动机叶
在社交网络中,用户不仅充当信息的接收者,还充当信息的生产者和传播者。这使得信息可以在在线社交网络快速传播,以至于短时间内影响很多人。现如今,随着各大在线社交网络用户数量不断增加,在线社交越来越成为人们生活的一部分。在社交网络研究分析中,影响力最大化(Influence Maximization,IM)问题是其中一个非常热的研究方向。在现实生活中社交网络的IM问题具有重要的研究意义,通常被应用于病毒
乳化炸药是民爆行业中最受欢迎的炸药,它广泛用于各类工业爆破作业中,随着乳化炸药生产量的逐年增加,对它的质量要求也越来越高,质量的好坏直接体现在乳化炸药的稳定性上。乳
随着计算机技术的快速发展,图像识别技术也在不断的发展与完善。图像自动识别技术早已应用在了生产生活中的各个领域,将人从一些重复、机械的工作环境中解放出来,大大提高了
在控制领域中,高阶非线性系统的控制是许多科研工作者们关注的一个热门领域,该方向的研究已经走向多元化和交叉学科方向发展。本文主要研究了两类带有不确定性的高阶非线性系
安全监测是大坝管理的核心,也是不可或缺的一部分。若不对运行中的水库大坝进行周期性的检查和观测,不能够得到其运行状态的变化,不仅会使水电站的经济效益下降,还会影响库区
在数据挖掘领域,聚类算法因其具有简单、灵活、高效等优势,被广泛用于各种数据挖掘任务中。但当聚类数据不足时,传统聚类算法很难取得较好的聚类结果。随着机器学习技术的发