说明:收录90万 73个行业的国家标准 支持批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210654436.7 (22)申请日 2022.06.10 (71)申请人 北京矩道优达网络科技有限公司 地址 100080 北京市海淀区上地 东路35号 院1号楼2层1-202-212 (72)发明人 杨博洋 傅得强 俞昊然  (74)专利代理 机构 北京世誉鑫诚专利代理有限 公司 11368 专利代理师 刘秀珍 (51)Int.Cl. G06F 40/194(2020.01) G06F 40/216(2020.01) G06F 40/253(2020.01) G06F 40/30(2020.01) G06F 8/41(2018.01) (54)发明名称 一种基于加权抽象语法树的代码抄袭检测 方法 (57)摘要 本发明提供的一种基于加权抽象语法树的 代码抄袭检测方法包括: 获取两份代码; WASTK通 过词法解析和语法解析生成所述两份代码各自 对应的抽象语法树, 获得两棵抽象语法树; 调整 所述抽象语 法树的结构; 采用TF ‑IDE技术给所述 抽象语法树上节点赋权值; 计算所述两棵抽象语 法树的树核函数; 根据所述树核函数进行数据标 准化及相似度计算。 根据每个代码段出现的频 率, 给代码抽象语法树上对应的节点赋予权重, 以达到区分代码段重要性的目的, 从而精确判定 两份代码的抽象语法树的相似度。 权利要求书2页 说明书8页 附图2页 CN 115062600 A 2022.09.16 CN 115062600 A 1.一种基于加权抽象语法树的代码抄袭检测方法, 其特 征在于, 所述检测方法包括: 获取两份代码; WASTK通过词法解析和语法解析生成所述两份代码各自对应的抽象语法树, 获得两棵 抽象语法树; 调整所述抽象语法树的结构; 采用TF‑IDE技术给所述抽象语法树上节点赋权值; 计算所述两棵抽象语法树的树核函数; 根据所述 树核函数进行 数据标准 化及相似度计算。 2.根据权利要求1所述的一种基于加权抽象语法树的代码抄袭检测方法, 其特征在于, 所述调整所述抽象语法树的结构具体包括: 对冗余节点进行处理, 以简化所述抽象语法树的结构, 并对节点存储的信息进行标准 化处理。 3.根据权利要求1所述的一种基于加权抽象语法树的代码抄袭检测方法, 其特征在于, 所述采用TF ‑IDE技术给所述抽象语法树上节点赋权值具体包括: 根据以节点为根的子树在整棵抽象语法树上出现的频率, 利用了信 息检索领域中常用 的TF‑IDF技术, 给每个节点赋予权值。 4.根据权利要求1所述的一种基于加权抽象语法树的代码抄袭检测方法, 其特征在于, 所述计算所述两棵抽象语法树的树核函数 具体包括: WASTK将对两棵调整后的抽象语法树进行树核函数的求 解; 树核函数是一种基于树结构的计算相似度的方法, 两棵抽象语法树T1和T2的相似度通 过计算树核函数值K(T1,T2)得到: 在求解函数C(s1,s2)时需要考虑每 个节点的权值; 求解函数C(s1,s2)的方法: 其中λtree是一个衰减参数; 随着树 的高度增长, 子树 的树核函数值将会受到( λtree)size 的影响, size是指子树的高度, wor ds表示的是中序遍历以节点s为根的子树上所有叶子结 点得到的代码片段; dist(a,b)表示两个字符串a和b的相似度, 具体定义如下: 其中leva,b是指字符串a和b的编辑距离(edit  distance); 函数max用于求出两个参数的最大值, 两个表达式之间的相似度不等于0, 而由表达式 之间的编辑距离决定; 加上两个字 符串a和b的相似度dist(a,b)后, 表达式级别的修改将会 被WASTK检测出来; 如果子树s1的根节点 不同于子树s2的根节点, 那么: C(s1,s2)=0权 利 要 求 书 1/2 页 2 CN 115062600 A 2否则如果子树s1和子树s2的根节点都是叶子结点, 那么: 否则就进行递归求 解: 其中ns(s)是指 子树s的根结点roots的孩子节点总个数, st(s,i)表示的是以节点roots 的第i个孩 子节点为根的子树; 在否则就进行递归求解的情况中, 由于子树s1和子树s2的根节点是相同的, 则 有ns(s1) =ns(s2)。 5.根据权利要求1所述的一种基于加权抽象语法树的代码抄袭检测方法, 其特征在于, 所述根据所述 树核函数进行 数据标准 化及相似度计算具体包括: 计算出两棵抽象语法树T1和T2的树核函数值K(T1,T2)后, 为了方便结果比较分析, 需要 对数据进行 标准化; 数据标准 化方法公式: 其中, K'(T1,T2)为两个向量h(T1)和h(T2)的余弦相似度, 结果在区间[0,1]内, 在ASTK和 WASTK里, K'(T1,T2)为两份代码的相似度, 相似度越接近0, 则表示两份代码的差异性越大, 反之相似度越接 近1, 则表示两份代码越相似。权 利 要 求 书 2/2 页 3 CN 115062600 A 3

.PDF文档 专利 一种基于加权抽象语法树的代码抄袭检测方法

文档预览
中文文档 13 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共13页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于加权抽象语法树的代码抄袭检测方法 第 1 页 专利 一种基于加权抽象语法树的代码抄袭检测方法 第 2 页 专利 一种基于加权抽象语法树的代码抄袭检测方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 14:07:27上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。