[发明专利]一种获取开源代码库中函数的向量的方法和系统有效
申请号: | 201710278759.X | 申请日: | 2017-04-25 |
公开(公告)号: | CN107102861B | 公开(公告)日: | 2019-09-03 |
发明(设计)人: | 李海峰;张文泽;邓敏 | 申请(专利权)人: | 中南大学 |
主分类号: | G06F8/70 | 分类号: | G06F8/70 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹 |
地址: | 410083 湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 获取 源代码 函数 向量 方法 系统 | ||
1.一种获取开源代码库中函数的向量的方法,其特征在于,包括:
S1、提取开源代码库中的函数调用图,所述函数调用图用于描述各函数间的调用关系;
S2、基于随机漫步模型,获得所述函数调用图中各函数的函数调用序列;以及
S3、将所述函数调用序列作为嵌入模型的输入项,获得各函数的向量;
所述步骤S2包括:
S2.1、将所述函数调用图中的起始函数作为函数调用序列的第一节点,设置函数调用序列的步长;
S2.2、基于第一节点与其他节点间的最短距离、权重、抽样参数、回溯参数,以及所述第一节点与其他节点是否属于节点边的结合,获得第一节点后的最短转移概率的节点,作为第二节点;以及
S2.3、基于第二节点与其他节点间的最短距离、权重、抽样参数、回溯参数以及第二节点与其他节点是否属于节点边的结合,获得第二节点后的最短转移概率的节点,作为第三节点,直至随机漫步的长度符合所述函数调用序列的步长,将所述步长的转移轨迹作为所述函数调用序列。
2.如权利要求1所述的获取开源代码库中函数的向量的方法,其特征在于,所述步骤S1包括:
基于文档生成工具,获得所述开源代码库的帮助信息文档,所述帮助信息文档中包括函数信息、函数调用图信息以及函数注释信息。
3.如权利要求2所述的获取开源代码库中函数的向量的方法,其特征在于,所述文档生成工具为Doxygen文档生成器。
4.如权利要求1所述的获取开源代码库中函数的向量的方法,其特征在于,所述步骤S3包括:
S3.1、将所述函数调用序列作为训练集,通过最大化所述训练集中的正样本的概率,同时最小化负样本概率,获取任意一个正样本的条件概率;
S3.2、基于任意一个正样本的条件概率、上下文窗口以及所述函数调用序列的步长,获得SGNS目标函数;以及
S3.3、将所述函数调用序列作为嵌入模型的输入项,通过最大化所述SGNS目标函数,将所述嵌入模型的输出作为各函数的向量表示。
5.一种获取开源代码库中函数的向量的系统,其特征在于,包括:
调用图模块,用于提取开源代码库中的函数调用图,所述函数调用图用于描述各函数间的调用关系;
调用序列模型,用于基于随机漫步模型,获得所述函数调用图中各函数的函数调用序列;以及
向量模块,用于将所述函数调用序列作为嵌入模型的输入项,获得各函数的向量;
所述调用序列模型,具体用于:
将所述函数调用图中的起始函数作为函数调用序列的第一节点,设置函数调用序列的步长;
基于第一节点与其他节点间的最短距离、权重、抽样参数、回溯参数,以及所述第一节点与其他节点是否属于节点边的结合,获得第一节点后的最短转移概率的节点,作为第二节点;以及
基于第二节点与其他节点间的最短距离、权重、抽样参数、回溯参数以及第二节点与其他节点是否属于节点边的结合,获得第二节点后的最短转移概率的节点,作为第三节点,直至随机漫步的长度符合所述函数调用序列的步长,将所述步长的转移轨迹作为所述函数调用序列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中南大学,未经中南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710278759.X/1.html,转载请声明来源钻瓜专利网。