一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种适用于开源软件供应链的智能问答方法及装置

2023-02-02 01:07:06 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,涉及一种适用于开源软件供应链的智能问答方法及装置。


背景技术:

2.近年来,信息技术高速发展,互联网与移动互联网飞速普及。互联网依靠其信息传播的高效和便捷,已经成为知识获取和信息传播的重要途经。但是信息的爆炸性增长也增加了人们获取正确信息的难度,用户在实际使用过程中会受到大量冗余信息的干扰,导致获取信息的效率变低。
3.开源软件具有开放、共享、自由等特性,在软件开发中扮演着越来越重要的角色。由于开源软件的代码可自由访问,而且开源社区非常活跃,因此越来越多的开发人员将其应用到实际的开发工作中。能够准确快速地获取到包括源码、知识产权、维护信息的软件的相关信息变得愈为重要。过去人们获取信息的主要方式是通过搜索引擎,传统的搜索引擎通过对用户输入关键字的分析,按照一定的规则返回匹配的网页,但是这并不能直接给与用户最直接的答案。智能问答系统则是一种信息检索系统的高级形式,可以通过解析用户问句,用简洁准确的自然语言回答用户的问题,提高用户获取知识的效率。为了提高问答结果的准确性,目前通常会将智能问答与知识图谱技术相结合,通过相关领域的知识图谱找到用户问题的准确答案。但是知识图谱中通常包含海量的信息,因此当用户提问时,如何找到与用户问题最相关的信息并生成最终回答,是基于知识图谱的智能问答系统面临的问题。
4.智能问答系统的输入为用户问题,输出为答案。目前的解决方案可以分为以下两种:
5.1)基于语义解析:首先对问句进行深度语法解析,然后将解析结果组合成为可以执行的逻辑表达式(比如sparql,cypher),直接从图数据库中查询答案。
6.2)基于信息抽取:首先解析出问句的主实体,然后再从知识图谱中查询出实体关联的单个或多个三元组,组成子图路径,然后分别对问句和子图路径编码,排序,返回分数最高的路径作为答案。
7.基于语义解析的方法的可解释性更强,但是这种方法存在标注量大的问题,需要人工标注大量的自然语言逻辑表达式,而信息抽取式的方法更偏向端到端的方案,在复杂问题、少样本情况下表现更好,但若子图过大,会显著降低计算的速度。


技术实现要素:

