基于朴素贝叶斯分类器的软件编译测试分析方法
2018-10-19袁彬
袁彬
摘 要:本文介绍了一种针对嵌入式软件开发包SDK的编译测试的优化方法,通过朴素贝叶斯分类器,可以迅速在编译出错的日志文件中,分析出最有价值的错误信息,节省测试结果的分析时间和成本。
关键词:贝叶斯 文本分类自然语言处理 嵌入式软件 编译测试
引言
目前主流的嵌入式微控制器(MCU)厂商都提供了上千款不同的芯片,为了给客户提供统一的软件使用体验,并方便移植和升级,他们各自都提供了统一的软件开发包Software Development Kit(SDK),如恩智浦的MCUXpresso-SDK。
由于不同的芯片公用了底层的外设驱动软件库,一旦底层软件库有一些编译问题,会给上层的应用程序带来大量的编译错误。如何从大量编译错误日志文件中,自动识别出有价值的编译错误信息,以节省软件编译测试的分析时间和成本,是本文研究的重点。
1.朴素贝叶斯分类器
樸素贝叶斯分类方法是一种简单有效的概率分类方法[1],是以贝叶斯定理为理论基础,一种在已知先验概率与条件概率的情况下的模式识别方法[2]。朴素贝叶斯的“朴素”得名于条件独立性和位置独立性两个基本假设[3],虽然实际情况各条件并非完全独立,但是在分类决策中的效果非常好,因此得到广泛应用。
朴素贝叶斯分类器的核心思想是根据已有的先验概率,来计算新的文本属于每个类别的概率,其公式如下:
其中,C = {c1, c2, …, Cn}是一个类别集,P(cx)是文本s属于类别cx的先验概率,
2.训练方案
由上述朴素贝叶斯分类器的思想可知,要想得到某一行编译日志是否是最有价值的错误信息,需要先对所有已知的编译日志进行训练,以得到对应类别的先验概率。
这边将类别划分成两类,第一类A,是编译错误日志类别;第二类B,是编译正确日志类别。将所有已知的错误日志所包含的词项进行训练,得到词项对应的先验概率。接着就可以对新的日志每一行的词项进行分析,得到编译错误类别的后验概率,其概率最高者,就是最有可能是最有价值的编译错误信息。具体流程如下图:
小结
朴素贝叶斯分类器分类精度较高,是一个十分实用的分类器。但是其结果的准确率与先验概率的训练集有很大的关系,也就是说要想获得更加准确的编译日志分类结果,需要借助更多的已有的编译出错日志文件,进行训练。随着训练集的扩大和累积,可以获得非常理想的预期结果,大大提升了嵌入式软件编译测试中分析效率。
参考文献:
[1] 袁方,苑俊英. 基于类别核心词的朴素贝叶斯中文文本分类 [J]. 山东大学学报 (理学版),2006(41) :46
[2] 李静梅,孙丽华,张巧荣,张春生. 一种文本处理中的朴素贝叶斯分类器 [J]. 哈尔滨工程大学学报,2003(24) :71
[3] 贺鸣,孙建军,成 颖. 基于朴素贝叶斯的文本分类研究综述 [J]. 情报科学,2016(34):148