CN113837210A - 小程序分类方法、装置、设备及计算机可读存储介质 - Google Patents

小程序分类方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN113837210A
CN113837210A CN202010583738.0A CN202010583738A CN113837210A CN 113837210 A CN113837210 A CN 113837210A CN 202010583738 A CN202010583738 A CN 202010583738A CN 113837210 A CN113837210 A CN 113837210A
Authority
CN
China
Prior art keywords
applet
classifier
classifier models
determining
classified
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010583738.0A
Other languages
English (en)
Inventor
高璇璇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010583738.0A priority Critical patent/CN113837210A/zh
Priority to PCT/CN2021/096021 priority patent/WO2021258968A1/zh
Publication of CN113837210A publication Critical patent/CN113837210A/zh
Priority to US17/732,382 priority patent/US20220253307A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供一种小程序分类方法、装置、设备及计算机可读存储介质,其中,方法包括:获取待分类小程序的小程序代码;运行该小程序代码,以获取该待分类小程序在运行过程中的动态特征;基于该动态特征和训练好的分类器模型,确定该待分类小程序的分类信息;存储该待分类小程序的分类信息。通过本申请,能够利用小程序的动态特征对小程序进行分类,提高分类结果的召回率。

Description

小程序分类方法、装置、设备及计算机可读存储介质
技术领域
本申请实施例涉及小程序分类技术领域,涉及但不限于一种小程序分类方法、装置、设备及计算机可读存储介质。
背景技术
小程序,是一种介于传统H5网页,和传统原生Android/IOS应用之间的应用形态。小程序不需要下载安装即可使用,相对于专用客户端节省了安装过程,实现了应用“触手可及”的梦想,因此有着非常广阔的使用者和开发者。
目前小程序可以分为无服务小程序和有服务小程序,其中,无服务小程序是指只能展示一些基本信息,如企业介绍或简历展示等,而不提供其他实际服务的小程序。为了在用户搜索小程序时给用户展现能够提供实际服务器的小程序,因为在小程序上架时可以进行分类,以识别出无服务小程序。
发明内容
本申请实施例提供一种小程序分类方法、装置、设备及计算机可读存储介质,通过小程序的动态特征对小程序进行分类,能够提高分类结果的召回率。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种小程序分类方法,包括:
获取待分类小程序的小程序代码;
运行该小程序代码,以获取该待分类小程序在运行过程中的动态特征;
基于该动态特征和训练好的分类器模型,确定该待分类小程序的分类信息;
存储该待分类小程序的分类信息。
本申请实施例提供一种小程序分类装置,包括:
第一获取模块,用于获取待分类小程序的小程序代码;
运行模块,用于运行该小程序代码,以获取该待分类小程序在运行过程中的动态特征;
第一确定模块,用于基于该动态特征和训练好的分类器模型,确定该待分类小程序的分类信息;
存储模块,用于存储该待分类小程序的分类信息。
在一些实施例中,该运行模块,还用于:
运行该小程序代码,获取第一小程序界面图像;
依次触发各个预设事件,获取触发成功的目标事件,并获取触发该目标事件时调用的应用程序接口信息和该目标事件对应的控件信息;
触发完该各个预设事件后,获取第二小程序界面图像;
基于目标事件个数、该应用程序接口信息、控件信息、第一小程序界面图像和第二小程序界面图像确定该待分类小程序在运行过程中的动态特征。
在一些实施例中,该运行模块,还用于:
基于该应用程序接口信息确定各个应用程序接口的调用总次数;
基于该控件信息确定可交互控件个数;
确定该第一小程序界面图像和第二小程序界面图像之间的图像差异信息;
基于该目标事件个数、各个应用程序接口的调用总次数、可交互控件个数、图像差异信息确定该动态特征。
在一些实施例中,该训练好的分类器模型至少包括训练好的K个第一分类器模型,对应地,该第一确定模块,还用于:
将该动态特征分别输入至K个第一分类器模型中,对应得到K个初始预测值,其中K为大于1的整数;
基于该K个初始预测值确定目标预测值;
基于该目标预测值和预设的分类阈值,确定该待分类小程序的分类信息。
在一些实施例中,该训练好的分类器模型还包括训练好的第二分类器模型,对应地,该第一确定模块,还用于:
将该K个初始预测值输入至第二分类器模型,以对该K个初始预测值进行集成处理,得到目标预测值。
在一些实施例中,该第一确定模块,还用于:
当该目标预测值大于该分类阈值时,确定该待分类小程序的分类信息为第一类型小程序;
当该目标预测值小于或者等于该分类阈值时,确定该待分类小程序的分类信息为第二类型小程序。
在一些实施例中,该装置还包括:
第二获取模块,用于获取第一训练数据集和预设的M个第一候选分类器模型,其中,该第一训练数据集中包括训练小程序的动态特征和该训练小程序的标签信息,M为大于2的整数;
第二确定模块,用于基于该第一训练数据集确定该M个第一候选分类器模型对应的性能参数;
第三确定模块,用于基于该M个第一候选分类器模型对应的性能参数,确定出K个第一分类器模型;
第一训练模块,用于利用该第一训练数据集对该K个第一分类器模型进行训练,得到K个训练好的第一分类器模型。
在一些实施例中,该装置还包括:
数据构建模块,用于利用该第一训练数据集和该K个第一分类器模型,构建第二训练数据集,其中,该第二训练数据集中包括:该K个第一分类器模型对训练小程序的预测信息和该训练小程序的标签信息;
第三获取模块,用于获取预设的N个第二候选分类器模型,并基于该第二训练数据集确定该N个第二候选分类器模型对应的性能参数,其中,N为大于1的整数;
第四确定模块,用于基于该N个第二候选分类器模型对应的性能参数和该K个第一分类器模型对应的性能参数,从该N个第二候选分类器模型中确定出第二分类器模型;
第二训练模块,用于利用第二训练数据集对该第二分类器模型进行训练,得到训练好的第二分类器模型。
在一些实施例中,该数据构建模块,还用于:
将该第一训练数据集划分为P个第一训练数据子集,其中P为大于1的整数;
将第i个第一训练数据子集确定为第i测试数据集;i=1,2,…,P;
利用其他第一训练数据子集对该K个第一分类器模型进行训练,得到K个训练后的第一分类器模型;其中,该其他第一训练数据子集为除该第i个第一训练数据子集之外的P-1个第一训练数据子集;
利用该K个训练后的第一分类器模型对该第i测试数据集进行预测处理,得到该K个第一分类器模型对该第i测试数据集中训练小程序的预测信息;
将该K个第一分类器模型对第1至第P测试数据集中训练小程序的预测信息和该训练小程序的标签信息确定为第二训练数据集。
在一些实施例中,该第四确定模块,还用于:
依次将该N个第二候选分类器模型对应的性能参数和该K个第一分类器模型对应的性能参数进行比较;
当确定第j个第二候选分类器模型对应的性能参数均优于该K个第一分类器模型对应的性能参数时,确定该第j个第二候选分类器模型与该K个第一分类器模型之间的性能差异值;
当该性能差异值大于预设的差异阈值时,将该第j个第二候选分类器模型确定为第二分类器模型,其中,j为1到N之间的整数。
在一些实施例中,该第四确定模块,还用于:
基于该N个第二候选分类器模型对应的性能参数和该K个第一分类器模型对应的性能参数,确定出Q个第二目标分类器模型,该第二目标分类器模型对应的性能参数均优于该K个第一分类器模型对应的性能参数;
分别确定该Q个第二目标分类器模型与该K个第一分类器模型之间的Q个性能差异值;
基于该Q个性能差异值,从该Q个第二目标分类器模型中确定出第二分类器模型。
本申请实施例提供一种小程序分类设备,包括:
存储器,用于存储可执行指令;处理器,用于执行该存储器中存储的可执行指令时,实现上述的方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现上述的方法。
本申请实施例具有以下有益效果:
在获取到待分类小程序的小程序代码后,运行该小程序代码,以获取该待分类小程序在运行过程中的动态特征,进而基于该动态特征和训练好的分类器模型,确定该待分类小程序的分类信息并存储该分类信息。由于动态特征是小程序运行过程中提取的,能够反映小程序在使用过程实际能够触发的事件、调用的API等,进而在利用小程序的动态特征对小程序进行分类,能够提高分类结果的召回率。
附图说明
图1为本申请实施例提供的小程序分类系统的一个网络架构示意图;
图2为本申请实施例提供的服务器300的结构示意图;
图3为本申请实施例提供的小程序分类方法的一种实现流程示意图;
图4A为本申请实施例提供的获取训练好的分类器模型的一种实现流程示意图;
图4B为本申请实施例提供的获取训练好的分类器模型的另一种实现流程示意图;
图5为本申请实施例提供的小程序分类方法的另一种实现流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本申请实施例所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
1)小程序,又可以称为网络应用,由客户端(例如浏览器或内嵌浏览器核心的任意客户端)经由网络(如互联网)下载、并在客户端的浏览器环境中解释和执行的软件。是一种介于传统H5网页和传统原生Android/IOS应用之间的一种应用形态;例如,在社交网络客户端中可以下载、运行用于实现机票购买、乘车码等各种服务的网络应用。
2)准确率,评价分类模型或者机器学习模型性能的一种指标,用预测正确的结果占总样本的百分比来表示。
准确率的表达式为:准确率=(TP+TN)/(TP+TN+FP+FN);其中,TP为预测为1,实际为1,预测正确;FP为预测为1,实际为0,预测错误;FN为预测为0,实际为1,预测错误;TN为预测为0,实际为0,预测正确。
虽然准确率能够判断总的正确率,但是在样本不均衡的情况下,并不能作为很好的指标来衡量结果。
3)精确率,又可称为精确度,精确率(Precision)是针对预测结果而言的,其含义是在被所有预测为正的样本中实际为正样本的概率。
精确度的表达式为:精确率=TP/(TP+FP)。
4)召回率,是针对原样本而言的,其含义是在实际为正的样本中被预测为正样本的概率。
召回率的表达式为:召回率=TP/(TP+FN)。
5)F1分数(F1-Score),F1分数同时考虑精确率和召回率,让两者同时达到最高,取得平衡。
F1分数表达式为:F1分数=2*精确率*召回率/(精确率+召回率)。
6)受试者工作特征曲线(ROC,Receiver Operating Characteristic)曲线,被用来评价一个二值分类器(binary classifier)的优劣。相比准确率、召回率、F-score这样的评价指标,ROC曲线有这样一个很好的特性:当测试集中正负样本的分布变化的时候,ROC曲线能够保持不变。
7)ROC曲线下面积(AUC,Area Under Curve),表示ROC中曲线下的面积,用于判断模型的优劣。如ROC曲线所示,连接对角线的面积刚好是0.5,对角线的含义也就是随机判断预测结果,正负样本覆盖应该都是50%。另外,ROC曲线越陡越好,所以理想值是1,即正方形。所以AUC的值一般是介于0.5和1之间的。
为了更好地理解本申请实施例中提供的小程序分类方法,首先对相关技术中的小程序分类方法进行说明:
相关技术中,在进行小程序分类时,采取的方法是基于静态统计特征和规则的方法,也即对小程序静态代码里的按键数进行统计,取出按键数小于指定值的作为无服务的小程序。
由于小程序静态代码和线上页面展示的差异、以及单特征按规则划分的局限性,该分类方法会导致较多的误判和漏过。
基于此,在本申请实施例中提出一种基于动态特征的小程序分类方法,在获取到小程序的源代码之后,执行源代码以运行小程序,从而获取小程序原始动态特征,提取并构造有效的动态特征,在基于小程序动态特征对小程序进行分类。
下面说明本申请实施例提供的小程序分类设备的示例性应用,本申请实施例提供的小程序分类设备可以实施为笔记本电脑,平板电脑,台式计算机,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)、智能机器人等任意具有屏幕显示功能的终端,也可以实施为服务器。下面,将说明小程序分类设备实施为服务器时的示例性应用。
参见图1,图1为本申请实施例提供的小程序分类系统的一个网络架构示意图。如图1所示,该小程序分类系统中包括用户终端100、开发者终端200和服务器300。小程序的开发者在开发者终端200(例如电脑等用户终端、服务器)部署小程序的开发框架(例如,可以是)完成针对小程序的代码开发,小程序可以用于实现各种服务方提供的服务,例如,乘车码服务、快递服务和线上购物等,开发框架中提供有小程序的构建工具,以将小程序的项目中的代码封装成一个或多个能够在客户端的浏览器环境中运行的JavaScript文件,并上传到服务器300,以请求评审并在服务器300评审通过后上架,服务器300可以是承载业务方的业务逻辑的服务器,例如,承载乘车服务提供方的乘车服务的后台服务器。在图1中示例性地,将小程序存储至第一客户端对应的服务器300中。在一些实施例中,服务器300也可以是专用的存储服务器,例如,内容分发网络(CDN,Content Delivery Network)中与用户的终端最短链路的节点。
服务器300在接收到小程序文件后,对小程序进行评审,并在评审通过后运行该小程序并依次触发各个事件,获取小程序运行过程中的动态特征,进而根据动态特征对小程序进行分类,进一步地,分为无服务小程序和有服务小程序。当服务器300接收到用户终端100发送的小程序搜索请求后,基于搜索请求中携带的搜索关键字查询与搜索关键字匹配的小程序,并获取匹配出的各个小程序的分类信息,当匹配出的小程序的分类信息为无服务小程序时,可以如图1所示将这些无服务小程序过滤掉,并向用户终端100返回仅包括有服务小程序的搜索结果。或者,在一些实施例中,服务器300可以将这些无服务小程序排在有服务小程序之后,并将排序后的小程序返回给用户终端100。
参见图2,图2为本申请实施例提供的服务器300的结构示意图,图2所示的服务器300包括:至少一个处理器310、存储器350、至少一个网络接口320和用户接口330。服务器300中的各个组件通过总线系统340耦合在一起。可理解,总线系统340用于实现这些组件之间的连接通信。总线系统340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统340。
处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口330包括使得能够呈现媒体内容的一个或多个输出装置331,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口330还包括一个或多个输入装置332,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器350可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器350可选地包括在物理位置上远离处理器310的一个或多个存储设备。存储器350包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器350旨在包括任意适合类型的存储器。在一些实施例中,存储器350能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统351,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块352,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
输入处理模块353,用于对一个或多个来自一个或多个输入装置332之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器350中的一种小程序分类装置354,该小程序分类装置354可以是服务器300中的小程序分类装置,其可以是程序和插件等形式的软件,包括以下软件模块:第一获取模块3541、运行模块3542、第一确定模块3543、和存储模块3544,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的小程序分类方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Spe cific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
下面将结合本申请实施例提供的服务器300的示例性应用和实施,说明本申请实施例提供的小程序分类方法。本申请实施例提供一种小程序分类方法,应用于服务器,参见图3,图3为本申请实施例提供的小程序分类方法的一种实现流程示意图,将结合图3示出的步骤进行说明。
步骤S101,获取待分类小程序的小程序代码。
这里,待分类小程序可以是由小程序开发者在开发完小程序代码后提交到服务器的。步骤S101在实现时,可以是服务器每间隔一段时间,获取一次待分类小程序,例如可以是每间隔12个小时,获取12个小时之前这一历史时刻至当前时刻这一段时间内接收到的待分类小程序。在一些实施例中,步骤S101在实现时,也可以是每当服务器接收到开发者终端提交的小程序,即确定为待分类小程序,并执行后续步骤,也就是说待分类小程序可以是实时获取的。
步骤S102,运行该小程序代码,以获取该待分类小程序在运行过程中的动态特征。
这里,步骤S102在实现时,可以是对小程序代码进行渲染,并动态运行,在小程序运行过程中触发各个预设的事件,并记录触发各事件时所调用的JS API,统计触发成功的事件所绑定的控件个数,对未开始触发事件以及触发完所有事件的小程序页面分别进行截图并进行base64编码,获取到的以上数据进行合并,并保存为json文件,进而再通过该json文件,提取出待分类小程序的动态特征。
在本申请实施例中,小程序的动态特征可以包括统计特征、API特征以及图像特征,其中,统计特征可以包括触发成功的事件数、API个数、可交互控件个数;API特征包括各个API被调用的总次数;图像特征可以包括未开始触发事件以及触发完所有事件的小程序页面截图之间的差异信息。
步骤S103,基于该动态特征和训练好的分类器模型,确定该待分类小程序的分类信息。
这里,训练好的分类器模型可以包括但不限于是逻辑回归、支持向量机、决策树、朴素贝叶斯、K近邻、baggingK近邻、bagging决策树、随机森林、a daboost、梯度提升决策树。在本申请实施例中,训练好的分类模型可以仅包括训练好的一个或多个基分类器,此时步骤S103在实现时,可以将动态特征输入到训练好的一个或多个基分类器中,分别对应得到一个或多个初始预测值,然后根据一个或多个初始预测值确定目标预测值。在实际应用中,当得到多个初始预测值后,可以将多个初始预测值进行均值计算,得到目标预测值。其中目标预测值为待分类小程序为无服务小程序的概率,最后根据目标预测值确定待分类小程序的分类信息。该分类信息可以为有服务小程序,还可以为无服务小程序。
在一些实施例中,训练好的分类器模型还可以不仅包括训练好的多个基分类器,还可以包括一个训练好的集成分类器,此时步骤S103在实现时,可以将动态特征输入到训练好的多个基分类器中,分别对应得到多个初始预测值,然后将多个初始预测值输入至集成分类器中进行数据集成,得到目标预测值,最后根据目标预测值确定待分类小程序的分类信息。
步骤S104,存储该待分类小程序的分类信息。
这里,步骤S104在实现时,可以是存储待分类小程序的标识和分类信息的对应关系,还可以是将该分类信息作为待分类小程序的一个属性信息进行存储。
在本申请实施例提供的小程序分类方法中,在获取到待分类小程序的小程序代码后,运行该小程序代码,以获取该待分类小程序在运行过程中的动态特征,进而基于该动态特征和训练好的分类器模型,确定该待分类小程序的分类信息并存储该分类信息。由于动态特征是小程序运行过程中提取的,能够反映小程序在使用过程实际能够触发的事件、调用的API等,进而在利用小程序的动态特征对小程序进行分类,能够提高分类结果的召回率。
在一些实施例中,图3所示的步骤S102可以通过以下步骤实现:
步骤S1021,运行该小程序代码,获取第一小程序界面图像。
这里,步骤S1021在实现时可以渲染并运行小程序代码,此时可以在服务器的显示界面中渲染出小程序界面,获取当前的第一小程序界面图像,该第一小程序界面图像也即没有触发任何事件之前的界面图像。
步骤S1022,依次触发各个预设事件,获取触发成功的目标事件,并获取触发该目标事件时调用的应用程序接口信息和该目标事件对应的控件信息。
这里,该预设事件可以是对待分类小程序中各个控件的单击事件、双击事件、长按事件。步骤S1022在实现时,首先基于小程序界面图像识别该小程序界面图像中的各个控件,然后基于各个控件触发预设事件,获取触发成功的目标事件,并获取触发该目标事件时调用的应用程序接口信息,其中应用程序接口信息至少包括应用程序接口标识和该应用程序接口被调用的次数。在本申请实施例中还会获取目标事件对应的控件信息,其中,该控件信息至少可以包括控件标识。
在本申请实施例中,在成功触发一个事件后,小程序界面可能会发生变化,因此在成功触发一个事件后,可以再次获取小程序界面图像,并识别当前的小程序界面图像中的控件,进而再针对当前小程序界面图像中的控件触发预设事件,并获取触发成功的目标事件以及触发该目标事件时调用的应用程序接口信息和该目标事件对应的控件信息。
步骤S1023,触发完该各个预设事件后,获取第二小程序界面图像。
这里,当触发完所有的预设事件后,进行屏幕截图,以截取第二小程序界面图像。
步骤S1024,基于目标事件个数、该应用程序接口信息、控件信息、第一小程序界面图像和第二小程序界面图像确定该待分类小程序在运行过程中的动态特征。
这里,步骤S1024在实现时,可以基于该应用程序接口信息确定各个应用程序接口的调用总次数,并基于该控件信息确定可交互控件个数,以及确定该第一小程序界面图像和第二小程序界面图像之间的图像差异信息。其中,该图像差异信息可以是计算第一小程序界面图像和第二小程序界面图像之间的汉明距离得到的。
在得到各个应用程序接口的调用总次数之后,还可以确定该待分类小程序所调用的应用程序接口总数,在本申请实施例中,将目标事件个数、各个应用程序接口的调用总次数、应用程序接口总数、可交互控件个数、图像差异信息确定为待待分类小程序的动态特征。
在步骤S1021至步骤S1024所在的实施例中,通过运行小程序,来获取小程序的应用程序接口总数、可交互控件个数以及各个应用程序接口的调用总次数和可触发的目标事件个数等动态特征,从而能够保证得到的特征能够真实反映小程序的实际情况,因此能够在利用动态特征确定小程序的分类信息时,提高分类结果的召回率。
在一些实施例中,该训练好的分类器模型至少包括训练好的K个第一分类器模型,对应地,步骤S103可以通过以下步骤实现:
步骤S1031,将该动态特征分别输入至K个第一分类器模型中,对应得到K个初始预测值。
其中K为正整数,也即K为大于或者等于1的整数。第一分类器模型可以包括但不限于是逻辑回归、支持向量机、决策树、朴素贝叶斯、K近邻、baggi ngK近邻、bagging决策树、随机森林、adaboost、梯度提升决策树。将该待分类小程序的动态特征分别输入至训练好的K个第一分类器模型中,该K个第一分类器模型对待分类小程序进行预测处理,对应得到K个初始预测值。该初始预测值为该待分类小程序为无服务小程序的初始概率值,为0到1之间的实数。
步骤S1032,基于该K个初始预测值确定目标预测值。
这里,步骤S1032在实现时,当K为1时,那么直接将初始预测值确定为目标预测值。当K为大于1的整数时,可以对该K个初始预测值进行均值处理,得到目标预测值。其中,该均值处理可以是算术平均,也可以是加权平均。
在一些实施例中,当K为大于1的整数时,第一分类器模型可以是基分类器模型,该训练好的分类器模型还包括训练好的第二分类器模型,第二分类器模型为集成分类器模型,对应地,步骤S1032在实现时,可以是将该K个初始预测值输入至第二分类器模型,以对该K个初始预测值进行集成处理,得到目标预测值。
步骤S1033,基于该目标预测值和预设的分类阈值,确定该待分类小程序的分类信息。
这里,步骤S1033在实现时,可以通过判断目标预测值和该分类阈值的大小关系确定待分类小程序的分类信息,其中,当该目标预测值大于该分类阈值时,确定该待分类小程序的分类信息为第一类型小程序;当该目标预测值小于或者等于该分类阈值时,确定该待分类小程序的分类信息为第二类型小程序,第一类型小程序为无服务小程序,第二类型小程序为有服务小程序。
在一些实施例中,在步骤S103之前,需要获取到训练好的分类器模型,在实际实现时,可以通过图4A所示的以下步骤获取训练好的分类器模型:
步骤S001,获取第一训练数据集和预设的M个第一候选分类器模型。
其中,该第一训练数据集中包括多个训练小程序的动态特征和该多个训练小程序的标签信息,该标签信息用于表征训练小程序是无服务小程序还是有服务小程序,例如当训练小程序为无服务小程序时,该标签信息为1,当训练小程序为有服务小程序时,该标签信息为0。
M为大于1的整数,且M大于或者等于K。第一候选分类器模型包括但不限于是逻辑回归、支持向量机、决策树、朴素贝叶斯、K近邻、baggingK近邻、bagging决策树、随机森林、adaboost、梯度提升决策树。获取M个第一候选分类器模型在实现时,可以首先确定M个第一候选分类器模型的类型,然后通过网格搜索法搜索各第一候选分类器的最优超参数,从而获取到M个第一候选分类器模型。
步骤S002,基于该第一训练数据集确定该M个第一候选分类器模型对应的性能参数。
这里,步骤S002在实现时,可以是利用S折交叉验证方法(例如可以是十折交叉验证方法)确定该M个第一候选分类器模型在第一训练数据集下的性能参数。对于每个第一候选分类器模型,可以是确定一个或者多个性能参数。其中,性能参数包括但不限于准确率、精确度、召回率、F1-score、ROC、AU C。例如可以是对于每个第一候选分类器模型,确定其精确度和召回率这两个性能参数。
步骤S003,基于该M个第一候选分类器模型对应的性能参数,确定出K个第一分类器模型。
这里,如果在步骤S002中,对于每个第一候选分类器模型,确定的是一个性能参数时,那么基于该性能参数,确定性能最好的K个第一分类器模型。举例来说,对于每个第一候选分类器模型来说,确定的是精确度这一个性能参数,那么步骤S003在实现时,可以是将M个第一候选分类器模型的精确度进行排序,从而从M个第一候选分类器模型中选出精确度最高的K个第一分类器模型。
如果在步骤S002中,对于每个第一候选分类器模型,确定的是至少两个性能参数时,步骤S003在实现时,可以是从至少两个性能参数中选择一个最为关注的性能参照,从基于该最为关注的性能参数,从M个第一候选分类器模型中确定出K个第一分类器模型;还可以是从至少两个性能参数中选择多个最为关注的性能参数,然后将多个最为关注的性能参数进行算术平均或者加权平均,或者进行求和运算,从而从M个第一候选分类器模型中确定出K个第一分类器模型。
步骤S004,利用该第一训练数据集对该K个第一分类器模型进行训练,得到K个训练好的第一分类器模型。
这里,步骤S004在实现时,可以是将第一训练数据集中多个训练小程序的动态特征分别输入到K个第一分类器模型中,对应得到训练预测值,然后根据训练预测值与各个训练小程序的标签信息确定训练预测值与实际标签信息的差值分别对K个第一分类器模型的参数进行调整,直至达到预设的训练完成条件,从而得到K个训练好的第一分类器模型。其中训练完成条件可以是达到预设的训练次数,或者可以是训练预测值与实际标签信息的差值小于预设阈值。
通过上述的步骤S001至步骤S004中,在获取到第一训练数据集和M个第一候选分类器模型之后,可以首先基于M个第一候选分类器模型的性能参数从中选择出性能最优的K个第一分类器模型,然后基于第一训练数据集对K个第一分类模型进行训练,从而得到训练好的K个第一分类器模型,进而利用训练好的K个第一分类器模型对待分类小程序进行分类,以确定待分类小程序的分类信息。
在一些实施例中,如图4B所示,在步骤S003之后,还可以通过以下步骤得到训练好的第二分类器模型:
步骤S005,利用该第一训练数据集和该K个第一分类器模型,构建第二训练数据集。
这里,该第二训练数据集中包括:K个第一分类器模型对训练小程序的预测信息和该训练小程序的标签信息,该预测信息至少包括训练小程序为无服务小程序的预测概率值。
步骤S006,获取预设的N个第二候选分类器模型,并基于该第二训练数据集确定该N个第二候选分类器模型对应的性能参数。
这里,N为大于1的整数。获取N个第二候选分类器模型在实现时,可以首先确定N个第二候选分类器模型的类型,然后通过网格搜索法搜索各第二候选分类器的最优超参数,从而获取到N个第二候选分类器模型。
步骤S006在实现时,可以是利用S折交叉验证方法(例如可以是十折交叉验证方法)确定该N个第二候选分类器模型在第二训练数据集下的性能参数。对于每个第二候选分类器模型,可以是确定一个或者多个性能参数。其中,性能参数包括但不限于准确率、精确度、召回率、F1-score、ROC、AUC。
需要说明的是,在步骤S006中确定的性能参数类型与步骤S002中确定的性能参数类型是相同的。例如,在步骤S002中确定的是第一分类器模型对应的精确度和召回率,那么在步骤S006中确定的也是第二分类器模型的精确度和召回率。
步骤S007,基于该N个第二候选分类器模型对应的性能参数和该K个第一分类器模型对应的性能参数,从该N个第二候选分类器模型中确定出第二分类器模型。
这里,步骤S007至少有以下两种实现方式:
第一种实现方式、将N个第二候选分类器模型的性能参数依次和K个第一分类器模型的性能参数进行对比,一旦确定出一个第二候选分类器模型的性能参数均优于K个第一分类器模型,那么当这个第二候选分类器模型与K个第一分类器模型之间的性能差异值大于预设阈值时,就将该第二候选分类器模型确定为第二分类器模型。
第二种实现方式、将N个第二候选分类器模型中性能参数均优于K个第一分类器模型中,性能参数最优的第二候选分类器模型确定为第二分类器模型。
在一些实施例中,还可以是将N个第二候选分类器模型的性能参数依次和K个第一分类器模型的性能参数进行对比,一旦确定出一个第二候选分类器模型的性能参数均优于K个第一分类器模型,将该第二候选分类器模型确定为第二分类器模型。
步骤S008,利用第二训练数据集对该第二分类器模型进行训练,得到训练好的第二分类器模型。
这里,步骤S008在实现时,可以是将第二训练数据集中的K个第一分类器模型对训练小程序的预测信息输入至第二分类器模型中,得到第二分类器模型对训练小程序的训练预测值,然后根据训练预测值与各个训练小程序的标签信息确定训练预测值与实际标签信息的差值对第二分类器模型的参数进行调整,直至达到预设的训练完成条件,从而得到训练好的第二分类器模型。其中训练完成条件可以是达到预设的训练次数,或者可以是训练预测值与实际标签信息的差值小于预设阈值。
在一些实施例中,图4B所示的步骤S005可以通过以下步骤实现:
步骤S051,将该第一训练数据集划分为P个第一训练数据子集。
这里,P为大于1的整数。其中,P的取值是由步骤S002中采用的S折交叉验证方法决定的,其中P=S,也就是说,在步骤S002中采用的是十折交叉验证方法,那么在该步骤S051中将第一训练数据集划分为10个第一训练数据子集。
步骤S052,将第i个第一训练数据子集确定为第i测试数据集。
这里,i=1,2,…,P。
步骤S053,利用其他第一训练数据子集对该K个第一分类器模型进行训练,得到K个训练后的第一分类器模型。
这里,其他第一训练数据子集为除该第i个第一训练数据子集之外的(P-1)个第一训练数据子集。
步骤S054,利用该K个训练后的第一分类器模型对该第i测试数据集进行预测处理,得到该K个第一分类器模型对该第i测试数据集中训练小程序的预测信息。
这里,步骤S052至步骤S054循环执行P次,从而得到K个第一分类器模型对第1至第P测试数据集中训练小程序的预测信息。
步骤S055,将该K个第一分类器模型对第1至第P测试数据集中训练小程序的预测信息和该训练小程序的标签信息确定为第二训练数据集。
这里,每个训练小程序对应有K个训练预测值,该K个训练预测值表示K个第一分类器模型对训练小程序为无服务小程序的预测概率值。
在一些实施例中,图4B所示的步骤S007可以有以下两种实现方式:
第一种实现方式可以通过以下步骤实现:
步骤S071A,依次将该N个第二候选分类器模型对应的性能参数和该K个第一分类器模型对应的性能参数进行比较。
步骤S072A,当确定第j个第二候选分类器模型对应的性能参数均优于该K个第一分类器模型对应的性能参数时,确定该第j个第二候选分类器模型与该K个第一分类器模型之间的性能差异值。
步骤S073A,当该性能差异值大于预设的差异阈值时,将该第j个第二候选分类器模型确定为第二分类器模型。
其中,j为1到N之间的整数。当性能差异值小于或者等于该差异阈值时,继续比对第j+1个第二候选分类器模型与K个第一分类器模型之间的性能参数。
在第一种实现方式中,可以不用比对完所有的N个第二分类器模型,即可确定出第二分类器模型,但是在第一种实现方式中不能保证确定出的第二分类器模型为N个第二候选分类器模型中性能最优的。
第二种实现方式可以通过以下步骤实现:
步骤S071B,基于该N个第二候选分类器模型对应的性能参数和该K个第一分类器模型对应的性能参数,确定出Q个第二目标分类器模型。
这里,第二目标分类器模型对应的性能参数均优于该K个第一分类器模型对应的性能参数。
步骤S072B,分别确定该Q个第二目标分类器模型与该K个第一分类器模型之间的Q个性能差异值。
步骤S073B,基于该Q个性能差异值,从该Q个第二目标分类器模型中确定出第二分类器模型。
这里,步骤S073B在实现时,可以是基于Q个性能差异值,从Q个第二目标分类器模型中确定出性能最优的作为第二分类器模型。
在第二种实现方式中,首先从N个第二候选分类器模型中,确定出所有的性能均优于K个第一分类器模型的Q个第二目标分类器模型,然后再从Q个第二目标分类器模型中确定出性能最优的一个作为第二分类器模型。第二种实现方式相对于第一种实现方式来说,计算量更大,但是能够确定出性能最优的第二分类器模型。在实际应用中,可以根据自身的实际需求确定采用第一种实现方式还是采用第二种实现方式。
基于前述的实施例,本申请实施例再提供一种小程序分类方法,应用于图1所示的网络架构,图5为本申请实施例提供的小程序分类方法的另一种实现流程示意图,如图5所示,该方法包括:
步骤S501,小程序开发者利用开发者终端进行小程序代码开发。
步骤S502,开发者终端基于接收到的上传操作,将开发完成的小程序代码发送至服务器。
这里,步骤S502在实现时,可以是小程序开发者在完成小程序代码开发后,封装成一个或多个能够在客户端的浏览器环境中运行的JavaScript文件,并上传到服务器。
步骤S503,服务器对该小程序进行评审,当评审通过时,将小程序上架。
这里,服务器对小程序进行评审在实现时可以是审核小程序内容是否符合规则,比如是否涉及谣言、欺诈、赌博等违规内容,还可以审核小程序代码是否存在缺陷(Bug)、功能是否完整等等。在小程序评审通过后,将小程序上架,也即用户可以搜索并使用该小程序。
步骤S504,服务器运行该小程序代码,以获取该小程序在运行过程中的动态特征。
步骤S505,服务器将该动态特征分别输入至K个第一分类器模型中,对应得到K个初始预测值。
其中,K为大于1的整数。第一分类器模型对应其他实施例中的基分类器,初始预测值为该小程序为无服务小程序的概率值,为0到1之间的实数。
步骤S506,服务器将该K个初始预测值输入至第二分类器模型,以对该K个初始预测值进行集成处理,得到目标预测值。
这里,第二分类器模型对应其他实施例中的集成分类器,用于将K个初始预测值进行集成处理,从而得到最终的目标预测值。
步骤S507,服务器基于该目标预测值和预设的分类阈值,确定该小程序的分类信息。
这里,步骤S507在实现时,可以通过判断目标预测值和该分类阈值的大小关系确定待分类小程序的分类信息,其中,当该目标预测值大于该分类阈值时,确定该待分类小程序的分类信息为第一类型小程序;当该目标预测值小于或者等于该分类阈值时,确定该待分类小程序的分类信息为第二类型小程序,第一类型小程序为无服务小程序,第二类型小程序为有服务小程序。
步骤S508,服务器存储该小程序的分类信息。
这里,可以是存储该小程序的标识和分类信息的对应关系,还可以是将该分类信息作为小程序的一个属性信息进行存储。
步骤S509,用户终端响应于小程序搜索操作,获取搜索关键字。
步骤S510,用户终端向服务器发送搜索请求。
这里,该搜索请求中携带有搜索关键字。
步骤S511,服务器基于搜索请求中的搜索关键字进行搜索,得到第一搜索结果。
这里,服务器基于搜索关键字,从自身存储的小程序标识中确定与搜索关键字匹配的小程序标识,并将该小程序标识确定为第一搜索结果。
步骤S512,服务器获取第一搜索结果中各个小程序标识对应的分类信息。
步骤S513,服务器根据各个小程序标识对应的分类信息,从第一搜索结果中删除分类信息为无服务小程序的小程序标识,得到第二搜索结果。
步骤S514,服务器将第二搜索结果返回给用户终端。
在本申请实施例提供的小程序分类方法中,小程序开发者在完成小程序代码开发后,将小程序代码发送至服务器,由服务器进行评审,并在评审通过后将小程序上架,另外服务器还会运行小程序,并依次触发各个预设事件从而获取到小程序运行过程中的动态特征,进而根据小程序的动态特征和训练好的第一分类模型和第二分类模型确定小程序的分类信息,如此,在用户终端进行小程序搜索,向服务器发送搜索请求时,服务器在确定出与搜索关键字匹配的第一小程序后,在进一步获取各个第一小程序的分类信息,以根据分类信息删除掉无服务小程序,并将删除掉无服务小程序的搜索结果返回给用户终端,从而保证用户最终得到的搜索结果都是能够提供服务的小程序。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
在对小程序进行内容画像分析的过程中,需要对小程序进行分类,以确定小程序是无服务小程序还是有服务小程序。其中“无服务”指提供的服务是展示一些基本信息,如企业介绍或简历展示等,而无其他实际服务。
本申请实施例提供的小程序分类方法,包括以下步骤:
步骤S601,获取小程序原始动态特征.
小程序动态特征是相对于静态特征而言的。小程序的静态特征是指从小程序静态代码里所能挖掘得到的特征,比如控件数、DOM、自定义组件等,然而写在静态代码里的元素并非一定会呈现或被调用,也因此小程序实际呈现给用户的页面和其静态代码并不能相互对应。而小程序的动态特征是指将小程序代码经渲染之后动态运行起来时所能得到的特征,比如有哪些可触发的事件、触发事件时调用的JS API、事件所绑定的控件等,这实际上就是模拟用户与页面的交互。因此,动态特征比起静态特征更能反应真实的用户交互体验。
除了从动态代码直接获取到的动态特征之外,无服务还应注意到事件触发后用户所能看到的页面上是否有改变,所以还需要对事件触发前后的页面进行截图,后续用于比对。
在本申请实施例中,在获取小程序原始动态特征时,对小程序代码进行渲染并动态运行,依次触发各事件,记录触发各事件时所调用的JS API,统计可触发事件所绑定的控件个数,对触发事件前后的小程序页面分别进行截图并进行base64编码,将以上所有特征合并,并存为json文件,将该json文件保存到数据库,例如可以是mysql数据库。
步骤S602,提取并构造有效的动态特征。
这里,提取的动态特征可以包括统计特征、API特征和图片特征,其中,统计特征又可以包括可触发事件个数、API个数、可交互控件个数;API特征可以包括:各个API被调用的总次数,例如可以包括获取系统信息API被调用的总次数、扫描二维码API被调用的总次数、显示消息提示框API被调用的总次数等等;图片特征可以包括未触发事件时的页面截图和触发全部事件后的页面截图。
步骤S603,基于小程序动态特征对有无服务进行分类。
这里,步骤S603在实现时,可以是将获取到的小程序动态特征输入到训练好的多个基分类模型,得到各个基分类模型对该小程序的各个预测值,其中,该预测值为该小程序是无服务小程序的概率值;然后再将各个预测值输入到训练好的集成分类器模型,以通过该集成分类器模型对各个预测值进行集成,得到最终的预测值,该最终的预测值同样为该小程序是无服务小程序的概率值。在得到最终的预测值后,将最终的预测值与预设的分类阈值进行比较,得到该小程序的分类信息,例如可以是若最终的预测值大于该分类阈值则判决为无服务小程序,若最终的预测值小于该分类阈值则判决为不是无服务小程序。
以下对本申请实施例中提取的动态特征进行进一步说明,表1为本申请实施例从json文件中提取的小程序动态特征:
表1、本申请实施例从json文件中提取的特征
Figure BDA0002553377360000241
Figure BDA0002553377360000251
在上述表1中示出了需要从json文件中提取的动态特征的特征类别、特征名以及变量名。
在本申请实施例中,基于图片特征,另外构造表2所示的以下特征:
表2、本申请实施例基于图片特征所构造的动态特征
Figure BDA0002553377360000252
在本申请实施例中,步骤S602在实现时,保留表1中的统计特征和JS A PI特征以及表2中的Hash_diff,去掉表1中的Pic_0和Pic_1以及表2中的Ha sh_0和Hash_1,得到22维动态特征,该22维动态特征在步骤S603中作为输入信息,输入至分类器模型中,以确定小程序的分类信息。
在本申请实施例中,在步骤S603之前,需要首先通过以下步骤得到训练好的基分类器模型和集成分类器模型:
步骤S701,收集具有标签信息的数据,构造训练集(X,y)。
这里,标签信息用于表征小程序是无服务小程序还是有服务小程序,该标签信息可以是0或者1,当标签信息为1时表示该小程序为无服务小程序,当该标签信息为0时表示该小程序为有服务小程序。
具有标签信息的数据可以是小程序代码,步骤S501在实现时,在收集到具有标签信息的小程序代码后,运行并渲染该小程序代码,并获取该小程序的动态特征,进而根据小程序的标签信息和动态特征构建训练集(X,y)。其中,X∈Rn×22、y∈{0,1}n×1,n表示有n个样本,22为步骤S602中提取到的22维特征。若yi为y的第i个元素,yi=1代表第i个为正样本,也即是无服务小程序;yi=0代表第i个为负样本,也即不是无服务小程序。
步骤S702,构建m个分类器。
这里,该m个分类器包括但不限于逻辑回归、支持向量机、决策树、朴素贝叶斯、K近邻、baggingK近邻、bagging决策树、随机森林、adaboost、梯度提升决策树。在本申请实施例中,可以采用网格搜索法搜索各分类器的最优超参数,并在最优参数下用十折交叉验证评估各分类器在训练集(X,y)下的性能,性能指标包括但不限于准确率、精确度、召回率、F1-score、ROC AUC。
步骤S703,从m个分类器中挑选最关注的指标下性能最好的k个分类器作为基分类器,并新增一个分类器对基分类器进行stacking集成。
这里,如果最关注的指标为召回率,那么从m个分类中挑选出召回率最高的k个分类器作为基分类器,并且新增一个分类器作为集成分类器,以对基分类器进行stacking集成。其中,新增的分类器的类型包括但不限于是逻辑回归、支持向量机、决策树、朴素贝叶斯、K近邻、baggingK近邻、bagging决策树、随机森林、adaboost、梯度提升决策树。
在一些实施例中,步骤S703可以通过以下步骤实现:
步骤S7031,对训练集(X,y)分成10份,在每个基分类器下,每次取其中9份作为训练集对基分类器进行训练,剩下的1份作为测试集输入到基分类器中进行预测处理,得到无服务的概率值,重复10次。
由此,原始的训练集(X,y)经由k个分类器转换成(X1,y),其中X1∈Rn×k
步骤S7032,新增一个分类器,对基分类器的预测结果进行集成。
这里,步骤S7032在实现时可以预先设定好候选新增分类器的类型,例如,候选新增分类器的类型可以有三个,分别为逻辑回归、支持向量机、决策树,然后再采用网格搜索法搜索各候选新增分类器的最优超参数,并在最优参数下用十折交叉验证评估各候选新增分类器在训练集(X1,y)下的性能。如果某一候选新增分类器的性能比其中至少一个基分类器的性能差,那么换一个另一个候选新增分类器重新尝试;如果某一候选新增分类器的性能比所有基分类器的性能都好,那么可以将该候选新增分类器确定为集成分类器,并采用(X,y)对各基分类器进行训练,采用(X1,y)对集成分类器进行训练,并序列化保存训练好的各基分类器和集成分类器。
在一些实施例中,还可以是在确定出各个候选新增分类器的性能参数后,将各个候选分类器的性能参数与各个基分类器的性能参数进行对比,从各个候选新增分类器中确定出最优于各个基分类器的候选新增分类器作为集成分类器。
采用单特征加规则的方案,无服务小程序识别的精确度为95%、召回率为28.1%,虽然精确度很高,但会存在很大比例的漏过,不适用于低质过滤场景。采用本申请实施例提供的分类方法,无服务小程序识别的精确度为77%、召回率为84%,用18%的精确度换回56%的召回率,精确度和召回率均较高,且可以通过选择判决阈值平衡精确度和召回率,可应用于搜索低质过滤等场景。
在本申请实施例提供的小程序分类方法中,获取小程序在运行过程中的动态特征,从而基于小程序动态特征对有无服务进行分类,如此能够避免由于小程序静态代码和线上页面展示的差异以及单特征按规则划分的局限性而导致的误判和漏过,从而提高整体分类性能。
下面继续说明本申请实施例提供的小程序分类装置354实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器350的小程序分类装置354中的软件模块可以是服务器300中的小程序分类装置,包括:
第一获取模块3541,用于获取待分类小程序的小程序代码;
运行模块3542,用于运行该小程序代码,以获取该待分类小程序在运行过程中的动态特征;
第一确定模块3543,用于基于该动态特征和训练好的分类器模型,确定该待分类小程序的分类信息;
存储模块3544,用于存储该待分类小程序的分类信息。
在一些实施例中,该运行模块3542,还用于:
运行该小程序代码,获取第一小程序界面图像;
依次触发各个预设事件,获取触发成功的目标事件,并获取触发该目标事件时调用的应用程序接口信息和该目标事件对应的控件信息;
触发完该各个预设事件后,获取第二小程序界面图像;
基于目标事件个数、该应用程序接口信息、控件信息、第一小程序界面图像和第二小程序界面图像确定该待分类小程序在运行过程中的动态特征。
在一些实施例中,该运行模块3542,还用于:
基于该应用程序接口信息确定各个应用程序接口的调用总次数;
基于该控件信息确定可交互控件个数;
确定该第一小程序界面图像和第二小程序界面图像之间的图像差异信息;
基于该目标事件个数、各个应用程序接口的调用总次数、可交互控件个数、图像差异信息确定该动态特征。
在一些实施例中,该训练好的分类器模型至少包括训练好的K个第一分类器模型,对应地,该第一确定模块3543,还用于:
将该动态特征分别输入至K个第一分类器模型中,对应得到K个初始预测值,其中K为大于1的整数;
基于该K个初始预测值确定目标预测值;
基于该目标预测值和预设的分类阈值,确定该待分类小程序的分类信息。
在一些实施例中,该训练好的分类器模型还包括训练好的第二分类器模型,对应地,该第一确定模块3543,还用于:
将该K个初始预测值输入至第二分类器模型,以对该K个初始预测值进行集成处理,得到目标预测值。
在一些实施例中,该第一确定模块3543,还用于:
当该目标预测值大于该分类阈值时,确定该待分类小程序的分类信息为第一类型小程序;
当该目标预测值小于或者等于该分类阈值时,确定该待分类小程序的分类信息为第二类型小程序。
在一些实施例中,该装置还包括:
第二获取模块,用于获取第一训练数据集和预设的M个第一候选分类器模型,其中,该第一训练数据集中包括训练小程序的动态特征和该训练小程序的标签信息,M为大于2的整数;
第二确定模块,用于基于该第一训练数据集确定该M个第一候选分类器模型对应的性能参数;
第三确定模块,用于基于该M个第一候选分类器模型对应的性能参数,确定出K个第一分类器模型;
第一训练模块,用于利用该第一训练数据集对该K个第一分类器模型进行训练,得到K个训练好的第一分类器模型。
在一些实施例中,该装置还包括:
数据构建模块,用于利用该第一训练数据集和该K个第一分类器模型,构建第二训练数据集,其中,该第二训练数据集中包括:该K个第一分类器模型对训练小程序的预测信息和该训练小程序的标签信息;
第三获取模块,用于获取预设的N个第二候选分类器模型,并基于该第二训练数据集确定该N个第二候选分类器模型对应的性能参数,其中,N为大于1的整数;
第四确定模块,用于基于该N个第二候选分类器模型对应的性能参数和该K个第一分类器模型对应的性能参数,从该N个第二候选分类器模型中确定出第二分类器模型;
第二训练模块,用于利用第二训练数据集对该第二分类器模型进行训练,得到训练好的第二分类器模型。
在一些实施例中,该数据构建模块,还用于:
将该第一训练数据集划分为P个第一训练数据子集,其中P为大于1的整数;
将第i个第一训练数据子集确定为第i测试数据集;i=1,2,…,P;
利用其他第一训练数据子集对该K个第一分类器模型进行训练,得到K个训练后的第一分类器模型;其中,该其他第一训练数据子集为除该第i个第一训练数据子集之外的P-1个第一训练数据子集;
利用该K个训练后的第一分类器模型对该第i测试数据集进行预测处理,得到该K个第一分类器模型对该第i测试数据集中训练小程序的预测信息;
将该K个第一分类器模型对第1至第P测试数据集中训练小程序的预测信息和该训练小程序的标签信息确定为第二训练数据集。
在一些实施例中,该第四确定模块,还用于:
依次将该N个第二候选分类器模型对应的性能参数和该K个第一分类器模型对应的性能参数进行比较;
当确定第j个第二候选分类器模型对应的性能参数均优于该K个第一分类器模型对应的性能参数时,确定该第j个第二候选分类器模型与该K个第一分类器模型之间的性能差异值;
当该性能差异值大于预设的差异阈值时,将该第j个第二候选分类器模型确定为第二分类器模型,其中,j为1到N之间的整数。
在一些实施例中,该第四确定模块,还用于:
基于该N个第二候选分类器模型对应的性能参数和该K个第一分类器模型对应的性能参数,确定出Q个第二目标分类器模型,该第二目标分类器模型对应的性能参数均优于该K个第一分类器模型对应的性能参数;
分别确定该Q个第二目标分类器模型与该K个第一分类器模型之间的Q个性能差异值;
基于该Q个性能差异值,从该Q个第二目标分类器模型中确定出第二分类器模型。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图3、图4A、图4B和图5示出的方法。
在一些实施例中,存储介质可以是计算机可读存储介质,例如,铁电存储器(FRAM,Ferromagnetic Random Access Memory)、只读存储器(ROM,R ead Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,Compact Disk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(H TML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (14)

1.一种小程序分类方法,其特征在于,包括:
获取待分类小程序的小程序代码;
运行所述小程序代码,以获取所述待分类小程序在运行过程中的动态特征;
基于所述动态特征和训练好的分类器模型,确定所述待分类小程序的分类信息;
存储所述待分类小程序的分类信息。
2.根据权利要求1中所述的方法,其特征在于,所述运行所述小程序代码,以获取所述待分类小程序在运行过程中的动态特征,包括:
运行所述小程序代码,获取第一小程序界面图像;
依次触发各个预设事件,获取触发成功的目标事件,并获取触发所述目标事件时调用的应用程序接口信息和所述目标事件对应的控件信息;
触发完所述各个预设事件后,获取第二小程序界面图像;
基于目标事件个数、所述应用程序接口信息、控件信息、第一小程序界面图像和第二小程序界面图像确定所述待分类小程序在运行过程中的动态特征。
3.根据权利要求2中所述的方法,其特征在于,所述基于目标事件个数、所述应用程序接口信息、控件信息、第一小程序界面图像和第二小程序界面图像确定所述待分类小程序在运行过程中的动态特征,包括:
基于所述应用程序接口信息确定各个应用程序接口的调用总次数;
基于所述控件信息确定可交互控件个数;
确定所述第一小程序界面图像和第二小程序界面图像之间的图像差异信息;
基于所述目标事件个数、各个应用程序接口的调用总次数、可交互控件个数、图像差异信息确定所述动态特征。
4.根据权利要求1中所述的方法,其特征在于,所述训练好的分类器模型至少包括训练好的K个第一分类器模型,对应地,所述基于所述动态特征信息和训练好的分类器模型,确定所述待分类小程序的分类信息,包括:
将所述动态特征分别输入至K个第一分类器模型中,对应得到K个初始预测值,其中K为正整数;
基于所述K个初始预测值确定目标预测值;
基于所述目标预测值和预设的分类阈值,确定所述待分类小程序的分类信息。
5.根据权利要求4中所述的方法,其特征在于,当K为大于1的整数时,所述训练好的分类器模型还包括训练好的第二分类器模型,对应地,所述基于所述N个初始预测值确定目标预测值,包括:
将所述K个初始预测值输入至第二分类器模型,以对所述K个初始预测值进行集成处理,得到目标预测值。
6.根据权利要求4中所述的方法,其特征在于,所述基于所述目标预测值和预设的分类阈值,确定所述待分类小程序的分类信息,包括:
当所述目标预测值大于所述分类阈值时,确定所述待分类小程序的分类信息为第一类型小程序;
当所述目标预测值小于或者等于所述分类阈值时,确定所述待分类小程序的分类信息为第二类型小程序。
7.根据权利要求4中所述的方法,其特征在于,所述方法还包括:
获取第一训练数据集和预设的M个第一候选分类器模型,其中,所述第一训练数据集中包括训练小程序的动态特征和所述训练小程序的标签信息,M为大于1的整数;
基于所述第一训练数据集确定所述M个第一候选分类器模型对应的性能参数;
基于所述M个第一候选分类器模型对应的性能参数,确定出K个第一分类器模型;
利用所述第一训练数据集对所述K个第一分类器模型进行训练,得到K个训练好的第一分类器模型。
8.根据权利要求7中所述的方法,其特征在于,所述方法还包括:
利用所述第一训练数据集和所述K个第一分类器模型,构建第二训练数据集,其中,所述第二训练数据集中包括:所述K个第一分类器模型对训练小程序的预测信息和所述训练小程序的标签信息;
获取预设的N个第二候选分类器模型,并基于所述第二训练数据集确定所述N个第二候选分类器模型对应的性能参数,其中,N为大于1的整数;
基于所述N个第二候选分类器模型对应的性能参数和所述K个第一分类器模型对应的性能参数,从所述N个第二候选分类器模型中确定出第二分类器模型;
利用第二训练数据集对所述第二分类器模型进行训练,得到训练好的第二分类器模型。
9.根据权利要求8中所述的方法,其特征在于,所述利用所述第一训练数据集和所述K个第一分类器模型,构建第二训练数据集,包括:
将所述第一训练数据集划分为P个第一训练数据子集,其中P为大于1的整数;
将第i个第一训练数据子集确定为第i测试数据集;i=1,2,…,P;
利用其他第一训练数据子集对所述K个第一分类器模型进行训练,得到K个训练后的第一分类器模型;其中,所述其他第一训练数据子集为除所述第i个第一训练数据子集之外的(P-1)个第一训练数据子集;
利用所述K个训练后的第一分类器模型对所述第i测试数据集进行预测处理,得到所述K个第一分类器模型对所述第i测试数据集中训练小程序的预测信息;
将所述K个第一分类器模型对第1至第P测试数据集中训练小程序的预测信息和所述训练小程序的标签信息确定为第二训练数据集。
10.根据权利要求8中所述的方法,其特征在于,所述基于所述N个第二候选分类器模型对应的性能参数和所述K个第一分类器模型对应的性能参数,从所述N个第二候选分类器模型中确定出第二分类器模型,包括:
依次将所述N个第二候选分类器模型对应的性能参数和所述K个第一分类器模型对应的性能参数进行比较;
当确定第j个第二候选分类器模型对应的性能参数均优于所述K个第一分类器模型对应的性能参数时,确定所述第j个第二候选分类器模型与所述K个第一分类器模型之间的性能差异值;
当所述性能差异值大于预设的差异阈值时,将所述第j个第二候选分类器模型确定为第二分类器模型,其中,j为1到N之间的整数。
11.根据权利要求8中所述的方法,其特征在于,所述基于所述N个第二候选分类器模型对应的性能参数和所述K个第一分类器模型对应的性能参数,从所述N个第二候选分类器模型中确定出第二分类器模型,包括:
基于所述N个第二候选分类器模型对应的性能参数和所述K个第一分类器模型对应的性能参数,确定出Q个第二目标分类器模型,所述第二目标分类器模型对应的性能参数均优于所述K个第一分类器模型对应的性能参数;
分别确定所述Q个第二目标分类器模型与所述K个第一分类器模型之间的Q个性能差异值;
基于所述Q个性能差异值,从所述Q个第二目标分类器模型中确定出第二分类器模型。
12.一种小程序分类装置,其特征在于,包括:
第一获取模块,用于获取待分类小程序的小程序代码;
运行模块,用于运行所述小程序代码,以获取所述待分类小程序在运行过程中的动态特征;
第一确定模块,用于基于所述动态特征和训练好的分类器模型,确定所述待分类小程序的分类信息;
存储模块,用于存储所述待分类小程序的分类信息。
13.一种小程序分类设备,其特征在于,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至11任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至11任一项所述的方法。
CN202010583738.0A 2020-06-23 2020-06-23 小程序分类方法、装置、设备及计算机可读存储介质 Pending CN113837210A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010583738.0A CN113837210A (zh) 2020-06-23 2020-06-23 小程序分类方法、装置、设备及计算机可读存储介质
PCT/CN2021/096021 WO2021258968A1 (zh) 2020-06-23 2021-05-26 小程序分类方法、装置、设备及计算机可读存储介质
US17/732,382 US20220253307A1 (en) 2020-06-23 2022-04-28 Miniprogram classification method, apparatus, and device, and computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010583738.0A CN113837210A (zh) 2020-06-23 2020-06-23 小程序分类方法、装置、设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN113837210A true CN113837210A (zh) 2021-12-24

Family

ID=78964242

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010583738.0A Pending CN113837210A (zh) 2020-06-23 2020-06-23 小程序分类方法、装置、设备及计算机可读存储介质

Country Status (3)

Country Link
US (1) US20220253307A1 (zh)
CN (1) CN113837210A (zh)
WO (1) WO2021258968A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114595391A (zh) * 2022-03-17 2022-06-07 北京百度网讯科技有限公司 基于信息搜索的数据处理方法、装置和电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114818987B (zh) * 2022-06-20 2022-11-08 中山大学深圳研究院 一种科技服务数据的处理方法、装置以及系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003065242A1 (en) * 2002-01-25 2003-08-07 Tibco Software, Inc. Single applet to communicate with multiple html elements contained inside of multiple categories on a page
WO2012071989A1 (zh) * 2010-11-29 2012-06-07 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
US9223970B2 (en) * 2014-01-14 2015-12-29 Citrix Systems, Inc. Evaluating application integrity
US9875357B2 (en) * 2015-02-06 2018-01-23 Qualcomm Incorporated Methods and systems for detecting fake user interactions with a mobile device for improved malware protection
US9734047B2 (en) * 2015-07-28 2017-08-15 Testplant Europe Ltd Method and apparatus for an improved automated test of software with a graphical user interface
CN107864168B (zh) * 2016-09-22 2021-05-18 华为技术有限公司 一种网络数据流分类的方法及系统
CN106778266A (zh) * 2016-11-24 2017-05-31 天津大学 一种基于机器学习的安卓恶意软件动态检测方法
US10282274B2 (en) * 2017-06-14 2019-05-07 Microsoft Technology Licensing, Llc Presenting differences between code entity invocations
CN107729927B (zh) * 2017-09-30 2020-12-18 南京理工大学 一种基于lstm神经网络的手机应用分类方法
US10754950B2 (en) * 2017-11-30 2020-08-25 Assured Information Security, Inc. Entity resolution-based malicious file detection
US10846403B2 (en) * 2018-05-15 2020-11-24 International Business Machines Corporation Detecting malicious executable files by performing static analysis on executable files' overlay
KR102010468B1 (ko) * 2018-09-06 2019-08-14 주식회사 윈스 악성코드 머신 러닝 분류 모델 검증 장치 및 방법
CN111222137A (zh) * 2018-11-26 2020-06-02 华为技术有限公司 一种程序分类模型训练方法、程序分类方法及装置
US11200318B2 (en) * 2018-12-28 2021-12-14 Mcafee, Llc Methods and apparatus to detect adversarial malware
US10949070B2 (en) * 2019-03-13 2021-03-16 Servicenow, Inc. Customizable mobile application for event management
US11403207B2 (en) * 2020-02-28 2022-08-02 Microsoft Technology Licensing, Llc. Detection of runtime errors using machine learning
US20210191696A1 (en) * 2020-12-14 2021-06-24 Intel Corporation Methods, apparatus, and articles of manufacture to identify and interpret code

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114595391A (zh) * 2022-03-17 2022-06-07 北京百度网讯科技有限公司 基于信息搜索的数据处理方法、装置和电子设备

Also Published As

Publication number Publication date
US20220253307A1 (en) 2022-08-11
WO2021258968A1 (zh) 2021-12-30

Similar Documents

Publication Publication Date Title
CN109791642B (zh) 工作流的自动生成
CN110366734B (zh) 优化神经网络架构
CN109460514B (zh) 用于推送信息的方法和装置
US20190364123A1 (en) Resource push method and apparatus
CN110909182B (zh) 多媒体资源搜索方法、装置、计算机设备及存储介质
CN112632385A (zh) 课程推荐方法、装置、计算机设备及介质
US10511681B2 (en) Establishing and utilizing behavioral data thresholds for deep learning and other models to identify users across digital space
CN110362663B (zh) 自适应多感知相似度检测和解析
US20200272845A1 (en) End-to-End Fuzzy Entity Matching
CN112328909A (zh) 信息推荐方法、装置、计算机设备及介质
US20200334697A1 (en) Generating survey responses from unsolicited messages
CN114840869A (zh) 基于敏感度识别模型的数据敏感度识别方法及装置
US20220253307A1 (en) Miniprogram classification method, apparatus, and device, and computer-readable storage medium
CN113515589A (zh) 数据推荐方法、装置、设备以及介质
EP4064038B1 (en) Automated generation and integration of an optimized regular expression
CN116909534B (zh) 算子流的生成方法、算子流的生成装置及存储介质
KR102119518B1 (ko) 인공지능을 이용하여 생성되는 스타일 공간에 기반한 상품 추천 방법 및 시스템
CN118043802A (zh) 一种推荐模型训练方法及装置
CN115017362A (zh) 数据处理方法、电子设备及存储介质
CN114153954A (zh) 测试用例推荐方法、装置、电子设备及存储介质
CN111414538A (zh) 基于人工智能的文本推荐方法、装置及电子设备
KR102653594B1 (ko) 생성형 인공지능 모델을 이용한 장소 정보 수집 장치 및 방법
CN114048392B (zh) 多媒体资源推送方法、装置、电子设备及存储介质
JP7529344B2 (ja) 関心トピックに基づいた個人化推薦のための方法、システム、およびコンピュータプログラム
CN114721931B (zh) 一种数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination