[发明专利]一种基于抽象语法树通路上下文的程序代码相似性度量方法在审
申请号: | 202110642424.8 | 申请日: | 2021-06-09 |
公开(公告)号: | CN113434145A | 公开(公告)日: | 2021-09-24 |
发明(设计)人: | 江波;张挺;匡新 | 申请(专利权)人: | 华东师范大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06Q50/20 |
代理公司: | 上海德禾翰通律师事务所 31319 | 代理人: | 夏思秋 |
地址: | 200241 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 抽象 语法 通路 上下文 程序代码 相似性 度量 方法 | ||
本发明公开了一种基于抽象语法树通路上下文的代码相似性度量方法,所述方法具体包括以下步骤:对程序代码片段进行解析,得到相应的抽象语法树;对上述获得的抽象语法树进行遍历,提取抽象语法树终端节点之间的通路上下文的编码:对上述获得的抽象语法树终端节点之间的通路进行编码,实现向量化代码片段的相似性度量:将上述获得的代码向量,用余弦相似性进行代码的相似性比较。本发明方法可面向Python、Java等语言,基于抽象语法树通路上下文的代码相似性度量方法,解决了目前存在的缺乏兼顾程序代码的结构与语义两方面的程序表示技术的问题。
技术领域
本发明属于智能教辅系统中的程序表示技术领域,涉及一种基于抽象语法树通路上下文的程序代码相似性度量方法。
背景技术
智能教辅系统(Intelligent Tutoring System,ITS)是通过基于人工智能的理论和技术来模拟真实的教学过程,使得计算机能够部分替代教师为学习者提供教学和辅导功能的系统。在面向编程的ITS中,学习者在编码过程中常常会遇到各种问题,对于初学者来说,通常情况下,他们是无法自己解决在编程中出现的问题,因此在编码时需要实时向他们提供有用的提示。程序自动提示生成的前提是对程序代码有过分析,由于程序具有很强的结构性,上下文之间的依赖间隔可能会很长,并且代码段中包含了自定义标识符,因此程序的表示至关重要。然而,基于序列的表示方法实现简单快捷,但是忽略了程序的结构特性;基于结构的表示方法解决了基于序列的方法的缺陷,但是最终模型的复杂程度巨大;基于执行过程的方法可以方便了解程序的执行过程。目前缺乏兼顾程序代码的结构与语义两方面的程序表示技术。
发明内容
为了解决现有技术存在的不足,本发明的目的是提供一种基于抽象语法树通路上下文的程序代码相似性度量方法。该方法可以面向python、java等程序语言,利用程序的底层表示技术—抽象语法树来表征程序,并从抽象语法树中提取终端节点到终端节点的通路(path),通过编码向量化,获取向量表示,使用基于抽象语法树通路上下文的程序表示方法,这样的表示方法兼顾程序代码的结构与语义两方面内容,接着将获取到的通路经过数值化,通过神经网络学习程序的向量表示,利用余弦相似性对程序进行相似性比较。
本发明提出了一种基于抽象语法树通路上下文的代码相似性度量方法,所述方法包括如下步骤:
步骤一、构建抽象语法树:对程序代码片段进行解析,得到相应的抽象语法树;
步骤二、遍历抽象语法树:对步骤一中获得的抽象语法树进行遍历,提取抽象语法树终端节点之间的通路;
步骤三、通路上下文的编码:对步骤二获得的抽象语法树终端节点之间的通路进行编码,实现向量化;
步骤四、代码片段的相似性度量:将步骤三中编码后的代码向量,用余弦相似性进行代码的相似性比较。
所述步骤一具体为:源代码首先经过lib-0.5.jar架包解析生成抽象语法树asts.csv、节点类型node_types.csv和词素tokens.csv这三个文件,在命令行加入—storagedot后,会生成关于抽象语法树的dot文件和描述程序代码的文件description.csv,获得所需要的抽象语法树。
所述步骤二具体为:从语义上讲,单条抽象语法树路径表示代码的两个具体元素逻辑连接,比如常量与变量、常量与运算符或者是变量和运算符之间的连接;根据抽象语法树的规模大小,提取抽象语法树中一条或多条通路,当多条通路组合起来,表示整棵树,以此有效地获取代码片段的语义;本发明利用lib-0.5.jar架包,并且对通路进行长度和宽度的限制,控制抽象语法树通路数量,遍历抽象语法树,得到抽象语法树通路上下文,生成node_types.csv、tokens.csv、paths.csv和path_contexts.csv这四个文件。
步骤三中,所述通路的编码方法基于词表形式,所述词表包括词素标识符、节点类型标识符、通路标识符和通路上下文标识符。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华东师范大学,未经华东师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110642424.8/2.html,转载请声明来源钻瓜专利网。