文档理解方法、设备和存储介质与流程

文档序号:24120334发布日期:2021-03-02 10:58阅读:51来源:国知局
文档理解方法、设备和存储介质与流程

[0001]
本公开内容涉及文档处理领域,尤其涉及一种用于文档理解方法、设备和存储介质。


背景技术:

[0002]
随着互联网技术的不断发展,每天产生大量的文档,信息总量正呈指数级别增长。如何从不断增长的海量文档中快速准确地得到用户输入问题的答案,已经成为当前面临的一大重要问题。最近几年,深度学习技术快速发展,给自然语言处理的各个任务带来了大幅提升。因此,亟需一种文档理解方法,以快速从文档中确定用户所提问题的答案。


技术实现要素:

[0003]
根据本公开内容的一个实施例,提供了一种文档理解方法。该方法由文档理解模型实现。所述文档理解模型包括问题识别模型和答案识别模型,所述方法包括:获取用户输入的问题,其中,所述用户输入的问题是一个单阶问题或包括相互依赖的多个单阶问题的多阶问题;将所述问题输入至所述问题识别模型进行问题识别,得到所述问题包括的一个或多个单阶问题;将所述一个或多个单阶问题以及所述一个或多个单阶问题的候选文档输入至所述答案识别模型进行答案识别,得到所述问题的答案;以及将所述答案呈现给所述用户。
[0004]
根据本公开内容的一个实施例,还提供了一种文档理解设备。该设备包括处理器和其上存储有多个指令的非暂态存储介质,所述多个指令当由处理器执行时使处理器执行如上述方法所述的步骤。
[0005]
根据本公开内容的一个实施例,还提供了一种存储计算机程序的存储介质。该计算机程序包括多个计算机可读指令,所述多个计算机可读指令当由计算机执行时使计算机执行如上述方法所述的步骤。
[0006]
根据本公开内容的实施例所提供的方法、设备和存储介质,文档理解模型包括问题识别模型和答案识别模型,首先获取用户输入的问题,其中,所述用户输入的问题是一个单阶问题或包括相互依赖的多个单阶问题的多阶问题;将所述问题输入至所述问题识别模型进行问题识别,得到所述问题包括的一个或多个单阶问题;将所述一个或多个单阶问题以及所述一个或多个单阶问题的候选文档输入至所述答案识别模型进行答案识别,得到所述问题的答案;以及将所述答案呈现给所述用户。以这种方式,通过问题识别模型将用户输入的问题拆分成一个或多个单阶问题,然后再输入至答案识别模型进行答案识别,可以得到更加准确的答案。
附图说明
[0007]
下面将简要描述在实施方式或常规技术的描述中使用的附图,使得根据本公开内容的实施方式或根据常规技术的技术方案将变得更加清楚。显然,以下描述中的附图仅示
出了本公开内容的一些实施方式。对于本领域技术人员而言,可以根据这些附图获得其他附图而无需任何创造性的工作。
[0008]
图1是根据本申请一个实施例的文档理解方法的流程图;
[0009]
图2是根据本申请一个实施例的文档理解模型的示意图;
[0010]
图3是根据本申请一个实施例的问题识别模型的示意图;
[0011]
图4是训练中的图3所示问题识别模型的示意图;
[0012]
图5是根据本申请一个实施例的答案识别模型的示意图;
[0013]
图6是训练中的图5所示答案识别模型的示意图;
[0014]
图7是根据本申请一个实施例的计算机的结构示意图。
具体实施方式
[0015]
为使本领域技术人员更好地理解本公开内容的技术方案,下面结合本公开内容的实施方式中的附图,对本公开内容的实施方式中的技术方案进行详细说明。显然,所描述的实施方式仅是本公开内容的一些实施方式,而不是所有实施方式。本领域普通技术人员基于本公开内容的实施方式在没有做出创造性劳动前提下所获得的所有实施方式,都属于本公开内容保护的范围。
[0016]
对于用户输入的问题,可以采用设备或机器从一篇文档中或者从具有大量文档的文本库中获得问题的答案。用户的文本库可以来自网络中的数据,例如维基百科、百度百科、新闻报道、中文问答数据等,也可以来自用户自己的专业文本库。在实际场景中,用户往往会从具有大量文档的文本库中寻找问题的答案。另外在某些情况下,用户提出的问题虽然形式上是一个问题,但实质上隐含包括了多个单阶问题,需要通过寻找多个答案才能给出该问题的最终答案。例如,对于问题“我国飞的最快的飞机的飞行高度”,首先需要得到我国飞的最快的飞机的答案是“歼-8”,然后再得到“歼-8的飞行高度”的答案是“25000米”,至此得到该问题的最终答案。我们将仅包括一个问题的问题称为单阶问题,而将这种包括相互依赖的多个单阶问题的问题称为多阶问题。
[0017]
本申请实施例提供了一种文档理解方法,由文档理解模型实现。如图 1所示,该方法包括:s101,获取用户输入的问题,其中,所述用户输入的问题是一个单阶问题或包括相互依赖的多个单阶问题的多阶问题; s102,将所述问题输入至所述问题识别模型进行问题识别,得到所述问题包括的一个或多个单阶问题;s103,将所述一个或多个单阶问题以及所述一个或多个单阶问题的候选文档输入至所述答案识别模型进行答案识别,得到所述问题的答案;以及s104,将所述答案呈现给所述用户。所述文档理解模型是通过对样本集进行训练获得的。
[0018]
对于用户输入的问题,如上所述,可以是一个单阶问题,也可以是包括相互依赖的多个单阶问题的多阶问题。该问题识别模型可以对多阶问题进行划分得到多个单阶问题。对于相互依赖的多个单阶问题,需要逐个进行回答。将一个单阶问题的答案合并至下一个单阶问题上,并对合并后的下一个单阶问题通过所述答案识别模型进行答案识别得到所述下一个单阶问题的答案,直到所有的单阶问题均被处理完毕,得到的最后一个单阶问题的答案即为所述多阶问题的答案。例如前面提到的问题“我国飞的最快的飞机的飞行高度”,问题识别模型首先将用户输入的问题划分为两个前后依赖的单阶问题:问题1,我国飞的最
快的飞机;问题2,问题1答案的飞行高度。然后对于问题1,通过答案识别模型得到我国飞的最快的飞机是“歼-8”。然后合并出新的问题:歼-8的飞行高度。再通过答案识别模型得到“歼-8”的飞行高度是“25000米”,至此得到了该多阶问题的答案。
[0019]
在本申请实施例中,引入了问题识别模型,该问题识别模型可以对多阶问题进行划分得到多个单阶问题。以这种方式,通过问题识别模型将用户输入的问题划分成一个或多个单阶问题,然后再输入至答案识别模型进行答案识别,可以得到更加准确的答案。
[0020]
参见图2,该图示意性示出了根据本申请一个实施例的文档理解模型。首先将用户的问题输入至问题识别模型,得到所述问题包括的一个或多个单阶问题,然后将其中的一个单阶问题与该单阶问题的候选文档进行拼接后输入至答案识别模型,得到该单阶问题的答案,分别处理每个单阶问题以得到用户输入的问题的最终答案。
[0021]
在一个实施例中,所述问题识别模型包括第一编码层和问题划分层,将所述问题输入至所述第一编码层编码得到所述问题的第一语义特征矩阵,其中,所述第一语义特征矩阵包括分别对应于所述问题中的每个字符的语义特征向量;以及将所述第一语义特征矩阵输入至所述问题划分层得到所述第一语义特征矩阵中分别对应于所述问题中的每个字符的语义特征向量属于每个所述单阶问题的概率。基于所述第一语义特征矩阵中分别对应于所述问题中的每个字符的语义特征向量属于每个所述单阶问题的概率得到所述问题包括的所述一个或多个单阶问题。例如,用户输入问题中的第一个字符属于第一个单阶问题的概率为98%,而属于第二个单阶问题的概率为2%,则将所述第一个字符划分为第一个单阶问题。
[0022]
在一个实施例中,第一编码层可以包括变换器的双向编码器表征 (bert)模型,通过bert模型来对用户输入的问题进行编码得到所述问题的语义特征矩阵。在一个实施例中,问题划分层可以包括条件随机场 (crf)模型,通过crf模型来预测语义特征矩阵中分别对应于所述问题中的每个字符的语义特征向量属于每个所述单阶问题的概率。当然,本领域技术人员也可以通过其它模型来实现第一编码层和问题划分层。例如,在另一个实施例中,第一编码层可以包括全卷积神经网络层,通过全卷积神经网络层来对用户输入的问题进行编码得到所述问题的语义特征矩阵。
[0023]
在一个实施例中,所述问题识别模型还包括问题类型判断层,在将所述问题输入至所述第一编码层之前,在所述问题的第一个字符之前添加第一起始符。将所述第一语义特征矩阵中与所述第一起始符对应的语义特征向量输入至所述问题类型判断层得到问题类型判断结果,所述问题类型判断结果表征所述问题是否是单阶问题。例如,所述问题类型判断结果表征所述问题是单阶问题的概率为10%,是多阶问题的概率为90%,则将所述问题判断为是多阶问题。在本实施例中,引入了第一起始符来代表整个问题的起始节点,从起始节点开始到下一第一起始符之间的是整个问题。将该第一起始符添加到整个问题之前,然后再输入至第一编码层,经过第一编码层处理后得到包含了整个问题的特征的语义特征向量。将该语义特征向量输入至所述问题类型判断层得到问题类型判断结果。
[0024]
在本实施例中,通过引入第一起始符和问题类型判断层来对输入问题是单阶问题还是多阶问题进行判断,以此可以辅助验证问题划分层对输入问题进行划分的划分结果,使得对输入问题的划分更加准确。
[0025]
在一个实施例中,问题类型判断层可以包括softmax模型。当然,本领域技术人员
也可以通过其它模型来实现问题类型判断层。
[0026]
下面以一个具体实施例来对问题识别模型进行描述。
[0027]
在一个实施例中,如图3所示,所述问题识别模型包括第一bert模型和crf模型,以及可选的第一softmax模型。其中第一bert模型是经过预训练的模型,所述预训练过程将在后面详述。
[0028]
如图3所示,对于用户输入的一条数据,例如“我国飞的最快的飞机的飞行高度”,首先经过分词处理,并在所述问题的第一个字符之前以及最后一个字符之后分别添加起始字符和结束字符。然后对分词后的字符进行向量化处理得到一串第一向量化表示(v
c
,v1,

v
14
,v
s
)。字符向量化处理所得的第一向量化表示可以是字符的简单向量化转换。将该一串第一向量化表示输入至经过预训练的第一bert模型。该第一bert模型对该一串第一向量化表示进行编码处理,得到经过第一bert模型编码的第一语义特征矩阵h(h
c
,h1…
h
14
,h
s
),其中该第一语义特征矩阵中的每个语义特征向量分别对应于所述一串第一向量化表示中的每个向量化表示。第一语义特征矩阵中的每个语义特征向量可以表征问题中每个字符的语义特征,能够反映字符在问题中的语义。
[0029]
在本实施例中,为了对多阶问题所包括的不同单阶问题进行划分,引入了crf模型,通过crf模型来将用户输入的问题划分为不同的单阶问题。
[0030]
具体地,将第一bert模型输出的第一语义特征矩阵h输入至crf 模型,由crf模型对该第一语义特征矩阵h中的每个语义特征向量进行预测处理,得到该第一语义特征矩阵中的每个语义特征向量属于每个单阶问题的概率。基于所述第一语义特征矩阵中的每个语义特征向量属于每个单阶问题的概率,即可将每个语义特征向量所对应的字符划分至不同的单阶问题。
[0031]
在图3的示例中,语义特征向量h
1-h9属于第一个单阶问题的概率更大,而语义特征向量h
10-h
14
属于第二个单阶问题的概率更大,因此,将语义特征向量h
1-h9划分为第一个单阶问题,将语义特征向量h
10-h
14
划分为第二个单阶问题。也就是说,语义特征向量h
1-h
14
所对应的字符“我国飞的最快的飞机的飞行高度”中,“我国飞的最快的飞机”被划分为第一个单阶问题,“的飞行高度”被划分为第二个单阶问题。
[0032]
可选地,在另一个实施例中,还引入了问题类型判断层,来判断所输入的问题是一个单阶问题还是一个多阶问题。具体地,问题识别模型还包括第一softmax模型。将所述问题经过预处理包括:在所述问题的第一个字符之前以及最后一个字符之后分别添加起始字符(如[cls]字符)和结束字符(如[sep]字符)。该方法还包括:将所述第一语义特征矩阵中所述 [cls]字符对应的语义特征向量输入至所述第一softmax模型,经过所述第一softmax模型处理得到问题类型判断结果,所述问题类型判断结果表征所述问题是单阶问题还是多阶问题的概率。
[0033]
具体地,如图3所示,在输入问题的预处理阶段,在所述问题的第一个字符之前以及最后一个字符之后分别添加bert模型输入所需要的 [cls]字符和[sep]字符,因此该[cls]字符也相应地进行了向量化和第一 bert模型处理,并得到了相应的输出语义特征向量h
c
,其为第一bert 模型输出的语义特征矩阵中的第一个语义特征向量,该语义特征向量经过第一bert模型的处理包含了整个输入问题的特征。因此,在本实施例中,将该语义特征向量h
c
输入至第一softmax模型,该第一softmax模型对输入的语义特征向量h
c
进行处理,得
到问题类型判断结果,该问题类型判断结果指示所述输入问题是单阶问题还是多阶问题。
[0034]
在一个实施例中,如果判断用户输入的问题已经是一个单阶问题,则直接输入至答案识别模型进行处理即可。
[0035]
图4是训练中的图3所示问题识别模型的示意图。如图4所示,在训练问题识别模型的过程中,将第一bert模型输出的第一语义特征矩阵h 输入至crf模型进行训练时,crf模型对该第一语义特征矩阵h中的每个语义特征向量进行序列标注,属于同一个单阶问题的字符对应的语义特征向量被标注为同一符号,而属于不同单阶问题的字符对应的语义特征向量被标注为不同符号。例如,可以将第一个单阶问题的字符所对应的语义特征向量标注为0,将第二个单阶问题的字符所对应的语义特征向量标注为1。所标注的符号只要能进行区分即可,在此不做具体限定。
[0036]
在图4的示例中,crf将“我国飞的最快的飞机”所对应的语义特征向量标注为0,将“的飞行高度”所对应的语义特征向量标注为1,从而得到了两个一阶问题。
[0037]
同样地,在将[cls]所对应的语义特征向量h
c
输入至第一softmax模型进行训练时,该第一softmax模型将输入的语义特征向量h
c
的类型标注为多阶问题。
[0038]
至此,通过上述问题识别模型,即可完成用户输出问题的识别。接着,将识别出的单阶问题和该单阶问题的候选文档进行拼接,作为答案识别模型的输入。
[0039]
首先,对问题的候选文档的获取进行说明。
[0040]
在一个实施例中,问题的候选文档通过以下方式获取:获取问题以及问题中包含的词语;基于所述词语的长度计算预设文档库中的每篇文档与所述单阶问题的相关度,取相关度最大的前n篇文档作为所述一个单阶问题对应的n篇候选文档,其中n是大于等于1的整数。
[0041]
具体地,获取问题以及问题中包含的词语;针对问题和文档库中的每篇文档,分别计算词频-逆文本频率指数(tf-idf)值,其中计算所述tf-idf 值时所用到的参数包括所述词语的长度;以及通过所述问题和所述文档库中每篇文档的tf-idf值来计算所述文档库中的每篇文档与所述问题的相关度,取相关度最大的前n篇文档作为所述问题对应的n篇候选文档。
[0042]
下面以具体实施例来进行说明。
[0043]
在一个实施例中,包含问题的句子中会存在停用词。停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据或文本之前或之后会自动过滤掉某些字或词,这些字或词即被称为停用词(stopwords)。首先对包含问题的句子进行去停用词。在一个实施例中,在对包含问题的句子进行去停用词之后,还进行n-gram分词。
[0044]
在一个实施例中,对文档库中的每一篇文档进行分句处理,然后对每个句子也进行去停用词和n-gram分词,再将每篇文档的所有句子的 n-gram分词结果进行汇总。
[0045]
在一个实施例中,使用tf-idf算法来计算问题与文档库中所有文档的相关度,并选取相关度最高的前若干篇文档作为后续对问题进行查找的候选文档。tf-idf是一种用于信息检索与数据挖掘的技术。tf表示词频,计算方法为tf=(某个词语在文档中出现的次数/文档的总词数)。idf表示逆文档频率,计算方法为idf=log(文档库中文档总个数/(包含某个词语的文档个数+1))。当有tf(词频)和idf(逆文档频率)后,将这两个数字相乘,就能得到该词语在该篇文档中的tf-idf的值。某个词语在文档中的tf-idf越大,那么这个词
语在这篇文档的重要性会越高。
[0046]
在本申请的另一个实施例中,对上述实施例中的tf-idf算法进行了改进。在上面实施例的tf-idf算法中,计算tf时,不考虑词语的长度。但是在对问题和文档进行n-gram分词的情况下,如果问题和文档中都出现了一个较长的文本片段,则说明两者更加相关。因此在本实施例中,在计算词语的tf-idf时,使用了词语的长度作为参数来进行计算。
[0047]
例如,可以使用如下公式来计算tf:tf=词语在文档中出现的次数* (词语长度)2/文档中的总词数。或者,可以使用如下公式来计算tf:tf=词语在文档中出现的次数*α(词语长度)2/文档中的总词数,其中α表示赋予词语长度的权重,其可以根据实际情况设置。通过扩大长度较长词语的词频,来增大长度较长词语的tf-idf值。
[0048]
针对所述问题中的词语计算出文档库中的每篇文档的tf-idf值。然后,对文档进行one-hot编码以便将文档进行向量化,然后将文档的one-hot 向量中数值为1的地方替换为词语的tf-idf值。对问题也进行同样的 one-hot向量化处理以及tf-idf值替换处理。然后计算替换tf-idf值后的所述问题的向量矩阵与替换tf-idf值后的每篇文档的向量矩阵之间的余弦相似度,取余弦相似度最大的前n篇文档作为所述问题对应的候选文档。
[0049]
获得了若干篇候选文档之后,由于这些候选文档中的内容对于回答用户输入的问题并不是全部有用,大部分文本信息与用户输入的问题并不相关。因此,在一个实施例中,针对每篇候选文档,采用与产生候选文档相同的方法,即,通过计算问题与候选文档中的每一个句子的相关度,仅选择相关度最大的前若干个句子留在候选文档中,以减少每个候选文档中的无用信息。
[0050]
由此,即完成了问题的候选文档的获取。将问题识别模型识别出的单阶问题和该单阶问题的候选文档进行拼接,即可作为答案识别模型的输入。
[0051]
在一个实施例中,答案识别模型包括第二编码层、用于预测答案起始位置的起始位置预测层以及用于预测答案结束位置的结束位置预测层。将所述问题识别模型输出的一个所述单阶问题,以及所述一个单阶问题的候选文档拼接后输入至所述第二编码层编码,得到与所述一个单阶问题以及所述候选文档对应的第二语义特征矩阵,其中所述第二语义特征矩阵包括分别对应于所述一个单阶问题以及所述候选文档中的每个字符的语义特征向量;将所述第二语义特征矩阵输入至所述起始位置预测层得到所述第二语义特征矩阵中分别对应于所述候选文档中的每个字符的语义特征向量作为所述答案起始位置的概率;将所述第二语义特征矩阵和所述作为答案起始位置的概率最大的语义特征向量输入至所述结束位置预测层,得到所述第二语义特征矩阵中分别对应于所述候选文档中的每个字符的语义特征向量作为所述答案结束位置的概率;基于所述第二语义特征矩阵中分别对应于所述候选文档中的每个字符的语义特征向量作为所述答案起始位置的概率和作为所述答案结束位置的概率,在所述候选文档中得到所述一个单阶问题的答案。
[0052]
在本实施例中,考虑到答案在文档中的起始位置与结束位置两者之间并不是相互独立的,而是存在一定的依赖性,因此基于答案起始位置来对答案结束位置进行判断。即,将所述第二语义特征矩阵和所述作为答案起始位置的概率最大的语义特征向量两者输入至所述结束位置预测层,得到所述第二语义特征矩阵中分别对应于所述候选文档中的每个字符的语义特征向量作为所述答案结束位置的概率。以这种方式,判断出的答案结束位置更加准确。
[0053]
在一个实施例中,计算所述候选文档中任意两个字符分别对应的两个语义特征向量分别作为所述答案起始位置的概率与作为所述答案结束位置的概率的乘积,选择最大的乘积所对应的两个字符之间的字符作为所述候选文档中所述一个单阶问题的答案。
[0054]
在另一个实施例中,计算所述候选文档中任意两个字符分别对应的两个语义特征向量分别作为所述答案起始位置的概率与作为所述答案结束位置的概率的和/平方和,选择最大的和/平方和所对应的两个字符之间的字符作为所述候选文档中所述一个单阶问题的答案。
[0055]
在一个实施例中,所述候选文档为多篇候选文档,所述答案识别模型还包括文档预测层,其中,在将所述一个单阶问题以及所述一个单阶问题的候选文档进行拼接时,在每个所述候选文档的第一个字符之前分别添加第二起始符,将所述第二语义特征矩阵中与每个所述第二起始符对应的语义特征向量输入至所述文档预测层得到与每个所述第二起始符对应的语义特征向量所对应的所述候选文档包括答案的概率,基于与每个所述第二起始符对应的语义特征向量所对应的所述候选文档包括答案的概率得到所述一个单阶问题的答案。
[0056]
在一个实施例中,针对每个所述候选文档,计算所述候选文档中任意两个字符分别对应的两个语义特征向量分别作为所述答案起始位置的概率与作为所述答案结束位置的概率的乘积,将最大的所述乘积再乘以所述候选文档包括答案的概率,结果作为所述候选文档的最终得分;以及选择所述最终得分最大的候选文档中最大的所述乘积对应的所述两个字符之间的字符作为所述一个单阶问题的答案。
[0057]
由于采用多篇候选文档来对答案进行预测时,单纯预测答案在文档中的起始位置和结束位置,很有可能会造成预测的答案不在最好的候选文档中。所以在本实施例中,对文档包含答案的概率也进行判断。结合文档包含答案的概率来判断所述一个单阶问题的答案。
[0058]
在一个实施例中,所述第二编码层包括经过预训练的bert模型,通过bert模型来对输入的问题和候选文档进行编码。
[0059]
在一个实施例中,所述起始位置预测层和所述结束位置预测层均包括 softmax模型,通过softmax模型来预测答案起始位置和答案结束位置。
[0060]
在一个实施例中,所述文档预测层包括softmax模型,通过softmax 模型来预测文档包括答案的概率。
[0061]
在将单阶问题和该单阶问题的候选文档进行拼接输入答案识别模型时,针对识别出的单阶问题,虽然单篇候选文档的篇幅不会很长,但是若干篇候选文档集加在一起,很容易就会超过千字。考虑到答案识别模型的输入长度限制,拼接后的问题和候选文档往往并不能直接输入到答案识别模型中,因此本实施例通过引入文档滑动窗口来解决这个问题。在一个实施例中,针对每一个单阶问题,设置多个文档滑动窗口,每个所述文档滑动窗口的大小不大于第一预定值,其中,所述单阶问题的候选文档为多篇,每个文档滑动窗口中均包括所述单阶问题以及所述单阶问题的至少一篇所述候选文档,所述单阶问题的每篇所述候选文档均被包括在至少一个所述文档滑动窗口中,并且每个所述文档滑动窗口中包括的至少一篇候选文档也出现在至少另一个文档滑动窗口中,以及将每个所述文档滑动窗口的内容分别输入至所述答案识别模型进行答案识别,得到所述单阶问题的答案。
[0062]
在一个实施例中,将每个所述文档滑动窗口中的内容分别输入至所述答案识别模块,得到针对每个所述文档滑动窗口中的每篇候选文档的预测结果,将在一个以上的文档滑动窗口中出现的候选文档的各个预测结果进行平均作为所述候选文档的预测结果。由此,可以得到该单阶问题的所有候选文档的预测结果。
[0063]
在一个实施例中,针对每个所述候选文档,计算所述候选文档中任意两个字符分别对应的语义特征向量分别作为答案起始位置的概率与作为答案结束位置的概率的乘积,将最大的所述乘积再乘以所述候选文档包括答案的概率,结果作为所述候选文档的最终得分。选择所述最终得分最大的候选文档中最大的所述乘积对应的所述两个字符之间的字符作为所述一个单阶问题的所述答案。
[0064]
下面通过具体实施例来对答案识别模型进行说明。
[0065]
在一个实施例中,如图5所示,答案识别模型包括第二bert模型、用于预测答案起始位置的第二softmax模型以及用于预测答案结束位置的第三softmax模型,以及可选的用于预测所述候选文档包括答案的概率的第四software模型。其中,所述第二bert模型是经过预训练的模型,所述预训练过程将在后面详述。
[0066]
在将单阶问题和该单阶问题的候选文档进行拼接输入答案识别模型之前,假设答案识别模型中的第二bert模型的最长输入长度为512个字符,因此首先需要设置若干个文档滑动窗口,将拼接后的问题和候选文档填充到文档滑动窗口中。基于bert的最大输入长度512个字符的限制,将每个文档滑动窗口的大小设置为512个字符。每个文档滑动窗口均包括所述单阶问题以及所述单阶问题的一篇或多篇候选文档,并且保证所述单阶问题的所有候选文档都被加入了至少一个文档滑动窗口中以及各个文档滑动窗口中的候选文档彼此之间有重叠。这样,即可以在答案识别阶段将不同的文档滑动窗口分别输入至答案识别模型进行处理,最后合并各文档滑动窗口的输出结果得到该单阶问题的答案。
[0067]
在一个实施例中,可以将问题的候选文档按照与问题的相关度来进行排序并依次添加到各个文档滑动窗口中。
[0068]
在一个实施例中,对于在多个文档滑动窗口中出现的一个候选文档,求取该候选文档经答案识别模型处理后得到的答案的平均得分作为该候选文档的得分。
[0069]
下面以一个具体实例来详述文档滑动窗口的应用。
[0070]
1)假设针对问题识别模型输出的一个单阶问题获取了10篇候选文档,先把该单阶问题加入到文档滑动窗口w中,然后将候选文档按照与该单阶问题的相关度的顺序依次加入到文档滑动窗口w中,直到文档滑动窗口w中所填充的文本的长度总和恰好小于512个字符,即,再加入一个候选文档则该文档滑动窗口中所填充的文本长度总和将大于512个字符,记窗口w中第一个候选文档为s
begin
,最后一个候选文档为s
end
。在一个实施例中,可以对文档滑动窗口预留一定的字符数,以便后续对输入问题及候选文本进行预处理时的字符添加,保证添加字符后仍然小于或等于512个字符。
[0071]
2)如果begin+4<end,则从begin+4篇文档开始填充新的文档滑动窗口,否则从end-1篇文档开始填充新的文档滑动窗口。在填充新窗口时,首先都要保证将所述单阶问题添加到了该文档滑动窗口中。此外,还要保证各个文档滑动窗口中的候选文档有重叠,即,每个文档滑动窗口中包括的至少一个候选文档也出现在至少另一个文档滑动窗口中,以保证各个文档滑动窗口之间存在可比性。
[0072]
3)继续填充新的文档滑动窗口直到所述单阶问题的所有候选文档被处理完,返回的文档滑动窗口列表即为候选文档的窗口划分。
[0073]
例如,针对该单阶问题的10篇候选文档p
1-p
10
,划分成了三个文档滑动窗口,如下:span1=[question,p1,p2,p3,p4]span2=[question,p4,p5,p6,p7]span3=[question,p7,p8,p9,p
10
]
[0074]
将上述各个文档滑动窗口中的内容分别输入至答案识别模型进行答案识别,即可得到各个文档滑动窗口内的候选文档关于该单阶问题的答案。
[0075]
在上述文档滑动窗口的方法中,多个文档滑动窗口对文档的处理结果进行平均是一种ensemble方法,能够提升模型的性能。
[0001]
如图5所示,假设将要输入的单阶问题的文本记为:question=[q1,q2, q3,

,q
n
],包含n个字符。该单阶问题具有m篇候选文本,记为p1,p2,

