首页 / 专利库 / 计算机网络 / 软件缺陷 / 用于应用中的错误诊断的方法、装置和计算机存储介质

用于应用中的错误诊断的方法、装置和计算机存储介质

阅读:511发布:2020-05-08

专利汇可以提供用于应用中的错误诊断的方法、装置和计算机存储介质专利检索,专利查询,专利分析的服务。并且本公开的 实施例 提供了用于应用错误诊断的方法、装置和计算机存储介质。例如,一种用于应用错误诊断的方法包括:获得与应用中的错误有关的信息;生成与所述应用中的错误有关的所述信息的编码;确定所述编码与一个或者多个预定编码之间的相似度,所述一个或者多个预定编码中的每一个与已知的 软件 缺陷 相关联;以及通过所述相似度与预定 阈值 的比较,确定与所述应用中的错误相关的至少一个 软件缺陷 。利用本公开的实施例,可以自动地检测应用中的错误。在一些实施例中,还可以自动提供针对所检测到的错误的解决方案,改善用户体验。,下面是用于应用中的错误诊断的方法、装置和计算机存储介质专利的具体信息内容。

1.一种应用错误诊断的方法,包括:
获得与应用中的错误有关的信息;
生成与所述应用中的错误有关的所述信息的编码;
确定所述编码与至少一个预定编码之间的相似度,所述至少一个预定编码中的每一个与已知的软件缺陷相关联;以及
通过所述相似度与第一阈值的比较,确定与所述应用中的所述错误相关的至少一个软件缺陷
2.根据权利要求1所述的方法,其中生成所述编码包括:
对所述信息进行向量化,以获得所述编码。
3.根据权利要求2所述的方法,其中对所述信息进行向量化包括:
对所述信息中的词语进行向量化,以获得词语向量;以及
基于所述词语向量,获得所述信息中的语句的向量。
4.根据权利要求1所述的方法,其中生成所述编码包括:
删除所述信息中的停顿词;以及
基于删除停顿词后的信息生成所述编码。
5.根据权利要求2所述的方法,其中基于术语频率-反向文件频率TF-IDF或者Word2vec模型来对所述信息进行所述向量化。
6.根据权利要求1所述的方法,其中与应用中的所述错误有关的所述信息包括所述应用的环境信息以及以下中的至少一项:
来自客户环境的关键错误日志段;
来自缺陷跟踪系统的缺陷信息;以及
来自支持页面或者支持服务器的解决方案信息。
7.根据权利要求1所述的方法,其中所述至少一个预定编码来自预先存储的语料库。
8.根据权利要求1所述的方法,其中确定所述编码与所述至少一个预定编码之间的相似度包括:
基于编码之间的欧式距离或者余弦函数来确定所述相似度。
9.根据权利要求1所述的方法,进一步:
获取与所述已知的软件缺陷有关的信息;以及
基于与所述已知的软件缺陷有关的所述信息来更新所述至少一个预定编码,以用于后续的错误诊断。
10.根据权利要求1所述的方法,进一步包括:
获得所确定的所述至少一个软件缺陷的描述;
确定所述描述与至少一个预定解决方案的描述之间的描述相似度;以及基于所确定的所述描述相似度与第二阈值的比较,确定用于解决所述应用中的所述错误的至少一个解决方案。
11.根据权利要求10所述的方法,其中所述至少一个预定解决方案来自支持网页或者支持服务器。
12.根据权利要求10所述的方法,其中确定所述描述相似度包括:
获得所述至少一个软件缺陷的描述的向量化表示;以及
通过比较所述向量化表示与所述至少一个预定解决方案的描述向量来确定所述描述相似度。
13.根据权利要求12所述的方法,其中基于向量之间的欧式距离或者余弦函数来确定所述向量化表示与所述至少一个预定解决方案的描述向量之间的描述相似度。
14.根据权利要求10所述的方法,其中所述描述包括所述至少一个软件缺陷的标题。
15.根据权利要求10所述的方法,进一步包括:
获取与所述应用有关的可用解决方案;以及
基于所获取的可用解决方案,更新所述至少一个预定解决方案,以用于后续的错误诊断。
16.一种用于应用错误诊断的装置,包括:
数据收集器,被配置为获得与应用中的错误有关的信息;
信息编码器,被配置为生成与所述应用中的错误有关的所述信息的编码;
分析器,被配置为确定所述编码与至少一个预定编码之间的相似度,所述至少一个预定编码中的每一个与已知的软件缺陷相关联;以及
错误诊断器,被配置为通过所述相似度与第一阈值的比较,确定与所述应用中的错误相关的至少一个软件缺陷。
17.根据权利要求16所述的装置,其中所述信息编码器被配置为对所述信息进行向量化,以获得所述编码。
18.根据权利要求17所述的装置,其中所述信息编码器被配置为:
对所述信息中的词语进行向量化,以获得词语向量;以及
基于所述词语向量,获得所述信息中的语句的向量。
19.根据权利要求16所述的装置,其中所述信息编码器被配置为:
删除所述信息中的停顿词;以及
基于删除停顿词后的信息生成所述编码。
20.根据权利要求17所述的装置,其中所述信息编码器被配置为基于术语频率-反向文件频率TF-IDF或者Word2vec模型来对所述信息进行所述向量化。
21.根据权利要求16所述的装置,其中与应用中的所述错误有关的所述信息包括所述应用的环境信息以及以下中的至少一项:
来自客户环境的关键错误日志段;
来自缺陷跟踪系统的缺陷信息;以及
来自支持页面或者支持服务器的解决方案信息。
22.根据权利要求16所述的装置,其中所述至少一个预定编码来自预先存储的语料库。
23.根据权利要求16所述的装置,其中所述分析器被配置为:
基于编码之间的欧式距离或者余弦函数来确定所述相似度。
24.根据权利要求16所述的装置,进一步缺陷更新部件,被配置为:
获取与所述已知的软件缺陷有关的信息;以及
基于与所述已知的软件缺陷有关的所述信息来更新所述至少一个预定编码,以用于后续的错误诊断。
25.根据权利要求16所述的装置,进一步包括解决方案确定部件,被配置为:
获得所确定的所述至少一个软件缺陷的描述;
确定所述描述与至少一个预定解决方案的描述之间的描述相似度;以及基于所确定的所述描述相似度与第二阈值的比较,确定用于解决所述应用中的所述错误的至少一个解决方案。
26.根据权利要求25所述的装置,其中所述至少一个预定解决方案来自支持网页或者支持服务器。
27.根据权利要求25所述的装置,其中所述解决方案确定部件被配置为通过以下操作来确定所述描述与至少一个预定解决方案的描述之间的描述相似度:
获得所述至少一个软件缺陷的描述的向量化表示;以及
通过比较所述向量化表示与所述至少一个预定解决方案的描述向量来确定所述描述相似度。
28.根据权利要求27所述的装置,其中基于向量之间的欧式距离或者余弦函数来确定所述向量化表示与所述至少一个预定解决方案的描述向量之间的描述相似度。
29.根据权利要求25所述的装置,其中所述描述包括所述至少一个软件缺陷的标题。
30.根据权利要求25所述的装置,进一步解决方案更新部件,被配置为:
获取与所述应用有关的可用解决方案;以及
基于所获取的可用解决方案,更新所述至少一个预定解决方案,以用于后续的错误诊断。
31.一种电子设备,包括:
至少一个处理器;以及
至少一个存储器,耦合至所述至少一个处理器并且包含存储于其中的计算机程序代码,所述计算机程序在被所述至少一个处理器执行时,使所述电子设备执行根据权利要求
1-15中任一权利要求所述的方法。
32.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求
1至15中任一项所述的方法。

