首页> 中国专利> 一种基于文本特征和图神经网络的跨应用界面分类方法

一种基于文本特征和图神经网络的跨应用界面分类方法

摘要

本发明公开了一种基于文本特征和图神经网络的跨应用界面分类方法,包括步骤:以特殊方式分析各个界面的XML文件,形成节点与边的关键词词典;对关键词词典进行词筛选,包括时间日期等在内;依据新的关键词词典,使用TF‑IDF形成点与边的特征;利用自定义的,使用边特征与注意力机制,结合GGNN与GAT的图神经网络,在跳转关系图中进行半监督学习,对界面进行场景分类。本方法在构建完成跳转关系图,完成界面截屏的场景标注的基础上,主要由基于文本特征的界面特征提取,基于文本特征的跳转特征提取,文本特征关键词筛选,对图神经网络中GGNN使用边特征的改造,结合图神经网络中GAT的注意力机制改进神经网络这五个部分组成。

著录项

  • 公开/公告号CN114942816A

    专利类型发明专利

  • 公开/公告日2022-08-26

    原文格式PDF

  • 申请/专利权人 南京大学;

    申请/专利号CN202210655378.X

  • 发明设计人 张天;潘敏学;朱峰熠;李贵银;

    申请日2022-06-10

  • 分类号G06F9/451(2018.01);G06F40/242(2020.01);G06K9/62(2022.01);G06N3/04(2006.01);G06N3/08(2006.01);

  • 代理机构南京知识律师事务所 32207;

  • 代理人张苏沛

  • 地址 210093 江苏省南京市鼓楼区汉口路22号

  • 入库时间 2023-06-19 16:31:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-09-05

    授权

    发明专利权授予

  • 2022-09-13

    实质审查的生效 IPC(主分类):G06F 9/451 专利申请号:202210655378X 申请日:20220610

    实质审查的生效

说明书

技术领域

本发明涉及软件工程领域和神经网络领域,特别涉及一种基于文本特征和图神经网络的跨应用界面分类方法。

背景技术

对于软件测试工程师来说,如何对新开发的软件,或是新版本的软件进行充分的测试,是一个非常重要的问题。与此同时,可以肯定的是,所有的开发者也期望在获取充分测试的同时,能够尽量地减少自身的工作量,又快又好地完成测试。在大部分情况下,对安卓应用的测试需求不会是针对一个全新类型的应用,而更多地会是以下两种情况之一:一是某个应用的新版本,所有的更改是基于旧版本的;二是一个全新的移动应用,但是市场上存在着类似功能的应用。因此,如果软件测试者能够利用相似应用,或旧版本应用的测试经验来进行测试,或是进行自动化测试生成,将会大大帮助测试工作的进行。在这一过程中,对应用中的各个界面进行功能场景划分将会有很大帮助。

在跳转关系图中,不仅仅是点信息,边的信息也能够大大地帮助我们进行界面的分类。例如若是用户点击一个新建文件的按钮,那么基本可以肯定将要到达的界面就是属于新建文件这一功能场景。传统的工作中,有不少工作都忽视了对边上信息的使用。据此,本文提出一种基于文本特征,同时利用点特征与边特征的图神经网络方法,其能够利用一批移动应用的界面,跳转信息,预测另一批同类移动应用界面类型。

针对图类型数据的处理,使用图神经网络(GNN)是一种先进而常见的思路。GNN能够利用图的结构信息,聚合图中的临近节点信息来进行各节点的特征信息更新。GNN的实现步骤主要分为消息传递、邻居特征聚合、节点特征更新三个步骤。在各类GNN中,结合了循环神经网络GRU的门控图神经网络(GGNN)十分适合于处理深层次的跳转关系信息。而在边特征的利用上,图注意力网络(GAT)可以根据点和边的不同,给予不同边不同的权重。本方法中结合了GGNN与GAT的原理,设计出一种全新的图神经网络来满足任务需求。

发明内容