p
m
,其中p
i
=[w
1pi
,w
2pi
,

w
kpi
],包含k个字符,不同文档中k可以不同;i大于等于1小于等于m。该m篇候选文档分布在了q个文档滑动窗口中。假设其中1个文档滑动窗口包括问题和三篇候选文档,记为span=[question, p
i-1
,p
i
,p
i+1
],其中文档p
i
中包含5个字符,即p
i
=[w
1pi
,w
2pi
,

w
5pi
],问题答案为[w
2pi
,w
3pi
,w
4pi
]。
[0002]
首先,将要输入的文档滑动窗口中的内容进行预处理,例如,将要输入的文档滑动窗口中包含的问题以及每篇候选文档的第一个字符之前以及最后一个字符之后分别添加[cls]字符和[sep]字符并向量化,得到一串第二向量化表示v,记为 input=[cls]question[sep][cls]p
i-1
[sep][cls]p
i
[sep][cls]p
i+1
[sep],其中input的字符长度小于512。
[0003]
之后,针对输入input设置bert模型需要的输入特征(input_ids) 并将顺序排列的问题和不同候选文档的段落特征(segment_ids)间隔设置为0和1,以此来引入文档信息。例如,如图5所示,将问题和偶数篇文档的segment_ids设置为0,将奇数篇文档的segment_ids设置为1。之后将段落特征输入(input)至所述第二bert模型。经过所述第二bert模型处理之后得到输入的每个字符的第二语义特征矩阵h。
[0004]
在本实施例中,通过第二softmax模型来预测答案的起始位置。具体地,将第二bert模型输出的第二语义特征矩阵h输入至所述第二softmax 模型进行处理,得到所述语义特征矩阵中的每个语义特征向量作为答案起始位置的概率。
[0005]
在一个实施例中,答案识别模型还包括用于预测答案结束位置的第三 softmax模型。将上述得到的第二语义特征矩阵h和作为答案起始位置的概率最大的语义特征向量(例如图4中的h
w2
)输入至所述第三softmax 模型进行处理,得到所述第二语义特征矩阵中的每个语义特征向量作为答案结束位置的概率。例如,将上述得到的第二语义特征矩阵h和作为答案起始位置的概率最大的语义特征向量进行拼接后输入至所述第三softmax 模型进行处理,得到所述第二语义特征矩阵中的每个语义特征向量作为答案结束位置的概率。
[0006]
在一个实施例中,所述答案识别模型还包括第四softmax模型,用于预测所述候选文档包括答案的概率。将所述第二bert模型输出的所述第二语义特征矩阵中与每个所述cls对应的语义特征向量输入至所述第四 softmax模型进行处理,得到与每个所述cls对应的语义特征向量所对应的所述候选文档包括答案的概率。
[0007]
具体地,如图5所示,在输入问题及候选文档的预处理阶段,在所述问题和每篇候选文档的第一个字符之前以及最后一个字符之后分别添加 bert模型输入所需要的[cls]字符和[sep]字符,因此这些[cls]字符也相应地被第二bert模型处理,并得到了相应的输出语义特征向量h
cls
,该语义特征向量经过第二bert模型的处理包含了其对应的整个输入问题或候选文档的特征。因此,在本实施例中,将该语义特征向量h
cls
输入至第四softmax模型,该第四softmax模型对输入的语义特征向量h
cls
进行处理,得到对应的文档包括答案的概率。
[0008]
根据以上方式,将每个所述文档滑动窗口中的内容分别输入至所述答案识别模块进行处理,得到针对每个所述文档滑动窗口的输出结果,合并所述针对每个文档滑动窗口的输出结果以得到针对所述一个单阶问题的答案。
[0009]
在一个实施例中,当同一篇文档出现在一个以上的文档滑动窗口中时,将该一个以上的文档滑动窗口中关于该篇文档的预测结果进行平均操作,合并该一个以上的文档滑动窗口关于该篇文档的预测结果。在一个实施例中,该预测结果即为该篇文档的上述三种预测概率。
[0010]
图6是训练中的图5所示答案识别模型的示意图。在本实施例中,在训练答案识别模型时,将预测答案起始位置、答案结束位置以及包括答案的概率最大的候选文档这三者作为训练目标。
[0011]
如图6所示,将第二bert模型输出的第二语义特征矩阵h输入至第二softmax模型进行训练时,第二softmax模型对该第二语义特征矩阵 h中的每个语义特征向量进行序列标注,其中,所述语义特征矩阵中与最可能的答案起始位置的字符对应的语义特征向量以第一预定的标注符号进行标注。在图6的示例中,将与最可能的答案起始位置的字符对应的语义特征向量(h
w2
)标注为1,其余语义特征向量标注为0。
[0012]
将拼接后的第二语义特征矩阵h输入至第三softmax模型进行训练时,第三softmax模型对所述第二语义特征矩阵中的每个语义特征向量的序列标注,其中,第二语义特征矩阵中与最可能的答案结束位置的字符对应的语义特征向量以第二预定的标注符号进行标注。在图6的示例中,将与最可能的答案结束位置的字符对应的语义特征向量(h
w4
)标注为1,其余语义特征向量标注为0。
[0013]
将所述第二bert模型输出的所述第二语义特征矩阵中与每个所述 cls对应的语义特征向量输入至所述第四softmax模型进行训练时,第四 softmax模型对所述第二语义特征矩阵中与每个所述cls对应的语义特征向量的序列标注,其中,与包括答案的概率最大的候选文档的cls对应的语义特征向量以预定的标注符号进行标注。在图6的示例中,包括答案的概率最大的候选文档的cls对应的语义特征向量标注为1,其余语义特征向量标注为0。
[0014]
在模型训练的过程中,为了更好地降低损失值,对预测答案结束位置训练目标的权重和包括答案的概率最大的候选文档的训练目标的权重之间的配比,使用自动权重更新方法,即: loss=e-α
*loss
startend
+α+e-β
*loss
haveanswer
+β,,其中α表示起始位置和结束位置的权重,β表示文档包括答案的概率的权重,用于对答案起始位置和结束位置的损失函数和文档包括答案的概率的损失函数进行加权。其中参数α和β也是需要训练的参数。
[0015]
在一个实施例中,当答案识别模型识别出用户输入的是包括相互依赖的多个单阶
问题的多阶问题时,可以按顺序将所述多个单阶问题中的第一个单阶问题和所述第一个单阶问题的候选文档输入至所述答案识别模型得到所述第一个单阶问题的答案,将所述第一个单阶问题的答案合并至所述多个单阶问题中的下一个单阶问题上,并对合并后的所述下一个单阶问题和所述下一个单阶问题的候选文档输入至所述答案识别模型得到所述下一个单阶问题的答案,直到所述多个单阶问题均被处理完毕,得到的最后一个单阶问题的答案即为所述多阶问题的答案。
[0076]
在上述答案识别模型的实施例中,答案识别模型输入的问题是问题识别模型输出的单阶问题。在一个实施例中,答案识别模型也可以不需要问题识别模型来单独实现。在这种情况下,将用户输入的问题直接经过预处理(例如,与候选文档拼接、文档滑动窗口划分、添加起始字符等)后直接输入至答案识别模型,也可以得到相应的答案。本领域技术人员通过上文所述知道如何实现,在此不做赘述。
[0077]
在一个实施例中,上述文档理解模型是联合训练的。
[0078]
在另一个实施例中,问题识别模型和答案识别模型是分别训练的。
[0016]
另外,在本申请实施例中,问题识别模型中包括的第一bert模型和答案识别模型中包括的第二bert模型都是经过预训练的模型。下面对 bert模型的预训练进行说明。
[0017]
对于bert模型来说,如图3所示,对于用户输入的一条数据,例如包含问题的句子,首先经过分词处理,并补充上bert模型输入所需要的 [cls]、[sep]。然后对分词后的输入进行向量化处理并输入到bert模型中,输出经过bert模型编码过的语义特征矩阵。
[0018]
bert模型采用双向transformer作为特征抽取器。transformer是目前自然语言处理领域流行的网络结构,每个单元仅由自注意力机制和前馈神经网络构成。各个单元可以连续堆叠。
[0019]
在本申请的一个实施例中,预训练需要的语料是无标签的中文语料。
[0020]
在一个实施例中,可以直接采用已在大规模中文语料上预训练完成的 bert模型。该bert模型的训练语料包括中文维基百科、百度百科、新闻报道、中文问答数据等。
[0021]
在一个实施例中,为了专业领域内的用户文档库中的语料的更好的适配性,还可以使用用户专业文档库中的语料来对bert模型进行预训练。对用户专业文档库中的语料进行清洗、预处理、分段、分句、分词等操作,形成训练bert语言模型需要的输入格式,然后对bert模型进行训练,增强bert模型对专业领域数据的适配性。
[0022]
在一个实施例中,在对bert模型进行预训练的过程中,采用了更大的batch size和更长的训练步长,例如,可以将batch size设置为 1024,将训练步长设置为1000万步。
[0023]
在一个实施例中,在对bert模型进行预训练的过程中,不使用现有 bert模型中使用的下句预测损失函数,而是针对现有bert模型新增预测两句是否在同一段的损失函数。具体地,将现有bert模型中判断a和 b两个句子是否是上下句关系的函数,更改为判断a和b两个句子是否处于同一个段落的函数,但使用的都是0-1分类模型。判断两个句子是否在同一段落比判断上下句难度更大,但能让模型学习到更多的信息。
[0024]
在一个实施例中,在对bert模型进行预训练的过程中,不采用现有 bert模型中使用的128长度的文本进行训练,然后二阶段再在512的长度上进行微调,而是直接对512长度的文本进行训练,使得模型能够适应长文本。
[0025]
在一个实施例中,在对bert模型进行预训练的过程中,不采用现有 bert模型中使
用的字级别mask,而是采用词级别进行mask,融入更多先验知识。
[0026]
把上面处理好的数据输入bert预训练模型中,例如采用5e-6的学习率并训练80万步,得到bert预训练模型。
[0027]
根据本申请的一个实施例,还提供了一种用于在文档中识别问题的答案的设备,包括处理器和其上存储有多个指令的非暂态存储介质,所述多个指令当由所述处理器执行时使所述处理器执行上述用于在文档中识别问题的答案的方法。
[0028]
根据本申请的一个实施例,还提供了一种存储计算机程序的存储介质,其中,所述计算机程序包括多个计算机可读指令,所述多个计算机可读指令当由计算机执行时使所述计算机执行上述用于在文档中识别问题的答案的方法。
[0029]
图7示出了根据申请一个实施例的计算机的结构示意图,通过该计算机执行根据本公开内容的用于识别字符的方法。
[0030]
计算机可以包括例如射频(rf)电路20、包括一个或更多个计算机可读存储介质的存储器21、输入单元22、显示单元23、无线保真(wifi) 模块24、包括一个或更多个处理核心的处理器25以及电源26。本领域技术人员可以理解,计算机不限于图7所示的计算机的结构,并且计算机可以包括与图7中所示的那些相比更多或更少的部件、或组合的部件、或不同布置的部件。
[0031]
rf电路20可以用于在信息接收和发送中接收和发送信号。具体地,将所接收的信息传送到一个或更多个处理器25以进行处理。通常,rf电路20包括但不限于天线、至少一个放大器、调谐器、一个或更多个振荡器、收发器、耦合器、低噪声放大器(lna)以及双工器。另外,rf电路20可以经由无线通信和网络与其他装置通信。无线通信可以使用任何通信标准或协议,包括但不限于全球移动通信系统(gsm)、通用分组无线电服务(gprs)、码分多址(cdma)、宽带码分多址(wcdma)、长期演进(lte)、电子邮件和短消息服务(sms)。
[0032]
存储器21可以用于存储软件程序和模块,并且处理器25可以通过运行存储在存储器21中的软件程序和模块来执行各种功能应用和数据处理。存储器21可以主要包括程序存储器区域和数据存储区域,其中,程序存储区域可以用于存储例如至少一个功能所需的操作系统和应用程序,并且数据存储区域可以用于存储例如根据计算机的使用建立的数据。另外,存储器21可以包括高速随机存取存储器和非易失性存储器,例如至少一个磁盘存储器、闪存或其他易失性固态存储器。因此,存储器21还可以包括存储器控制器,以为处理器25和输入单元22提供对存储器21 的访问。
[0033]
输入单元22可以用于接收输入的数字或字符信息,并生成与用户设置和功能控制有关的键盘、鼠标、操纵杆、光学或轨迹球信号输入。在具体实施方式中,输入单元22可以包括触敏表面221和其他输入装置222。触敏表面221也称为触摸显示屏或触摸板,并且可以在其上或由其收集触摸操作(例如,用户用手指、触摸笔和任何其他合适的物体或附件在触敏表面221上或触敏表面221周围进行的操作),并根据预设程序驱动相应的连接装置。可选地,触敏表面221可以包括触摸检测装置和触摸控制器。触摸检测装置检测用户的触摸方向,检测由触摸操作生成的信号,并且将该信号发送到触摸控制器。触摸控制器从触摸检测装置接收触摸信息,将触摸信息转换为触摸坐标并且将触摸坐标发送到处理器25。触摸控制器还能够接收从处理器25发送的命令并执行命令。另外,触敏表面221可以通过例如电阻表面、电容表面、红外表面和表面声波表面来实现。除了触敏表面221之外,输入单元22还可
以包括其他输入装置222。具体地,其他输入装置222可以包括但不限于物理键盘、功能键(例如音量控制按钮、开关按钮)、轨迹球、鼠标和操纵杆中的一个或更多个。
[0034]
显示单元23可以用于显示由用户输入的信息或为用户提供的信息以及计算机的各种图形用户界面(gui),这些gui可以由图形、文本、图标、视频及其任何组合组成。显示单元23可以包括显示面板231。可选地,显示面板231可以以液晶显示器(lcd)、有机发光二极管(oled) 等的形式形成。另外,显示面板231可以被触敏表面221覆盖。当触敏表面221检测到其上或由其收集的触摸操作时,触敏表面221将触摸操作发送到处理器25以确定触摸事件的类型,然后处理器25根据触摸事件的类型在显示面板231上提供相应的视觉输出。尽管触敏表面221和显示面板 231将输入和输出功能实现为图7中的两个单独的部件,但是触敏表面221 和显示面板231可以在其他实施方式中集成在一起以实现输入和输出功能。
[0035]
wifi是短程无线传输技术。例如,计算机可以通过wifi模块24发送和接收电子邮件,浏览网页并访问用户的流媒体,并且为用户提供无线宽带互联网接入。尽管图7中示出了wifi模块24,但是可以理解,wifi 模块24对于计算机不是必需的,并且可以根据需要在本公开内容的本质的范围内省略。
[0036]
处理器25是计算机的控制中心,其通过使用各种接口和电线连接移动电话的各个部分,并且通过运行或执行存储器21中存储的软件程序和/ 或模块并调用存储器21中存储的数据来实现计算机的各种功能和数据处理,从而整体监视移动电话。可选地,处理器25可以包括一个或更多个处理核。优选地,应用处理器和调制解调器处理器可以集成到处理器25 中。应用处理器主要用于处理例如操作系统、用户界面和应用程序。调制解调器处理器主要用于处理无线通信。可以理解的是,上述调制解调器处理器可以不集成到处理器25中。
[0037]
计算机还包括用于为各种部件供电的电源26(例如电池)。优选地,电源可以通过电源管理系统与处理器25逻辑连接,因此,诸如充电、放电和电源管理的功能由电源管理系统实现。电源26还可以包括dc或ac 电源、再充电系统、电源故障检测电路、电源转换器或逆变器、电源状态指示器和任何其他组件中的一个或更多个。
[0038]
尽管未示出,计算机还可以包括这里未描述的其他模块。具体地,在本实施方式中,计算机中的处理器25可以根据以下指令执行存储器21中存储的应用程序的一个或更多个处理,以实现上述方法实施例中描述的各个步骤。
[0039]
应当进一步注意,诸如“第一”、“第二”等的关系术语仅在本文中用于将一个实体或操作与另一个实体或操作区分开,而不是需要或暗示实际关系或命令存在于实体或操作之间。此外,术语“包括”、“包含”或其任何变体旨在包括非排他性包含,使得包括一系列元素的过程、方法、物品或装置不仅包括那些元素,而且包括尚未清楚列出的其他元素或者过程、方法、物品或装置固有的元素。此外,除非进一步定义,否则限定元素的表述“包括......”将不排除包括所限定的元素的过程、方法、物品或装置中的另外的相同元素的存在。
[0040]
结合本公开内容的实施方式描述的方法或算法的步骤可以用硬件模块、由处理器执行的软件模块或其组合来实现。软件模块可以驻留在随机存取存储器(ram)、内部存储器、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘驱动器、cd-rom,或本技术领域中公知的其他类型的存储介质。
[0041]
前述实施方式仅是本公开内容的优选实施方式,并不意味着限制本公开内容。根
据本公开内容的优选实施方式在上面被公开,并且不旨在限制本公开内容。基于所公开的方法和技术内容,本领域技术人员可以对本公开内容的技术方案进行一些变化和改进,或者在不脱离本技术方案的范围的情况下对实施方式进行一些等同变化。基于技术本质做出的所有简单修改、等同变化和改进都落入本公开内容的技术方案的范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1