【成果推介】一种基于关系图卷积网络的深度代码搜索方法
【成果推介】一种基于关系图卷积网络的深度代码搜索方法
【应用行业】互联网
【技术领域】计算机技术
【知识产权】发明专利
【成果完成单位】华中师范大学
【成果完成人姓名】谢琦、周光有
【完成人团队简介】团队主要研究自然语言处理、知识图谱、信息检索、智能教育等。
【成果完成时间】2022-10-18
【专利号】CN2022112704787
【授权日期】2024-03-12
【技术成熟度】研发阶段
【应用背景】近年来,代码仓库如Github、Gitee和Bitbucket中的开源项目呈井喷式增长,优质的代码资源数量变得非常庞大,如何准确高效地从代码仓库中搜索出符合程序员需求的代码,是当前软件工程和自然语言处理交叉领域的热点研究方向之一。给定一个查询语句(即人类自然语言),代码搜索的目标是从大型代码库中找到最匹配的代码片段。代码搜索工具不仅可以帮助程序开发人员找到常见程序功能的代码范例,也可以帮助他们快速搜索其他开发者编写的个性化功能的优质代码片段,这在很大程度上提高了程序开发人员的工作效率。此外,代码搜索技术现已成为程序合成、代码推荐与补全以及代码风格改善等程序构造技术的重要支撑。
传统的代码搜索方法通常将源代码视为文本文档,利用信息检索(IR)模型检索与给定查询匹配的相关代码片段。这些方法主要依赖于源代码和自然语言查询之间的文本相似性,这样的搜索经常导致错误匹配,得不到想要的结果。CODEnn方法应用深度学习技术表征自然语言和程序片段,但是忽视了代码片段的结构信息。GraphSearchNet模型是一种基于图神经网络的代码搜索模型。GraphSearchNet将源代码和查询文本分别编码成两个图,用双向门控图神经网络来捕捉代码片段和查询文本的局部结构信息,并通过多头注意力机制解决全局依赖性问题来提高模型的学习能力。
尽管GraphSearchNet能够有效刻画代码片段和自然语言描述的深层结构信息,但还存在以下不足:
代码片段和自然语言描述是两种截然不同模态的数据,语法规则和语言结构的不同导致了语义映射的困难,所以细粒度匹配对跨模态数据的搜索至关重要。GraphSearchNet没有对代码图和文本图的节点做任何交互匹配操作,缺乏细粒度对齐的数据导致搜索精度不够高。
全局视角下一对图的图级交互特征可能是学习图相似性的重要补充组件。GraphSearchNet没有进一步对代码和文本的全局信息进行比较和匹配,忽视全局匹配的模型可能会因为丢失图级交互特征不能捕捉到代码和文本的全局关系。
【成果简介】本成果提出了一种基于关系图卷积网络的深度代码搜索方法,其包括以下步骤:引入多个代码片段以及对应的多个代码注释;预处理每个代码片段和筛选对应每个注释;构建得到每个预处理后代码片段的代码图和每个对应注释的文本图;将每个代码图和每个文本图通过图深度学习扩展分别计算得到每个代码图的向量和每个文本图的向量;五、输入每个代码图的向量及对应每个文本图的向量,训练得到参数优化后的代码注释匹配相似度深度搜索神经网络;六、面对实时输入的查询文本,优化后代码注释匹配相似度深度搜索神经网络预测每个候选代码片段的分数,返回相似度最高的代码片段。本成果优点在于能够捕捉文本和代码片段的细粒度匹配关系和全局互动关系。
【成果图片】
【联系方式】段治国、安红高、刘树楠、吴涛,02767868068,02767868067,02767862769