本发明的目的在于使用机器学习的方式,在拥有一批安卓应用信息的基础上,能够对另一批同类型的安卓应用进行界面场景划分,从而提出了一种基于文本特征和图神经网络的跨应用界面分类方法,利用XML树分析提取界面与跳转边的关键词词典,并利用关键词筛选对该词典筛选后,使用TF-IDF方法获取每个界面与边的特征矩阵。之后将跳转关系图和提取的节点与边特征输入到自定义的结合GGNN与GAT特点的图神经网络中,利用训练集中的安卓应用信息对神经网络进行训练,并预测测试集中安卓应用的界面场景分类信息,达到界面场景划分的效果,以实现自动化的界面场景划分,帮助开发者与测试者更简单地进行测试工作。

为实现上述目的,本发明通过以下技术方案来实现:

一种基于文本特征和图神经网络的跨应用界面分类方法,其特征在于,包括以下步骤:

步骤1):本方法执行前预定了生成一种跳转关系的规范,用户需要编写测试应用的测试脚本,运行测试脚本的过程中自动保存每个状态的界面截屏、对应的布局文件和界面间的跳转关系,将用于输入图神经网络的跳转关系图的构造以及节点的特征提取;

步骤2):基于所述步骤1)保存的跳转关系以及界面截屏,用户需要根据自己的理解对这些截屏划分成不同的功能场景,划分结果即为图神经网络中跳转关系图的节点的标签信息,同时将节点即界面截屏划分成训练集和测试集;

步骤3):利用保存的布局文件以及跳转信息,对各个界面与跳转边进行关键词提取,以初步构建一个关键词词典;

步骤4):对所述步骤3)中获得的关键词词典进行关键词筛选,主要包括将其中包含的时间,日期,存储容量,数字,文件名等转化为统一形式,并去除一些非法词或介词;

步骤5):使用TF-IDF(term frequency–inverse document frequency),将关键词词典结合每个节点与边自身的关键词,转化为特征矩阵;

步骤6):每个界面对应图神经网络中的跳转关键图的节点,每个跳转对应图神经网络汇总的跳转关键图的边,将所述步骤5)中获取的特征矩阵作为节点与边的初始特征,输入到自定义的,结合GGNN与GAT且结合使用边特征的图神经网络中,将所述步骤2)中的训练集输入进行训练,并可以对所述2)中的测试集节点进行界面的场景划分分类。

上述的基于文本特征和图神经网络的跨应用界面分类方法,其特征在于,所述步骤1)与步骤2)是作为本方法的前置介绍,提供方法的初始输入。

上述的基于文本特征和图神经网络的跨应用界面分类方法,其特征在于,所述步骤1)中所涉及的跳转关系图是输入到门控图神经网络的初始图,构建跳转关系图的实现过程包括以下步骤:

步骤11):编写测试应用的测试脚本;在安卓模拟器或者真机上安装需要划分功能场景的安卓应用,利用安卓开源自动化测试工具Appium识别当前应用界面上的控件信息,编写python测试脚本,脚本需要包含对该应用所有功能的完整的、有逻辑的测试,同时需要在脚本中加入在每次执行完测试动作到达新的界面状态时保存对应的界面截屏和布局文件的代码,按照0、1、2的顺序对界面截屏和布局文件顺序保存,以及按照<执行动作前的界面编号i,执行动作后的界面编号j,执行的测试动作和对应的控件位置信息>的三元组格式保存所有的界面跳转关,例如<0,1,click[30,100][120,199]>,其中控件位置信息[30,100][120,199]可以通过Appium获取;

步骤12):获取相关文件;利用Appium执行测试脚本,脚本运行过程中会按顺序自动保存和编号所有的界面截屏和布局文件,以及最终的完整的界面跳转关系;

