首页 / 专利库 / 软件 / 软件工程 / 一种基于嵌入表示的移动应用回调分析研究方法

一种基于嵌入表示的移动应用回调分析研究方法

阅读:157发布:2020-05-11

专利汇可以提供一种基于嵌入表示的移动应用回调分析研究方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于嵌入表示的移动应用回调分析研究方法,该方法与传统代码分析技术和建模方法不同,提出利用智能化表示方法,对移动应用的回调结构以及相关代码进行上下文敏感的深度向量表示,进而基于嵌入式向量和分析结果进行相似度等新特性分析,并在此 基础 上,研究向量表示与这些特性的关系,进而进行 可视化 ,从全新 角 度弥补传统回调分析方法在量化分析方面的不足。本发明的这种基于嵌入表示的移动应用回调分析研究方法,对 软件 工程领域近年来在代码向量表示及其应用方面的相关方法进行理解分析和实验尝试,对移动应用回调函数所面临的新问题,创造性的提出新的分析手段和解决方法,并在理论和实验方面验证其正确性和有效性。,下面是一种基于嵌入表示的移动应用回调分析研究方法专利的具体信息内容。

1.一种基于嵌入表示的移动应用回调分析研究方法,其特征在于含有以下步骤:
步骤1、移动应用的源码数据集收集和预处理;
步骤2、基于源码数据集,定义回调函数序列提取方法;
步骤3、根据提取的回调函数序列,定义中间抽象以及词嵌入向量方法;
步骤4、基于向量表示进行多粒度回调函数的相似性分析;
步骤5、基于向量表示进行回调向量距离及逻辑类比分析;
步骤6、基于向量表示进行回调函数与普通API节点的差异性分析。
2.根据权利要求1所述的基于嵌入表示的移动应用回调分析研究方法,其特征在于:步骤1所述的移动应用的源码数据集收集和预处理,具体是指收集大量移动应用源码作为模型训练数据集,收集过程分为两个渠道,开源应用收集和第三方市场apk文件的收集,其中开源应用是在公开的开源移动应用发布平台,即FDroid和Fossdroid进行收集的;第三方市场的应用源码可以通过对应用市场所发布的Android应用apk文件进行反编译得到。
3.根据权利要求1所述的基于嵌入表示的移动应用回调分析研究方法,其特征在于:步骤2所述的基于源码数据集,定义回调函数序列提取方法,具体是指对所获取的移动应用源码进行回调函数实体的自动化识别和提取,首先将步骤1的代码用抽象语法树转化为AST节点,即一种基于代码语法结构的抽象表示方法;然后通过构建回调函数序列图CBS-Graph来模拟特定的移动应用中回调函数的运行,由辅助的虚拟节点和直接相连的边的集合组成回调函数序列图CBS-Graph,对于有生命周期的回调函数,用消除策略来处理未执行生命周期的回调函数,即用一个组件的完全生命周期图来初始化CBS-Graph,然后去除每个隐藏的辅助的虚拟节点,并为每个辅助的虚拟节点的前驱后继对生成直接相连的边;对没有生命周期的回调函数,先设置两个辅助的虚拟节点,即开始节点和结束节点来标记活动区域,然后将所有没有生命周期的回调函数放入这个活动区域并在每对间生成两个直接相连的边,再从开始节点到所有没有生命周期的回调函数,与从没有生命周期的回调函到结束节点生成直接相连的边;对于跳转,将组件的开始和结束状态分别用两个辅助的虚拟节点,即组件的开始节点和组件的结束节点表示,然后对每个跳转,从源组件中的组件的结束节点到目标组件中的每个组件的开始节点生成一个直接相连的边;为了获取回调函数序列样本,采用随机游走算法,即向沿着回调函数的路径添加了合理的权重,用由上一个和下一个状态的辅助的虚拟节点之间的最短距离计算出的权重与标准化常亮的比值表示当前路径,以获得足够多的回调函数而不陷入局部循环,从而实现回调函数元素在控制流序列上的提取工作,保存了上下文语义和序列关系。
4.根据权利要求1所述的基于嵌入表示的移动应用回调分析研究方法,其特征在于:步骤3所述的根据提取的回调函数序列,定义中间抽象以及词嵌入向量方法,具体是指对所提取的回调函数以及相关代码元素进行中间形式的抽象表征,设计抽象规则,为了使得该中间抽象能够有效支持后续词向量表示的学习训练,该代码中间抽象能够全面表达回调语句的主体和对应的逻辑关系;
所述的词嵌入向量方法,具体是指将得到的中间抽象形式进行上下文语义和序列相关的数值化向量表示,首先将步骤2中提取出的所有移动应用数据集的回调函数序列通过步骤3处理后的中间抽象词作为语料库,将每一个method的回调函数序列的中间抽象作为一个sentence;然后将一个目标序列节点ci,如一个回调函数节点,通过一个非线性激活函数sigmoid函数表示为两个部分的融合,第一部分是回调函数向量,第二部分是回调函数的各个内部向量的和,如回调函数的各个内部向量的和为vi,j,vi,j的计算方法是将回调函数向量和代码向量进行点乘,具体计算公式如下:
vi,j=σ(Wv,∈(cbi))⊙∈(coi,j))
其中:cbi表示回调函数向量的集合,coi,j表示回调函数内部代码向量的集合;
然后,将回调函数向量ci和回调函数内部AST节点vi,j带入词向量嵌入模型——Skip-Gram模型,模型的损失函数表示为Skip-Gram模型的回调函数序列级别的损失和回调函数内部级别的损失这两部分的和;再将回调函数向量ci与内部AST节点vi,j喂入skip-gram模型进行训练,其中损失函数是回调函数序列层级和回调函数内部层级两部分的skip-gram的损失和;最后由公式得出回调函数序列节点和内部节点的预测概率,词向量的数值关系可以反映上下文语义关系以及函数实体的出现序列关系。
5.根据权利要求1所述的一种基于嵌入表示的移动应用回调分析研究方法,其特征在于步骤4所述的基于向量表示进行多粒度回调函数的相似性分析,具体是指相似度分析主要考虑回调函数实体向量表示的数值相似度及其多粒度解释含义,和有生命周期的回调函数和无生命周期的回调函数在嵌入中表现的差异性,首先用一个匹配程序从整个节点词汇表中选择回调函数子集,然后进行相似对的统计,根据统计从在同一组件中的共现频率和回调函数类型两个度分析上下文语义;回调函数节点的相似对通过其嵌入向量的欧氏距离与设定的阈值的比较得到,通过计算前100个相似对在相同组件中的共现频率,即包含回调函数不同组件的数量的比值,得到回调函数共现与向量相似度的关系。
6.根据权利要求1所述的一种基于嵌入表示的移动应用回调分析研究方法,其特征在于步骤5所述的基于向量表示进行回调向量距离及逻辑类比分析,具体是指研究相似的回调向量差值是否反映了相似的实体关系,首先手动选择相同函数下的113个回调函数对,并根据Android SDK文档中的对每个回调函数的描述分为8组,在每组内为其它对随机选择标准对,选取组内某个回调函数节点b1,并预测另一个节点,如果预测列表的前3个中出现正确的回调函数节点,则得到一个命中结果最终统计结果命中率,总体的命中率是总体预测结果中命中数量的比值。
7.根据权利要求1所述的一种基于嵌入表示的移动应用回调分析研究方法,其特征在于步骤6所述的基于向量表示进行回调函数与普通API节点的差异性分析,具体是指两种词嵌入方法在处理AST节点和回调函数的嵌入与api节点的嵌入是否有明显的差异性,Callback2Vec通过合并回调函数层级和AST节点层级的损失函数来处理移动应用的嵌入,对比方法FSG将回调函数和AST节点处理为相同类型的输入,通过两个角度的分析来研究两种词嵌入方法在处理回调函数嵌入和api节点嵌入是否有明显区别,第一个角度是涉及到普通api的重新学习相似性和逻辑类比,首先计算由两种词嵌入方法分别产生的前100个api相似对和100个相似度最低的对的共现频率,然后选出120个类比对,并分成14组,对其进行api节点的类比分析,第二个角度是研究回调函数嵌入向量和api节点嵌入向量的差异性,对两种类型的节点做二分类,得到ROC与可视化结果。

