当前位置:首页 期刊杂志

基于领域词典和Sentence-BERT的智能问答系统

时间:2024-05-04

李强伟,王鑫,陈浩民,赵坤,仝思凡

(西安工程大学,陕西西安 710600)

0 引言

问答系统是自然语言处理(Natural Language Processing,NLP)领域的重要分支,随着自然语言处理技术的发展,对问答系统的研究也越来越多。通常认为最早的问答系统理论是由Alan Mathison Turing 提出的图灵测试[1]。1966 年,由Joseph Weizenbaum 研发的Eliza 系统,是通过模板特征实现的,即通过人工定义对话模板完成问答[2]。

问答系统通常要求以自然语言形式描述的问题为输入,并输出一个简洁的答案或答案列表,而不是一堆相关的文档。对于问答系统,主要需要解决三个问题:首先,机器需要理解用户输入的问题是什么;其次,机器需要根据这些问题的关键点检索并处理相关信息;最后,机器需要将答案返回给用户。问答系统的关键在于提高问题检索召回的精度和效率,如何合理利用现有模型和方法,达到检索系统的整体优化和性能提升[3]。目前最受关注的是基于知识图谱的问答系统,有多种方法可供选择,包括基于模板、语义解析、向量和深度学习[4]。知识图谱的问答系统有多种方法来回答问题[5]。其中,基于模板的方法使用预先设计的查询模板来匹配问题并进行查询,避免了语义解析的难题[6];基于语义解析的方法则通过分析问题的成分,构建逻辑表达式,并将其转换为知识图谱的查询语言进行查询。基于向量的方法则利用表示方法将知识图谱映射到低维向量空间,然后将问题中的实体和关系还原到相同的向量空间,并通过向量之间的距离或相似度来推理答案。最后,基于深度学习的方法则通过神经网络学习问句和知识图谱中的语义信息,获得字向量或词向量,并使用深度学习模型计算向量之间的相似度并进行排序,以推理问句的答案[7]。Bert 句向量生成指的是通过Bert 生成文本的句向量[8],生成的句向量能准确表征句子的语义。采用生成式的掩码语言模型(Masked Language Model,MLM),该模型是一种双向Transformer结构[9]。

原生的Bert 在下游任务中表现出色,但是将其用于句子相似度等任务时,生成的句子向量效果不佳。为了解决这个问题,本文采用了Reimers N 等人[10]在2019 年提出的句子向量计算模型Sentence-BERT 模型。该模型可以获取句向量,并通过句子向量的Cosine 相似度来衡量文本相似度。此外,文本句子中的冗余部分对相似度计算有很大的影响,特别是在使用词向量模型时[11]。

因此,本文根据领域知识库创建了领域词典[12],它是一种应用于具体领域的信息化工具,能够从大量语料中抽取出简洁凝练的词汇来传递某个特定领域的特征信息[13],以过滤冗余信息,支持特定领域的自然语言处理任务。最终,本文总结对句向量与去自然语言冗余的研究,提出了一种基于领域词典和Sentence-BERT 的快速文本匹配方法,来更高效、更准确地解决问答任务。

1 领域词典建立

领域词典构建模型如图1 所示。首先,进行问答文本的扩展;然后对扩展好的问答文本进行关键词短语的去杂与提取,对标准类库的问题进行处理得到标准短语并进行扩展,最后整合得到每个问题的相关领域短语。最后,加入原标准问题及对应答案,完成领域词典的建立。

1.1 问题扩展与关键词提取

对爬取到的原始问题进一步扩展,按照自然语言问法进行数据标注,尽可能地覆盖所有自然语言问法。并且由此生成后续训练的问题文本数据集。

关键词语提取是对一类问题(即一个标准问题与其对应的扩展问题组成的问题集)筛选出能代表其问题核心的词语。首先对所有问题文本进行分词,使用停用词表对词堆进行第一轮筛选,过滤掉大部分词频高但是没有计算意义的词;其次,对过滤好的词使用词频权重计算,即进行关键词挖掘,最后进行排序,算法如下。

算法1:getkeywords算法

输入:所有问题分词形成的词堆Row,一类问题分词形成的词堆W,停用词表stopwords,计算TF 值模型tf_Cal;计算IDF值模型idf_Cal。

