基于LDA主题模型的雷达软件缺陷分类算法研究

2023-09-13 03:43徐天宇苏艺博王艳娇
雷达与对抗 2023年1期

徐天宇,曹 玮,苏艺博,王艳娇

(中国船舶集团有限公司第八研究院,南京 211153)

0 引 言

雷达软件的特点是任务场景复杂、功能集成度高、数据交互频繁,对接口的要求是吞吐量、速率和实时性等,对人机交互界面的要求是友好性和易用性等。目前在装备中已大量使用C/C++和FPGA语言代码,且代码量规模较大,导致雷达软件缺陷组合复杂,如何有效提高雷达软件缺陷预测和识别,有助于提高对软件缺陷分布规律和现象的认知,成为影响雷达软件测试设计工作质量和效率的关键。

与一般软件不同,雷达软件缺陷具有比较复杂的领域特征,难以使用当前可用的文本分类技术或通用主题获取模型,例如通用的隐含狄利克雷分布(Latent Dirichlet Allocation,LDA)主题模型,对雷达软件缺陷数据执行精确的文本分类或主题获取[1]。同时,雷达用户对系统的整体功能、性能等质量因素要求较高,而配置项和系统级软件测试更关注软件需求和系统需求是否符合要求,以及软件任务的可靠性和用户体验的潜在需求,并且需要大量人力资源及其他资源用于配置项级和系统级的软件合格性测试。上述多个原因直接影响雷达缺陷数据分类的准确性和召回率。

为了提升雷达软件测试效率,减少测试工作量,本文研究并改进现有软件缺陷分类算法,提出的算法适用于配置项级测试和系统级测试的雷达软件缺陷分类。

1 软件缺陷分类算法相关技术

1.1 基于支持向量机的分类算法

支持向量机(Support Vector Machine,SVM)按监督学习方式对数据进行二元分类,可表示为在特征空间内使分类间隔最大的线性分类器,其学习目标是使分类间隔最大化,可以化为求解凸二次规划的问题。当训练数据线性可分时,利用间隔最大化求最优分类超平面,以便所有数据样本在平面内可以被正确划分开[2]。图1为数据线性可分情况下SVM分类示意。

图1 SVM分类示意图

1.2 基于LDA主题模型的分类算法

LDA主题模型是一种文档主题生成模型,包含文本、主题和关键词3个层次,也可称为三层贝叶斯模型。通过LDA建模,可以将文本映射到主题空间上,从而对其进行主题分类和判断相似度等操作[3]。LDA主题模型文本分类原理如图2所示。

图2 基于LDA主题模型的分类示意图

2 改进LDA主题模型

2.1 基于雷达领域术语词典的软件缺陷文本分词

首先分析雷达领域相关标准、系统需求、软件需求、软件设计、测试用例、测试记录、测试问题报告单等语料集,并根据雷达领域系统和软件开发专家的经验确定每个术语的同义词,从多个角度建立“雷达领域术语词典”:

(1)雷达领域专业术语集合:与雷达系统、配置项、软件等相关的专业术语;

(2)雷达领域停用词集合:在公共停用词列表的基础上,去掉在雷达测试领域中与主题无关的词,如调试助手、软件、人员、数据等;

(3)雷达领域同义词集合:雷达专业术语的同义词集合,如“静默区”的同义词为“沉默区”等;

(4)典型雷达软件异常缺陷集合:例如目标丢失、航迹点溢出、目标批号不同步等;

(5)雷达软件需求特征集合:例如扇区划分、航迹、回波接收任务、主被动切换等。

基于雷达领域术语词典和逆向最大匹配算法的软件缺陷文本分词方法如图3所示。

图3 软件缺陷文本分词方法流程图

2.2 雷达软件缺陷数据主题获取

借助LDA模型对语料库(即软件缺陷数据库)D中的任意文档(即软件缺陷数据)d建模,生成主题概率分布:

(1)

得到联合概率公式:

针对式(1)和式(2)中的变量说明如下:假设雷达缺陷数据库有D个缺陷数据集合,总字数为Nd、wd,n,n表示d数据中的第n个字。缺陷数据由k个主题组成,则每个主题下的主题词概率分布фk服从以β为参数的狄利克雷分布;θd是文档主题分布,每个缺陷数据对应不同的主题分布,服从狄利克雷分布,以α为参数;Zd,n表示缺陷数据d中主题和关键词之间的指定分布,服从多项式分布,以θz为参数。

根据式(1)、式(2)以及相应变量,基于LDA模型的雷达软件缺陷的获取过程描述如下[4]:

(1)对于每个缺陷数据d∈D,根据θd~Dir(α)(即θd服从狄利克雷分布,以α为参数),得到多项式分布参数θd;

(2)对于每个主题z∈k,根据θd~Dir(α),得到多项式分布参数θd;

(3)对于缺陷数据d中的第i个字Wd,i:

·根据多项式分布Zd,i~Mult(θd),得到缺陷主题Zd,i;

·根据多项式分布Wd,i~Mult(θz),得到缺陷关键词Wd,i。

2.3 基于融合雷达软件需求特征的改进LDA主题模型构建

