一种针对递归神经网络驱动的对话系统的自动化测试方法

文档序号:26139442发布日期:2021-08-03 14:22阅读:80来源:国知局
一种针对递归神经网络驱动的对话系统的自动化测试方法

本发明属于软件工程领域,尤其适用于软件工程中的软件开发与测试紧密关联的领域,其目的在于设计一种自动化测试工具,针对递归神经网络驱动的对话系统进行自动化测试,是一种适用于基于深度学习软件的测试方法,可以有效检测对话系统的潜在缺陷,同时可提升对话系统中自然语言理解模块的正确率和鲁棒性,提升对话系统的行为正确性。



背景技术:

随着递归神经网络(rnn)的巨大进步,对话系统取得了长足的发展,许多rnn驱动的对话系统都已部署到现实生活的应用场景,例如siri,googlehome和alexa,以协助完成各种任务。但是,尽管rnn模型效果显著,rnn驱动的对话系统(本质上是一种软件)也可能产生错误的行为并导致巨大的损失。同时,为对话系统提供驱动力的rnn模型的复杂性和难处理性使其测试具有挑战性。

高质量的软件测试过程对软件质量保证起着至关重要的作用。当前现有的对话系统测试方法主要基于传统的黑盒软件测试方法,通过用各种参数(如动作,对象和数字)填充预定义的模板来生成测试语句,然后输入到对话系统中。因为所有参数都是从给定的集合中选择的,所以即使组合的数量可能很大,生成的数据的多样性也受到限制。此外,这些测试方法在生成测试用例时缺乏适当的引导,这可能会限制它们在检测错误行为方面的效率。同时,由于多种原因,测试rnn驱动的对话系统是一项具有挑战性的任务。首先,与传统软件应用依赖工程师手工构建业务逻辑不同,rnn模型的开发采用数据驱动的编程范式,通过学习海量数据形成逻辑。这一特性使得传统的软件测试技术难以对rnn驱动的对话系统进行测试。此外,rnn模型通常由多层和数百万个参数组成,这种结构自然地阻碍了对其行为的分析,并进一步使传统的测试标准失效。

针对当前对话系统自动话测试方法的缺失,以及rnn模型的测试难点,本发明提出一种针对rnn驱动的对话系统的自动化测试方法,该方法主要分为三个部分:

第一个部分是生成用于测试的句子和对应的意图和槽位填充的实体标签。首先采用一系列带有相应运算符的转换方法用于原始测试集的句子上,其中主要包括同义词替换、回译和单词插入方法,适用于对话系统的自然语言理解模型的槽位填充和意图检测任务。该方法可以在不改变原句子语义的情况下生成新的测试句子。

第二个部分是测试用例的筛选。由于第一部分生成的测试用例数量较为庞大,直接用于模型测试或优化的效率都比较低,因此在此部分通过计算gini不确定系数,来度量被测模型对测试用例的不确定性。通过gini不确定系数的引导,可以有效地选择模型中最有可能触发潜在缺陷的测试数据。

第三个部分是rnn模型的测试和优化。将第二部分筛选出的测试用例输入到对话系统的自然语言理解模型中,通过对比模型预测的意图标签、槽位标签,与句子对应的真实标签进行比较,就可以评估模型是否预测错误,并用于评价模型的稳健性。此外,将筛选数据用于自然语言理解模型的重训练,还可以进一步提升模型的精度。

通过该方法可以对基于rnn驱动的对话系统进行自动化测试,可针对对话系统中由rnn模型驱动自然语言理解模块进行测试和优化,帮助发现对话系统的潜在缺陷,同时该方法可提升基于rnn对话系统的表现质量,保证软件的可靠性,促进基于深度学习模型的高级软件取得良性发展。



技术实现要素:

本发明通过提供一种针对递归神经网络驱动的对话系统的自动化测试方法,基于原始测试用例和句子变换规则,生成大量测试数据集,以丰富测试集,保证软件测试的充分性,同时生成测试用例可以输入到被测模型中进行重新训练,以进一步提高rnn语言理解模型的准确性,提升对话系统的鲁棒性,即智能对话系统在执行过程中处理错误,以及算法在遭遇输入、运算等异常时继续正常运行的能力,保证诸如对话系统的智能软件开发的安全可靠性。