步骤13):界面去重和更新编号;由于测试脚本执行过程中会出现很多重复的界面访问,因此上述步骤保存的界面截屏及其对应的布局文件会出现重复的情况,布局文件和界面截屏均是一一对应的,界面截屏是png格式,布局文件是XML格式,以树形结构的形式描述了当前界面上各类控件的包含关系,同时记录了各个控件当前的属性值,包括位置、可见性、可点击性等,因此需直接读取每一个布局文件为一个字符串,判断字符串是否相等,如果相等,则说明对应的布局文件和界面截屏为同一个,需要进行去重,并且将这些相同的布局文件和界面截屏的编号重新编号成同一个数字,并且最后需要将所有的编号更新为0、1、2...、n,以及更新界面跳转关系文件中的界面编号,达到一致性;

步骤14):构建跳转关系图;将步骤13)最后得到的编号为0、1、2...、n的界面截屏作为跳转关系图的节点,即跳转关系图中的节点i对应于编号为i的界面截屏,而边的关系则根据上述步骤得到的界面跳转关系,即每一个三元组<执行动作前的界面编号i,执行动作后的界面编号j,执行的测试动作和对应的控件位置信息>表示图中节点i和节点j有一条有向边,即在图中为i->j,构造的跳转关系图即为后续步骤中输入到GGNN中的图,同时界面截屏和对应的布局文件也为后续场景标注、节点特征提取的输入。

上述的基于文本特征和图神经网络的跨应用界面分类方法,其特征在于,所述步骤2)中用户根据自己对该应用的功能场景的理解对界面截屏进行标注,将这些界面截屏划分为不同的类别,每一个类别均有对应的功能场景的含义,部分界面没有具体的功能场景含义,处理方式是将这些界面归类为名为其他场景的类别,不作为训练集也不作为测试集。

上述的基于文本特征和图神经网络的跨应用界面分类方法,其特征在于,所述步骤4)主要将所述步骤3)中获得的词典进行关键词筛选,具体包括以下步骤:

步骤41):筛选非法词,主要删除一些不可见,也不符合utf-8规范的词;

步骤42):筛选日期,将常见的一些日期形式的字符串,统一替换为‘strdate’,包括形如‘Jan 1’,‘1Jan’,‘January 1’,‘2020.7.14’等的字符串,所述步骤42)主要使用正则匹配方式识别;

步骤43):筛选时间,将常见的一些日期形式的字符串,统一替换为‘strtime’,此步骤主要使用python中time模块的strptime函数进行识别,主要识别了如‘%H:%M’,‘%H:%M:%S’等的时间(这两个模式表示‘小时:分钟’以及‘小时:分钟:秒’);

步骤44):筛选容量词,主要识别以以下词结尾,以数字开头的一些,表示容量的词,如‘120MB’,‘200KB’等,将其统一替换为‘strsize’,识别的词尾包括['mb','kb','gb','b','Mb','Kb','Gb','B','MB','KB','GB'];

步骤45):筛选纯数字,主要利用python自带的isdigit()函数,判断该字符串是否为一个整数,并利用该函数识别小数,对于识别出的纯数字,将其统一替换为‘strnum’;

步骤46):筛选文件名,主要识别以以下词结尾,表示文件名的字符串,如‘123.txt’,‘abc.mp4’等,将其统一替换为‘strfile’,识别的词尾包括['.txt','.doc','.jpg','.png','.PNG','.gif','.docx','.zip','.tar.gz','.7z','.mp3'],即只识别以上这些种类的文件名;

步骤47)筛选介词,将以下介词从关键词词典中删除,包括['about','across','after','against','among','around','at','before','behind','below','beside','but','by','down','during','for','from','in','of','on','over','near','round','since','to','under','up','with','inside','into','outside','throughout','upon','without','within']。

上述的基于文本特征和图神经网络的跨应用界面分类方法,其特征在于,所述步骤5)中使用的TF-IDF提取特性需要一个所有文档的词库,以及每个文档自己的词库,所述两个词库对应所述步骤3)、步骤4)中完成的关键词词典,将所述词典输入TF-IDF模型,即可计算得出某个节点或边的特征。