8.基于以上背景及技术现状,本发明提出一种智能问答的方法,能够从开源软件供应链知识图谱中快速查询到与用户提问相关的信息,并且同时生成相应的回复。
9.为实现上述目的,本发明采用如下技术方案:
10.一种适用于开源软件供应链的智能问答方法,包括以下步骤:
11.问句相似度度量:计算用户输入的问题与预定义的faq库中的问题的相似度,如果相似度超过一定的阈值,则将faq库中对应问题的答案直接返回给用户;
12.问句解析:如果用户输入的问题与faq库中问题的相似度未超过所述阈值,则通过预训练的语言模型对用户输入的问题进行解析,抽取用户输入的问题中的语义信息;
13.答案生成:基于用户输入的问题及抽取得到的语义信息,结合知识图谱,生成与用户输入的问题相对应的答案。
14.进一步地,所述问句相似度度量包括:为了提高问答的效果,首先引入了问句相似度度量的faq模块。该模块的功能为,对于输入的问题,如果在预定义的faq(frequently asked questions,常见问题)库中存在相似的问题,并且相似度超过一定的阈值,则可以将库中对应问题的答案直接返回给用户。相似度计算通过bert预训练模型,将两个问句通过[sep]进行拼接,同时在首部添加[cls],完成问句的相似度计算。取出相似度最高且得分超过阈值的问句作为相似问句,将其答案返回给用户。
[0015]
进一步地,所述问句解析包括:通过预训练的语言模型对用户问句进行分析,确定问句中涉及到的关键信息。主要是通过预训练的语言模型获得用户提问中的语义信息,包括用户问题分类,命名实体识别,实体链接等。
[0016]
进一步地,所述3)答案生成包括:基于用户问题及抽取得到的语义信息,结合知识图谱,输出知识图谱中的与用户问题相关的候选路径子图(多个三元组对象),并根据用户问题对候选路径子图进行打分排序,如果候选路径子图的得分满足一定阈值则据此生成与所属问题信息相对应的回答,即将该满足阈值的候选路径子图作为用户输入的问题的答案。
[0017]
进一步地,上述方法还包括faq库更新的步骤:完成对话后提示用户评价是否解决问题,如果解决则将相应的问题及回答加入faq库中。
[0018]
一种适用于开源软件供应链的智能问答装置,包括:
[0019]
问句相似度度量模块,用于计算用户输入的问题与预定义的faq库中的问题的相似度,如果相似度超过一定的阈值,则将faq库中对应问题的答案直接返回给用户;
[0020]
问句解析模块,用于在用户输入的问题与faq库中问题的相似度未超过所述阈值时,通过预训练的语言模型对用户输入的问题进行解析,抽取用户输入的问题中的语义信息;
[0021]
答案生成模块,用于基于用户输入的问题及抽取得到的语义信息,结合知识图谱,生成与用户输入的问题相对应的答案。
[0022]
进一步地,上述装置还包括faq库更新模块,用于在完成对话后提示用户评价是否解决问题,如果解决则将相应的问题及回答加入faq库中。
[0023]
本发明的有益效果是:
[0024]
本发明的智能问答方法能够从开源软件供应链知识图谱中快速查询到与用户提问相关的信息,并且同时生成相应的回复,可以提升开源软件供应链知识图谱中智能问答性能的准确性。同时本发明借助语义解析模型,获取问题中信息的各项语义要素,可以解决需要人工事先定义模板的局限性,实现对复杂多样问答场景的普遍适应。
附图说明
[0025]
图1是适用于开源软件供应链的智能问答方法流程图。
[0026]
图2是语义解析模型结构示意图。
[0027]
图3是基于bert的路径子图选择排序模型示意图。
具体实施方式
[0028]
本发明提出的技术方案适用于多种形式的智能问答应用场景,采用本发明中的技术方案,可以结合开源软件供应链知识图谱,对用户问题进行理解并生成对应的答复,从而准确高效的解决用户提出的问题。
[0029]
参照图1,图中给出了本发明中智能问答方法的步骤流程图,详细的步骤描述如下:
[0030]
1.问句相似度度量:
[0031]
读取用户输入的问题,与faq库中已有问题进行相似度判断,如果与已有问题的相似度超过阈值则认为用户问题与该已有问题是同一个问题,直接将库中对应问题的答案作为正确答案返回给用户。如果与已有问题的相似度未超过阈值,则进行步骤2)。
[0032]
2.用户问题解析
[0033]
该步骤主要是通过预先训练的语义解析模型对用户问题进行语义解析,确定其中包含的语义要素信息。包括用户提问类型,问题中所涉及的实体信息,实体链接等。
[0034]
用户问题理解是智能问答系统中的核心模块,负责对问句中的各个成分进行细粒度语义理解,其中包含的模块有用户问题分类,实体识别及抽取,实体链接等。
[0035]
其中,针对用户问题的分类,主要根据系统使用的实际需求进行分析,针对不同的问题种类采取不同的处理策略。常见的问题类型包含以下几种:实体查询类问题,关系查询类问题,其中关系查询又可以分为单关系类问题和多关系类问题等。
[0036]
其中,实体查询类问题是指针对某一个具体的实体,查询与其相关的属性等信息。比如用户问题为“nano”,nano为软件包的名称,就将这类问题是为实体查询类问题,返回与图谱中nano相关的所有信息作为答案。单关系类问题通常是指查询某一个实体的属性,比如用户问题“nano软件包的大小是多少?”。这时不仅需要查到实体对象nano,更应该知道查询的目标是对象的大小属性。多关系类问题通常会更加常见,这种问题需要通过一个实体查询与其相关的另一个实体的相关属性值。比如“nano软件包最新缺陷的描述信息是什么?”。
[0037]
在确定问题种类后,需要对句子的语义进行解析,第一步就是命名实体识别,实体识别是用户问题解析中的重要步骤,基于序列标注模型完成此项任务。其种类可以是软件名称,漏洞名称,时间,大小等。具体来说,实体识别在本发明中通过如下方式实现。
[0038]
首先,数据的标注方式选择为“bio”标签,其中,“b”表示实体提及的起始位置,“i”表示实体的中间或结尾,“o”表示非实体词。同时考虑到实体嵌套问题,在本发明中,实体识别模型会同时输出粗粒度和细粒度两种结果,这样可以解决out-of-vocabulary(oov)问题,以保证后续模块对用户问题的充分理解。
[0039]
通常在使用深度学习模型进行命名实体识别时需要大量的人工标注数据,需要耗费大量时间及人力成本,为了减少该方面的成本,在本发明中使用needle的三阶计算框架,
通过少量的强标签数据结合大量的弱标签数据,并利用分阶段的方式训练模型,可以更好的通过弱标记数据的能力提升命名实体识别效果。主要包含三个步骤,首先会使用无标签数据对模型进行预训练,随后使用大量的弱标签数据进行补全操作,得到较为完善的弱标签,最后则会使用少量的强标签数据对模型进行最终的微调。具体流程如下:
[0040]
(1)利用无标签数据进行预训练,预训练采用masked language model,训练数据使用相关领域内的数据。
[0041]
(2)利用开源软件供应链相关的领域内知识将无标签数据转换为弱标签数据。使用若标记的领域内数据和强标记数据对模型进行预训练。并且使用crf分类器替换mlm模型的头部得到模型initial bert-crf。
[0042]
(3)随后使用上述模型进行弱标签补齐(weak label completion),该步骤主要是结合上述模型得到的预测值与已有的弱标签数据。具体公式如下:
[0043][0044]
其中,表示根据和按照规则组合得到的补全数据的标签,表示模型预测得到的标签,表示弱标签数据,o(non-entity)表示非实体标记。
[0045]
通过该步骤可以解决弱标签的不完整性。
[0046]
(4)根据补充完整后的弱标签数据,可以在initial bert-crf的基础上训练得到pre-trained bert-crf。由于对弱标签数据使用负对数似然估计时将会使得模型过度拟合弱标签数据,因此,为了缓解这一问题,在本发明中使用一种基于修正后弱标签的估计置信度损失函数。损失函数的具体表述如下:
[0047][0048]
其中,l
na
表示估计置信度损失函数,表示修正后的序列标签,表示模型预测结果,表示输入数据,θ表示模型参数,e表示交叉熵函数,表示第m个实体的真实标签,表示第m个实体的修正后标签,表示第m个实体数据,表示真正的序列标签。
[0049]
其中为指示函数,如果布尔表达式成立则为1,否则为0。
[0050]
表示置信度估计,也就是模型预测的弱标签等于其实际标签的概率。为negative log-likelihood(负对数似然),表示模型预测的弱标签不等于其实际标签的概率,等价于上述公式相当于求期望的过程:
[0051]
当时,取作为损失;
[0052]
当时,取作为损失。
[0053]
(5)上述步骤可以防止模型过度拟合弱标签的噪声,同时也可能会抑制对强标签数据的集合。因此我们最后需要再次在强标签数据上微调模型。
[0054]
在经过上述步骤获得命名实体对象后,需要通过实体链接将用户问句中的实体对象匹配到知识图谱中的相关节点。实体链接时解决自然语言中文本到知识库概念和实体准确链接的关键技术。在本发明中,为了能够覆盖复杂问题中涉及的多个实体,并且尽可能的减少实体链接模块的错误率,实体链接模块会尽可能的保留与问题具有高度相关性的实体对象。具体的操作方法为:假定实体识别模块的结果集合为s=m1,m2,

