首页 > 范文大全 > 正文

基于自然语言处理的通用信息模型自动调试

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于自然语言处理的通用信息模型自动调试范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:

通用信息模型(CIM) 是工业界的一种公开标准,并已实现于很多产品中,大量的bug被发现和修复。为了减少了人工查找错误根源所需的时间和精力,提出一种基于自然语言处理的方法对CIM 的bug进行自动调试。首先使用最大熵模型对已解决bug的文档描述进行分词,然后基于构建的词典使用simHash找出那些重复性很大的已修复的bug,最后使用文档处理的方法分析客户提供的trace找出问题所在和解决方法。实验结果取得了87.5%准确率, 表明了该方法的有效性。

关键词:

通用信息模型;自然语言处理;最大熵模型;调试;文档处理

0引言

随着计算机软件产品的复杂性越来越高,开发者用于发现bug的时间和精力也越来越多,所需的知识要求也越来越全面,这也使得人工发现和解决bug越来越不切实际。随着对产品的要求越来越高,调试已经成为软件开发中一个非常重要的部分,研究表明调试花费了程序员大量的时间。传统上的调试是一种人工过程,并且这个过程非常繁琐和具有挑战性。例如程序员为了查找错误根源去获取执行的状态,但是状态可能有很多种,程序员很难人工去确定。所以自动调试就显得越来越有意义,但是完全自动化也是不可能的,所以希望尽可能利用已有的信息来排除那些不相关的代码。这样程序员就可以集中精力去查找那些可能导致问题的关键代码,大大节省了程序员所需的时间和精力。

事实上,近些年越来越多的研究也开始关注自动调试,例如一些基于统计的方法[1-4],该方法首先使用断言采样机制去部署软件和收集用户执行的相关信息,然后使用统计度量去发现那些与bug相关的断言。另外一些方法[5-9] 通过收集代码运行时的控制流、数据流以及程序状态信息,然后使用统计分析的方法发现那些可疑代码。但是上面的这些方法的准确性与事先定义的由数据驱动的模型非常相关,并且限制了处理的数据量大小,另外使用复杂模型很容易导致扩展性问题。以上的方法只是从代码中去发现问题,并没有充分利用已有的一些信息,例如以前所解决的bug的信息。另外大型软件都会产生大量的trace,程序员逐行查看这些文件是非常耗时耗力的,如何从这些trace中快速发现那些bug的错误根源需要更高效的手段。

本文提出用基于自然语言处理的方法对通用信息模型(Common Information Model,CIM) 的bug进行自动调试,主要基于以下几个原因:1)很多CIM产品被公司所开发,并且已经使用了很长的时间,已经有很多的bug被开发者所解决,并且这些记录也已经被保存。

但现实中仍然有很多已经被解决的bug被不同的客户所上报(他们产品中的CIM版本不同,可能前面已修复的bug没有更新到现在客户的CIM),只是客户针对问题的描述有所不同,导致同样的bug要经过同一重复的流程,即经过不同版本的技术支持,而且这些流程很费时间,最终要由开发者去找出根本原因,严重影响了解决问题的效率。图1显示了数据中发现的客户上报的3个bug,本质上它们是一个相同的bug,但是被不同的客户使用不同的描述上报。如何避免同样的bug被不同的客户重复上报是一个急需解决的问题,该问题的解决能使企业减少很多不必要的流程。2) 当开发者对客户提交的bug进行人工查找问题时,主要通过分析客户收集的大量trace和一些相关的信息,但是这些信息是非常复杂的,如何高效地使用文档处理的方法从这些信息中找出错误根源是非常有用的。为了尝试解决前面所提到的两个问题,本文首先使用最大熵模型(Maximum Entropy Model)[10]对文档进行词性标注和分词,然后使用simHash[11]从那些已修复的bug中找出相似性很大的bug,若没有相似的,最后使用文档处理的方法分析trace并找出错误根源和解决方法。

4结语

本文提出了一种基于自然语言处理的方法对CIM 的bug进行自动调试。首先使用最大熵模型对已解决bug的文档描述进行分词,然后基于构建的词典使用simHash找出那些重复性很大的已修复的bug,若没有比较相似的,再使用文档处理的方法分析客户提供的trace找出问题所在和解决方法。该方法充分利用已有的一些信息来帮助发现bug的原因和解决方法,大大减小了解决重复bug的可能性,另外也减少了人工查找根本原因和解决方法的时间。

参考文献:

[1]

LIBLIT B. The cooperative bug isolation project[EB/OL]. [2003-10-09]. http://www.cs.wisc.edu/cbi/.

[2]

WOOD M. A dynamic approach to statistical debugging: building program specific models with neural networks[D]. Georgia: Georgia Institute of Technology, 2007.

[3]

ZHENG A X, JORDAN M I, LIBLIT B, et al. Statistical debugging: simultaneous identification of multiple bugs[C]// Proceedings of the 23rd International Conference on Machine Learning. New York:ACM Press, 2006: 1105-1112.

[4]

ZHENG A, JORDAN M, LIBLIT B, et al. Statistical debugging of sampled programs[C]// Advances in Neural Information Processing Systems. Cambridge:MIT Press, 2004: 501-510.

[5]

LIU C, YAN X F, FEI L. Sober: statistical modelbased bug localization[J]. Symposium on the Foundations of Software Engineering, 2006, 30(5): 286-295.

[6]

LIBLIT B, NAIK M, ZHENG A X, et al.Scalable statistical bug isolation[C]// PLDI 05: Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation. New York: ACM Press, 2005:15-26.

[7]

HANGAL S, LAM M S. Tracking down software bugs using automatic anomaly detection[C]// Proceedings of the 24th International Conference on Software Engineering. Washington, DC: IEEE Computer Society, 2002: 291-301.

[8]

LIU C, FEI L, YAN X, HAN J,et al. Statistical debugging: a hypothesis testingbased approach[J]. IEEE Transactions on Software Engineering, 2006, 10(3): 831-848.

[9]

ANDRZEJEWSKI D, MULHERN A, LIBLIT B, et al. Statistical debugging using latent topic models[C]// 18th European Conference on Machine Learning. Berlin:SpringerVerlag, 2007: 6-17.

[10]

BERGET A L, DELLA PIETRA V J, DELLA PIETRA S A. Maximum entropy approach to natural language processing[J]. Computational Linguistics, 1998, 22(1):39-71.

[11]

CHARIKAR M S. Similarity estimation techniques from rounding algorithms [C]// Processing of the 34th Annual ACM Symposium on Theory of Computing. New York: ACM, 2002: 10-19.

[12]

王健,冀明辉,林鸿飞,等. 基于上下文环境和句法分析的蛋白质关系抽取[J]. 计算机应用, 2012, 32(4):1074-1077.

[13]

谈文蓉, 符红光, 刘莉, 等. 一种基于贝叶斯分类与机读词典的多义词排歧方法[J]. 计算机应用, 2006, 26(6):1389-1391.