上述的基于文本特征和图神经网络的跨应用界面分类方法,其特征在于,所述步骤6)中设计了一种融合了GGNN与GAT特点的图神经网络,并且使用该图神经网络进行训练与预测,所述图神经网络的具体含义包括以下步骤:

步骤S1:将初始点特征输入一个单层线性层1;

步骤S2:将其转化为200维特征将初始点特征输入一个单层线性层2,将其转化为200维特征;

步骤S3:将所述步骤S1中经转化的点特征,再输入一个单层线性层3-1,将其转化为200维特征;

步骤S4:将所述步骤S3中经转化的点特征,输入一个单层线性层4,将其转化为1个数字;

步骤S5:将所述步骤S2中经转化的边特征,输入一个单层线性层5,将其转化为1个数字;

步骤S6:将所述步骤S4与步骤S5中的数字相加,获得两点间的alpha值,对图中每一条有向边,都会有一个自己的alpha值;

步骤S7:将所述步骤S6中那些指向同一个点的有向边对应的alpha值,经leakyrelu激活,softmax归一化后,获取指向改点的有向边的最终权值alpha,此处的leakyrelu和softmax都为现在机器学习领域常见算法,leakyrelu可以将一个值转化为另一个值;softmax可以将一系列值根据其比例关系,转化为和为1的一系列值;

步骤S8:将所述步骤S2中输出的边特征与所述步骤S3中输出的点特征相加,记为初始聚合值;

步骤S9:将所述步骤S8中初始聚合值乘以7中输出的权值alpha,得到最终聚合值;

步骤S10:将所述步骤S9中输出的最终聚合值,输入GRU中,获得该层返回值,此处的GRU为原本GGNN模型的核心部分,擅长处理多层信息;

步骤S11:将所述步骤S10中输出的第i-1层返回值,输入到所述步骤S3中,重新开始一轮,此时所述步骤S3中使用的单层线性层为3-i,即每一层此处使用的线性层不同;

步骤S12:将所述步骤S3~S11每进行一次,称该模型有一层。

通过上述技术方案,可以得到以下有益效果:

在安卓应用的功能场景理解和划分中,目前还没有工作有效利用了跳转图中的边信息。本方法通过以特定方式分析安卓应用界面对应的XML文件和截图,提取出关键词词典,在此基础上,使用TF-IDF方法,提取出每个界面和跳转边的特征。将属于训练集的移动应用的信息输入到我们自定义的图神经网络中,在经过训练之后,可以有效地预测那些属于同一类,但不是同一个移动应用中的界面所属的功能场景,有助于开发者和测试者更好地进行测试的构建。

附图说明

图1为本发明实施例整体流程图。

图2为本发明实施例中跳转关系的示意图。

图3为本发明实施例中代表界面信息的XML文件的示意图。

图4为本发明实施例中完成任务的示意图。

图5为本发明实施例中自定义的、结合GGNN与GAT的模型示意图。

具体实施方式

为了使本领域技术人员更好地理解本发明,下面结合附图和具体实施例对本发明做进一步详细的说明。

图1为本发明实施例的整体流程图。如图1所示,本发明提供一种基于文本特征和图神经网络的跨应用界面分类方法,具体包括以下步骤:

步骤1):本方法执行前预定了生成一种跳转关系的规范,用户需要编写测试应用的测试脚本,运行测试脚本的过程中自动保存每个状态的界面截屏、对应的布局文件和界面间的跳转关系,将用于输入图神经网络的跳转关系图的构造以及节点的特征提取;

步骤2):基于所述步骤1)保存的跳转关系以及界面截屏,用户需要根据自己的理解对这些截屏划分成不同的功能场景,划分结果即为图神经网络中跳转关系图的节点的标签信息,同时将节点即界面截屏划分成训练集和测试集;

步骤3):利用保存的布局文件以及跳转信息,对各个界面与跳转边进行关键词提取,以初步构建一个关键词词典;

步骤4):对所述步骤3)中获得的关键词词典进行关键词筛选,主要包括将其中包含的时间,日期,存储容量,数字,文件名等转化为统一形式,并去除一些非法词或介词;