为达成上述目标,本发明提出一种针对递归神经网络驱动的对话系统的自动化测试方法。首先在原始测试集上实施句子变换规则,在不改变原始句意的前提下,生成大量测试数据;其次,为了降低测试成本,本发明基于计算被测模型对测试用例的gini不确定性系数,筛选出更容易触发模型潜在缺陷的测试用例,构成选择后的测试数据;最后,将测试数据集用于模型的测试和优化,以检测对话系统的缺陷行为,并提升对话系统的鲁棒性和准确性。具体而言,该方法包含下列步骤。

1)生成测试数据由于原始测试集的规模较小,无法代表对话系统在真实适用场景下的数据分布情况,本发明首先对测试数据集进行扩增,生成大量具有真实性的测试输入句子,在保持与原始句意不变的前提下,改变句子中的单词或句子结构信息。本发明使用的文本数据的变换方式有三种,分别是:同义词替换、回译和单词插入。

同义词替换是通过用同义词替换单个单词来转换句子,从而保持句子的意思不变。无论是中文、英文,还是其他语言,很多词语都有对应的同义词,用户在使用对话系统时,可能因为语言习惯,选用不同的词语表达,因此通过同义词替换的方式,可以丰富测试数据集。

回译是将目标句翻译成中间语言,然后再将其翻译回原语。由于机器翻译通常对句子结构进行重组,转换后的数据不仅保持了句子的意思不变,而且提高了句子结构的丰富性。实际上,多种类似的句子都可以表达同一个含义,用回译的方式可以模拟自动产生具有相同语义,但句子结构有差异的句子。

单词插入是通过插入单词来转换句子。当nlu模型执行意图检测和槽填充时,它实际上是试图理解输入的句子。因此,如果在保持语法正确的情况下在句子中添加一些与意图无关的词,可能会对模型造成潜在的干扰。掩蔽语言模型(mlm)任务基于上下文的语义预测掩蔽词,可用于句子转换。插入单词的数量为一至三个,即可以插入单个单词,也可以插入一个短语或者词组。

2)筛选测试用例本发明以gini不确定系数为依据,对测试用例进行筛选。gini不确定系数可以在无需确定模型预测标签和真实标签的情况下,评估待测模型对于给定输入数据预测结果的不确定程度,本方法根据gini不确定系数的大小,决定改测试用例是否保留,从而减小测试成本,提高测试效率。对于给定的输入数据t,模型的gini不确定性系数计算公式如下:

其中表示测试用例t属于类型i的概率。

3)基于rnn的自然语言理解模型测试和优化将测试数据输入到待测对话系统的自然语言理解模型中,检测能够触发模型的缺陷行为。同时,可将数据集用于被测模型的重新训练,以提高模型的准确性和鲁棒性,提升对话系统的质量。在评估被测模型的质量时,根据处理任务的特点,主要使用意图识别准确率和槽位填充准确率来量化评估。

意图识别准确率是用于评估语言理解模型能否正确判断给定输入句子的意图。意图识别准确率的计算是预测意图预测正确的句子个数,占所有测试句子个数的比例。其具体计算公式如下:

槽位填充准确率是用于评估语言理解模型能否正确判断给定输入句子的槽位识别,即每个词语所属的语义类型。槽位填充属于序列标注任务,即给定输入的句子是由一串单词(x1,x2,...xn)组成的,模型进行槽位填充时输出每个单词对应的预测标签由于一个实体可能对应多个连续的单词,只有当预测的标签正确地标记了该实体中的每个单词时,该实体才能被记录为正确的预测。因此,我们并不直接将每个单词的预测标签与实际标签进行比较来计算准确率。槽位填充的准确率表示为正确实体数量与实体总数的比率:

附图说明

图1为本发明实施的一种针对递归神经网络驱动的对话系统的自动化测试方法的流程图。

图2为图1中,生成测试用例的设计流程图。

图3为图1中,筛选测试用例的设计流程图。

图4为对话系统自然语言理解模块测试中,各模型和数据的测试结果。

图5为对话系统自然语言理解模块测试中,检测出模型错误的实例。

图6为对话系统自然语言理解模块优化中,各模型在不同数据集上的提升效果。

具体实施方式

为了更清晰地描述本发明的技术内容,特举具体实施例并配合所附图示说明如下。