说明书全文

一种基于嵌入表示的移动应用回调分析研究方法

技术领域

[0001] 本发明属于移动应用回调分析研究的技术领域,具体涉及一种基于嵌入表示的移动应用回调分析研究方法。

背景技术

[0002] 当前移动设备已经成为人们生活必不可少的一部分。为了满足人们日益增长的应用需求,移动设备上的应用层出不穷。事件驱动和回调机制是移动应用软件的基本特征,基于事件驱动和回调机制的研究是各类相关分析工作的基础和关键,相关研究工作均需要对目标应用进行不同程度的回调机制分析来完成。
[0003] 面向回调函数的分析工作作为移动应用代码分析的关键,吸引了众多相关研究,其中包括:(1)GUI层面的回调建模。俄亥俄州立大学的Atanas教授团队进行了细粒度的GUI回调以及生命周期回调建模,该建模过程采用静态的代码分析来处理上下文敏感的回调注册情况。爱荷华大学的WeiLe等人在考虑GUI建模的同时,还对API的调用关系进行处理,提出了预测回调摘要的概念。(2)回调相关的控制流和数据流分析。其中较为典型的是Patrick McDaniel和Eric Bodden教授的联合研究团队所实现的信息泄露静态检测工具FlowDroid,该工具在对应用代码的上下文、关键对象数据流以及生命周期回调函数进行了细致地建模和追踪。(3)组件间的回调连接和数据流传播分析。Bodden等人较早面向组件间通信传播进行相关研究,提出了Epicc,一种组件间通信的过程间映射模型,根据代码逻辑将Android应用的不同组件相连。(4)基于应用场景的回调分析。Mingyuan Xia等人提出了移动应用的动静审计概念,在此场景下首先利用静态分析技术建立扩展的调用图。Li等人构建了包依赖图获取恶意代码片段,并对应用代码进行分段建模,提取相应特征进行恶意片段分类。宾夕法尼亚大学的Chen等人为了得到精确且可扩展的应用代码克隆检测方案,建立了代码片段及函数之间的依赖关系模型Cendroid,该模型融合了包依赖图和控制流图的优势。
[0004] 近年来,智能软件分析技术的兴起,为人们在软件分析问题上提供了新的解决思路,一些工作将人工智能机器学习技术引入软件分析领域,开拓了新的分析视觉,取得了一些令人瞩目的成果。其中,利用智能化表示方法,将软件代码数据转化为可学习的向量表示,继而进行深度分析和预测,成为当前一项研究热点。例如,文献Understanding Programs Through Embedded Abstracted Symbolic Traces利用Word2Vec词嵌入表示技术对符号执行之后的代码语句进行向量表示,而后深度分析了代码相似性、缺陷检测等问题;文献ExploringAPI embedding for API usages and applications则是从API的视,利用Word2Vec技术对代码API的中间表示进行词嵌入向量化,而后研究API相似性、API移植等相关问题。此类无监督的向量化表示能够定量反映研究目标的上下文语义等信息,帮助完成传统分析方法难以涉及的分析工作。
[0005] 虽然现有工作在代码的嵌入方面做了很多探索,但目前尚未出现专关于移动应用,特别是针对其回调函数的词嵌入表示相关研究。本发明基于现有的研究基础提出了一种基于嵌入表示的移动应用回调分析研究方法。