,mn,对于集合中的项目mi,根据已有的实体对象别名词典库从知识图谱中找到与mi对应的候选实体集合ei=e1,e2,

,e
t
。则用户问题中的全部候选实体集合就可以表示为e=e1∪e2∪

∪en。对于其中的一个实体对象e,将会提取其与用户问题之间的相似度特征以及e自然特征构建特征向量。随后计算实体e和用户问题之间的相似度得分。并对所有的候选实体按照相似度得分进行排序,保留top-n的实体对象集合er作为实体链接模块的结果。
[0055]
为了能够更加准确的完成实体链接,在本发明中将会使用以下几种特征:
[0056]
1)实体对象与用户问题的相关度特征:在本发明中主要提取实体对象与用户问题之间的语义相似度。该语义相似度为基于bert预训练语言模型的二分类模型。通过计算实体对象和用户问题之间的相似度概率作为最终得分。
[0057]
2)实体对象上下文与用户问题的相关度特征:同一指称的实体在知识图谱中的区别主要表现为具有不同的属性值。因此本发明中通过比较实体对象相关的三元组与其指称在问题中的上下文之间的相关程度筛选实体对象。
[0058]
3)实体对象固有特性:主要是指实体对象在知识图谱中的入度与出度。入度与出度越大的实体在知识图谱中与其他实体的关联更加密切,也会包含更多的相关信息。
[0059]
3.候选查询路径生成
[0060]
对于实体链接模块得到的集合er中的每个实体对象e采用动态扩展的方式获取候选查询路径集合q,但是由于在复杂问题中可能会存在子图过大的情况,导致计算速度显著降低,因此本发明在扩展过程中将会结合相应的剪枝策略减小候选路径集合q的规模,从而达到效果和效率的兼顾。具体的扩展方式包含如下几个步骤:
[0061]
1)从知识图谱中取出包含er(er∈er)的全部三元组(er,r1,x),构成单跳查询路径err1x的集合q
onehop
,其中x为实体对象er在相应单跳路径中对应的答案,r1为节点之间的关系路径。
[0062]
2)对于(er,r1,x)∈q
onehop
,基于实体对象x对应查询路径进行扩展,得到三元组组合(er,r1,x),(x,r2,e2),之后根据剪枝策略a生成多跳路径{err1x,xr2e2},并以实体对象x作为查询路径对应的答案。根据剪枝策略b生成多跳路径{err1x,xr2y},并以实体对象y作为查询路径对应的答案,从而生成两跳查询路径集合q
twohop