图1为本发明实施的一种针对递归神经网络驱动的对话系统的自动化测试方法的流程图,其中主要包括以下步骤。

步骤1:从原始测试集中选取种子数据并实施语义变换,以生成变换句子作为测试用例。为了扩增测试用例集,丰富测试数据,本发明首先设计文本数据变换方式,然后以原始数据集为种子数据,进行扩增测试数据集的生成,其具体设计流程如图2所示,具体流程为:

1)对种子数据实施同义词替换的变换操作。此变换方式通过用同义词替换单个单词来转换句子,从而保持句子的意思不变。采用了wordnet这一大型英语词汇数据库来查找和替换同义词。在wordnet中,名词、动词、形容词被分成认知同义词组,每组单词表达一个不同的概念。

2)对种子数据实施回译的变换操作。此变换方式将目标句翻译成中间语言,然后再将其翻译回原语。由于机器翻译通常对句子结构进行重组,转换后的数据不仅保持了句子的意思不变,而且提高了句子结构的丰富性。至于中间语言,我们选择汉语、法语和西班牙语,因为它们是完全不同的字母和语法。

3)对种子数据实施单词插入的变换操作。这类操作符通过插入单词来转换句子。当自然语言理解模型执行意图检测和槽位填充时,它实际上是试图理解输入的句子。因此,如果在保持语法正确的情况下在句子中添加一些与意图无关的词,可能会对模型造成潜在的干扰。为了自动生成自然语言,该方法基于bert语言模型完成单词插入。掩蔽语言模型(mlm)任务基于上下文的语义预测掩蔽词,可用于句子转换。同时,该方法把单词的数量控制在一到三个,可以插入一个单词,也可以插入一个短语。

4)将变换数据整合形成扩增测试集。基于上述三种变换方式,可在原始测试集的基础上扩增出多倍变换后的测试数据,且由于变换后的句子与原始句子保持语义一致性,所以与原始句子的意图等标签信息保持不变。

步骤2:从步骤1获得的扩增测试集中,基于gini不确定系数,进行筛选,筛选出一个小规模测试集,且该测试集中的数据容易激发对话系统中自然语言理解模型的潜在缺陷行为,其具体设计流程如图3所示,具体流程为:

1)将每个测试用例输入到待测模型中,并计算模型对此用例的gini不确定系数。计算gini系数的方法不依赖模型的预测结果或数据的真实标签,只需计算并评估模型对于给定的输入数据的不确定性程度。通常来说,如果一个深度学习模型对于预测结果的置信度越低,其触发缺陷行为的概率就越大。因此,该方法将gini不确定性系数作为测试集的筛选依据。

2)根据gini不确定系数的大小进行筛选,保证优先选择gini系数大的用例。根据预先设定好的阈值,若待测模型对给定测试用例的gini不确定性系数大于该阈值,就将该用例保留,若小于该阈值就直接舍弃该测试用例。

3)生成选择后的测试数据集。将gini不确定性系数大于阈值的测试用例,与其对应的意图标签和槽位标签,整理成测试数据集的标准形式,即形成选择后的测试数据集。

步骤3:基于步骤2中生成出的测试数据集,对待测对话系统的自然语言理解模块进行测试,发现并记录模型的缺陷。同时,将该数据集用于rnn模型的重新训练,以提升模型的鲁棒性和对话系统的表现能力。具体的模型测试和优化结果如下:

1)不同自然语言理解模型在不同数据集上的测试结果如图4所示,相比于模型在原始测试集上的准确率,模型在扩增测试集上的准确率大幅度下降,代表测试集可以发现更多模型的缺陷行为。

2)对话系统在判断给定输入句子的意图时,对比原始测试句子和变换后的测试句子,模型出现缺陷行为的具体实例如图5所示。由图中实例可以看出,在输入句子语义不变的情况下,仅有少量单词变换或句式变换即会触发待测系统的缺陷行为。

3)不同自然语言理解模型在不同数据集上的优化结果如图6所示。从图中数据可得,被测模型在经过重新训练之后,其准确率相较于原始模型有所提升,证明该方法生成出的测试数据集可以有效提升对话系统自然语言理解模型得准确率,提升对话系统的表现,优化对话系统中的rnn语言理解模型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1