发明内容

[0006] 本发明提出利用智能化表示方法,对移动应用的回调结构以及相关代码进行上下文敏感的深度向量表示,进而基于嵌入式向量和分析结果进行相似度分析等新特性分析。
[0007] 本发明提供的基于嵌入表示的移动应用回调分析研究方法包括以下步骤:
[0008] 步骤1、移动应用的源码数据集收集和预处理;
[0009] 步骤2、基于源码数据集,定义回调函数序列提取方法;
[0010] 步骤3、根据提取的回调函数序列,定义中间抽象以及词嵌入向量方法;
[0011] 步骤4、基于向量表示进行细粒度回调函数的相似性分析;
[0012] 步骤5、基于向量表示进行回调向量距离及逻辑类比分析;
[0013] 步骤6、基于向量表示进行回调函数节点与普通API节点的差异性分析。
[0014] 本发明的具体设计实现如下:
[0015] 1.步骤1所述的移动应用源码数据集收集和预处理,具体是指收集大量移动应用源码作为模型训练数据集,收集过程分为两个渠道,开源应用收集和第三方市场apk文件的收集。其中开源应用是在公开的开源移动应用发布平台,即FDroid和Fossdroid进行收集的;第三方市场的应用源码可以通过对应用市场所发布的Android应用apk文件进行反编译得到。
[0016] 2.步骤2所述的基于源码数据集,定义回调函数序列提取方法,具体是指对所获取的移动应用源码进行回调函数实体的自动化识别和提取。首先,为了方便步骤3的词嵌入向量,将步骤1的代码用抽象语法树转化为AST节点,即一种基于代码语法结构的抽象表示方法;其次,由于事件驱动的性质,Android应用的回调函数的执行是无序的,通过构建回调函数序列图CBS-Graph来模拟特定的移动应用中回调函数的运行,由辅助的虚拟节点和直接相连的边s的集合组成回调函数序列图CBS-Graph,捕捉了回调函数层级上的上下文语义;对于有生命周期的回调函数,用消除策略来处理未执行生命周期的回调函数,即用一个组件的完全生命周期图来初始化CBS-Graph,然后去除每个隐藏的辅助的虚拟节点,并为每个辅助的虚拟节点的前驱后继对生成直接相连的边;对没有生命周期的回调函数,先设置两个辅助的虚拟节点,即开始节点和结束节点来标记活动区域,然后将所有没有生命周期的回调函数放入这个活动区域并在每对间生成两个直接相连的边s,再从开始节点到所有没有生命周期的回调函,与从没有生命周期的回调函到结束节点生成直接相连的边s;对于跳转,将组件的开始和结束状态分别用两个辅助的虚拟节点,即组件的开始节点和组件的结束节点表示,然后对每个跳转,从源组件中的组件的结束节点到目标组件中的每个组件的开始节点生成一个直接相连的边。
[0017] 为了获取回调函数序列样本,本发明创造性地提出了随机游走算法,即向沿着回调函数的路径添加了合理的权重,用由上一个和下一个状态的辅助的虚拟节点之间的最短距离计算出的权重与标准化常亮的比值表示当前路径,以获得足够多的回调函数而不陷入局部循环,具体计算公式为
[0018]
[0019] 其中si和si-1分别表示第i和i-1次游走状态, v和v’分别表示上一个、当前和下一个状态的辅助的虚拟节点,Zv表示正规化常数, 表示沿着节点 和v’之间的最短距离dvv’计算的游走可能性的权重。
[0020] 3.步骤3所述的根据提取的回调函数序列,定义中间抽象,具体是指对所提取的回调函数以及相关代码元素进行中间形式的抽象表征,设计抽象规则。为了使得该中间抽象能够有效支持后续词向量表示的学习训练,该代码中间抽象能够全面表达回调语句的主体和对应的逻辑关系,在发明中对于回调函数序列,将其返回值类型、函数名、参数列表进行了标准化定义,对于参数列表只保存其参数的类型,去掉参数名,对于左右括号也进行了定义。
[0021] 词嵌入向量方法,具体是指将得到的中间抽象形式进行上下文语义和序列相关的数值化向量表示。具体是首先将步骤2中提取出的所有移动应用数据集的回调函数序列通过步骤3处理后的中间抽象词作为语料库,将每一个method的回调函数序列的中间抽象作为一个sentence;然后将一个目标序列节点ci,如一个回调函数节点,通过一个非线性激活函数sigmoid函数表示为两个部分的融合,第一部分是回调函数向量(用cbi表示回调函数向量的集合),第二部分是回调函数的各个内部向量的和,如回调函数的各个内部向量的和为vi,j,vi,j的计算方法是将回调函数向量和代码向量(用coi,j表示回调函数内部代码向量的集合)进行点乘,具体计算公式为:
[0022]
[0023] vi,j=σ(Wv,∈(cbi))⊙∈(coi,j))
[0024]
[0025]
[0026]
[0027] 然后,将回调函数向量ci和回调函数内部AST节点vi,j带入词向量嵌入模型——Skip-Gram模型,模型的损失函数表示为Skip-Gram模型的回调函数序列级别的损失和回调函数内部级别的损失这两部分的和,具体计算公式如上式所示,其中C代表回调函数虚拟节点的集合,|C|表示回调函数虚拟节点的数量,Wc与Wv是相关权重集合,维度分别为d*|C|和d*|Ci|,d是嵌入向量的维度。
[0028] 最终形成嵌入模型Callback2Vec,既捕捉了回调函数序列的上下文语义,又保留了回调函数中代码流的结构。
[0029] 4.步骤4所述的基于向量表示进行多粒度回调函数的相似性分析,具体是指相似度分析主考虑回调函数实体向量表示的数值相似度及其细粒度解释含义,和有生命周期的回调函数和无生命周期的回调函数在嵌入中表现的差异性。首先用一个匹配程序从整个节点词汇表中选择回调函数子集,然后进行相似对的统计,根据统计从在同一组件中的共现频率和回调函数类型两个角度分析上下文语义。回调函数节点的相似对通过其嵌入向量的欧氏距离与设定的阈值的比较得到,通过计算前100个相似对在相同组件中的共现频率,即包含回调函数不同组件的数量的比值,得到回调函数共现与向量相似度的关系,具体实验结果如表1所示,
[0030] 表1:回调函数相似对分析结果
[0031] Embedding #SameT #Lc #Nlc #Total #FreT #FreLCallback2Vec 1414 62 1352 1634 0.412 0.008
FSG 1391 50 1341 2228 0.396 0.013
[0032] 其中我们的对比方法FSG(flat Skip Gram)表示用Skip Gram的不考虑回调函数序列的嵌入方法,在本发明的嵌入学习中与Callback2Vec用相同的模型环境。
[0033] 为了研究有生命周期的回调函数和无生命周期的回调函数在嵌入中表现的差异性,对两种回调函数做二分类,ROC与可视化结果见附图2,其中(a)图是两种方法的ROC,即接受者操作特性曲线,横坐标是假阳性率(False Positive Rate),纵坐标是真阳性率(True Positive Rate),Callback2Vec方法的AUC(Area Under Roc Curve),即ROC曲线下的面积,为0.837,而FSG方法的AUC只有0.718;(b)图是用Callback2Vec方法得到的有生命周期回调函数和无生命周期回调函数向量可视化结果,可以看出两种回调函数基本上被区别开来了;(c)图是FSG方法得到的有生命周期回调函数和无生命周期回调函数向量可视化结果,可以看出两者在一部分区域是零散分布、无法区别开来的。
[0034] 5.步骤5所述的基于向量表示进行回调向量距离及逻辑类比分析,具体是指研究相似的回调向量差值是否反映了相似的实体关系。首先手动选择相同函数下的113个回调函数对,并根据Android SDK文档中的对每个回调函数的描述分为8组。在每组内为其它对随机选择标准对,选取组内某个回调函数节点b1,并预测另一个节点,具体公式为:
[0035]
[0036] 如果预测列表的前3个中出现正确的回调函数节点,则得到一个命中结果最终统计结果命中率。总体的命中率是总体预测结果中命中数量的比值,具体结果如表2所示,[0037] 表2:回调向量距离及逻辑类比分析结果
[0038]
[0039] 其中#TC表示总个数,#Acc-C2V和#Acc-FSG分别表示Callback2Vec和FSG的准确率。
[0040] 6.步骤6所述的基于向量表示进行回调函数与普通API节点的差异性分析,具体是指两种词嵌入方法在处理AST节点和回调函数的嵌入与api节点的嵌入是否有明显的差异性。Callback2Vec通过合并回调函数层级和AST节点层级的损失函数来处理移动应用的嵌入,而FSG(flat Skip Gram)将回调函数和AST节点处理为相同类型的输入,本发明通过两个角度的分析来研究两种词嵌入方法在处理回调函数嵌入和api节点嵌入是否有明显区别。第一个角度是涉及到普通api的重新学习相似性和逻辑类比。首先计算由两种词嵌入方法分别产生的前100个api相似对和100个相似度最低的对的共现频率,然后选出120个类比对,并分成14组,对其进行api节点的类比分析,相似性分析中的共现频率和类比分析的平均命中率如表3所示,
[0041] 表3:API节点类比分析结果
[0042]Embedding #AvgFre(Sim) #AvgFre(Non-sim) #HitRate
Callback2Vec 0.17 0.013 0.779
FSG 0.226 0.027 0.745
[0043] 第二个角度是研究回调函数嵌入向量和api节点嵌入向量的差异性,其中(a)图是两种方法的ROC,即接受者操作特性曲线,横坐标是假阳性率(False Positive Rate),纵坐标是真阳性率(True Positive Rate),Callback2Vec方法的AUC(Area Under Roc Curve),即ROC曲线下的面积,为0.855,而FSG方法的AUC只有0.735;(b)图是用Callback2Vec方法得到的回调函数嵌入向量和api节点向量的可视化结果,可以看出二者基本上被区别开来了;(c)图是FSG方法得到的回调函数嵌入向量和api节点向量可视化结果,可以看出两者在很大一部分区域是零散分布、无法区别开来的。
[0044] 本发明的优点和积极效果:
[0045] 本发明提出了一种基于嵌入表示的移动应用回调分析研究方法,对移动应用的回调函数以及相关代码逻辑进行深度向量表示,继而进行相似度等新特性分析,并在此基础上,研究向量表示与这些特性的关系,以及是否能够帮助进行回调层面的分析应用。通过研究这些回调相关的向量表示和基础特性,将机器学习等智能技术引入移动代码分析领域,回答了传统方法无法解决的回调函数层面的代码分析等问题,回答了传统方法无法回答的回调函数定量分析关键问题,开辟移动应用缺陷检测新视角,使得缺陷预测可以向着数值化、细粒度、语义相关等方向发展。

