[发明专利]一种基于电力信息系统代码文件的相似度检测方法及系统有效
申请号: | 201910593863.7 | 申请日: | 2019-07-03 |
公开(公告)号: | CN110471835B | 公开(公告)日: | 2022-07-19 |
发明(设计)人: | 钱琳;俞俊;朱广新;庞恒茂;任晓龙;胡鑫;许明杰;王琳;梅竹;陈海洋 | 申请(专利权)人: | 南瑞集团有限公司;国电南瑞科技股份有限公司;国网陕西省电力公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F40/194;G06F40/284;G06F40/30;G06K9/62 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 王恒静 |
地址: | 211106 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 电力 信息系统 代码 文件 相似 检测 方法 系统 | ||
1.一种基于电力信息系统代码文件的相似度检测方法,其特征在于,该方法包括:
获取需要判别相似度的第一代码文件和第二代码文件,预处理后分别得到第一文本和第二文本;
根据所述第一文本中单词的TF-IDF值得到所述第一文本语义词向量,根据所述第二文本中每个单词的TF-IDF值得到所述第二文本语义词向量;
从所述第一文本和第二文本的函数调用入口开始,分别寻找所述第一文本和第二文本的函数调用树结构,并计算得到第一文本结构向量和第二文本结构向量;
将第一文本语义词向量和所述第二文本语义词向量取并集后,计算第一中间语义词向量和第二中间语义向量,将所述第一文本结构向量和第二文本结构向量取并集后,计算第一中间结构向量和第二中间结构向量;
采用余弦相似度算法根据第一中间语义词向量和第二中间语义向量计算所述第一文本和第二文本对应的语义相似度,采用余弦相似度算法根据第一中间结构向量和第二中间结构向量计算所述第一文本和第二文本对应的结构相似度,进而得到所述第一文本和第二文本的相似度。
2.根据权利要求1所述的基于电力信息系统代码文件的相似度检测方法,其特征在于,所述从所述第一文本和第二文本的函数调用入口开始,分别寻找所述第一文本和第二文本的函数调用树结构,包括以下步骤:
读取第一文本和第二文本中的代码,调用代码预处理函数分别对所述第一文本和第二文本进行预处理;
分别对预处理后的第一文本和第二文本采用层序遍历的方式从函数调用入口进行遍历,所述函数调用入口作为所述函数调用树的根节点,并按行寻找上一层函数调用的函数,将新调用的函数作为父函数节点的儿子节点,直到返回所述函数;
分别获取所述第一文本和第二文本的函数调用树结构,并按层为每个节点编号。
3.根据权利要求2所述的基于电力信息系统代码文件的相似度检测方法,其特征在于,所述调用代码预处理函数分别对所述第一文本和第二文本进行预处理,包括:
首先,将第一文本和第二文本中的注释字符设定为不同状态,其次,分别遍历第一文本和第二文本,遍历过程中,将代码字符转换为状态之间的变换,保留非注释状态下的字符,删除表示当前是注释状态字符下的字符,实现代码精简。
4.根据权利要求2所述的基于电力信息系统代码文件的相似度检测方法,其特征在于,所述计算得到第一文本结构向量和第二文本结构向量,具体步骤包括:
按深度优先的方式遍历所述第一文本的函数调用树,遍历到叶子结点就停止,记录从根节点到叶子结点的编号序列,直到所有叶子都遍历完成,得到编号序列集合,并将归一化后的结合作为第一文本结构向量;
按深度优先的方式遍历所述第二文本的函数调用树,遍历到叶子结点就停止,记录从根节点到叶子结点的编号序列,直到所有叶子都遍历完成,得到编号序列集合,并将归一化后的结合作为第二文本结构向量。
5.根据权利要求4所述的基于电力信息系统代码文件的相似度检测方法,其特征在于,所述归一化的过程为:若编号序列集合中不存在同一个节点分叉多个编号序列,则表示为Seqm,其中,m为所述编号序列中编号的个数;若存在同一个节点分叉多个编号序列,则表示为Seqmn,其中,n为多个编号序列同时分叉时对应的节点编号。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南瑞集团有限公司;国电南瑞科技股份有限公司;国网陕西省电力公司,未经南瑞集团有限公司;国电南瑞科技股份有限公司;国网陕西省电力公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910593863.7/1.html,转载请声明来源钻瓜专利网。