传统的LDA模型没有考虑领域上下文中的关键词权重信息,且主题分配偏向高频关键词所属的主题。在许多情况下,具有强大领域背景的重要术语,如雷达软件需求,可能不会经常出现,因此很难成为主题关键字的输出。通过构建基于融合雷达软件需求特征的改进LDA主题模型,本文提升了描述雷达软件需求关键词的权重和文本长度,具体实现如下:

步骤1:提升关键词的词频权重

针对原始缺陷数据集D={d1,d2,…,dn}中的分词结果,查找描述雷达软件。

需求的关键词V={v1,v2,…,vs}(V∈D),例如功能需求、性能参数、接口名称、接口类型、工作状态等,同时提升这些关键词的词频权重。

步骤2:扩充软件缺陷数据集

针对雷达软件需求关键词V,为其中的每个关键词vi,i=1~s匹配相关的需求信息,例如针对某需求vi,可将其功能需求、性能参数、接口名称、接口类型、工作状态等文本信息自动添加到原始缺陷数据集中,形成扩充数据集V′={v1,v2,…,vs,vs+1,vs+2,…,VS},最终扩充软件缺陷数据集D′=D∪V′ (软件缺陷数据集的长度为S+n)。

步骤3:循环迭代计算主题分布和主题关键词分布

对经过扩充的雷达软件缺陷数据集D′,构造概率向量模型:

(θ1×(φ11,…,φ1,S+n),…,θz×(φz1,…,φz,S+n),

θn×(φS1,…,φS,S+n))

(3)

因此,构造的概率向量模型为n×S维。这种扩充后的软件缺陷数据集合既保留了LDA主题模型降维降噪的效果,也融合了雷达软件需求特征,具有更好的语义可解释性[5]。

为了获取上述模型中的关键词概率分布,须估算隐含参数θ与φ。本文借助Gibbs抽样方法,结合扩充后的软件缺陷数据集合,获得θ与φ的估计值。θ与φ的估算过程可以看作软件缺陷数据文本生成的逆过程,即在给定软件缺陷数据集的情况下,通过参数估计得到隐含参数的估计值。

Gibbs抽样在于确定每个关键词的主题,隐含主题参数可以通过统计主题频数来获得。假定在排除当前关键词主题分配的情况下,根据其他词的主题分配估计当前词分配各个主题的概率[6],公式如下:

(4)

假定每个关键词的主题被确定,则可以按照下式估算θ与φ:

(5)

(6)

式中,θm,k为缺陷数据m中主题k的概率;φk,t为主题k中关键词t的概率。

循环迭代计算软件缺陷数据m的主题分布θ以及主题关键词分布φ。

2.4 基于改进LDA主题模型的雷达软件缺陷数据主题识别

利用雷达领域术语词典的软件缺陷文本分词算法,并借助雷达领域术语词典,提取文本中的单词。对雷达软件缺陷数据集D中的每项软件缺陷数据di,i=1~N进行预处理,获得N个软件缺陷数据的文本分词向量集合Ds=ds1,ds2,…,dsN;然后根据2.3节确定隐含主题的个数k(k值可以预先设置,k值越大,实验产生的结果信息越多,主题就越发散;k值越小,主题越收敛),方法如图4所示。

图4 确定k值方法流程

结合雷达软件测试领域应用场景,根据雷达软件项目中功能数量、性能数量、接口数量等需求信息和测试类型个数等,初步确定预期隐含主题个数k,通过多次实验调参,并根据专家经验采用最优密度模型等方法,设置较为合理的k值。由于各型号雷达软件具有相似性,可根据各型号雷达软件提前确定k值。

将软件缺陷数据的文本分词向量集合Ds=ds1,ds2,…,dsN以及预期的隐含主题个数k,代入融合雷达软件需求特征的改进LDA主题模型中进行模拟训练[7],得到主题模型个数k,记为DM=dM1,dM2,…,dMK。每个主题模型DMj,j=1~k都由s个关键词组成,即关键词向量集合为DMj={dmj1,…,dmjk},dmjk∈Ds。

2.5 基于主题相似度因子的雷达软件缺陷数据分类算法

在所生成的雷达软件缺陷数据的k个主题模型基础上,借助Gibbs抽样方法,采用JS散度,计算每项软件缺陷数据文本分词向量dsi,与每个主题模型DMj之间的主题相似度因子。Gibbs抽样方法可以估算软件缺陷数据集D中任意缺陷数据dsi的主题概率分布向量,采用JS散度和KL散度计算软件缺陷数据的主题相似度[8]。因此,得到面向雷达软件缺陷数据与主题模型的相似度因子LS的计算式为

(7)

式中,DKL为KL散度,且

(8)

针对每项缺陷数据dsi,分别计算其与每个主题模型DMj的相似度因子LS,若LS的取值超出阈值,则可判定该项缺陷数据dsi大概率属于该主题模型DMj,即缺陷数据dsi的从属主题模型。重复上述相似度因子计算和分析过程,对每项缺陷数据dsi都能找到相应的从属主题模型DMj,也可以称为缺陷数据dsi从属与主题模型DMj。