附图说明

[0046] 图1为本发明整体框架
[0047] 图2为不同回调函数类型的嵌入差异性比较结果
[0048] 图3为回调函数嵌入向量和api节点嵌入向量的差异性分析结果

具体实施方式

[0049] 下面结合附图和具体实施例对本发明技术方案做进一步的详细说明,以使本领域的技术人员可以更好的理解本发明并给予实施。
[0050] 步骤1、移动应用源码数据集的收集以及预处理
[0051] 根据本发明,移动应用源码数据集的收集主要有两种渠道,首先是在公开的开源移动应用发布平台FDroid和Fossdroid收集开源应用;其次是第三方应用市场所发布的Android应用apk文件;
[0052] 对于数据集的预处理,从FDroid和Fossdroid下载的是已经开源的数据集,不需要处理;从第三方应用市场收集的Android应用apk文件通过反编译得到其源码。
[0053] 步骤2、基于源码数据集,定义回调函数序列提取方法以及定义中间抽象[0054] 具体是指对所获取的移动应用源码进行回调函数实体的自动化识别和提取。先将代码用抽象语法树转化为AST节点,即一种基于代码语法结构的抽象表示方法;再通过构建回调函数序列图CBS-Graph来模拟特定的移动应用中回调函数的运行,由辅助的虚拟节点和直接相连的边s的集合组成回调函数序列图CBS-Graph,捕捉了回调函数层级上的上下文语义。通过随机游走算法获取回调函数序列样本,由于dvv’的值一定在0,1,2的范围内,本发明为不同的dvv’值设置了三条游走权重,即p1,p2和p3,因此向新节点还是旧节点的游走方向被概率控制。基于回调函数序列图CBS-Graph,实现了回调函数元素在控制流序列上的提取工作,保存了上下文语义和序列关系。
[0055] 步骤3、根据提取的回调函数序列以及中间抽象定义词嵌入向量方法[0056] 具体是指将得到的中间抽象形式进行上下文语义和序列相关的数值化向量表示,首先进行基于提取的中间抽象进行构建语料库,然后基于语料库进行将回调函数序列的中间抽象表示为向量,具体是将按照如下公式:
[0057]
[0058] 得到的回调函数序列表示为向量,具体的向量形式如下列式子:
[0059]
[0060] vi,j=σ(Wv,∈(cbi))⊙∈(coi,j))
[0061]
[0062]
[0063]
[0064] 步骤4、基于向量表示进行多粒度回调函数的相似度分析
[0065] 具体是指研究相似的回调向量差值是否反映了相似的实体关系以及有生命周期的回调函数和无生命周期的回调函数在嵌入中表现的差异性。由表1:
[0066] 表1:回调函数相似对分析结果
[0067]Embedding #SameT #Lc #Nlc #Total #FreT #FreL
Callback2Vec 1414 62 1352 1634 0.412 0.008
FSG 1391 50 1341 2228 0.396 0.013
[0068] 通过Callback2Vec和FSG,共获得1634和2228个相似对,属于相同回调函数类型的相似对数量分别为86.5%和62.4%,其中属于没有生命周期的回调函数的数量分别为82.7%和60.2%,可见两种嵌入方法的差异非常明显,回调函数序列在Callback2Vec中被捕捉,提供了属于相同类型回调函数的相对接近的上下文。两种嵌入方法中一些相似度最高对的共现频率分别为41.2%和39.6%,频率都比较高表示相似内容可能存在于不同的组件中,本发明计算了100个相似度最低的对(#FreL)的共现频率作为对比,在两种嵌入方法的结果只有0.8%和1.3%,表明了回调函数共现频率与嵌入相似度的高度相关性。由附图
2,在Callback2Vec中两种回调函数类型的界限更加明显,Callback2Vec的ACU值为0.837,远远高于FSG的0.718,即本发明的词嵌入向量方法在细粒度上模拟了回调函数的表现,区分了有生命周期的回调函数和无生命周期的回调函数。
[0069] 步骤5、基于向量表示进行回调向量距离分析
[0070] 具体是指研究相似的回调向量差值是否反映了相似的实体关系,以此进行回调实体的主题类比分析。首先手动选择相同函数下的113个回调函数对,并根据Android SDK文档中的对每个回调函数的描述分为8组。在每组内为其它对随机选择标准对,选取组内某个回调函数节点b1,并预测另一个节点,具体公式为:
[0071]
[0072] 如果预测列表的前3个中出现正确的回调函数节点,则得到一个命中结果最终统计结果命中率。总体的命中率是总体预测结果中命中数量的比值,具体结果如表2所示:
[0073] 表2:回调向量距离及逻辑类比分析结果
[0074]
[0075] Callback2Vec的命中率表现远好于FSG,Callback2Vec中类比结果与回调函数的功能与语义高度相关,也证明了随机游走算法和CBS-Graph构造的有效性。
[0076] 步骤6、基于向量表示进行回调函数与普通API节点的差异性分析具体是指回调函数的嵌入与api节点的嵌入是否有明显的差异性,分为两方面的分析。一方面由表3可见:
[0077] 表3:API节点类比分析结果
[0078] Embedding #AvgFre(Sim) #AvgFre(Non-sim) #HitRateCallback2Vec 0.17 0.013 0.779
FSG 0.226 0.027 0.745
[0079] Callback2Vec中前100个相似对的共现频率明显减少了,然而前100个相似对和相似性最低的100个对的频率差仍然明显,表示两种词嵌入向量方法都可以捕捉到api嵌入的上下文和位置的关系;另一方面由附图3可见,Callback2Vec比FSG更好地从回调函数节点中区分出api节点,因为Callback2Vec的层级结构将回调函数嵌入和AST节点嵌入处理为不用训练模型的不同层级,而FSG用统一的Word2Vec模型来训练两种不同类型的节点。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