步骤5):使用TF-IDF(term frequency–inverse document frequency),将关键词词典结合每个节点与边自身的关键词,转化为特征矩阵;

步骤6):每个界面对应图神经网络中的跳转关键图的节点,每个跳转对应图神经网络汇总的跳转关键图的边,将所述步骤5)中获取的特征矩阵作为节点与边的初始特征,输入到自定义的,结合GGNN与GAT且结合使用边特征的图神经网络中,将所述步骤2)中的训练集输入进行训练,并可以对所述2)中的测试集节点进行界面的场景划分分类。

所述步骤1)与步骤2是作为本方法的前置介绍,提供了该方法的初始输入。

如图2所示,图2为步骤1)所设计的实施例中跳转关系的示意图,是本方法输入到门控图神经网络的初始图,构建跳转关系图主要包含以下子步骤:

步骤11):编写测试应用的测试脚本;在安卓模拟器或者真机上安装需要划分功能场景的安卓应用,利用安卓开源自动化测试工具Appium识别当前应用界面上的控件信息,编写python测试脚本,脚本需要包含对该应用所有功能的完整的、有逻辑的测试,同时需要在脚本中加入在每次执行完测试动作到达新的界面状态时保存对应的界面截屏和布局文件的代码,按照0、1、2的顺序对界面截屏和布局文件顺序保存,以及按照<执行动作前的界面编号i,执行动作后的界面编号j,执行的测试动作和对应的控件位置信息>的三元组格式保存所有的界面跳转关,例如<0,1,click[30,100][120,199]>,其中控件位置信息[30,100][120,199]可以通过Appium获取;

步骤12):获取相关文件;利用Appium执行测试脚本,脚本运行过程中会按顺序自动保存和编号所有的界面截屏和布局文件,以及最终的完整的界面跳转关系;

步骤13):界面去重和更新编号;由于测试脚本执行过程中会出现很多重复的界面访问,因此上述步骤保存的界面截屏及其对应的布局文件会出现重复的情况,布局文件和界面截屏均是一一对应的,界面截屏是png格式,布局文件是XML格式,以树形结构的形式描述了当前界面上各类控件的包含关系,同时记录了各个控件当前的属性值,包括位置、可见性、可点击性等,因此需直接读取每一个布局文件为一个字符串,判断字符串是否相等,如果相等,则说明对应的布局文件和界面截屏为同一个,需要进行去重,并且将这些相同的布局文件和界面截屏的编号重新编号成同一个数字,并且最后需要将所有的编号更新为0、1、2...、n,以及更新界面跳转关系文件中的界面编号,达到一致性;

步骤14):构建跳转关系图;将步骤13)最后得到的编号为0、1、2...、n的界面截屏作为跳转关系图的节点,即跳转关系图中的节点i对应于编号为i的界面截屏,而边的关系则根据上述步骤得到的界面跳转关系,即每一个三元组<执行动作前的界面编号i,执行动作后的界面编号j,执行的测试动作和对应的控件位置信息>表示图中节点i和节点j有一条有向边,即在图中为i->j。构造的跳转关系图即为后续步骤中输入到GGNN中的图,同时界面截屏和对应的布局文件也为后续场景标注、节点特征提取的输入。

步骤2)基于上述步骤保存的去重后的界面截屏、以及界面跳转关系文件,用户需要根据自己对该应用的功能场景的理解对界面截屏进行标注,将这些界面截屏划分为不同的类别,每一个类别均有对应的功能场景的含义,部分界面截屏没有具体的功能场景含义,处理方式是将这些界面归类为名为其他场景的类别,不作为训练集也不作为测试集。例如类别0表示复制粘贴功能场景,包含界面截屏编号的有10、11、12等;类别1表示搜索文件的功能场景等。因此对应的跳转关系图中的节点均有了标签信息,节点对应的界面截屏所属的类别i代表节点的标签为i。用户将每个功能场景中界面截屏总数量的1/5的数量作为训练集,即这些界面截屏对应的图中的节点在训练过程中均有标签信息,而剩下的4/5的数量作为测试集,即在图中这些节点在训练过程中无标签信息,后续的目标就是为了学习和预测这些节点的标签信息。

