异常程序分类方法及装置
文献发布时间:2023-06-19 11:35:49
技术领域
本发明涉及人工智能技术领域,具体地,涉及一种异常程序分类方法及装置。
背景技术
在程序测试阶段,程序可能出现两种类型的异常,一种是环境问题,如网络连接失败、数据库密码错误等与程序本身无关的错误;一种是程序问题,如空指针异常、数据类型错误和程序逻辑错误等。通常环境问题需要环境配置人员分析,程序问题需要程序开发者分析。在现有的流程中,当程序出现异常时,测试人员由于看不懂日志往往会先找程序开发者看日志分析,然后再由开发者判断属于环境问题还是程序问题;若是程序问题则由开发者进行分析,若是环境问题则由开发者转交给环境配置人员分析。
这种流程实际上影响了测试阶段程序的异常分析流程效率,因为环境问题在一些涉及复杂繁多环境变量的系统开发过程中出现的概率并不低。如果可以在程序出现异常的时候提前识别出程序的异常类型,第一时间把程序转交给对应的负责人分析,测试流程的效率将会得到显著提高。
发明内容
本发明实施例的主要目的在于提供一种异常程序分类方法及装置,可以在程序出现错误的时候根据程序日志来判别异常程序的类型,显著提高测试阶段程序的异常分析效率。
为了实现上述目的,本发明实施例提供一种异常程序分类方法,包括:
获取当前程序错误日志,根据当前程序错误日志中的错误程序特征生成当前程序错误向量;
将当前程序错误向量输入基于历史程序错误向量创建的程序异常分类模型中,得到异常日志向量;
根据异常日志向量输出异常程序的类型。
本发明实施例还提供一种异常程序分类装置,包括:
获取模块,用于获取当前程序错误日志,根据当前程序错误日志中的错误程序特征生成当前程序错误向量;
异常日志向量模块,用于将当前程序错误向量输入基于历史程序错误向量创建的程序异常分类模型中,得到异常日志向量;
异常程序类型模块,用于根据异常日志向量输出异常程序的类型。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,处理器执行计算机程序时实现所述的异常程序分类方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现所述的异常程序分类方法的步骤。
本发明实施例的异常程序分类方法及装置先根据当前程序错误日志中的错误程序特征生成当前程序错误向量,再将当前程序错误向量输入程序异常分类模型中,得到异常日志向量,最后根据异常日志向量输出异常程序的类型,显著提高测试阶段程序的异常分析效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中异常程序分类方法的流程图;
图2是本发明另一实施例中异常程序分类方法的流程图;
图3是本发明实施例中创建程序异常分类模型的流程图;
图4是本发明另一实施例中创建程序异常分类模型的流程图;
图5是生成历史程序错误向量的流程图;
图6是本发明实施例中异常程序分类装置的结构框图;
图7是本发明实施例中计算机设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
鉴于现有技术影响了测试阶段程序的异常分析流程效率,本发明实施例提供一种异常程序分类方法,可以在程序出现错误的时候根据程序日志来判别异常程序的类型,提前让测试人员通知相应的工作人员进行分析,显著提高测试阶段程序的异常分析效率。
图1是本发明一实施例中异常程序分类方法的流程图。图2是本发明另一实施例中异常程序分类方法的流程图。如图1-图2所示,异常程序分类方法包括:
S101:获取当前程序错误日志,根据当前程序错误日志中的错误程序特征生成当前程序错误向量。
当程序出现异常时,本发明输入当前程序的错误日志,通过训练阶段选择出来的错误程序特征得到该当前程序的错误向量。例如,错误程序特征包括DatabaseException(数据库异常)、Duplicate(重复)、NullPointerException(空指针异常)、FileNotFoundException(文件查找失败异常)、MySQLSyntaxErrorException(mysql语法异常)、denied(拒绝)、“:”、“/”和“@”。利用布尔值表示的词袋模型可以将当前程序错误日志中出现的错误程序特征转换为当前程序错误向量。
S102:将当前程序错误向量输入基于历史程序错误向量创建的程序异常分类模型中,得到异常日志向量。
本发明利用历史程序错误向量训练得到的支持向量机分类器(程序异常分类模型)根据当前程序错误向量进行分类:若异常日志向量为环境异常日志向量,则该当前程序被分类为环境配置问题,此时通知环境配置人员来处理;若异常日志向量为程序异常日志向量,则该当前程序被分类为程序错误问题,此时通知程序开发人员来处理。
S103:根据异常日志向量输出异常程序的类型。
例如,环境异常日志向量为(0,0,0,1,0,1,1,1,0),程序异常日志向量为(0,0,0,1,0,0,1,0,0),则当异常日志向量为(0,0,0,1,0,1,1,1,0)时,异常程序的类型为环境配置问题;当异常日志向量为(0,0,0,1,0,0,1,0,0)时,异常程序的类型为程序错误问题。
图1所示的异常程序分类方法的执行主体可以为计算机。由图1所示的流程可知,本发明实施例的异常程序分类方法先根据当前程序错误日志中的错误程序特征生成当前程序错误向量,再将当前程序错误向量输入程序异常分类模型中,得到异常日志向量,最后根据异常日志向量输出异常程序的类型,显著提高测试阶段程序的异常分析效率。
图3是本发明实施例中创建程序异常分类模型的流程图。图4是本发明另一实施例中创建程序异常分类模型的流程图。如图3-图4所示,基于历史程序错误向量创建程序异常分类模型包括:
执行如下迭代处理:
S201:根据历史程序错误向量和分类模型参数确定预测异常日志向量。
图5是生成历史程序错误向量的流程图。如图5所示,在执行S201之前,还包括:
S301:获取历史程序错误日志,根据历史程序错误日志中各单词的词频和逆向文件频率确定单词特征。
其中,可以获取大量历史程序错误日志作为训练集,历史程序错误日志可以分为两类:环境问题错误日志和程序问题错误日志。
程序异常分类模型是通过历史程序错误日志的特征来进行分类的,文本分类属于典型的高维分类问题,特征太多会增加分类的运算量,影响分类的效率,因此特征选择是在训练模型之前必不可少的。如果某个单词在一个错误日志中出现的频率高,但是在其他错误日志中很少出现,则认为该单词对于异常程序分类具有很好的区分度。
一实施例中,根据历史程序错误日志中各单词的词频和逆向文件频率确定单词特征包括:根据历史程序错误日志中各单词的词频和逆向文件频率确定各单词的词频-逆向文件频率,将词频-逆向文件频率按照从大到小的顺序进行排序,确定排序在单词预设阈值之前的单词作为单词特征。
具体实施时,可以通过如下公式确定各单词的词频-逆向文件频率:
TF-IDF
其中,TF-IDF
一实施例中,在执行S301之前还包括:
1、根据各单词在历史程序错误日志中的出现次数和历史程序错误日志的总单词数量确定各单词的词频。
具体实施时,可以通过如下公式确定各单词的词频:
其中,TF
2、根据历史程序错误日志的总数量和各单词对应的历史程序错误日志数量确定各单词的逆向文件频率。
具体实施时,可以通过如下公式确定各单词的逆向文件频率:
其中,IDF
S302:根据单词特征和预设符号特征生成错误程序特征。
错误程序特征包括单词特征和预设符号特征。在传统的文本分类中,特征提取阶段通常会把文本中的符号特征(如特殊符号或标点符号)删除,因为符号通常被认为不具有语义信息,对分类没有帮助。但是在本发明的异常程序分类应用场景中,环境问题通常跟数据库、网络和文件系统等资源有关,因此一旦出现环境问题,错误日志中会输出url(唯一资源定位符)的可能性很高。因此本发明在使用TF-IDF完成单词特征的选择后,还把url中常出现的符号特征,例如符号冒号(:)、左斜杠(/)和@符号等加入到错误程序特征中以提高分类的准确性。
S303:根据错误程序特征生成历史程序错误向量。
针对文本分类的特征表示方法有很多种,用布尔值表示的词袋模型是比较简单且常用的一种,即利用布尔变量来表示历史程序错误日志以根据错误程序特征生成对应的历史程序错误向量。例如向量Y
S202:根据预测异常日志向量与对应的实际异常日志向量确定损失函数。
S203:判断损失函数是否小于或等于预设损失函数阈值。
S204:当损失函数小于或等于预设损失函数阈值时,根据分类模型参数创建程序异常分类模型。
其中,程序异常分类模型为支持向量机模型。根据程序的错误日志把程序分为环境配置问题和程序错误问题,实际上是一个二类分类问题,支持向量机(Support VectorMachine,SVM)是一种在二类分类问题中效果较好的常用的机器学习方法,常常被用于如垃圾短信分类,垃圾邮件分类等文本分类的问题中。支持向量机本质上是根据训练数据集求解出能够正确划分训练集的最大间隔超平面,把分类问题转化为一个凸二次规划问题。支持向量机的最大间隔超平面只与支持向量有关,因此它在样本小的问题上也能有较好的效果,所以本发明选择支持向量机作为分类器。
S205:当损失函数大于预设损失函数阈值时,根据损失函数更新分类模型参数,继续执行迭代处理。
本发明实施例的具体流程如下:
1、获取历史程序错误日志,根据各单词在历史程序错误日志中的出现次数和历史程序错误日志的总单词数量确定各单词的词频,根据历史程序错误日志的总数量和各单词对应的历史程序错误日志数量确定各单词的逆向文件频率。
2、根据历史程序错误日志中各单词的词频和逆向文件频率确定单词特征。
3、根据单词特征和预设符号特征生成错误程序特征,根据错误程序特征生成历史程序错误向量。
4、根据历史程序错误向量和分类模型参数确定预测异常日志向量。
5、根据预测异常日志向量与对应的实际异常日志向量确定损失函数。当损失函数小于或等于预设损失函数阈值时,根据分类模型参数创建程序异常分类模型,否则根据损失函数更新分类模型参数,返回步骤4。
6、获取当前程序错误日志,根据当前程序错误日志中的错误程序特征生成当前程序错误向量。
7、将当前程序错误向量输入基于历史程序错误向量创建的程序异常分类模型中,得到异常日志向量。
8、根据异常日志向量输出异常程序的类型。
综上,本发明通过机器学习的方法可以在程序出现错误时根据程序错误日志提前判别程序出现的是环境问题还是程序问题,第一时间让测试人员通知相应的工作人员进行分析,显著提高测试阶段程序的异常分析效率。
图6是本发明实施例中异常程序分类装置的结构框图。如图6所示,异常程序分类装置包括:
获取模块,用于获取当前程序错误日志,根据当前程序错误日志中的错误程序特征生成当前程序错误向量;
异常日志向量模块,用于将当前程序错误向量输入基于历史程序错误向量创建的程序异常分类模型中,得到异常日志向量;
异常程序类型模块,用于根据异常日志向量输出异常程序的类型。
在其中一种实施例中,还包括:程序异常分类模型创建模块,用于执行如下迭代处理:
根据历史程序错误向量和分类模型参数确定预测异常日志向量;
根据预测异常日志向量与对应的实际异常日志向量确定损失函数;
当损失函数小于或等于预设损失函数阈值时,根据分类模型参数创建程序异常分类模型,否则根据损失函数更新分类模型参数,继续执行迭代处理。
在其中一种实施例中,还包括:
单词特征模块,用于获取历史程序错误日志,根据历史程序错误日志中各单词的词频和逆向文件频率确定单词特征;
错误程序特征模块,用于根据单词特征和预设符号特征生成所述错误程序特征;
历史程序错误向量模块,用于根据错误程序特征生成历史程序错误向量。
在其中一种实施例中,还包括:
词频确定模块,用于根据各单词在历史程序错误日志中的出现次数和历史程序错误日志的总单词数量确定各单词的词频;
逆向文件频率模块,用于根据历史程序错误日志的总数量和各单词对应的历史程序错误日志数量确定各单词的逆向文件频率。
综上,本发明实施例的异常程序分类装置先根据当前程序错误日志中的错误程序特征生成当前程序错误向量,再将当前程序错误向量输入程序异常分类模型中,得到异常日志向量,最后根据异常日志向量输出异常程序的类型,显著提高测试阶段程序的异常分析效率。
本发明实施例还提供能够实现上述实施例中的异常程序分类方法中全部步骤的一种计算机设备的具体实施方式。图7是本发明实施例中计算机设备的结构框图,参见图7,所述计算机设备具体包括如下内容:
处理器(processor)701和存储器(memory)702。
所述处理器701用于调用所述存储器702中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的异常程序分类方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
获取当前程序错误日志,根据当前程序错误日志中的错误程序特征生成当前程序错误向量;
将当前程序错误向量输入基于历史程序错误向量创建的程序异常分类模型中,得到异常日志向量;
根据异常日志向量输出异常程序的类型。
综上,本发明实施例的计算机设备先根据当前程序错误日志中的错误程序特征生成当前程序错误向量,再将当前程序错误向量输入程序异常分类模型中,得到异常日志向量,最后根据异常日志向量输出异常程序的类型,显著提高测试阶段程序的异常分析效率。
本发明实施例还提供能够实现上述实施例中的异常程序分类方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的异常程序分类方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
获取当前程序错误日志,根据当前程序错误日志中的错误程序特征生成当前程序错误向量;
将当前程序错误向量输入基于历史程序错误向量创建的程序异常分类模型中,得到异常日志向量;
根据异常日志向量输出异常程序的类型。
综上,本发明实施例的计算机可读存储介质先根据当前程序错误日志中的错误程序特征生成当前程序错误向量,再将当前程序错误向量输入程序异常分类模型中,得到异常日志向量,最后根据异常日志向量输出异常程序的类型,显著提高测试阶段程序的异常分析效率。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元,或装置都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
- 异常程序分类方法及装置
- 状况判定装置、状况判定方法、状况判定程序、异常判定装置、异常判定方法、异常判定程序及拥塞推定装置