[0063]
3)对于{err1x,xr2e2}∈q
twohop
,以实体对象x为查询路径进行扩展,可以进一步得到三元组的组合(er,r1,x),(x,r2,e2),(x,r3,e3),随后再根据剪枝策略a生成多跳路径{err1x,xr2e2,xr3e3},并以实体对象x作为查询路径对应的答案。根据剪枝策略b生成多跳路径{err1x,xr2e2,xr3y},并以实体对象y作为查询路径对应的答案,从而生成多跳查询路径集合q
threehop

[0064]
4)将上述得到的候选查询路径集合合并得到所有可能的查询路径q:q=q
onehop
∪qtwohop

qthreehop

[0065]
在扩展阶段所用到的两条剪枝策略为:
[0066]
a)在实体链接模块中,保留了top-n的实体,n可以根据实际情况进行选择,通常选择为3。因此如果在查询路径上的实体对象都出现在实体链接结果集合中,查询路径与问题的相关度更高,将会得到保留。
[0067]
b)对于单实体多跳路径,只有当多跳属性与用户问题在字符层面存在交集时才会保留。例如,对于查询路径{err1x,xr2y},如果用户问题q和属性r2之间存在公共子序列,也即即时,将路径加入两跳查询路径集合q
twohop
,否则将会舍弃这条路径。
[0068]
基于以上两条策略,可以减少大量与用户问题无关的多跳路径,从而减少路径子图的查询规模。
[0069]
最终,使用基于规则的方式将生成的候选的路径子图展开为一个文本序列p。
[0070]
4.查询路径排序
[0071]
在该步骤中,将会计算用户问题q与候选子图的文本序列p之间的语义匹配度s(q,p)。语义相似度的计算采用bert预训练语言模型。选择得分满足如下公式的候选路径子图作为用户问题的最终答案。
[0072][0073]
其中s(q,p)代表用户问句q和路径子图文本序列p之间的语义相似度,被称为候选路径子图中的最优路径,p表示所有的路径子图序列。
[0074]
本发明中采用bert预训练语言模型作为编码器。如图3所示,bert模型分别对问句端和路径端进行编码,在句首位置的[cls]输出向量编码hq和h
p
作为用户问句和路径子图文本序列的编码表示,随后使用余弦相似度计算相似度得分,s(q,p)=cos(hq,h
p
)。损失函数使用margin loss损失计算
[0075]
loss=max(0,γ s(q,p-)-s(q,p

))
[0076]
其中γ为模型的超参数,p-和p

