- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于自然语言处理通用信息模型自动调试
基于自然语言处理通用信息模型自动调试 摘要:
通用信息模型(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:///cbi/.
[2]
WOOD M. A dynamic approach to statistical debugging: building prog
文档评论(0)