说明书全文

用于应用中的错误诊断的方法、装置和计算机存储介质

技术领域

[0001] 本公开的实施例一般地涉及软件应用的技术领域,并且更具体地,涉及用于应用中的错误诊断的方法、装置和计算机存储介质。

背景技术

[0002] 理想情况下,期望向客户提供的应用程序存在零缺陷(bug)。然而,由于某些原因,存在已知缺陷一些软件有时仍然会被发布。此外,一些缺陷可能在产品发布后才被检测到,并且在以后的版本中被修复。当在客户环境中出现问题时,如何检测这些问题以及如何为客户提供正确的解决方案是应该解决的问题。发明内容
[0003] 本公开的实施例中提供了用于应用错误诊断的方法、装置和计算机存储介质。
[0004] 在本公开的第一方面,提供一种应用错误诊断的方法。该方法包括:获得与应用中的错误有关的信息;生成与所述应用中的错误有关的所述信息的编码;确定所述编码与至少一个预定编码之间的相似度,所述至少一个预定编码中的每一个与已知的软件缺陷相关联;以及通过所述相似度与第一阈值的比较,确定与所述应用中的错误相关的至少一个软件缺陷。
[0005] 在一些实施例中,生成所述编码可以包括:对所述信息进行向量化,以获得所述编码。在进一步的实施例中,对所述信息进行向量化可以包括:对所述信息中的词语进行向量化,以获得词语向量;以及基于所述词语向量,获得所述信息中的语句的向量。
[0006] 在一些实施例中,生成所述编码可以包括:删除所述信息中的停顿词;以及基于删除停顿词后的信息生成所述编码。
[0007] 在一些实施例中,可以基于术语频率-反向文件频率(TF-IDF)或者Word2vec模型来对所述信息进行所述向量化。
[0008] 在一些实施例中,与应用中的所述错误有关的所述信息可以包括该应用的环境信息以及以下中的至少一项:来自客户环境的关键错误日志段、来自缺陷跟踪系统的缺陷信息、以及来自支持页面或者支持服务器的解决方案信息。
[0009] 在一些实施例中,该至少一个预定编码可以来自预先存储的语料库。
[0010] 在一些实施例中,确定所述编码与至少一个预定编码之间的相似度可以包括:基于编码之间的欧式距离或者余弦函数来确定该相似度。
[0011] 在一些实施例中,该方法可以进一步:获取与所述已知的软件缺陷有关的信息;以及基于与所述已知的软件缺陷有关的所述信息来更新所述至少一个预定编码,以用于后续的错误诊断。
[0012] 在一些实施例中,该方法可以进一步包括:获得所确定的所述至少一个软件缺陷的描述;确定所述描述与至少一个预定解决方案的描述之间的描述相似度;以及基于所确定的所述描述相似度与第二阈值的比较,确定用于解决所述应用中的所述错误的至少一个解决方案。在进一步的实施例中,该至少一个预定解决方案可以来自支持网页或者支持服务器。
[0013] 在另一实施例中,确定所述描述与至少一个预定解决方案的描述之间的描述相似度可以包括:获得所述至少一个软件缺陷的所述描述的向量化表示;以及通过比较所述向量化表示与所述至少一个预定解决方案的描述向量来确定所述描述相似度。在又一实施例中,可以基于向量之间的欧式距离或者余弦函数来确定所述向量化表示与所述至少一个预定解决方案的描述向量之间的描述相似度。在一些实施例中,该描述可以包括至少一个软件缺陷的标题。
[0014] 在一些实施例中,该方法可以进一步包括:获取与该应用有关的可用解决方案;以及基于所获取的可用解决方案,更新该至少一个预定解决方案,以用于后续的错误诊断。
[0015] 在本公开的第二方面,提供一种电子设备。该电子设备包括至少一个处理器、以及至少一个存储器。该存储器耦合至至少一个处理器并且包含存储于其中的计算机程序代码。计算机程序在被该至少一个处理器执行时,使该电子设备执行本公开的第一方面的任何方法。
[0016] 在本公开的第三方面,提供一种用于应用错误诊断的装置。所述装置包括:数据收集器,被配置为获得与应用中的错误有关的信息;信息编码器,被配置为生成与所述应用中的错误有关的所述信息的编码;分析器,被配置为确定所述编码与至少一个预定编码之间的相似度,所述至少一个预定编码中的每一个与已知的软件缺陷相关联;以及错误诊断器,被配置为通过所述相似度与第一阈值的比较,确定与所述应用中的错误相关的至少一个软件缺陷。
[0017] 在本公开的第四方面,提供一种计算机存储介质。该计算机存储介质包括存储于其上的计算机程序代码。该计算机程序代码在处理器中执行时,促使处理器执行本公开的第一方面的任何方法。
[0018] 尽管在附图中通过示例的方式示出了特定的实施例,然而,应当理解,本文的具体实施例的描述不意在将实施例限制为所公开的具体形式。