如图3所示,图3为本发明实施例中代表界面信息的XML文件的示意图,每个XML文件与每个界面对应,不同的界面有不同的XML文件。

其中对于图3中的每一行,我们称其为一个node,存在两种类别的node,分别是该界面中的一个容器(如列表等Layout),或是一个控件(如可点击按钮Button,或图片ImageView)。

步骤3)中,我们分析对应界面的XML文件和界面截图以获取界面的关键词列表,分析某跳转的其实界面的XML文件及其动作,目标以获取改动作的关键词列表,这一步最终会获得一个包含许多词的词典,具体包括以下子步骤:

步骤31):将XML文件中的所有node提取出来,并删除或修改其中那些不合理的node。最后对每个界面,形成一个node的列表,作为下一步的输入。此处对于不合理的node的定义如下:

a)分析node中表示坐标的bounds属性,超出了屏幕的范围。若该控件部分超出界面边缘,则修改bounds属性,使其在边界内;若该控件完全超出界面边缘,则删除该node,使其对后续步骤不产生影响;

b)node表示的控件被其他控件覆盖了。通过检测控件的text信息与图像识别(OCR)获得的信息是否匹配,判断该控件是否被其他控件覆盖。若其被覆盖,则删除该node,使其对后续步骤不产生影响;

c)分析node中表示坐标的bounds属性,计算其长宽,若是其长或宽小于等于0,说明其实际上在界面上不显示,删除该node,使其对后续步骤不产生影响。

步骤32):对每个node,以如下方法获取其关键词

a)提取该node中的属性内容,包括class,id,text,content-desc信息,同时也根据其bounds内容,计算出该组件的左上角坐标x,y以及长宽height,width,面积size;

对一个形如

的node,提取出的信息为:

class=TextView(都只取以‘.’分隔的最后一部分),

id=primary_info(都只取以‘/’分隔的最后一部分),

text=DCIM(取全部,但只取最前面30个字符),

desc=‘’(为空,此处不存在,否则和text一样处理,只取前30字符),

x=189,

y=315,

height=35,

width=116,

size=35*116=4060,

bounds的意义是该组件的左上角和右下角坐标;

b)将class,id,text,desc直接加入关键词词典中;

c)对text,desc,使用2-gram方法,额外添加关键词,例如,若text=‘AbcDeFg’或‘Abc De Fg’,则将AbcDe和DeFg加入关键词词典;

d)若该组件满足一些特殊的条件,则以特殊的前置词与class以及id组合,将其加入关键词:

该组件面积占比超过50%,则前置词为‘XXL’;

该组件面积占比超过5%,则前置词为‘BIG’;

该组件的宽度超过屏幕宽度60%,则前置词为‘WIDE’;

该组件的高度超过屏幕高度60%,则前置词为‘TALL’;

该组件位于屏幕顶部30%范围内,则前置词为‘TOP’;

该组件位于屏幕底部30%范围内,则前置词为‘BUTTOM’;

该组件位于屏幕左侧30%范围内,则前置词为‘LEFT’;

该组件位于屏幕右侧30%范围内,则前置词为‘RIGHT’;

将以下两个字符串加入关键词词典:

(1)前置词+class;

(2)前置词+id的分词;

例如当前置词为WIDE,class为‘TextView’,id为‘AbcDeFg’或‘Abc De Fg’时,将关键词‘WIDETextView’,‘WIDEAbc’,WIDEDe’WIDEFg’加入关键词词组;

步骤33):对界面截图,使用光学字符识别(Optical Character Recognition,OCR)对其进行分析,提取出其中的关键词,将其全部加入关键词词典中;

步骤34):对每个形如