分别为正确路径子图和错误路径子图。
[0077]
在模型训练过程中,对于一个用户问题,可能会生成几百甚至数千条候选路径子图。直接进行训练则会出现正负样本不平衡的问题,同时也会出现负样本多样性问题。为了解决样本数量不平衡问题,在本发明中会限制负样本数量,将正负样本比例控制在k:1。为了缓解多样性问题,引入负样本动态采样的训练方法。负样本动态采样策略保持了用户问句训练数据的均衡性,提高了训练得到的模型在实际应用场景的效果。负采样也就是从全量的负样本中通过一定的策略选取一部分的负样本作为训练数据。之所以不采用所有的负样本,主要是为了降低模型的训练复杂度。动态负采样的思想时在模型训练过程中,利用上一轮的采样结果对样本进行评分,通过评分修改负采样的概率,评分越高,被采样的概率越大。
[0078]
5.faq库更新
[0079]
在问答结束后询问用户是否有效解决问题,如果用户给出肯定答复,则将对应的用户问题及答案更新至faq库中,在后续遇到相同问题时可以直接通过检索faq库给出答案。
[0080]
对于未能从用户问题中抽取出有效语义要素信息的,则可以通过统一的兜底回复
作为大难,比如“抱歉,我还没办法回答您的问题”。
[0081]
通过上述介绍可见,本发明提出的智能回答处理方案先后经过用户问题相似度计算,实体抽取,实体链接,候选路径子图抽取,候选路径子图排序,答案生成等步骤。
[0082]
本发明中提及的语义解析模型如图2所示。用户问题输入bert预训练语言模型,得到其语义编码表示结果,随后将该语义编码结果输入到问题类型分类模型,实体识别模型,以便基于该语义编码结果获得用户问题类别,实体识别结果。同时用户问题分类和命名实体识别模块不是独立的任务,而是基于同一个语义编码结果得到的,模块之间存在语义关联。因此各个模块之间具有约束及管理,可以进一步提高模块任务的准确率。
[0083]
基于同一发明构思,本发明的另一实施例提供一种适用于开源软件供应链的智能问答装置,包括:
[0084]
问句相似度度量模块,用于计算用户输入的问题与预定义的faq库中的问题的相似度,如果相似度超过一定的阈值,则将faq库中对应问题的答案直接返回给用户;
[0085]
问句解析模块,用于在用户输入的问题与faq库中问题的相似度未超过所述阈值时,通过预训练的语言模型对用户输入的问题进行解析,抽取用户输入的问题中的语义信息;
[0086]
答案生成模块,用于基于用户输入的问题及抽取得到的语义信息,结合知识图谱,生成与用户输入的问题相对应的答案。
[0087]
进一步地,上述装置还包括faq库更新模块,用于在完成对话后提示用户评价是否解决问题,如果解决则将相应的问题及回答加入faq库中。
[0088]
基于同一发明构思,本发明的另一实施例提供一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。
[0089]
基于同一发明构思,本发明的另一实施例提供一种计算机可读存储介质(如rom/ram、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。
[0090]
以上公开的本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例所公开的内容,本发明的保护范围以权利要求书界定的范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献