最后,若m,m≤k个主题模型下有属于自己的缺陷数据集,雷达软件缺陷数据分类完成,即将雷达软件缺陷数据D分为m类,对应m个主题模型。整个流程如图5所示。

图5 基于主题相似因子的软件缺陷分类算法流程

3 实验及结果分析

3.1 实验评价方法

本实验选用某型雷达显控软件的90项测试问题报告单,预先按照各类测试问题报告单所属功能,人工将其分为9类,形成软件缺陷标准分类集合,如图6所示。

图6 软件缺陷标准分类集合流程图

对比选用的缺陷数据分类算法包括:传统LDA主题模型(记为LDA)、本文提出的融合雷达软件需求特征的改进LDA主题模型(记为I-LDA)以及主流的支持向量机的文本分类算法(记为SVM)。

以下3个主要指标用于评价雷达软件缺陷数据分类算法的性能:

(1)分类精确率P=(算法准确实现的软件缺陷分类数)/(算法实现的所有软件缺陷分类数)*100%;

(2)分类召回率R=(算法准确实现的软件缺陷分类数)/(缺陷数据库中实际的软件缺陷分类数)*100%;

(3)综合指标F1=2PR/(P+R)。

当实际评估一个分类算法的性能时,应同时考虑P和R,但同时要比较两个数值,很难做到一目了然。作为P和R的调和平均,综合指标F1值可以对二者进行综合评价,最终利用F1值并结合P值和R值对分类结果进行效果评估[9]。

3.2 实验内容及结果分析

采用Python语言在Win7操作系统下实现改进LDA主题模型。针对LDA主题模型的主要参数设置如下:采用Gibbs抽样方法进行参数估计,雷达软件缺陷数据的训练集和测试集比例设置为5:1,文档主题概率分布参数α为0.1,主题关键词概率分布参数β设置为0.01,每个主题下的关键词个数设置为10。

(1)步骤1:设置改进LDA主题模型的预期主题个数K

在测试问题标准分类集合中,已人工将其分为9类,所以设置LDA和I-LDA两个主题模型的预期主题个数K为9。

(2)步骤2:雷达软件缺陷数据文本分词

借助本文提出的“基于雷达领域术语词典的缺陷文本分词”算法,对90项测试问题报告单的缺陷数据进行分词。

(3)步骤3:基于3种模型算法训练的分类过程

将LDA、I-LDA和SVM等3种模型分类算法,对90项测试问题报告单的缺陷数据分词集合进行模拟训练,形成各自对应的分类结果。以I-LDA模型算法为例,其软件缺陷数据的分类结果如下:

在90项缺陷数据中有6项数据(如表1所示,原始数据文本较长,做了一定简化)与“初始化”功能相关。I-LDA模型将这6项数据归为同一个主题模型S。

表1 雷达软件初始化功能的6项缺陷文本

主题模型S:(0.046*“接收”+0.035*“上电初始化”+0.035*“站点”+0.029*“配置文件”+0.028*“标识”+0.025*“雷达站A”+0.025*“雷达站B”+0.024*“目标”+0.024*“读取”+0.022*“过程”)。

在主题模型S包含的关键词集合中,与初始化功能的描述比较接近,例如“上电初始化”、“接收”、“配置文件”等,因此将这6项初始化缺陷数据归为主题模型S符合预期。在标准分类集中,也是将这6项缺陷数据归为同一类,属于“初始化”功能。

(4)步骤4:实验结果分类比对和分析

根据3种模型分类算法对90项软件缺陷数据进行分类实验,并计算3种指标P、R和F1,结果如表2所示。

表2 贝叶斯网络原因变量集合C示例

可以看出,I-LDA算法的分类效果比其他两种算法有明显提升,即I-LDA性能最优。在步骤(3)中,I-LDA分类结果表明其与标准分类集一致。相反,LDA算法的分类结果将第4个数据项分类到其他模型中,而不是有效的分类结果中,这是因为第4个数据项中没有出现“开机,初始化”字样,而“默认工作模式”的接口数据属于“开机初始化”功能;而在I-LDA算法中,“工作模式”和“开机初始化”自动关联在一起,通过修改相似度因子LS的阈值,增加了“工作模式”在分类中的权重,从而获得准确的分类结果。

4 结束语

本文提出一种改进LDA主题模型的雷达软件缺陷分类算法:基于雷达领域术语词典,准确实现软件缺陷文本分词;依据雷达软件需求特征信息,构建改进的LDA主题模型;在融合雷达需求特征的主题后,如功能需求、性能参数、接口名称、接口类型、工作状态等,提高获取主题的精度;基于获得的主题模型实现了改进LDA主题模型的雷达软件缺陷数据分类;针对某型雷达显控软件进行算法实验,本文算法在综合指标F1上相比于通用LDA主题模型分类算法提高了24%,证明了其准确度和有效性。通过将软件缺陷问题报告从传统的高维单词空间映射到低维主题空间,根据文本相似度进行数据分类,从而降低了待处理空间的维度,并提高了算法执行效率和准确性,减轻了人工分类缺陷数据的工作量和重复性,进而提升了雷达软件测试设计工作的质量和效率。