19 20 click[‘android.widget.TextView’,’[63,302][210,365],’Sort by’,’android:/id/title’,”]的跳转,以如下方法获取其关键词:

a)找到对应移动应用中,改动作的起始界面,此处为找到对应移动应用的19号界面;

b)使用该跳转中保存的对应组件信息(分别为class信息,bounds信息,text信息,id信息,content-desc信息),寻找到该界面中对应的node。(即找到该跳转动作对应的node);

c)记录第三项为该跳转的动作,记为action,此处为‘click’;

d)对该node,以B中的方法,提取其关键词,加入关键词词组;

e)此外,对于B中d)的情况,即该组件满足一些特殊的条件,需要使用前置词时,额外将“前置词+action”加入关键词词典。例如当前置词为WIDE,action为‘click时’,将‘WIDEclick’加入词典;

f)最后,将action作为前置词,将以下三种字符串加入词典:

action+text分词

action+id分词

action+desc分词

此处操作相当于e)中前置词为action所对应词。

在步骤4)中,我们对步骤3)中获得的关键词词典进行关键词筛选,主要包括将其中包含的时间,日期,存储容量,数字,文件名等转化为统一形式,并去除一些非法词或介词。该步骤主要将步骤3中获得的词典中的部分词统一删除,或是替换为固定词,具体包括以下子步骤:

步骤41):筛选非法词,主要删除一些不可见,也不符合utf-8规范的词;

步骤42):筛选日期,将常见的一些日期形式的字符串,统一替换为‘strdate’,包括形如‘Jan 1’,‘1Jan’,‘January 1’,‘2020.7.14’等的字符串。此步骤主要使用正则匹配方式识别;

步骤43):筛选时间,将常见的一些日期形式的字符串,统一替换为‘strtime’,此步骤主要使用python中time模块的strptime函数进行识别,主要识别了如‘%H:%M’,‘%H:%M:%S’等的时间(这两个模式表示‘小时:分钟’以及‘小时:分钟:秒’);

步骤44):筛选容量词,主要识别以以下词结尾,以数字开头的一些,表示容量的词,如‘120MB’,‘200KB’等,将其统一替换为‘strsize’。识别的词尾包括['mb','kb','gb','b','Mb','Kb','Gb','B','MB','KB','GB'];

步骤45):筛选纯数字,主要利用python自带的isdigit()函数,判断该字符串是否为一个整数,并利用该函数识别小数。对于识别出的纯数字,将其统一替换为‘strnum’;

步骤46):筛选文件名,主要识别以以下词结尾,表示文件名的字符串,如‘123.txt’,‘abc.mp4’等,将其统一替换为‘strfile’。识别的词尾包括['.txt','.doc','.jpg','.png','.PNG','.gif','.docx','.zip','.tar.gz','.7z','.mp3'],即只识别以上这些种类的文件名;

步骤47):筛选介词,将以下介词从关键词词典中删除,包括['about','across','after','against','among','around','at','before','behind','below','beside','but','by','down','during','for','from','in','of','on','over','near','round','since','to','under','up','with','inside','into','outside','throughout','upon','without','within']

在步骤5)中,使用TF-IDF,获取每个节点与边的特征矩阵,由于该步骤使用的函数为传统机器学习算法的一种,其实子步骤应该只有一到两步。

TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF是词频(Term Frequency),IDF是逆文本频率指数(InverseDocument Frequency)。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

使用TF-IDF提取特征,需要一个所有文档的词库,以及每个文档自己的词库,这两个词库其实就对应了步骤3,4中完成的关键词词典。将这两个词典输入TF-IDF模型,即可计算得出某个节点或边的特征。对所有点和特征都进行这样的计算,即可得到总体的特征矩阵。

TF-IDF算法可以选择识别关键词的最低与最高出现率要求,当某个词的出现率不在该范围内时,则改词不会影响特征内容。最低出现率越低,最高出现率越高,则特征维度会越高,因为更多的词汇影响到特征。为了同时保证有效性和训练效率(即特征维度不能太高或太低),我们选择的最低出现率为千分之3,最高出现率为1,最终在不同的训练集上,特征维度都约为2400,即每个节点或边的特征维度为(1,2400)。

