一种基于NLP算法的预警处理方法及系统
文献发布时间:2023-06-19 09:41:38
技术领域
本申请实施例涉及人工智能领域,尤其涉及一种基于NLP算法的预警方法及系统。
背景技术
随着互联网信息社会的不断发展,互联网的技术要求也就越来越高。目前很多互联网公司后端有很多复杂的系统,例如手机软件后端、万维网后端以及大数据系统等,这些后端程序是否运行良好都会配有各种预警服务来监控,预警服务器发现后端程序报错就会发送信息给相关的运维人员或者软件工程师。然后运维人员和工程师通过跟踪报错信息与源代码人工判断出问题原因,再进行系统修复。
在现有技术中,工程师接收到报错信息后一般是查看报错信息提供的程序运行日志、程序代码报错行号以及完整的调用顺序,工程师再根据经验查看代码,模拟用户输入来复现问题,由于工程师是根据个人经验查看代码并且结果也是模拟用户输入得到的,容易出现得到的系统报错问题描述不准确的情况。
发明内容
本申请实施例提供了一种基于NLP算法的预警处理方法及系统,用于提高系统报错问题描述数据的准确度。
本申请实施例第一方面提供了基于NLP算法的处理方法,包括:
获取报错信息;
收集所述报错信息的相关程序源代码,所述源代码包括多种类型的表示形式,所述表示形式提供了进行代码结构的唯一窗口;
将所述报错信息的相关程序源代码数据进行编码成可执行二进制代码;
输入所述编码后的代码数据到预设NLP算法模型中进行深度学习;
输出进行深度学习并且解码代码数据后的自然语言,所述自然语言提供了所述报错信息所需的代码含义和行为的线索。
可选的,所述将所述报错信息的相关程序源代码数据进行编码成可执行二进制代码,包括:
对于所述报错信息的相关程序源代码中的扩展源代码执行宏替换操作;
启动编译器通过汇编语言将源代码编译成可执行二进制代码。
可选的,在输入所述编码后的代码数据到预设NLP算法模型中进行深度学习之前,所述方法还包括:
训练预设NLP算法模型,所述预设NLP算法模型用于采用code2vec神经网络的部分读取代码向量。
可选的,所述输入所述编码后的代码数据到预设NLP算法模型中进行深度学习,包括:
获取一种新方法;
通过所述code2vec神经网络将所述新方法的下上文路径样本输入到预设NLP算法模型中进行深度学习。
可选的,所述输出进行深度学习并且解码代码数据后的自然语言,包括:
将进行深度学习后的代码进行解码;
输出解码后的自然语言。
可选的,所述方法还包括:
结合静态程序和动态程序分析所述报错信息中源代码运行发生的代码功能以及代码各种类型的数据。
本申请实施例第二方面提供了基于NLP算法的预警处理系统,包括:
获取单元,用于获取报错信息;
收集单元,用于收集所述报错信息的相关程序源代码,所述源代码包括多种类型的表示形式,所述表示形式提供了进行代码结构的唯一窗口;
编码单元,用于将所述报错信息的相关程序源代码数据进行编码成可执行二进制代码;
输入单元,用于输入所述编码后的代码数据到预设NLP算法模型中进行深度学习;
输出单元,用于输出进行深度学习并且解码代码数据后的自然语言,所述自然语言提供了所述报错信息所需的代码含义和行为的线索。
可选的,所述编码单元包括:
执行模块,用于对于所述报错信息的相关程序源代码中的扩展源代码执行宏替换操作;
启动模块,用于启动编译器通过汇编语言将源代码编译成可执行二进制代码。
可选的,在所述输入单元之前,所述系统还包括:
训练单元,用于训练预设NLP算法模型,所述预设NLP算法模型用于采用code2vec神经网络的部分读取代码向量。
可选的,所述输入单元包括:
获取模块,用于获取一种新方法;
输入模块,用于通过所述code2vec神经网络将所述新方法的下上文路径样本输入到预设NLP算法模型中进行深度学习。
可选的,所述输出单元包括:
解码模块,用于将进行深度学习后的代码进行解码;
输出模块,用于输出解码后的自然语言。
可选的,所述系统还包括:
结合静态程序和动态程序分析所述报错信息中源代码运行发生的代码功能以及代码各种类型的数据。
本申请实施例第三方面提供了基于NLP算法的处理系统,包括:
处理器、存储器、输入输出单元、总线;
所述处理器与所述存储器、所述输入输出单元以及所述总线相连;
所述处理器具体执行如下操作:
获取报错信息;
收集所述报错信息的相关程序源代码,所述源代码包括多种类型的表示形式,所述表示形式提供了进行代码结构的唯一窗口;
将所述报错信息的相关程序源代码数据进行编码成可执行二进制代码;
输入所述编码后的代码数据到预设NLP算法模型中进行深度学习;
输出进行深度学习并且解码代码数据后的自然语言,所述自然语言提供了所述报错信息所需的代码含义和行为的线索。
可选的,所述处理器还用于执行第一方面中的任意可选方案的操作。
本申请实施例第四方面提供了基于NLP算法的处理的计算机可读存储介质,包括:
所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行前述基于NLP算法的处理方法。
从以上技术方案可以看出,本申请实施例具有以下优点:在本申请中,系统获取到报错信息后收集报错信息的相关程序源代码,将源代码数据进行编码成可执行二进制代码,将编码后的代码数据输入到预设NLP算法模型中进行深度学习,最后输出进行深度学习并且解码代码数据后的自然语言,这样通过模型计算提高了系统报错问题描述数据的准确度。
附图说明
图1为本申请实施例中基于NLP算法的处理方法的一个实施例流程示意图;
图2为本申请实施例中基于NLP算法的处理方法的另一个实施例流程示意图;
图3为本申请实施例中基于NLP算法的处理系统的一个实施例结构示意图;
图4为本申请实施例中基于NLP算法的处理系统的另一个实施例结构示意图;
图5为本申请实施例中基于NLP算法的处理系统的另一个实施例结构示意图。
具体实施方式
本申请实施例提供了一种基于NLP算法的预警处理方法及系统,用于提高系统报错问题描述数据的准确度。
下面将结合本申请实施例中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的方法应用于系统,下面以执行主体为系统进行描述,请参阅图1,本申请中基于NLP算法的预警处理方法一个实施例包括:
101、系统获取报错信息;
在实际应用中,预警服务器发现后端程序报错就会发送信息给相关运维人员以及工程师,一般工程师是根据经验查看报错信息中相关源代码,通过源代码提供的报错行号以及完整的调用顺序,模拟用户输入复现问题,找到报错信息的问题原因再进行修复。整个过程最终系统报错的解释过程需要人工参与,找到报错信息问题的时间比较长,因为工程师是通过个人经验模拟用户问题因此可能出现得到的结果会有偏差的情况。
在本实施例中,运用基于深度学习的NLP技术,通过系统运行日志,系统上下文,程序源代码通过深度学习模型计算得到更准确的报错信息的问题描述,因此首先系统要收集获取到服务器发送的报错信息。
102、系统收集报错信息的相关程序源代码,源代码包括多种类型的表示形式,表示形式提供了进行代码结构的唯一窗口;
在本实施例中,基于NLP算法的预警服务的方法中的系统包括预警信息管理模块以及后端程序预警模块,预警信息管理模块主要负责收集业务信息结构、分类、源代码以及预警人员等基础信息,后端程序预警主要负责收集日志信息、触发预警、模型调用以及邮件发送等后台功能。因此报错信息的相关程序源代码是由预警信息管理模块收集获取,其中该源代码包括多种类型的表示形式。
103、系统将报错信息的相关程序源代码数据进行编码成可执行二进制代码;
系统收集得到报错信息的相关程序源代码后将源代码进行编码,计算机中存储的都是二进制,但是系统在计算机中显示的时候是我们可以看到并且理解的中文、a、1等这些计算机中没有存储的字符,而系统在存储信息的过程就应用到编码,例如将字符串编码为字节数组,同样的在本实施例中系统获取到的报错信息中的字符需要进行编码才能被系统读取并且进行后续的解码识别出报错信息中的问题描述。
104、系统输入编码后的代码数据到预设NLP算法模型中进行深度学习;
源代码与自然语言之前最清晰的联系之一是细分的层次结构不一样,例如自然语言的分割层次为字符-单句-句子-段落-文档-语料库,而源代码的分割层次为字符-标记-行/语句-方法-类/文件-存储库,对于自然语言,word2vec的部分效果很好,因为密切相关的单词通常位于在一起,但是对于源代码而言,编码语言的语法更易于指示相距较远的标记之前的牢固关系。例如,长条形功能上的打开撑条与闭合条形支架牢固地连接,以至于任何一个撑条都不存在,即使撑条相隔数百行,该功能也变得完全不可编译,因此采用基于自然语言的算法模型进行深度学习编译代码。
105、系统输出进行深度学习并且解码代码数据后的自然语言,自然语言提供了报错信息所需的代码含义和行为的线索。
在本实施例中,通过模型训练得到的解码后的自然语言工程师可以直观看到系统自动生成的报错信息的异常所在。例如,系统获取到预警服务器发送的报错信息为某一时间某某系统某某功能某某模块在进行某某操作,首先系统将信息拆解为系统可以识别的分词,系统将分词进行检索,获取待源代码某行代码如下if(age>0),再数据化所有单词,输入到算法模型中,最终话得到预警信息,例如此报错信息的预警信息为:用户在进行填写个人资料时,遇到了空指针异常,这样工程师就可以根据生成的报错信息的详细描述进行修复。
请参阅图2,本申请实施例以系统为执行主体进行描述,本申请实施例中基于NLP算法的预警处理方法另一个实施例包括:
201、系统获取报错信息;
202、系统收集报错信息的相关程序源代码,源代码包括多种类型的表示形式,表示形式提供了进行代码结构的唯一窗口;
本实施例中的步骤201至202与前述实施例中步骤101至102类似,此处不做赘述。
203、对于报错信息的相关程序源代码中的扩展源代码系统执行宏替换操作;
在本实施例中,使用简单宏定义可以用宏代替一个在程序中经常使用的常量,这样在将该常量改变时,不需要对整个程序进行修改,只修改宏定义的字符串就可以,而且当常量比较长时,可以用较短有意义的标识符来写程序,这样的话就更方便些。因此,系统获取到的部分扩展的源代码进行宏替换。
204、系统启动编译器通过汇编语言将源代码编译成可执行二进制代码;
源文件经过编译器编译后才生成二进制文件,汇编语言是直接面向处理器的程序设计语言,这也是为什么汇编语言的执行速度要比其它语言快,但同时这也使编程更加复杂,因为既然数据是存放在寄存器或存储器中,那么必然就存在着寻址方式,也就是用什么方法找到所需要的数据,因此系统通过汇编语言将源代码编译成可执行二进制代码。
205、系统训练预设NLP算法模型,预设NLP算法模型用于采用code2vec神经网络的部分读取代码向量;
本实施例中,系统训练NLP算法模型是依赖于code2vec神经网络,code2vec中有两个编码器,一个是用于令牌词汇表,与训练语料中有不同令牌的行数一样多,数量级为数万个,另一个是用于路径词汇表,具体的,“foo”是路径上下文节点,则与令牌词汇表中的foo的索引相对应的令牌编码矩阵的行表示foo的矢量编码。网络的其余部分是相当通用的神经体系结构组件的拼凑而成,包括标准激活功能,密集连接的层和关注机制。
206、系统获取一种新方法;
在本实施例中,将代码方法输入到网络后,该方法的“代码向量”是最后一个隐藏层的激活值。但是我们也可以将注意力权重向量本身视为代码向量。通常,选择网络的哪一部分来读取代码向量并不是先验的,而是取决于实验或直觉。
207、系统通过code2vec神经网络将新方法的下上文路径样本输入到预设NLP算法模型中进行深度学习;
在本实施例中,将抽象语法树、语法规则、功能范围以及自然语言程序描述融合为单个神经的输入,获取到新方法后可以将方法的上下文路径样本输入到训练的模型中,并从指定的隐藏层提取代码矢量。然后,代码向量可以在通用ML算法中用作新的预测任务的预测功能,从而消除了构建和训练高度定制的任务特定神经网络的需要,从而节省了大量分析人员的工作量。
208、系统将进行深度学习后的代码进行解码;
系统对源代码进行编码后深度学习必定是要解码的,解码后最后输出的是系统要的自然语言。
209、系统输出解码后的自然语言。
在本实施例中,自然语言相对应源代码存在语法以及其他部分标识上的不同,自然语言至少可以以最少的语法知识来较弱的理解,而对代码的部分理解需要至少完全了解其某些语法。因此,输出自然语言能够使得在输出报错信息的问题描述时间更快,这样节省了工作人员的工作时间和工作量。
请参阅图3,本申请实施例中基于NLP算法的预警处理系统一个实施例包括:
获取单元301,用于获取报错信息;
收集单元302,用于收集报错信息的相关程序源代码,源代码包括多种类型的表示形式,表示形式提供了进行代码结构的唯一窗口;
编码单元303,用于将报错信息的相关程序源代码数据进行编码成可执行二进制代码;
输入单元304,用于输入编码后的代码数据到预设NLP算法模型中进行深度学习;
输出单元305,用于输出进行深度学习并且解码代码数据后的自然语言,自然语言提供了报错信息所需的代码含义和行为的线索。
本实施例中,获取单元301获取报错信息后收集单元302收集报错信息的相关程序源代码,源代码包括多种类型的表示形式,表示形式提供了进行代码结构的唯一窗口,编码单元303将报错信息的相关程序源代码数据进行编码成可执行二进制代码,输入单元304则输入编码后的代码数据到预设NLP模型中进行深度学习,输出单元305输出进行深度学习并且解码代码数据后的自然语言。通过模型计算提高了系统报错问题描述数据的准确度。
下面对本申请实施例中的基于NLP算法的预警处理系统进行详细描述,请参阅图4,本申请实施例中基于NLP算法的预警处理系统另一个实施例包括:
获取单元401,用于获取报错信息;
收集单元402,用于收集报错信息的相关程序源代码,源代码包括多种类型的表示形式,表示形式提供了进行代码结构的唯一窗口;
编码单元403,用于将报错信息的相关程序源代码数据进行编码成可执行二进制代码;
训练单元404,用于训练预设NLP算法模型,预设NLP算法模型用于采用code2vec神经网络的部分读取代码向量;
输入单元405,用于输入编码后的代码数据到预设NLP算法模型中进行深度学习;
输出单元406,用于输出进行深度学习并且解码代码数据后的自然语言,自然语言提供了报错信息所需的代码含义和行为的线索。
本实施例中,编码单元403可以包括执行模块4031和启动模块4032。
执行模块4031,用于对于报错信息的相关程序源代码中的扩展源代码执行宏替换操作;
启动模块4032,用于启动编译器通过汇编语言将源代码编译成可执行二进制代码。
本实施例中,输入单元405可以包括获取模块4051和输入模块4052。
获取模块4051,用于获取一种新方法;
输入模块4052,用于通过code2vec神经网络将新方法的下上文路径样本输入到预设NLP算法模型中进行深度学习。
本实施例中,各单元及模块的功能与前述图2所示实施例中的步骤对应,此处不做赘述。
下面对本申请实施例中基于NLP算法的处理系统进行详细描述,请参阅图5,本申请实施例中基于NLP算法的处理系统另一个实施例包括:
处理器501、存储器502、输入输出单元503、总线504;
处理器501与存储器502、输入输出单元503以及总线504相连;
处理器501执行如下操作:
获取报错信息;
收集报错信息的相关程序源代码,源代码包括多种类型的表示形式,表示形式提供了进行代码结构的唯一窗口;
将报错信息的相关程序源代码数据进行编码成可执行二进制代码;
输入编码后的代码数据到预设NLP算法模型中进行深度学习;
输出进行深度学习并且解码代码数据后的自然语言,自然语言提供了报错信息所需的代码含义和行为的线索。
可选的,处理器501的功能与前述图1至图2所示实施例中的步骤对应,此处不做赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
- 一种基于NLP算法的不按路线行驶预警处理方法和系统
- 一种基于NLP算法的配电网调度实时监护系统和方法