附图说明

[0019] 从下文的公开内容和权利要求中,本公开的目的、优点和其他特征将变得更加明显。这里仅出于示例的目的,参考附图来给出优选实施例的非限制性描述,在附图中:
[0020] 图1示出了其中可以实施本公开的实施例的计算机系统的示意性结构图;
[0021] 图2根据本公开的实施例的用于引用错误诊断的方法的流程图
[0022] 图3示出了根据本公开的实施例的TF-IDF权重矩阵;
[0023] 图4示出根据本公开的实施例的用于词语向量化的示例模型架构;
[0024] 图5示出根据本公开的实施例的用于词语向量化的示例神经网络的结构;
[0025] 图6示出根据本公开的实施例的以word2vec中CBOW模型为例的模型训练过程;
[0026] 图7示出根据本公开的实施例获得的相关词对;
[0027] 图8示出根据本公开的实施例的用于确定错误的解决方案的操作;
[0028] 图9示出根据本公开的实施例的用于检测应用的错误的装置示例架构;以及
[0029] 图10示出了根据本公开的实施例的电子设备的示例性结构图。

具体实施方式

[0030] 在以下描述中,出于说明的目的而阐述许多细节。然而,本领域普通技术人员将认识到可以在不使用这些具体细节的情况下实现本公开的实施例。因此,本公开不旨在于受限于所示实施例、而是将被赋予与本文描述的原理和特征一致的最宽的范围。
[0031] 应当理解,术语“第一”、“第二”等仅被用来将一个元素与另一个元素区分开来。而实际上第一元素也能够被称为第二元素,反之亦然。另外还应当理解“包括”,“包含”仅被用来说明所陈述的特征、元素、功能或者部件的存在,然而并不排除存在一个或者多个其他的特征、元素、功能或者部件。
[0032] 在图1中示出了根据本公开的一个实施例的示例计算机系统100的示意图。然而,应当注意的是,在一些实施例中,并不需要图1中所示的计算机系统的特定架构。
[0033] 在图1的示例计算机系统100中,包括用户主机110,错误检测器120、存储器130和服务器140。该用户主机包括运行于其上的应用程序101。该错误检测器120可以被实现于用户主机110内部或者外部,并且可以访问与该应用程序101有关的信息,以检测应用程序101中的错误。另外,该错误检测器120可以连接到存储器130和服务器140,以访问其中的数据和/或服务。
[0034] 该示例计算机系统不同于传统的计算机系统。在传统的计算机系统中,当客户环境中由于应用程序的缺陷导致问题时,只能依赖于客户的请求,即针对客户提出/报告的问题,来提供解决方案。
[0035] 例如,一种传统解决方案的流程如下。首先,客户在发现问题时提出支持请求。所发现的问题可能是开发者已知的问题或漏掉的缺陷,并且在后来的版本中已经被修复。然后,支持工程师要求客户相关的日志和环境信息,以用于调查该问题,并在产品知识库(KB)网页中搜索相关的缺陷和解决方案。最后,支持工程师向客户提供正确的解决方案。
[0036] 这种传统方法既不高效也不有利。另外,由于以下原因,该方法将严重降低客户的满意度,浪费和开发公司的努和成本。首先,在该方法中,支持工程师无法主动发现问题,并且因此无法在第一时间对客户的问题做出有效反应。其次,某些性能问题或其他一些复现率低的问题无法在生产环境中重现。同时,某些严重错误信息可能未被正确记录。这可能导致难以对问题定位,更难以找到解决该问题的解决方案。再次,一些情况下,在客户环境中可能已经出现了一些问题的险,然而开发者无法获知该风险,直到该问题阻止客户的业务运营,造成严重后果。另外,在开发工程师参与问题的解决时,与应用中的缺陷有关的日志和一些重要信息可能已经丢失了,这对于排除故障是不利的。以上这些因素将大大增加处理客户请求的时间。
[0037] 针对上述问题和一些其它问题,在本公开中提出了新的问题检测和修复方法以及装置。本公开中提出的方法和装置可以自动地检测应用中的问题,分析问题并将有价值的信息提供给,例如,支持工程师。该方法可以及早预防一些灾难。
[0038] 在一些实施例中,提出一种应用检测方法。该方法能够在第一时间检测客户的环境问题,防止问题进一步恶化或将灾难扼杀于摇篮中。所提出的方法可以是基于某种机器学习算法的机制,并可以主动检测客户的任何软件产品问题。
[0039] 替代地或者附加地,一些实施例中提出的方法可以包括分析客户环境中的错误日志与相关产品错误跟踪系统和/或支持解决方案KB站点之间的内在关系。分析结果可以被发送到自动支持服务器。作为示例,该分析结果可以包括,例如但不限于:客户的环境信息、与错误高度相关的缺陷、来自支持解决方案KB站点(例如图1中的服务器140)的相关解决方案等。
[0040] 在一些实施例中,用于检测和解决问题的方法包括日志跟踪操作,以主动检测客户的软件问题;以及文本向量化和相似性比较操作,以分析错误日志、软件缺陷和支持解决方案KB之间的内在关系,找到问题的解决方案。文本向量化可以通过,例如但不限于,术语频率-反向文件频率(TF-IDF)或者Word2vec等算法来实现。
[0041] 以下参考附图来描述本公开的一些实施例,以促进对本公开提出的方案的理解。
[0042] 图2示出根据本公开的实施例的、用于数据搜索的方法200。该方法200或者其一部分可以由例如图1中的错误检测器120来实施。为便于描述,以下结合错误检测器120和图1中的计算机系统100来描述方法200的实施例。但是应当理解,方法200不限于在图1的特定示例结构中被实施。
[0043] 如图2所示,在框210,错误检测器120获得与应用(例如图1中的应用101)中的错误有关的信息。该应用可以包括但不限于存储、浏览、游戏、聊天等应用。框210中的操作可以包括例如原始数据采集
[0044] 作为示例,框210中所获取的与应用中的错误有关的信息可以包括该应用的环境信息,以及以下中的至少一项:来自客户环境的关键错误日志段、来自缺陷跟踪系统的缺陷信息、以及来自支持页面或者支持服务器(例如图1中的服务器140)的解决方案信息。在下文中,所获取的信息又可以被称为语料库。
[0045] 在框220,错误检测器120生成与该应用中的错误有关的所述信息的编码。本公开的实施例不限于该信息的任何特定的编码方式。仅作为示例,在一些实施例中,可以通过对该信息进行向量化来获得所述编码。例如,错误检测器120可以将获取的语料库(例如日志段,缺陷信息,支持KB等)处理为相关的文本向量。
[0046] 作为非限制示例,在框220,错误检测器120可以通过术语频率(TF)或者术语频率-反向文件频率(TF-IDF)来实现文本的向量化。TF和TF-IDF均可以被看做是一种数字统计,其旨在反映一个词语对集合或语料库中的文档的重要性。TF指示某个术语在某个文档中出现的次数或者频率。例如,索引为t的术语在如索引为d的文档中出现的频率tftd可以通过公式(1)来确定。
[0047]
[0048] 在一些实施例中,考虑到不同的词语对于各文档具有不同的权重,可以在文本矢量化中引入自然语言处理领域中使用的反文档频率(IDF)。IDF指示该词的反比例,并且可以通过公式(2)来确定。
[0049]
[0050] 其中N表示集合中文档的数量,ft+1表示集合中包含术语t的文档出现的频率,其中“+1”的操作有利于数据平滑以避免集合中看不见的术语t。
[0051] 在一些实施例中,可以通过公式(3)确定词语t和文档d的TF-IDF:
[0052] TFIDF=tftd*idft  (3)
[0053] 其中tftd和idft可以分别通过公式(1)和(2)确定。
[0054] 在一些实施例中,所确定的TF-IDF可以通过图3所示的矩阵的形式表示,该矩阵因此可以被称为TF-IDF权重矩阵。图3的示例中,假设该矩阵尺寸为N×M,其中M为行数,表示要分类的日志字段的数量,N为列数,表示不同的词语的数目。也就是说,矩阵的每一列Wj对应一个词语,每一行Li对应一个文档,例如错误日志字段。第i行和第j列交叉点的取值Wij表示词语j在日志字段i中的TF-IDF权重。也就是说,该矩阵包含每个错误日志段中每个唯一词语的TF-IDF值。
[0055] 作为示例而非限制,可以使用如下伪代码来创建TF-IDF权重矩阵:
[0056] 伪代码:
[0057] /假定TF-IDF矩阵是N×M大小的矩阵
[0058] ==================================[0059] def tf_result(word,doc,total_words):
[0060] for I in doc:
[0061] if I==word:
[0062] occurrence=occurrence+1
[0063] return occurrence/total_words
[0064] def idf_result(corpus,ft):
[0065] return log(N/(ft+1))
[0066] for i in all_unique_words_in_corpus:
[0067] for j in all_docs:
[0068] if i in j:
[0069] ft=ft+1
[0070] for j in all_docs:
[0071] tf=tf_result(i,j,total_words_for_j)
[0072] idf=idf_result(N,ft+1)
[0073] tf_idf_matrix[index(i)][index(j)]=tf*idf
[0074] ==================================[0075] 替代地,在一些实施例中,可以通过基于神经网络的语言模型,例如Word2vec来实现文本的向量化。Word2vec是一组用于生成词语嵌入的相关模型。词语嵌入是自然语言处理(NLP)中一组语言建模和特征学习技术的统称,其中词汇表中的单词或短语被映射到实数的向量。从概念上讲,它涉及从每个单词一维的空间到具有更低维度的连续向量空间的数学嵌入。这些模型是浅层的神经网络,例如四层神经网络,其中可以包括1个输入层、1个投影层、1个隐藏层以及1个输出层。该神经网络经训练后可以被用于重建词语的语言上下文。
[0076] Word2vec可以将大量语料作为其输入,并产生通常为几百维的向量空间。语料库中的每个唯一单词被分配空间中相应的向量。词语向量被置于向量空间中,使得在语料库中共享共同上下文的单词在空间中彼此非常接近地定位。
[0077] Word2vec可以采用图4中所示的连续词袋(CBOW)或者跳图(Skip-gram)模型架构。CBOW例如通过求和410,使用上下文(W(i),i=t-2,t-1,t+1,t+2)401-404来预测一个单词W(t)405。即,其中使用上下文W(i)401-404作为输入,在投影层执行求和操作410,从而获得输出W(t)405。而Skip-gram使用一个词W(t)406来预测其上下文W(i)(i=t-2,t-1,t+1,t+
2)408、409、418和419。即,以W(t)406作为输入,通过投影层的操作407获得输出W(i)。
[0078] 在使用之前,可以利用已知的语料库来训练基于神经网络的语言模型,例如Word2vec模型。该已知的语料库可以包括所有日志和缺陷的内容。整个训练过程中,不断地将该语料库中的词语馈送给模型,以训练模型预测其相邻词语。在训练阶段,输入词语和输出的相邻词语是已知数据,并且可以被视为样品和标签。期望的训练结果是每个单词的“词语嵌入”表示。“词语嵌入”是输入层和投影层之间的权重矩阵。
[0079] 一旦完成训练,将从模型中删除最后一个层,即输出层,并保留输入层和隐藏层。此外,还保留输入层和投影层之间的权重矩阵(词语向量)。利用训练后的模型,从词汇表中输入一个词语,则隐藏层将提供所输入的词语的“词语嵌入”,即词语向量,作为输出。
[0080] 图5中示出了包括投影层530、隐藏层520、和输出层510的示例神经网络的结构,其中输出层510包括基于softmax的分类器。在该示例中,利用上下文/历史h 501(例如,英文单词“the”,“cat”,“sits”,“on”“, the”)预测出了相邻的词语“mat”。即,该示例中“mat”是该模型根据上下文“the cat sits on the”计算出的概率最大的词语Wt502。该示例中,在投影层520执行了累加求和(∑g(内嵌))操作503。投影层对词语向量的处理通常包括下面几种方式:拼接、求和以及求和取平均。在Word2vec模型中通常采用后两种处理方式。
[0081] 图6以word2vec中CBOW模型为例示出了模型训练的过程。图6中Xcat和Xon对应于输入层610的独热(one–hot)向量。One-hot向量中,与词语在词典中的位置对应的1位被置为1,其余位被置为0。比如说,在该示例中,假定cat在词典中的位置2,因此它的one-hot向量就是如图6中所示的(0,1,0…..)。“sat”为输出层630的输出结果。
[0082] 另外,在图6的示例中,V-dim表示Xcat的维度,即Xcat中元素的个数。类似地,N-dim对应的是隐藏层620的维度。在该示例中,在隐藏层计算了Xcat和Xon的平均向量。 是输入层610和隐藏层620之间的权重矩阵,训练过程中每次迭代会不断的更新 当概率函数收敛后,整个模型训练结束,这时获得的 是我们期望的词语向量矩阵,其中记录了所有词的词向量。具体而言, 中的每一列就是一个词语的向量。
[0083] 与TF-IDF比较而言,wrod2vec可以捕获语义相似性,并且通过word2vec训练的模型可以获知特定语料库中的相关词对,例如图7中所示的多个词对。
[0084] 作为示例,在wrod2vec模型中,'snapup'表示'备份','L0'表示完全备份,L1表示增量备份等。如果将语料库中的语句“创建数据集和备份”和“创建数据集和snapup”输入word2vec,则“备份”和“snapup”将获得非常相似的词语向量。这是因为“备份”和“snapup”具有相同的语义上下文,并且因此在word2vec中具有相似的输出。
[0085] 由图5-图7的示例可见,通过word2vec模型训练得到的词语向量可以捕获语料里词与词之前的语义关系,从而用这样的词语向量计算出的语句向量更有利于计算文本日志的相似度。
[0086] 作为示例而非限制,在一些实施例中,可以使用一个日志段中的平均词语向量来获得该日志段的向量。在一些实施例中,可以利用公式(4)计算一个日志段的语句向量:
[0087]
[0088] 其中M表示一个日志段中的词语总数,每个词语向量的维数为n。Wi表示日志段中的第i个词语,Wi={V1...Vn},Vi表示词语向量中的第i个子项。
[0089] 尽管以上提供了生成信息的编码的多个示例,然而应该理解,本公开的实施例不限于所列出的特定的编码方式。
[0090] 另外,在一些实施例中,在生成信息的所述编码之前,错误检测器120可以删除该信息中的停顿词。“停顿词”可以包括语言中对语境没有太大意义的常见的词语和/或标点符号。例如,英语中的冠词“a”、“the”、代词“which”等。
[0091] 现在重新参考图2。在框230,错误检测器120确定在框220生成的编码(例如通过TF-IDF或者Word2vec模型生成的词语向量或者语句向量)与至少一个预定编码之间的相似度,其中每个预定编码与已知的软件缺陷相关联。在一些实施例中,该至少一个预定编码可以来自预先存储的语料库。
[0092] 在一些实施例中,该至少一个预定编码可以由错误检测器120或者另外的装置基于已知的软件缺陷进行更新。例如,错误检测器120可以获取与已知的软件缺陷有关的信息,并且基于该信息更新该至少一个预定编码。也就是说,在已知的软件缺陷随着时间被更新(例如,增加)时,用于和信息的编码进行比较的至少一个预定编码也被更新(例如,增加),使得后续的错误诊断更加准确高效。
[0093] 本公开的实施例不限于以任何特定的方式来确定与错误有关的信息的编码和预定编码之间的相似度。作为示例,在一些实施例中,可以基于文本向量空间中的欧几里德距离或余弦函数来确定错误日志中的文本与预定缺陷描述的相似度。
[0094] 在某些实施例中,文本向量之间的欧几里德距离可以通过公式(5)来确定:
[0095]
[0096] 其中D(x,y)表示两个文本向量x和y之间的距离,N是每个文本向量的维度,Swx表示文本向量x(例如,框220中确定的文本向量)的第w个子向量,Swy是另一文本向量y(例如,数据库中存储的文本向量,即预定编码)的对应子向量。D(x,y)的值越小,则表示两个文本向量x和y的相似度越高。
[0097] 替代地,在一些实施例中,可以通过公式(6)计算余弦函数来确定文本向量A和B的相似度的方法:
[0098]
[0099] 其中A=(A1,A2,...,An),B=(B1,B2,...,Bn)),n表示文本向量的维度。cosθ的取值范围是(-1,1),其中1表示两个向量具有相同的取向,-1表示两个矢量取向相差180°,即在径向相对位置上。
[0100] 返回图2,在框240,错误检测器120基于所生成的编码和该至少一个预定编码之间的相似度,确定与应用中的错误相关的至少一个软件缺陷。也就是说,基于文本向量的比较结果(例如通过公式(5)或者(6)计算的相似度结果),错误诊断器120可以确定一个或者多个最相关的缺陷。
[0101] 在一些实施例中,错误检测器120可以将框230中确定的相似度与阈值进行比较,以确定与应用中的错误相关的一个或者多个软件缺陷。例如,与超过阈值的最高相似度对应的缺陷可以被确定为与应用中的错误最相关的缺陷。所确定的缺陷可以被提供给应用的开发者,以便于消除错误。
[0102] 在本公开的一些实施例中,根据方法200,可以在框250错误检测器120针对所确定的最相关的/最可能的缺陷,提供至少一个解决方案。
[0103] 作为示例,在图8中示出了框250中的操作的一种可行实施例。在该示例中,错误检测器120在框251获得所确定的至少一个软件缺陷的描述(例如该缺陷的标题),并且在框252,确定该描述与至少一个预定解决方案的描述之间的描述相似度。作为示例,在框252,错误检测器120可以获得至少一个软件缺陷的描述的向量化表示。该向量化表示例如可以通过TF-IDF或者Word2vec模型来获得。然后,在框252,错误检测器120可以通过比较描述的向量化表示与至少一个预定解决方案的描述向量来确定描述相似度。此处的操作与图2的框230的操作可以类似。即,错误检测器120可以基于向量之间的欧式距离或者余弦函数来确定缺陷的描述向量与所述至少一个预定解决方案的描述向量之间的描述相似度。
[0104] 在一些实施例中,该至少一个预定解决方案可以来自支持网页或者支持服务器。另外,应该理解,该至少一个预定解决方案可以被更新。例如,错误检测器120(或者支持服务器)可以(周期性地或者基于事件触发)获取可用的解决方案,并且基于所获取的可用解决方案,更新该至少一个预定解决方案,以用于后续的错误诊断和解决方案的确定。即,在可用的解决方案被更新时,用于框252中的比较的至少一个预定解决方案也可以相应地被更新,以便更准确的确定用于解决应用中的错误的解决方案。
[0105] 在框253,错误检测器120基于所确定的描述相似度,确定用于解决应用中的所述错误的至少一个解决方案。例如,错误检测器120可以将所确定的描述相似度与阈值进行比较,以确定用于解决应用中的所述错误的至少一个解决方案。与高于阈值的最高相似度对应的预定解决方案可以被确定为针对应用中发现的所述错误的解决方案。
[0106] 本公开的另一方面提供一种用于错误诊断的装置。该装置包括数据收集器,被配置为获得与应用中的错误有关的信息;信息编码器,被配置为生成与所述应用中的错误有关的所述信息的编码;分析器,被配置为确定所述编码与至少一个预定编码之间的相似度,所述至少一个预定编码中的每一个与已知的软件缺陷相关联;以及错误诊断器,被配置为通过所述相似度与第一阈值的比较,确定与所述应用中的错误相关的至少一个软件缺陷。
[0107] 在一些实施例中,该信息编码器可以通过文本向量化器来实施。该文本向量化器通过对信息进行向量化来获得该信息的编码。
[0108] 在一些实施例中,该分析器可以被实施为错误诊断器的一部分,并且被配置为比较错误信息的向量和预定向量之间的相似度。以下图9中的装置/系统可以被看作为该装置的示例实施方式。
[0109] 在图9中示出可以用于检测应用的错误的装置(或者系统)900的示例架构。该装置(或者系统)900可以被配置为实施图2中的方法200或者其一部分。
[0110] 在该示例架构包括组件数据收集器902、语料库处理器903和错误诊断器905。数据收集器902负责语料库901的收集。例如,数据收集器902可以采集原始数据。该原始数据例如可以包括以下中的一项或者多项:环境信息(例如软件版本)911、来自客户环境的关键错误日志段921可以从缺陷跟踪系统获得的所有缺陷信息931、以及可从支持解决方案页面获取的所有解决方案信息941等。
[0111] 图9中的语料库处理器903处理数据收集器902收集的语料库。该处理可以包括将语料库(例如日志段,错误,支持KB)处理为相关的文本向量。在一些实施例中,语料库处理器903还可以删除收集的语料库中的停顿词。例如,冠词“a”、“the”和代词“which”等。文本矢量化913是语料库处理器903的关键操作。该操作为错误诊断器905提供输入。
[0112] 本公开的实施例不限于以任何特定的方式来实现文本的向量化。作为示例而非限制,可以通过TF或者TF-IDF或者Word2vec来实现文本的向量化。
[0113] 图9中,错误诊断器905分析语料库处理器903提供的文本向量与数据库中存储的缺陷的相似性,并基于该比较确定一个或者多个最相关的缺陷910。
[0114] 例如,在一些实施例中,以客户环境中的日志段921作为输入,错误诊断器905可以根据语料库处理器903提供的日志向量计算出最相关的3个缺陷。
[0115] 由于支持KB解决方案中可能不包括日志段,这种情况下,使用日志段相似性仅能够捕获错误/缺陷,而不能确定解决方案。为便于确定与给定错误/缺陷对应的解决方案,在一些实施例中,可以确定该错误/缺陷的错误标题920,生成该错误标题的对应向量930,并从支持KB 940解决方案选择与错误标题向量最匹配的解决方案950。
[0116] 例如,在错误诊断器905已经确定了三个最关键的错误/缺陷的情况下,其可以调用语料库处理器903来将所确定的错误/缺陷的标题向量化。在另一些实施例中,也可以通过另外的处理器来实现该向量化操作。最相关的缺陷的标题所对应的向量被提供给错误诊断器915。该标题的向量被与支持KB解决方案中的标题进行比较以确定文本相似性。该操作也可以通过调用错误诊断器905来执行。
[0117] 例如,错误诊断器905或者915可以通过分析最相关的缺陷的标题和支持KB中的向量之间的相似性,来确定最相关的一个或者多个支持KB解决方案。应该理解,本公开的实施例不限于以任何特定的方式来分析最相关的缺陷的标题和支持KB中的向量之间的相似性。仅作为非限制性示例,可以基于公式(5)中的欧式距离或者公式(6)中的余弦函数来确定相似性。
[0118] 基于以上各实施例的描述可知,通过本公开中提出的方法和装置,可以获得与应用中的错误高度相关的缺陷,以及可选地,可以基于错误标题的向量与支持KB解决方案中的标题的文本相似性确定针对所确定的一个或者多个错误/缺陷的解决方案。因此,在一些实施例中,错误诊断的输出可以包括,例如:客户的环境信息、针对客户问题的最相关一个或者多个错误、以及支持KB中的最相关的一个或者多个潜在解决方案。该输出信息可以被开发人员用于解决软件应用中的错误/缺陷。
[0119] 在一些实施例中,所提出的方法和装置还具有增量学习能力,以适应产品日志和错误随着时间的推移而发生的变化。作为非限制性示例,可以(例如由图9中的数据收集器902)定期或者不定期更新语料库,并且(例如由图9中的语料库处理器903)重新训练错误诊断工具,以实现增量学习能力。另外,还可以根据语料库的变化来更新向量化工具(例如TF-IDF矩阵或神经网络语言模型)。通过不断更新,该错误诊断工具可以持续为客户环境中的新错误提供精确的结果。
[0120] 本公开的一些实施例中的解决方案主要基于自然语言过程(NLP)区域中的文本相似性。该解决方案可以通过例如TF-IDF或者Word2vec(浅层神经网络)模型,将文本相似性或语义相似性进行两次比较,以找出客户错误以及错误和支持解决方案之间的内在关系,并输出例如以下信息供开发者用于解决软件应用中的问题:与客户错误最相关的一个或者多个错误、错误的标题、支持KB中的最相关的一个或者多个解决方案。
[0121] 与以前的解决方法相比,本公开提出的解决方案具有许多优点。首先,提出的解决方案能够节省时间。受益于本公开的实施例,客户不需要花时间与支持工程师就其环境中发生的事情进行沟通。此外,客户也无需自行收集错误日志和环境信息。这将节省客户和支持工程师的时间,甚至软件工程师的时间。其次,提出的解决方案能够节省成本。除了节省时间之外,本公开的实施例还可以节省客户检索错误日志和报告支持请求的工作量。此外,它还可以节省支持工程师和软件工程师解决问题的工作量。再次,提出的解决方案能够提高客户满意度。例如本公开的实施例能够主动检测问题,同时缩短对客户反馈的持续时间。同时,本公开的实施例能够针对客户的问题主动提供相应的解决方案,而不是由客户被动地向支持工程师要求这些解决方案。由于这些好处,客户的满意度将得到提高。
[0122] 本公开提供的主动监控应用(例如,存储系统、数据保护系统等)的健康状况的解决方案。
[0123] 图10示出了可以用来实施本公开的实施例的电子设备1000的示意性框图。如图10所示,电子设备1000包括控制器或者称为处理单元(例如CPU)1001,其可以根据存储在只读存储器(ROM)1002和/或随机访问存储器(RAM)1003的程序而执行各种适当的动作和处理。ROM 1002和/或RAM 1003可存储电子设备1000操作所需的各种程序和数据。控制器1001、ROM 1002和RAM 1003例如通过总线1004彼此相连。特别地,电子设备1000还包括一个或多个专用处理单元(未示出),这些专用处理单元也可以连接至总线1004。
[0124] 输入/输出(I/O)接口1005也可以连接至总线1004。电子设备1000中的多个部件可以连接至I/O接口1005,包括:输入单元1006,例如键盘鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许电子设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0125] 在某些实施例中,控制器1001可被配置为执行上文所描述的各个过程和处理,例如方法200和装置900的功能。例如,在一些实施例中,方法200和/或装置900的各个模可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到电子设备1000上。当计算机程序被加载到RAM 1003并由控制器1001执行时,可以执行上文描述的方法200的一个或多个操作。备选地,在其他实施例中,控制器1001也可以以其他任何适当的方式被配置以实现上述过程/方法。
[0126] 特别地,根据本公开的实施例,上文参考图2-10描述的方法和设备可以被实现为计算机程序产品,其可以被有形地存储在非瞬态计算机可读存储介质上,并且包括机器可执行指令,该指令在被执行时使得机器实现根据本公开的各个方面。
[0127] 计算机可读存储介质可以是可以存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的、非穷举的例子包括:便携式计算机盘、硬盘随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
[0128] 用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Java、Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0129] 这里参照根据本公开实施例的设备、方法和计算机程序产品的框图和/或流程图描述了本公开的各个方面。应当理解,框图和/或流程图的每个方框以及框图和/或流程图中各方框的组合,都可以由计算机可读程序指令实现。
[0130] 已经出于示例的目的描述了本公开的各个实施例,但是本公开并不意图限于所公开的这些实施例。在不脱离本公开实质的前提下,所有修改和变型均落入由权利要求所限定的本公开的保护范围之内。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