在步骤6)中,设计了一种融合了GGNN与GAT特点的图神经网络,并且使用该图神经网络进行训练与预测。

安卓应用的跳转关系图中每个功能场景往往涉及到多个连续的节点和边,在图中具有较长的路径。而一般的GNN模型如GCN,GIN,GAT等基本都只适用于1层的情况,因此,我们的方法需要结合适用于多层聚合的GNN模型,结合循环神经网络中GRU的门控图神经网络GGNN。GGNN模型在消息传播的过程中利用了门控循环单元GRU,提升了在图结构中的长期的信息传播,并且避免了其他GNN模型由于卷积层数过多导致参数过多进而过拟合、反向传播期间的梯度消失和爆炸的问题。同时,由于GGNN是不会利用边信息的,而跳转信息在功能场景划分中,包括了很重要的信息,例如若点击了一个新建文件按钮,接下来的界面几乎一定会是属于新建文件场景的。而在使用边信息时,GAT模型会结合边信息与点信息,计算出每条边相对于相邻点的权重,这使得我们模仿GAT的做法时,将会有利于更好地利用边信息。

本方法中新设计的图神经网络模型如图5所示,其具体含义为以下步骤:

步骤S1:将初始点特征输入一个单层线性层1;

步骤S2:将其转化为200维特征将初始点特征输入一个单层线性层2,将其转化为200维特征;

步骤S3:将步骤S1中经转化的点特征,再输入一个单层线性层3-1,将其转化为200维特征;

步骤S4:将步骤S3中经转化的点特征,输入一个单层线性层4,将其转化为1个数字;

步骤S5:将步骤S2中经转化的边特征,输入一个单层线性层5,将其转化为1个数字;

步骤S6:将步骤S4与步骤S5中的数字相加,获得两点间的alpha值,对图中每一条有向边,都会有一个自己的alpha值;

步骤S7:将步骤S6中那些指向同一个点的有向边对应的alpha值,经leakyrelu激活,softmax归一化后,获取指向改点的有向边的最终权值alpha。此处的leakyrelu和softmax都为现在机器学习领域常见算法,leakyrelu可以将一个值转化为另一个值;softmax可以将一系列值根据其比例关系,转化为和为1的一系列值;

步骤S8:将步骤S2中输出的边特征与步骤S3中输出的点特征相加,记为初始聚合值;

步骤S9:将步骤S8中初始聚合值乘以7中输出的权值alpha,得到最终聚合值;

步骤S10:将步骤S9中输出的最终聚合值,输入GRU中,获得该层返回值。此处的GRU为原本GGNN模型的核心部分,擅长处理多层信息;

步骤S11:将步骤S10中输出的第i-1层返回值,输入到步骤S3中,重新开始一轮。此时步骤S3中使用的单层线性层为3-i,即每一层此处使用的线性层不同;

步骤S12:将步骤S3~S11每进行一次,称该模型有一层。

将上述步骤中,那部分属于训练集的移动应用的构造的跳转关系图,从XML文件中分析得出的文本特征,输入图神经网络模型进行训练。我们是多分类问题,因此损失函数使用交叉熵损失函数,优化器使用Adam,学习率为0.01,L2正则化参数为1e-05,训练轮数设置为300轮,初始参数随机,经过前向传播、反向传播、梯度下降算法进行参数更新。我们的模型在2层的条件下进行训练与预测。训练完成后模型收敛,将那部分属于测试集的移动应用的数据输入模型,对这些移动应用中的界面所属的功能场景进行预测,将预测的标签结果输出,即为这部分移动应用界面的场景划分结果。

以上所述为本发明的实施例,但此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。凡在不脱离本发明的原理和精神的情况下依本发明申请专利范围所做的任何省略、修改、等同替换等,均应包含在本发明权利要求书的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号