输出:某类问题的关键词与权重值的字典dict。

1.2 标准词扩展

通过对标准问题库的标准问题进行处理,同样进行分词和去除停用词。标准库中的问题十分精简,需要对其关键词语进行扩充,迎合自然语言的多样性,增大领域词典的处理一词多义的能力。主要做法是使用哈尔滨工业大学社会计算与信息检索研究中心研发的“语言技术平台(LTP)”进行远程同义词获取,再使用HuggingFace 提供的可直接使用的Sentence-Bert 预训练模型对搜索到的同义词与1.1.2 获取的同类问题关键词进行相似性比对,即保证所扩充的同义词对本问题有意义。

经人工筛选过滤掉抽取错误,选择其中的200 个词语作为测试语料。设置并比较12组过滤阈值后,最终确定阈值为0.75。在此阈值下,从实验语料中,共识别出同义词48组,同义词识别准确率为50.24%,召回率为65.41%。实验整体准确率不高、召回率高的原因归结为词向量的本质是基于语料的训练结果,预训练模型在专业语义方面表现效果不是很好。因此先通过实验确定阈值μ,然后将原始词语进行自动识别同义词,然后人工进行再次验证并筛选出高质量同义词形成词典。

表1 同义词识别结果举例

短语扩展算法如下

算法2:标准短语扩展。

输入:同类标准问题词语表S;语料库D;关键词词堆;词向量模型tf_Sim;阈值μ。

输出:扩充词语表E。

1.3 完善领域词典

设计领域词典的基本架构,本词典的最小单元为一个标准问题,为这些标准问题加上问题编码和分类编码。将关键词与扩展词作为该问题下的相关领域短语集,并整合问题与答案,形成最终的领域词典。

领域词典基本信息如下

2 系统构成及问题处理

如图2 所示,使用领域词典构建阶段产生的问题文本数据集进行模型训练,得到最终识别问句的Sentence-Bert 词向量模型。输入用户的问题后,先通过之前构建好的领域词典对其进行冗余过滤,过滤后的问句再放入模型中进行计算返回top1答案。

图2 模型训练

2.1 句向量训练

对词典构建阶段扩展的问题数据集进行处理,划分为正负样本作为输入,使用HuggingFace 提供的Sentence_transformers 进行数据处理,即将单个问题转化成Bert可识别的InputExmple,并打上正负样本的标签,再随机打乱,按照8∶1 的比例划分训练集和测试集。并且以huggingfac 提供的Sentence-BERT 中文预训练模型uer/sbert-base-chinese-nli为基础进行训练。

如图2所示,把正负样本喂给预训练的Sentence-BERT模型,然后获得每个标记的向量表示,用两个一样的BERT模型。把句子1喂给第一个BERT模型,把句子2 喂给第二个BERT 模型,然后计算模型输出的标记表示的均值(池化)。u,v分别表示输入的2个句子的向量表示,|u-v|表示取两个向量的绝对值,(u,v,|u-v|)表示将三个向量在-1 维度进行拼接,因此得到向量的维度为3×d,d表示隐层维度。

令u代表句子1的表示,v代表句子2的表示。然后通过余弦相似计算这两个向量表示的相似度:Similarity=cos(u,v)。

2.2 系统构成

本系统由领域词典、句向量模型、问题处理器三部分组成,如图3所示。领域词典用于过滤冗余词、匹配关键词、提供标准问句与回答;句向量模型用于计算去冗余句子的句向量以及该句向量与标准句子的文本相似度;问题处理器用于接受用户问题并进行文本预处理,调用领域词典去冗余、调用句向量模型计算文本相似度。

图3 模型训练及用户问题匹配过程

2.3 用户问题处理

如图3所示,用户输入问题后,先进行分词,去掉停用词,剩余的每个词再与之前构建的领域词典的每个词进行文本相似性比对,相似结果大于阈值υ 才可被认定为是有效词,再将剩余词拼接起来,使用训练好的Sentence-BERT 模型将其与标准库中的标准问题进行文本相似计算,同样设置阈值a,返回相似度大于a的top1问题,并对应的答案。具体算法如下:

算法3:QueryDealing

输入:用户问题Query,领域词典短语库W,领域词典问题答案对DicQAs,词语相似度阈值e,句向量相似度阈值a,句向量模型Sbert,停用词表stopwords。

输出:相似度top1的答案A。

3 实验及结果分析

本文使用的数据,是通过爬虫爬取的某文旅网站的游客最关心的92个标准问题,例如几点开门,能否提前预订门票等。经过对这些问题进行同类扩展和相似问题爬取,尽可能地覆盖自然语言问法。最终得到2 027 个问答对的训练数据集和包含207 个问答对的测试数据集。

3.1 微调Sentence-BERT模型参数

train_loss:该损失函数是将余弦相似度转化为距离,然后计算误差,并使用这种差异来更新模型的权重,从而使得模型能够更好地学习到句子向量之间的相似性关系。

max_grad_norm:用于确保梯度在量级上不会变得太大。1的值确保梯度不超过某个阈值。

weight_decay:权重衰减项,小样本训练模型复杂度较低,应设置为较小的值,如0.01,可以在一定程度上避免过拟合。

batch_size:在官方文档中,提到了在使用sentence_transformer 进行训练时,建议使用较大的batch size,例如可以使用batch_size=32 或更大。然而由于实验设备没有太高的显存,这里设置为32。

3.2 评估指标

对于短语二分类问题,本文使用准确率P、召回率R 评估模型分类效果。根据真实类别与预测类别可以分为真正类(TP)、真负类(TN)、假正类(FP)、假负类(FN)。准确率、召回率的计算公式如下:

其中,正样本表示被分类为正类别的样本,负样本则表示被分类为负类别的样本。在二分类问题中,准确率指的是分类器正确分类的样本数占总样本数的比例,而召回率则是正类别样本被正确分类的比例。

由表3可以看出,采用Sentence-BERT+领域词典方法,其精确度比BERT模型+领域词典增加了6.9%、比Sentence-BERT 模型增加了2.2%,而召回率比BERT模型+领域词典提高了8.3%、比Sentence-BERT模型提升了7.1%。总体效果比单独采用Sentence-BERT模型和BERT模型+领域词典有所提升。

表3 分类模型性能比较

本文构建的Sentence-BERT+领域词典的训练集准确度为93.2%,预测集准确度为91.0%,通过比较BERT+领域字典、Sentence-BERT、Sentence-BERT+领域词典三种不同的模型,与实验结果的对比,可以得出以下结论:

1) 当使用领域词典进行模型扩展时,Sentence-BERT+领域词典模型可以更好地将特定领域的语法和词汇考虑到嵌入空间中,从而提高了模型性能。还可以在不同的句子之间建立更准确的相似度关系。相比之下,BERT 模型可能会受到数据稀疏和词汇多样性的限制,而且对于基于句子的任务,其表现可能不如Sentence-BERT 模型。因此,Sentence-BERT+领域词典比BERT 模型+领域词典更适合处理基于句子的特定领域任务,具有更好的性能。

2)而Sentence-BERT+领域词典方法,该模型结合了Sentence-BERT 模型和BERT+领域词典的优点。通过使用带有Sentence-BERT 的领域特定字典,可以在特定领域主题中以更高的准确度捕获句子的语义。相比之下,单独使用Sentence-BERT 模型因为没有对这些专业自然语言问题语句的冗余部分进行处理,在实验结果上显然逊色于有领域词典的实验组。因此,使用Sentence-BERT+领域词典的方法在处理自然语言与专业文本时更有优势。

3) 总体来说,与传统的BERT 模型相比,使用Sentence-BERT模型的优点包括更好的句子级语义理解,而使用特定领域的字典可以提高Sentence-BERT模型在特定领域上下文中的准确性。

4 总结

本文提出了一种基于领域词典和Sentence-BERT的智能问答系统。通过实验证明,本方法在进行问答自然语言匹配的效果非常好。但是仍在实验中发现,当两个不同问题语义非常相近时,领域词典去问句冗余之后计算的两个句子仍然十分相近。未来将会尝试进一步研究通过增添语义的方式更高准确地识别问句。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!