CN114238563A - 基于多角度交互的中文句子对语义智能匹配方法和装置 - Google Patents
基于多角度交互的中文句子对语义智能匹配方法和装置 Download PDFInfo
- Publication number
- CN114238563A CN114238563A CN202111490833.7A CN202111490833A CN114238563A CN 114238563 A CN114238563 A CN 114238563A CN 202111490833 A CN202111490833 A CN 202111490833A CN 114238563 A CN114238563 A CN 114238563A
- Authority
- CN
- China
- Prior art keywords
- sentence
- word
- representation
- granularity
- interaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000003993 interaction Effects 0.000 title claims abstract description 188
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012549 training Methods 0.000 claims abstract description 88
- 238000010276 construction Methods 0.000 claims abstract description 41
- 230000002452 interceptive effect Effects 0.000 claims abstract description 33
- 230000007246 mechanism Effects 0.000 claims abstract description 8
- 238000013507 mapping Methods 0.000 claims description 83
- 239000013598 vector Substances 0.000 claims description 63
- 238000006243 chemical reaction Methods 0.000 claims description 51
- 238000012545 processing Methods 0.000 claims description 47
- 230000014509 gene expression Effects 0.000 claims description 45
- 230000011218 segmentation Effects 0.000 claims description 43
- 238000011176 pooling Methods 0.000 claims description 33
- 230000006870 function Effects 0.000 claims description 30
- 239000011159 matrix material Substances 0.000 claims description 23
- 238000007781 pre-processing Methods 0.000 claims description 21
- 230000002123 temporal effect Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 11
- 238000005457 optimization Methods 0.000 claims description 10
- 239000000126 substance Substances 0.000 claims description 10
- 238000012163 sequencing technique Methods 0.000 claims description 8
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 claims description 7
- 230000004913 activation Effects 0.000 claims description 7
- 239000000284 extract Substances 0.000 claims description 7
- 230000007787 long-term memory Effects 0.000 claims description 7
- 230000006403 short-term memory Effects 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 4
- 239000002131 composite material Substances 0.000 claims description 3
- 235000019580 granularity Nutrition 0.000 abstract description 129
- 238000009411 base construction Methods 0.000 abstract description 5
- 238000013473 artificial intelligence Methods 0.000 abstract description 2
- 230000002457 bidirectional effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000003058 natural language processing Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000015654 memory Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3347—Query execution using vector based model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了基于多角度交互的中文句子对语义智能匹配方法和装置,属于人工智能领域。本发明要解决的技术问题为如何捕捉句子内部不同粒度的交互特征以及句子之间同一粒度的交互特征,以实现中文句子对语义的智能匹配。采用的技术方案为:构建由多粒度编码模块、多角度交互模块、预测模块组成的中文句子对语义智能匹配模型;首先使用BiLSTM在字符和词语粒度上进行编码,而后利用注意力机制以及残差连接获得句内交互最终表示和句间交互最终表示,并提取关键特征生成两个句子的最终表示,最后通过多层感知机预测语义匹配度。该装置包括中文句子对语义匹配知识库构建单元、训练数据集生成单元、语义匹配模型构建单元以及语义匹配模型训练单元。
Description
技术领域
本发明属于人工智能、自然语言处理技术领域,具体涉及一种基于多角度交互的中文句子对语义智能匹配方法和装置。
背景技术
句子对语义匹配是指判断两个句子所包涵的语义信息是否相似,其直接影响众多下游自然语言处理应用的性能,如检索式对话机器人和自动问答系统等。中文句子对语义匹配任务旨在衡量两个中文句子对所蕴含的语义是否一致。现有的大多数句子对语义匹配工作都集中在英文上,其往往仅试图在单词粒度上捕获语义特征。然而,中文不同于英文,中文句子的语义可以在字符粒度和词语粒度上进行表征,其语义特征的充分捕获更加困难。现有的英文句子对语义匹配方法并不能满足中文句子对语义匹配的需要。
尽管已有少量工作尝试将字符粒度和词语粒度等多角度的特征结合起来,用于中文文本建模。但是,这些工作通常仅使用一些简单的操作(拼接或求和)将不同粒度的文本嵌入表示结合在一起。这些简单方法无法捕获句子内部不同粒度、句子之间同一粒度的交互特征,导致性能改进有限。为了捕获中文句子对之间更复杂的语义交互特征,近年来出现了一些基于交互模型的工作,例如堆叠多层卷积网络等。然而,这些工作仍然无法彻底解决中文句子对语义匹配任务中的问题,因为它们缺乏从多个角度捕获交互特征的能力,包括句子内部不同粒度的交互特征和句子之间同一粒度的交互特征。
发明内容
针对现有的中文句子对语义匹配方法的不足,本发明提出了一种基于多角度交互的中文句子对语义智能匹配方法和装置。该方法和装置,将句子在字符粒度和词语粒度上进行切分,设计多粒度编码层,将其转化为相应的嵌入表示,而后使用BiLSTM长短期记忆网络对嵌入表示进行编码;设计多角度交互层来建模句子内部不同粒度、句子之间同一粒度的交互特征;使用注意力机制以及残差连接,避免交互信息丢失并增强句子表示;使用全局平均池化和最大池化来提取句内交互最终表示和句间交互最终表示的关键特征,从而生成两个句子的最终表示;设计预测层,利用多层感知机预测句子对的语义匹配度。本发明提出了多角度交互模型,该模型可以获得句内交互最终表示和句间交互最终表示,即句子内部不同粒度、句子之间同一粒度的交互特征。其核心思想是将多粒度编码层生成的句子的初始上下文表示作为输入,使用注意力机制以及残差连接获得句内交互最终表示和句间交互最终表示,之后使用全局平均池化和最大池化来提取句内交互最终表示和句间交互最终表示的关键特征,从而生成两个句子的最终表示,提高语义匹配的整体效果。具体如下:
多粒度编码模块接收以字符粒度和词语粒度切分的句子,并转化为相应的嵌入表示,然后使用BiLSTM长短期记忆网络对嵌入表示进行编码生成句子的初始上下文表示,并将句子的初始上下文表示传递给多角度交互模块;
多角度交互模块包含句间交互模块和句内交互模块;句间交互模块首先分别在字符粒度和词语粒度上,接受多粒度编码模块生成的句子的初始上下文表示,然后使用注意力机制生成句间相关表示,上述操作定义为Align-Add操作,之后使用残差连接将生成的句间相关表示和句子的初始上下文表示结合起来生成增强的句间相关表示,然后对字符粒度上增强的句间相关表示又进行了一次Align-Add操作,最后将Align-Add的输出和词语粒度上增强的句间相关表示进行拼接生成句间交互最终表示;句内交互模块首先使用残差连接将嵌入表示和句子的初始上下文表示进行连接,然后利用BiLSTM捕获时序特征,再将时序特征与嵌入表示进行拼接得到增强的时序特征,最后对增强的时序特征使用Align-Add操作以生成句内交互最终表示;多角度交互模块得到句间交互最终表示、句内交互最终表示之后,将它们拼接起来并利用全局平均池化和最大池化提取关键特征,生成两个句子的最终表示;
预测模块首先对两个句子的最终表示进行绝对值减法操作,然后利用多层感知机预测两个句子的语义匹配程度,判断是否匹配。
作为优选,所述多粒度编码模块由字映射转换表、词映射转换表、输入层、字向量映射层、词向量映射层、编码模块组成。构建过程具体如下:
构建字映射转换表:以数字1为起始,随后按照每个字被录入字表的顺序依次递增排序,从而形成本发明所需的字映射转换表;
构建词映射转换表:以数字1为起始,随后按照每个词被录入词表的顺序依次递增排序,从而形成本发明所需的词映射转换表;
构建输入层:输入层中包括四个输入,对于训练数据集中的每一个句子对或待预测的句子对,对其进行断字和分词预处理,分别获取sentence1_char、sentence2_char、sentence1_word和sentence2_word,其中后缀char、word分别表示对相应句子进行断字或分词处理而得,将其形式化为:(sentence1_char,sentence2_char,sentence1_word,sentence2_word);对于输入句子中的每个字和词而言,都按照在之前构建完成的字映射转换表和词映射转换表将其转化为相应的数字标识;
构建字向量映射层:负责加载构建字映射转换表步骤中训练所得的字向量矩阵权重来初始化当前层的权重参数;句子对语义匹配断字处理知识库中每一个句子都可以通过字向量映射的方式,将句子信息转化为向量形式,即在字符粒度上的句子嵌入表示;
构建词向量映射层:负责加载构建词映射转换表步骤中训练所得的词向量矩阵权重来初始化当前层的权重参数;句子匹配分词处理知识库中每一个句子都可以通过词向量映射的方式,将句子信息转化为向量形式,即在词语粒度上的句子嵌入表示;
构建编码模块:编码模块接收字向量映射层输出的嵌入表示和词向量映射层输出的嵌入表示作为输入,即其中Q表示句子1、A表示句子2、脚标c表示字符粒度、脚标w表示词语粒度;然后分别使用四个独立的BiLSTM长短期记忆网络对嵌入表示进一步编码,编码得到的结果与各自的原句子嵌入表示进行拼接;具体实施见下列公式:
其中,作为多粒度编码层的输出;表示句子1字符粒度的初始上下文表示;表示句子1词语粒度的初始上下文表示;表示句子2字符粒度的初始上下文表示;表示句子2词语粒度的初始上下文表示;上标B用以标记编码模块的输出,无特殊含义;脚标c和脚标w的含义如前所述,不再赘述。
更优地,所述多角度交互模块由句间交互模块、句内交互模块组成,构建过程具体如下:
其中,表示句子1的第i个字符的初始上下文表示,表示句子2的第j个字符的初始上下文表示,e表示注意力权重矩阵,ei,j表示句子1字符粒度的初始上下文表示的第i个位置对句子2字符粒度的初始上下文表示的第j个位置的注意力权重;获得注意力权重后,对于句子1中的一个字符,其相关表示是通过句子2字符粒度的向量表示和注意力权重来计算的,其公式如下:
对于句子2中的一个字符也是同样的操作,公式如下:
其中,是句子1第i个字符的相关表示,是句子2第i个字符的向量表示,exp()是以e为底的指数函数,ei,j来自公式(3),k是字符个数;同理,是句子2第j个字符的相关表示,是句子1第j个字符的向量表示;两个句子的字符粒度的句间相关表示定义为和为了整合上述(3)、(4)、(5)公式所代表的相关处理步骤,将其统一定义为Align-Add操作,公式如下:
进一步地,为了避免信息丢失和增强句子表示,句间交互模块继续使用残差连接将前述句间相关表示和句子的初始上下文表示拼接起来,生成增强的句间相关表示,公式如下:
其中,⊙代表元素乘法;是句子1字符粒度增强的句间相关表示;是句子2字符粒度增强的句间相关表示;是句子1词语粒度增强的句间相关表示;是句子2词语粒度增强的句间相关表示; 的含义参见公式(3)和公式(6),不再赘述;
进一步地,为避免因分词歧义而产生的噪声信息的影响,句间交互模块更加关注句子的字符粒度,在字符粒度上,进一步使用Align-Add操作,公式如下:
句内交互模块首先使用残差连接将嵌入表示和句子的初始上下文表示连接起来,然后利用BiLSTM来捕获时序特征,公式如下:
进一步地,为了增强句子中时序特征的表示,句内交互模块将时序特征与相对应的嵌入表示拼接在一起,即 其中,是句子1字符粒度的时序特征;是句子1字符粒度的增强的时序特征;是句子2字符粒度的时序特征;是句子2字符粒度的增强的时序特征;是句子1词语粒度的时序特征;是句子1词语粒度的增强的时序特征;是句子2词语粒度的时序特征;是句子2词语粒度的增强的时序特征;
进一步地,将句间交互模块获得的句间交互最终表示1即QA、句内交互模块获得的句内交互最终表示1即以及多粒度编码模块获得的初始上下文表示拼接起来,并利用全局平均池化和最大池化来提取关键特征,以生成句子1即Q的最终表示,公式如下:
更优地,所述预测模块构建过程如下:
将两个句子的最终表示作为输入,通过对两个句子的最终表示进行绝对值减法操作,得到M,即最终的匹配表示;然后将M送入带有Sigmoid激活函数的多层感知机中,得到预测标签p,公式如下:
M=|Q-A| p=MLP(M) (16)
其中,p是一个处于[0,1]之间的匹配度数值,最终通过与设定的阈值0.5进行比较,从而判断中文句子对的语义是否匹配;即若p≥0.5时,预测该中文句子对的语义是匹配的,否则不匹配;当中文句子对语义匹配模型尚未充分训练时,需要在根据语义匹配知识库而构建的训练数据集上进行训练,以优化模型参数;当模型训练完毕时,预测模块可预测目标中文句子对的语义是否匹配。
所述中文句子对语义匹配模型构建完成后,通过训练数据集进行中文句子对语义匹配模型的训练,具体如下:
构建损失函数:p为经过中文句子对语义匹配模型处理后得到的匹配度计算数值;而y是两个句子语义是否匹配的真实标签,其取值仅限于0或1;采用交叉熵作为损失函数,公式如下:
L=-∑λ(y,p)(y log p+(1-y)log(1-p)) (17)
优化训练模型:用Adam优化函数作为模型的优化函数Adam的超参数均选择默认值设置。
更优地,所述中文句子对语义匹配知识库构建具体如下:
构建中文句子对数据获取单元,下载网络上已经公开的中文句子对语义匹配数据集或人工构建数据集,将其作为构建中文句子对语义匹配知识库的原始数据;
构建原始数据断字/分词预处理单元,负责预处理用于构建中文句子对语义匹配知识库的原始数据,对其中的每个句子均进行断字/分词操作,从而构建句子对语义匹配断字/分词处理知识库;
子知识库汇总单元,负责汇总句子对语义匹配断字处理知识库和句子对语义匹配分词处理知识库,从而构建句子对语义匹配知识库。
一种基于多角度交互的中文句子对语义智能匹配装置,该装置包括:
中文句子对语义匹配知识库构建单元,用于获取大量的中文句子对数据,随后对其预处理操作,从而得到符合训练要求的中文句子对语义匹配知识库。
训练数据集生成单元,用于根据中文句子对语义匹配知识库中的句子来构建用于训练的正例数据和负例数据,并且基于正例数据与负例数据来构建最终的训练数据集;
语义匹配模型构建单元,用于构建字映射转换表、词映射转换表,同时构建输入层、字向量映射层、词向量映射层、编码模块、多角度交互模块和预测模块;
语义匹配模型训练单元,用于构建模型训练过程中所需要的损失函数与优化函数,并完成模型的训练;
所述中文句子对语义匹配知识库构建单元还包括:
中文句子对数据获取单元,负责下载网络上已经公开的中文句子对语义匹配数据集或人工构建数据集,将其作为构建中文句子对语义匹配知识库的原始数据;
原始数据断字/分词预处理单元,负责预处理用于构建中文句子对语义匹配知识库的原始数据,对其中的每个句子均进行断字/分词操作,从而构建句子对语义匹配断字/分词处理知识库;
子知识库汇总单元,负责汇总句子对语义匹配断字处理知识库和句子对语义匹配分词处理知识库,从而构建句子对语义匹配知识库。
所述训练数据集生成单元还包括:
训练正例数据构建单元,负责将句子对语义匹配知识库中两个语义一致的句子与其匹配标签1构建为训练正例数据;
训练负例数据构建单元,负责选中一个句子,随后随机选择与其不匹配的某个句子进行组合,与其匹配标签0一起构建为负例数据;
训练数据集构建单元,负责将所有的训练正例数据与训练负例数据组合在一起,并打乱其顺序,从而构建最终的训练数据集。
所述语义匹配模型构建单元还包括:
字/词映射转换表构建单元,负责对句子对语义匹配知识库中的每个句子按字/词粒度进行切分,并将每个字/词依次存入一个列表中,从而得到一个字/词表,随后以数字1为起始,按照每个字/词被录入字表/词表的顺序依次递增排序,从而形成本发明所需的字/词映射转换表。字/词映射转换表构建完成后,表中每个字/词均被映射为唯一的数字标识。其后,本发明使用Word2Vec训练字/词向量模型,得到各字/词的字/词向量矩阵;
输入层构建单元,负责对训练数据集中的每一个句子对或待预测的句子对,进行预处理,按照在之前构建完成的字映射转换表和词映射转换表将其转化为相应的数字标识;
字/词向量映射层构建单元,负责加载字/词映射转换表构建单元步骤中训练所得的字/词向量矩阵权重来初始化当前层的权重参数;句子对语义匹配断字/分词处理知识库中每一个句子都可以通过字/词向量映射的方式,将句子信息转化为向量形式,即在字符粒度和词语粒度上的句子嵌入表示;
编码模块构建单元,负责将嵌入表示进一步编码,编码得到的结果与相对应的嵌入表示进行拼接从而得到句子的初始上下文表示;
多角度交互模块构建单元,具体又可分为句间交互模块构建单元和句内交互模块构建单元;句间交互模块构建单元负责捕获句子之间同一粒度丰富的交互特征,具体操作是对句子的初始上下文表示通过注意力机制生成句间相关表示,之后使用残差连接,将生成的句间相关表示和句子的初始上下文表示连接起来获得增强的句间相关表示;然后对字符粒度增强的句间相关表示,进一步执行Align-Add操作,再将Align-Add的输出与词语粒度上增强的句间相关表示拼接在一起,生成句间交互最终表示;句内交互模块负责将嵌入表示和句子的初始上下文表示拼接起来,然后利用BiLSTM来捕获时序特征,再将时序特征与嵌入表示进行拼接得到增强的时序特征,最后对增强的时序特征使用Align-Add操作生成句内交互最终表示;最后将句间交互模块获得的句间交互最终表示与句内交互模块获得的句内交互最终表示拼接起来,并利用全局平均池化和最大池化来提取关键特征,生成两个句子的最终表示;
预测模块单元,负责对多角度交互模块生成的两个句子的最终表示进行处理,从而得出一个匹配度数值,将其与设立的阈值进行比较,以此判断中文句子对的语义是否匹配。
所述中文句子对语义匹配模型训练单元还包括:
损失函数构建单元,负责计算句子1和句子2间语义匹配度的误差;
模型优化单元,负责训练并调整模型训练中的参数,减小预测误差。
一种存储介质,其中存储有多条指令,所述指令有处理器加载,执行上述的基于多角度交互的中文句子对语义智能匹配方法和装置的步骤。
一种电子设备,所述电子设备包括:
上述的存储介质;以及
处理器,用于执行所述存储介质中的指令。
本发明的基于多角度交互的中文句子对语义智能匹配方法和装置具有以下优点:
(一)本发明的多粒度编码模块处理,可以将在字符粒度和词语粒度上切分的句子转换为相应的嵌入表示,而后使用BiLSTM对嵌入表示进行编码,使得捕获的语义特征更加丰富;
(二)本发明通过多角度交互模块的句内交互模块和句间交互模块,可以充分捕获句子内部不同粒度的交互特征以及句子之间同一粒度的交互特征,从而生成句内交互最终表示和句间交互最终表示;
(三)本发明通过注意力机制以及残差连接,可以避免交互信息丢失并增强句子表示,从而提高中文句子对语义匹配的准确性;
(四)本发明全局平均池化和最大池化来提取句内交互最终表示和句间交互最终表示的关键特征,以生成两个句子的最终表示,从而提高中文句子对语义匹配的准确性;
(五)本发明通过预测模块的绝对值减法操作,可以更好地将两个句子的最终表示进行整合,从而提高模型的预测准确率。
附图说明
下面结合附图对本发明进一步说明。
图1为基于多角度交互的中文句子对语义智能匹配方法的流程图;
图2为构建中文句子对语义匹配知识库的流程图;
图3为构建训练数据集的流程图;
图4为构建中文句子对语义匹配模型的流程图;
图5为训练中文句子对语义匹配模型的流程图;
图6为基于多角度交互的中文句子对语义智能匹配装置的结构示意图;
图7为基于多角度交互的中文句子对语义智能匹配模型的框架示意图;
图8为句间交互模块的结构示意图;
图9为句内交互模块的结构示意图。
具体实施方式
参照说明书附图和具体实施例对本发明的基于多角度交互的中文句子对语义智能匹配方法和装置作以下详细地说明。
实施例1:
如附图7所示,本发明的主要框架结构包含多粒度编码模块、多角度交互模块、预测模块。首先,多粒度编码模块接收以字符粒度和词语粒度切分的句子,并转化为相应的嵌入表示,然后使用BiLSTM长短期记忆网络对嵌入表示进行编码生成句子的初始上下文表示,并将句子的初始上下文表示传递给多角度交互模块;多角度交互模块包含句间交互模块和句内交互模块,其结构分别如附图8、附图9所示,图中w和c分别代表词语粒度和字符粒度;如附图8所示,句间交互模块首先分别在字符粒度和词语粒度上,接受多粒度编码模块生成的句子的初始上下文表示,然后使用注意力机制生成句间相关表示,上述操作定义为Align-Add操作,之后使用残差连接将生成的句间相关表示和句子的初始上下文表示结合起来生成增强的句间相关表示,然后对字符粒度上增强的句间相关表示又进行了一次Align-Add操作,最后将Align-Add的输出和词语粒度上增强的句间相关表示进行拼接生成句间交互最终表示;如附图9所示,句内交互模块首先使用残差连接将嵌入表示和句子的初始上下文表示进行连接,然后利用BiLSTM捕获时序特征,再将时序特征与嵌入表示进行拼接得到增强的时序特征,最后对增强的时序特征使用Align-Add操作以生成句内交互最终表示;如附图7所示,在得到句间交互最终表示、句内交互最终表示之后,将它们拼接起来并利用全局平均池化和最大池化提取关键特征,生成两个句子的最终表示;预测模块首先对两个句子的最终表示进行绝对值减法操作,然后利用多层感知机预测两个句子的语义匹配程度,判断是否匹配。以上所述为本发明模型的结构简介:
(1)多粒度编码模块接收以字符粒度和词语粒度切分的句子,并转化为相应的嵌入表示,然后使用BiLSTM长短期记忆网络对嵌入表示进行编码生成句子的初始上下文表示,并将句子的初始上下文表示传递给多角度交互模块;
(2)多角度交互模块包含句间交互模块和句内交互模块;句间交互模块首先分别在字符粒度和词语粒度上,接受多粒度编码模块生成的句子的初始上下文表示,然后使用注意力机制生成句间相关表示,上述操作定义为Align-Add操作,之后使用残差连接将生成的句间相关表示和句子的初始上下文表示结合起来生成增强的句间相关表示,然后对字符粒度上增强的句间相关表示又进行了一次Align-Add操作,最后将Align-Add的输出和词语粒度上增强的句间相关表示进行拼接生成句间交互最终表示;句内交互模块首先使用残差连接将嵌入表示和句子的初始上下文表示进行连接,然后利用BiLSTM捕获时序特征,再将时序特征与嵌入表示进行拼接得到增强的时序特征,最后对增强的时序特征使用Align-Add操作以生成句内交互最终表示;得到句间交互最终表示、句内交互最终表示之后,将它们拼接起来并利用全局平均池化和最大池化提取关键特征,生成两个句子的最终表示;
(3)预测模块首先对两个句子的最终表示进行绝对值减法操作,然后利用多层感知机预测两个句子的语义匹配程度,判断是否匹配。
实施例2:
本发明的基于多角度交互的中文句子对语义智能匹配方法,包含构建中文句子对语义匹配知识库、构建中文句子对语义匹配模型的训练数据集、构建语义匹配模型、训练语义匹配模型三个主要步骤,具体如下:
S1、构建中文句子对语义匹配知识库,如附图2所示,具体步骤如下:
S101、下载网络上已经公开的中文句子对语义匹配数据集或人工构建数据集,将其作为构建中文句子对语义匹配知识库的原始数据。
举例说明:网络上有许多已公开的中文句子对语义匹配数据集,例如LCQMC数据集,来自文献【Xin Liu,Qingcai Chen,Chong Deng,Huajun Zeng,Jing Chen,DongfangLi,and Buzhou Tang.Lcqmc:A large-scale chinese question matching corpus,COLING2018】。本发明收集这些数据,将其下载下来,从而获得用于构建中文句子对语义匹配知识库的原始数据。比如,LCQMC数据集中的一个示例如下:
sentence1 | 什么花一年四季都开? |
sentence2 | 什么花一年四季都是开的? |
S102、预处理原始数据:预处理用于构建中文句子对语义匹配知识库的原始数据,对其中的每个句子均进行断字和分词操作,得到中文句子对语义匹配断字处理知识库、分词处理知识库。
以S101中展示的句子1为例,对其进行断字处理操作后得到“什么花一年四季都开?”;使用Jieba分词工具对其进行分词操作处理后得到“什么花一年四季都开?”。
S103、汇总中文句子对语义匹配断字处理知识库和中文句子对语义匹配分词处理知识库,构建中文句子对语义匹配知识库。
将S102中获得的中文句子对语义匹配断字处理知识库和中文句子对语义匹配分词处理知识库汇总到同一文件夹下,从而得到中文句子对语义匹配知识库。
S2、构建中文句子对语义匹配模型所需的训练数据集:对于中文句子对语义匹配知识库中的每一个中文句子对,若其语义一致,则该中文句子对可以用于构建训练正例;若其语义不一致,则该中文句子对可以用于构建训练负例;将一定数量的正例数据与负例数据进行混合,从而构建模型训练数据集;如附图3所示,具体步骤如下:
S201、构建训练正例数据:将两个句子语义一致的中文句子对构建为正例数据,构建的正例数据可形式化为:(sentence1_char,sentence2_char,sentence1_word,sentence2_word,1)。
举例:对步骤S101中展示的sentence1和sentence2,经过步骤S102断字操作处理和步骤S103分词操作处理后,构建的正例数据形式为:
(“什么花一年四季都开?”,“什么花一年四季都是开的?”,“什么花一年四季都开?”,“什么花一年四季都是开的?”,1)
S202、构建训练负例数据:对于步骤S201获得的每个正例中文句子对,选中其包含的某一个句子,随机选择与其不匹配的某个句子进行组合;将这两个语义不一致的句子作为中文句子对,构建为负例数据,形式化为:(sentence1_char,sentence2_char,sentence1_word,sentence2_word,0)。
举例:以LCQMC数据集中的一个语义不匹配的中文句子对“sentence1:什么花一年四季都开?sentence2:大家觉得跑男好看吗?”为例,经过步骤S102断字操作处理和步骤S103分词操作处理后,构建的负例数据形式为:
(“什么花一年四季都开?”,“大家觉得跑男好看吗?”,“什么花一年四季都是开的?”,“大家觉得跑男好看吗?”,0)。
S203、构建训练数据集:将经过步骤S201和步骤S202操作后所获得的全部的正例中文句子对数据和负例中文句子对数据,合并在一起,并打乱其顺序,构建最终的训练数据集。无论正例数据还是负例数据,它们都包含了五个维度,即sentence1_char,sentence2_char,sentence1_word,sentence2_word,0或1。
S3、构建中文句子对语义匹配模型:构建中文句子对语义匹配模型的流程如附图4所示,主要操作为构建字映射转换表、构建词映射转换表、构建输入层、构建字向量映射层、构建词向量映射层、构建编码模块、构建多角度交互模块、构建句间交互模块、构建句内交互模块、构建预测模块。其中,构建字映射转换表、构建词映射转换表、构建输入层、构建字向量映射层、构建词向量映射层、构建编码模块对应附图7中的多粒度编码模块。具体步骤如下所述:
S301、构建字映射转换表:字表是通过步骤1.2处理后得到的中文句子对语义匹配断字处理知识库和分词处理知识库来构建的。字表构建完成后,表中每个字均被映射为唯一的数字标识,其映射规则为:以数字1为起始,随后按照每个字被录入字表的顺序依次递增排序,从而形成本发明所需的字映射转换表;
举例说明:以步骤1.2处理后的内容,“什么花一年四季都开?”,构建字表及字映射转换表如下:
字词 | 什 | 么 | 花 | 一 | 年 | 四 | 季 | 都 | 开 | ? |
映射 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
其后,本发明使用Word2Vec训练字向量模型,得到各词的词向量矩阵char_embedding_matrix;
举例说明:在Keras中,对于上面描述的代码实现如下所示:
w2v_model_char=genism.models.Word2Vec(w2v_corpus_char,size=char_embedding_dim,window=5,min_count=1,sg=1,workers=4,seed=1234,iter=25)
char_embedding_m=numpy.zeros([len(tokenizer.char_index)+1,char_embedding_dim])
tokenizer=keras.preprocessing.text.Tokenizer(num_words=len(char_set))
for char,idx in tokenizer.char_index.items():
char_embedding_matrix[idx,:]=w2v_model.wv[char]
其中,w2v_corpus_char为断字处理训练语料,即句子对语义匹配断字处理知识库中的所有数据;char_embedding_dim为字向量维度,本模型设置char_embedding_dim为400,char_set为字表。
S302、构建词映射转换表:以数字1为起始,随后按照每个词被录入词表的顺序依次递增排序,从而形成所需的词映射转换表;因构建词映射转换表与构建字映射转换表极其类似,在此不再赘述。
S303、构建输入层:输入层中包括四个输入。从输入层的训练数据集样例中分别获取sentence1_char、sentence2_char、sentence1_word和sentence2_word,将其形式化为:(sentence1_char,sentence2_char,sentence1_word,sentence2_word);对于输入句子中的每个字和词而言,本发明都按照在步骤S301和步骤S302中构建完成的字映射转换表和词映射转换表将其转化为相应的数字标识;
举例说明:我们使用步骤S201中展示的句子对作为样例,以此组成一条输入数据。其结果如下所示:
(“什么花一年四季都开?”,“什么花一年四季都是开的?”,“什么花一年四季都开?”,“什么花一年四季都是开的?”);
每条输入数据包含4个子句。针对前两个子句,根据步骤S301中的字映射转换表,将其转换为数值表示;针对后两个子句,根据步骤S302中的词映射转换表,将其转换为数值表示(假定出现在句子2中但没有出现在句子1中的词“的”被映射为6),输入数据的4个子句,合并表示结果如下:
(“1,2,3,4,5,6,7,8,9,10”,“1,2,3,4,5,6,7,10,8”,“1,2,3,4,5,6”,“1,2,3,4,5,7,8,6”)。
S304、构建字向量映射层:负责加载构建字映射转换表步骤中训练所得的字向量矩阵权重来初始化当前层的权重参数;针对输入句子sentence1_char、sentence2_char,得到其相应句子向量sentence1_char_embed、sentence2_char_embed;句子对语义匹配断字处理知识库中每一个句子都可以通过字向量映射的方式,将句子信息转化为向量形式,即在字符粒度上的句子嵌入表示;
举例说明:在Keras中,对于上面描述的代码实现如下所示:
char_embedding_layer=Embedding(char_embedding_matrix.shape[0],char_emb_dim,weights=[char_embedding_matrix],input_length=input_dim,trainable=False)
其中,char_embedding_matrix是构建字映射转换表步骤中训练所得的字向量矩阵权重,char_embedding_matrix.shape[0]是字向量矩阵的字表的大小,char_embedding_dim是输出的字向量的维度,input_length是输入序列的长度。
S305、构建词向量映射层:负责加载构建词映射转换表步骤中训练所得的词向量矩阵权重来初始化当前层的权重参数;因构建词向量映射层与构建字向量映射层极其类似,在此不再赘述。
S306、构建编码模块:编码模块接收字向量映射层输出的嵌入表示和词向量映射层输出的嵌入表示作为输入,即其中Q表示句子1、A表示句子2、脚标c表示字符粒度、脚标w表示词语粒度;然后分别使用四个独立的BiLSTM长短期记忆网络对嵌入表示进一步编码,编码得到的结果与各自的原句子嵌入表示进行拼接;具体实施见下列公式:
其中作为多粒度编码层的输出;表示句子1字符粒度的初始上下文表示;表示句子1词语粒度的初始上下文表示;表示句子2字符粒度的初始上下文表示;表示句子2词语粒度的初始上下文表示;上标B用以标记编码模块的输出,无特殊含义;脚标c和脚标w的含义如前所述,不再赘述;
举例说明:在Keras中,对于上面描述的代码实现如下所示:
def base_network(input_shape):
input=Input(shape=input_shape)
em=embedding_layer(input)
p1=Bidirectional(LSTM(300,return_sequences=True,dropout=0.52),merge_mode='sum')(em)
p=concatenate([em,p1])
model=Model(input,[p,em])
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
return model
sentence1_char_ini=base_network(input_shape)(sentence1_char_embed)
sentence2_char_ini=base_network(input_shape)(sentence2_char_embed)
sentence1_word_ini=base_network(input_shape)(sentence1_word_embed)
sentence2_word_ini=base_network(input_shape)(semtence2_word_embed)
其中base_network是编码层进行编码操作的一个函数;300是BiLSTM的编码维度;concatenate()是拼接操作;sentence1_char_embed、sentence2_char_embed是句子1和句子2字符粒度的嵌入表示;sentence1_word_embed、sentence2_word_embed是句子1和句子2词语粒度的嵌入表示;sentence1_char_ini、sentence2_char_ini是句子1和句子2字符粒度的初始上下文表示;sentence1_word_ini、sentence2_word_ini为句子1和句子2词语粒度的初始上下文表示。
S307、构建多角度交互模块:多角度交互模块如附图7中所示,模块又进一步划分为句间交互模块和句内交互模块;句间交互模块捕获句子之间同一粒度丰富的交互特征,句内交互模块捕获句子内部不同粒度丰富的交互特征。
S30701、构建句间交互模块:句间交互模块为了充分捕获两个句子之间字符粒度的交互特征,首先将多粒度编码模块生成的字符粒度的初始上下文表示标记为和,然后通过注意力机制计算和之间的注意力权重,其公式如下:
其中,表示句子1的第i个字符的初始上下文表示,表示句子2的第j个字符的初始上下文表示,e表示注意力权重矩阵,ei,j表示句子1字符粒度的初始上下文表示的第i个位置对句子2字符粒度的初始上下文表示的第j个位置的注意力权重;获得注意力权重后,对于句子1中的一个字符,其相关表示是通过句子2字符粒度的向量表示和注意力权重来计算的;其公式如下:
对于句子2中的一个字符也是同样的操作,公式如下:
其中,是句子1第i个字符的相关表示,是句子2第i个字符的向量表示,exp()是以e为底的指数函数,ei,j来自公式(3),k是字符个数;同理,是句子2第j个字符的相关表示,是句子1第j个字符的向量表示;两个句子的字符粒度的句间相关表示定义为和;为了整合上述(3)、(4)、(5)公式所代表的相关处理步骤,将其统一定义为Align-Add操作,公式如下:
举例说明:在Keras中,对于上面描述的代码实现如下:
def align(input_1,input_2):
attention=Dot(axes=-1)([input_1,input_2])
w_att_1=Lambda(lambda x:softmax(x,axis=1))(attention)
w_att_2=Permute((2,1))(Lambda(lambdax:softmax(x,axis=2))(attention))
in1_aligned=Dot(axes=1)([w_att_1,input_1])
in2_aligned=Dot(axes=1)([w_att_2,input_2])
in1_aligned=Add()([input_1,in1_aligned])
in2_aligned=Add()([input_2,in2_aligned])
return in1_aligned,in2_aligned
sentence1_align_char,sentence2_align_char=align(sentence1_char_ini,sentence2_char_ini)
sentence1_align_word,sentence2_align_word=align(sentence1_word_ini,sentence2_word_ini)
其中align()为模块定义的Align-Add操作,通过Dot()获得注意权重;Lambda为python中一类特殊的定义函数的形式,Lambda表达式的函数体只能有单独的一条语句,即返回值表达式语句;Permute()函数对矩阵维度进行转置;sentence1_align_char、sentence2_align_char是句子1和句子2字符粒度的句间相关表示,sentence1_align_word、sentence2_align_word是句子1和句子2词语粒度的句间相关表示。
为了避免信息丢失和增强句子表示,句间交互模块继续使用残差连接将前述句间相关表示和句子的初始上下文表示拼接起来,生成增强的句间相关表示。公式如下:
其中,⊙代表元素乘法;是句子1字符粒度增强的句间相关表示;是句子2字符粒度增强的句间相关表示;是句子1词语粒度增强的句间相关表示;是句子2词语粒度增强的句间相关表示; 的含义参见公式(3)和公式(6),不再赘述;
举例说明:在Keras中,对于上面描述的代码实现如下:
sentence1_align_char_imp=concatenate([sentence1_align_char,multiply([sentence1_char_ini,sentence1_align_char])])
sentence2_align_char_imp=concatenate([sentence1_align_char,multiply([sentence2_char_ini,sentence2_align_char])])
sentence1_align_word_imp=concatenate([sentence1_align_word,multiply([sentence1_word_ini,sentence1_align_word])])
sentence2_align_word_imp=concatenate([sentence2_align_word,multiply([sentence2_word_ini,sentence2_align_word])])
其中sentence1_align_char_imp、sentence2_align_char_imp是句子1和句子2字符粒度增强的相关表示;sentence1_align_word_imp、sentence2_align_word_imp是句子1和句子2词语粒度增强的句间相关表示;multiply()进行点积操作。
为避免因分词歧义而产生的噪声信息的影响,句间交互模块更加关注句子的字符粒度,在字符粒度上,进一步使用Align-Add操作,公式如下:
举例说明:在Keras中,对于上面描述的代码实现如下所示:
sentence1_align_char,sentence2_align_char=align(sentence1_align_char_imp,sentence2_align_char_imp)
sentence1_align=concatenate([sentence1_char_ini,sentence1_word_ini,sentence1_align_char_imp,sentence1_align_word_imp])
sentence2_align=concatenate([sentence2_char_ini,sentence2_word_ini,sentence2_align_char,sentence2_align_word])
sentence1_align_end=concatenate([GlobalAveragePooling1D()(sentence1_align),GlobalMaxPooling1D()(sentence1_align)])
sentence2_align_end=concatenate([GlobalAveragePooling1D()(sentence2_align),GlobalMaxPooling1D()(sentence2_align)])
其中,GlobalAveragePooling1D()为全局平均池化和最大池化;sentence1_align_end、sentence2_align_end为句间交互最终表示;align()、concatenate()在之前已经阐述过,不再赘述。
S30702、构建句内交互模块:句内交互模块首先使用残差连接将嵌入表示和句子的初始上下文表示连接起来,然后利用BiLSTM来捕获时序特征,公式如下:
为了增强句子中时序特征的表示,句内交互模块将时序特征与相对应的嵌入表示拼接在一起,即其中,是句子1字符粒度的时序特征;是句子1字符粒度的增强的时序特征;是句子2字符粒度的时序特征;是句子2字符粒度的增强的时序特征;是句子1词语粒度的时序特征;是句子1词语粒度的增强的时序特征;是句子2词语粒度的时序特征;是句子2词语粒度的增强的时序特征;
举例说明:在Keras中,对于上面描述的代码实现如下所示:
sentence1_char=concatenate([sentence1_char_ini,sentence1_em_char])
sentence1_char_ls=Bidirectional(LSTM(300,return_sequences=True,dropout=0.52),merge_mode='sum',name='sentence1_char_BIL')(sentence1_char)
sentence1_char_ls_rc=concatenate([sentence1_char_ls,sentence1_em_char])
sentence1_word=concatenate([sentence1_word_ini,sentence1_em_word])
sentence1_word_ls=Bidirectional(LSTM(300,return_sequences=True,dropout=0.52),merge_mode='sum',name='sentence1_word_BIL')(sentence1_word)
sentence1_word_ls_rc=concatenate([sentence1_word_ls,sentence1_em_word])
sentence2_char=concatenate([sentence2_char,sentence2_em_char])
sentence2_char_ls=Bidirectional(LSTM(300,return_sequences=True,dropout=0.52),merge_mode='sum',name='sentence2_char_BIL')(sentence2_char)
sentence2_char_ls_rc=concatenate([sentence2_char_ls,sentence2_em_char])
sentence2_word=concatenate([sentence2_word,sentence2_em_word])
sentence2_word_ls=Bidirectional(LSTM(300,return_sequences=True,dropout=0.52),merge_mode='sum',name='sentence2_word_BIL')(sentence2_word)
sentence2_word_ls_rc=concatenate([sentence2_word_ls,sentence2_em_word])
其中,sentence1_char_ls是句子1字符粒度的时序特征;sentence1_word_ls是句子1词语粒度的时序特征;sentence2_char_ls是句子2字符粒度的时序特征;sentence2_word_ls是句子2词语粒度的时序特征;sentence1_char_ls_rc、sentence1_word_ls_rc、sentence2_char_ls_rc、sentence2_word_ls_rc为相应的增强的时序特征;Bidirectional()是训练双向LSTM函数;dropout是正则化方法,防止数据过拟合;
将句间交互模块获得的句间交互最终表示1即QA、句内交互模块获得的句内交互最终表示1即以及多粒度编码模块获得的初始上下文表示拼接起来,并利用全局平均池化和最大池化来提取关键特征,以生成句子1即Q的最终表示,公式如下:
举例说明:在Keras中,对于上面所描述的代码实现如下:
sentence1_char_ls_rc_align,sentence1_word_ls_rc_align=align(sentence1_char_ls_rc,sentence1_word_ls_rc)
sentence2_char_ls_rc_align,sentence2_word_ls_rc_align=align(sentence2_char_ls_rc,sentence2_word_ls_rc)
sentence1_char_word=concatenate([sentence1_char,sentence1_word,sentence1_char_ls_rc_align,sentence1_word_ls_rc_align])
sentence1_char_word=concatenate([GlobalAveragePooling1D()(sentence1_char_word),GlobalMaxPooling1D()(sentence1_char_word)])
sentence2_char_word=concatenate([sentence2_char,sentence2_word,sentence2_char_ls_rc_align,sentence2_word_ls_rc_align])
sentence2_char_word=concatenate([GlobalAveragePooling1D()(sentence2_char_word),GlobalMaxPooling1D()(sentence2_char_word)])
sentence1=concatenate([sentence1_char_word,sentence1_align])
sentence2=concatenate([sentence2_char_word,sentence2_align])
其中sentence1_char_ls_rc_align、sentence1_word_ls_rc_align、sentence2_char_ls_rc_align、sentence2_word_ls_rc_align为句内交互最终表示;sentence1和sentence2为两个句子的最终表示;align()、GlobalAveragePooling1D()在步骤S30701中已经阐述过,不再赘述。
S308、构建预测模块:以步骤S307所得到的两个句子的最终表示作为本模块的输入,以此判断中文句子对语义是否匹配;
通过对两个句子的最终表示进行绝对值减法操作,得到M,即最终的匹配表示;然后将M送入带有Sigmoid激活函数的多层感知机中,得到预测标签p。公式如下:
M=|Q-A| p=MLP(M) (16)
其中,p是一个处于[0,1]之间的匹配度数值,最终通过与设定的阈值0.5进行比较,从而判断中文句子对的语义是否匹配;即若p≥0.5时,预测该中文句子对的语义是匹配的,否则不匹配;
举例说明:在Keras中,上述所描述的代码如下:
sentence1_all=Lambda(lambda x:K.abs(x[0]-x[1]))([sentence1,sentence_all])
sentence2_all=Lambda(lambda x:K.abs(x[0]-x[1]))([sentence2,sentence_all])
similarity=Lambda(lambda x:K.abs(x[0]-x[1]))([sentence1_all,sentence2_all])
similarity=Dropout(0.5)(similarity)
similarity=LayerNormalization()(similarity)
similarity=Dense(600,activation='relu')(similarity)
similarity=LayerNormalization()(similarity)
similarity=Dense(50,activation='relu')(similarity)
similarity=LayerNormalization()(similarity)
similarity=Dense(1)(similarity)
p=Activation('sigmoid')(similarity)
其中similarity表示相似度;abs()进行绝对值减法操作;LayerNormalization()进行归一化操作;Dense()为全连接层;600为全连接网络维度;relu为全连接层激活函数;p为匹配度计算数值;Lambda()在步骤S30701中已经阐述过,这里不再赘述。
S4、训练中文句子对语义匹配模型:将步骤S3构建的中文句子对语义匹配模型在S2所得的训练数据集上进行训练,其流程如附图5所示,具体如下:
S401、构建损失函数:由步骤S308可知,p为经过中文句子对语义匹配模型处理后得到的匹配度计算数值;而y是两个句子语义是否匹配的真实标签,其取值仅限于0或1,数据来源于步骤S203的训练数据集。本发明采用了交叉熵作为损失函数,公式如下所示:
L=-∑λ(y,p)(y log p+(1-y)log(1-p)) (17)
S402、优化训练模型:用Adam优化函数作为模型的优化函数,Adam的超参数均选择默认值设置。
本发明所提出的模型在LCQMC数据集上取得了优于当前先进模型的结果,实验结果的对比具体见表1,N代表无交互信息,Y代表有交互信息。
表1:LCQMC上的实验结果
本发明模型和现有模型进行了比较,实验结果显示本发明方法有了很大的提升。其中,前两行是没有使用交互信息的模型的实验结果【Yoon Kim,Conv olutional NeuralNetworks for Sentence Classification,EMNLP2014】,三四行是其他使用了交互信息的模型的实验结果【Qian Chen,Xiaodan Zhu,ZhenhuaLi ng,Si Wei,Hui Jiang,DianaInkpen.Enhanced LSTM for Natural Language Inference,ACL2017】,最后一行是本发明模型的实验结果,由此可知本发明较现有模型有了较大提升。
实施例3:
如附图6所示,基于实施例2的基于多角度交互的中文句子对语义智能匹配装置,该装置包括:
中文句子对语义匹配知识库构建单元,用于获取大量的中文句子对数据,随后对其预处理操作,从而得到符合训练要求的中文句子对语义匹配知识库;
训练数据集生成单元,用于根据中文句子对语义匹配知识库中的句子来构建用于训练的正例数据和负例数据,并且基于正例数据与负例数据来构建最终的训练数据集;
语义匹配模型构建单元,用于构建字映射转换表、词映射转换表,同时构建输入层、字向量映射层、词向量映射层、编码模块、多角度交互模块和预测模块;
语义匹配模型训练单元,用于构建模型训练过程中所需要的损失函数与优化函数,并完成模型的训练。
所述中文句子对语义匹配知识库构建单元还包括:
中文句子对数据获取单元,负责下载网络上已经公开的中文句子对语义匹配数据集或人工构建数据集,将其作为构建中文句子对语义匹配知识库的原始数据;
原始数据断字/分词预处理单元,负责预处理用于构建中文句子对语义匹配知识库的原始数据,对其中的每个句子均进行断字/分词操作,从而构建句子对语义匹配断字/分词处理知识库;
子知识库汇总单元,负责汇总句子对语义匹配断字处理知识库和句子对语义匹配分词处理知识库,从而构建句子对语义匹配知识库。
所述训练数据集生成单元还包括:
训练正例数据构建单元,负责将句子对语义匹配知识库中两个语义一致的句子与其匹配标签1构建为训练正例数据;
训练负例数据构建单元,负责选中一个句子,随后随机选择与其不匹配的某个句子进行组合,与其匹配标签0一起构建为负例数据;
训练数据集构建单元,负责将所有的训练正例数据与训练负例数据组合在一起,并打乱其顺序,从而构建最终的训练数据集。
所述语义匹配模型构建单元还包括:
字/词映射转换表构建单元,负责对句子对语义匹配知识库中的每个句子按字/词粒度进行切分,并将每个字/词依次存入一个列表中,从而得到一个字/词表,随后以数字1为起始,按照每个字/词被录入字表/词表的顺序依次递增排序,从而形成本发明所需的字/词映射转换表。字/词映射转换表构建完成后,表中每个字/词均被映射为唯一的数字标识。其后,本发明使用Word2Vec训练字/词向量模型,得到各字/词的字/词向量矩阵;
输入层构建单元,负责对训练数据集中的每一个句子对或待预测的句子对,进行预处理,按照在之前构建完成的字映射转换表和词映射转换表将其转化为相应的数字标识;
字/词向量映射层构建单元,负责加载字/词映射转换表构建单元步骤中训练所得的字/词向量矩阵权重来初始化当前层的权重参数;句子对语义匹配断字/分词处理知识库中每一个句子都可以通过字/词向量映射的方式,将句子信息转化为向量形式,即在字符粒度和词语粒度上的句子嵌入表示;
编码模块构建单元,负责将嵌入表示进一步编码,编码得到的结果与相对应的嵌入表示进行拼接从而得到句子的初始上下文表示;
多角度交互模块构建单元,具体又可分为句间交互模块构建单元和句内交互模块构建单元;句间交互模块构建单元负责捕获句子之间同一粒度丰富的交互特征,具体操作是对句子的初始上下文表示通过注意力机制生成句间相关表示,之后使用残差连接,将生成的句间相关表示和句子的初始上下文表示连接起来获得增强的句间相关表示;然后对字符粒度增强的句间相关表示,进一步执行Align-Add操作,再将Align-Add的输出与词语粒度上增强的句间相关表示拼接在一起,生成句间交互最终表示;句内交互模块负责将嵌入表示和句子的初始上下文表示拼接起来,然后利用BiLSTM来捕获时序特征,再将时序特征与嵌入表示进行拼接得到增强的时序特征,最后对增强的时序特征使用Align-Add操作生成句内交互最终表示;最后将句间交互模块获得的句间交互最终表示与句内交互模块获得的句内交互最终表示拼接起来,并利用全局平均池化和最大池化来提取关键特征,生成两个句子的最终表示;
预测模块单元,负责对多角度交互模块生成的两个句子的最终表示进行处理,从而得出一个匹配度数值,将其与设立的阈值进行比较,以此判断中文句子对的语义是否匹配。
所述中文句子对语义匹配模型训练单元还包括:
损失函数构建单元,负责计算句子1和句子2间语义匹配度的误差;
模型优化单元,负责训练并调整模型训练中的参数,减小预测误差。
实施例4:
基于实施例2的存储介质,其中存储有多条指令,指令有处理器加载,执行实施例2的基于多角度交互的中文句子对语义智能匹配方法的步骤。
实施例5:
基于实施例4的电子设备,电子设备包括:实施例4的存储介质;以及
处理器,用于执行实施例4的存储介质中的指令。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种基于多角度交互的中文句子对语义智能匹配方法,其特征在于,该方法是通过构建并训练由多粒度编码模块、多角度交互模块、预测模块组成的中文句子对语义智能匹配模型;首先使用BiLSTM在字符和词语粒度上进行编码,而后利用注意力机制以及残差连接获得句内交互最终表示和句间交互最终表示,进行拼接和池化操作以提取关键特征生成两个句子的最终表示,最后通过多层感知机预测语义匹配度;具体如下:
多粒度编码模块接收以字符粒度和词语粒度切分的句子,并转化为相应的嵌入表示,然后使用BiLSTM长短期记忆网络对嵌入表示进行编码生成句子的初始上下文表示,并将句子的初始上下文表示传递给多角度交互模块;
多角度交互模块包含句间交互模块和句内交互模块;句间交互模块首先分别在字符粒度和词语粒度上,接受多粒度编码模块生成的句子的初始上下文表示,然后使用注意力机制生成句间相关表示,上述操作定义为Align-Add操作,之后使用残差连接将生成的句间相关表示和句子的初始上下文表示结合起来生成增强的句间相关表示,然后对字符粒度上增强的句间相关表示又进行了一次Align-Add操作,最后将Align-Add的输出和词语粒度上增强的句间相关表示进行拼接生成句间交互最终表示;句内交互模块首先使用残差连接将嵌入表示和句子的初始上下文表示进行连接,然后利用BiLSTM捕获时序特征,再将时序特征与嵌入表示进行拼接得到增强的时序特征,最后对增强的时序特征使用Align-Add操作以生成句内交互最终表示;得到句间交互最终表示、句内交互最终表示之后,将它们拼接起来并利用全局平均池化和最大池化提取关键特征,生成两个句子的最终表示;
预测模块首先对两个句子的最终表示进行绝对值减法操作,然后利用多层感知机预测两个句子的语义匹配程度,判断是否匹配。
2.根据权利要求1所述的基于多角度交互的中文句子对语义智能匹配方法,其特征在于,所述多粒度编码模块由字映射转换表、词映射转换表、输入层、字向量映射层、词向量映射层、编码模块组成,其构建过程具体如下:
构建字映射转换表,以数字1为起始,随后按照每个字被录入字表的顺序依次递增排序,从而形成所需的字映射转换表;
构建词映射转换表,以数字1为起始,随后按照每个词被录入词表的顺序依次递增排序,从而形成所需的词映射转换表;
构建输入层,输入层中包括四个输入,对于训练数据集中的每一个句子对或待预测的句子对,对其进行断字和分词预处理,分别获取sentence1_char、sentence2_char、sentence1_word和sentence2_word,其中后缀char、word分别表示对相应句子进行断字或分词处理而得,将其形式化为:(sentence1_char,sentence2_char,sentence1_word,sentence2_word);对于输入句子中的每个字和词而言,都按照在之前构建完成的字映射转换表和词映射转换表将其转化为相应的数字标识;
构建字向量映射层,负责加载构建字映射转换表步骤中训练所得的字向量矩阵权重来初始化当前层的权重参数;句子对语义匹配断字处理知识库中每一个句子都可以通过字向量映射的方式,将句子信息转化为向量形式,即在字符粒度上的句子嵌入表示;
构建词向量映射层,负责加载构建词映射转换表步骤中训练所得的词向量矩阵权重来初始化当前层的权重参数;句子对语义匹配分词处理知识库中每一个句子都可以通过词向量映射的方式,将句子信息转化为向量形式,即在词语粒度上的句子嵌入表示;
构建编码模块,编码模块接收字向量映射层输出的嵌入表示和词向量映射层输出的嵌入表示作为输入,即其中Q表示句子1、A表示句子2、脚标c表示字符粒度、脚标w表示词语粒度;然后分别使用四个独立的BiLSTM长短期记忆网络对嵌入表示进一步编码,编码得到的结果与各自的原句子嵌入表示进行拼接;具体实施见下列公式:
3.根据权利要求1或2所述的基于多角度交互的中文句子对语义智能匹配方法,其特征在于,所述多角度交互模块由句间交互模块、句内交互模块组成。
4.根据权利要求3所述的基于多角度交互的中文句子对语义智能匹配方法,其特征在于,所述的句间交互模块构建过程具体如下:
其中,表示句子1的第i个字符的初始上下文表示,表示句子2的第j个字符的初始上下文表示,e表示注意力权重矩阵,ei,j表示句子1字符粒度的初始上下文表示的第i个位置对句子2字符粒度的初始上下文表示的第j个位置的注意力权重;获得注意力权重后,对于句子1中的一个字符,其相关表示是通过句子2字符粒度的向量表示和注意力权重来计算的,其公式如下:
对于句子2中的一个字符也是同样的操作,公式如下:
其中,是句子1第i个字符的相关表示,是句子2第i个字符的向量表示,exp()是以e为底的指数函数,ei,j来自公式(3),k是字符个数;同理,是句子2第j个字符的相关表示,是句子1第j个字符的向量表示;两个句子的字符粒度的句间相关表示定义为和为了整合上述(3)、(4)、(5)公式所代表的相关处理步骤,将其统一定义为Align-Add操作,公式如下:
为了避免信息丢失和增强句子表示,句间交互模块继续使用残差连接将前述句间相关表示和句子的初始上下文表示拼接起来,生成增强的句间相关表示,公式如下:
其中,⊙代表元素乘法;是句子1字符粒度增强的句间相关表示;是句子2字符粒度增强的句间相关表示;是句子1词语粒度增强的句间相关表示;是句子2词语粒度增强的句间相关表示; 的含义参见公式(3)和公式(6),不再赘述;
为避免因分词歧义而产生的噪声信息的影响,句间交互模块更加关注句子的字符粒度,在字符粒度上,进一步使用Align-Add操作,公式如下:
5.根据权利要求3所述的基于多角度交互的中文句子对语义智能匹配方法,其特征在于,所述的句内交互模块构建过程具体如下:
句内交互模块首先使用残差连接将嵌入表示和句子的初始上下文表示连接起来,然后利用BiLSTM来捕获时序特征,公式如下:
为了增强句子中时序特征的表示,句内交互模块将时序特征与相对应的嵌入表示拼接在一起,即其中,是句子1字符粒度的时序特征;是句子1字符粒度的增强的时序特征;是句子2字符粒度的时序特征;是句子2字符粒度的增强的时序特征;是句子1词语粒度的时序特征;是句子1词语粒度的增强的时序特征;是句子2词语粒度的时序特征;是句子2词语粒度的增强的时序特征;
将句间交互模块获得的句间交互最终表示1即QA、句内交互模块获得的句内交互最终表示1即以及多粒度编码模块获得的初始上下文表示拼接起来,并利用全局平均池化和最大池化来提取关键特征,以生成句子1即Q的最终表示,公式如下:
6.根据权利要求1所述的基于多角度交互的中文句子对语义智能匹配方法,其特征在于,所述预测模块构建过程如下:
将两个句子的最终表示作为输入,通过对两个句子的最终表示进行绝对值减法操作,得到M,即最终的匹配表示;然后将M送入带有Sigmoid激活函数的多层感知机中,得到预测标签p,公式如下:
M=|Q-A| p=MLP(M) (16)
其中,p是一个处于[0,1]之间的匹配度数值,最终通过与设定的阈值0.5进行比较,从而判断中文句子对的语义是否匹配;即若p≥0.5时,预测该中文句子对的语义是匹配的,否则不匹配;当中文句子对语义匹配模型尚未充分训练时,需要在根据语义匹配知识库而构建的训练数据集上进行训练,以优化模型参数;当模型训练完毕时,预测模块可预测目标中文句子对的语义是否匹配;
所述中文句子对语义匹配模型构建完成后,通过训练数据集进行中文句子对语义匹配模型的训练,具体如下:
构建损失函数:p为经过中文句子对语义匹配模型处理后得到的匹配度计算数值;而y是两个句子语义是否匹配的真实标签,其取值仅限于0或1;采用交叉熵作为损失函数,公式如下:
L=-∑λ(y,p)(ylogp+(1-y)log(1-p)) (17)
优化训练模型:用Adam优化函数作为模型的优化函数,Adam的超参数均选择默认值设置。
7.根据权利要求1所述的基于多角度交互的中文句子对语义智能匹配方法,其特征在于,所述中文句子对语义匹配知识库构建具体如下:
构建中文句子对数据获取单元,下载网络上已经公开的中文句子对语义匹配数据集或人工构建数据集,将其作为构建中文句子对语义匹配知识库的原始数据;
构建原始数据断字/分词预处理单元,负责预处理用于构建中文句子对语义匹配知识库的原始数据,对其中的每个句子均进行断字/分词操作,从而构建句子对语义匹配断字/分词处理知识库;
子知识库汇总单元,负责汇总句子对语义匹配断字处理知识库和句子对语义匹配分词处理知识库,从而构建句子对语义匹配知识库。
8.一种基于多角度交互的中文句子对语义智能匹配装置,其特征在于,该装置包括中文句子对语义匹配知识库构建单元、训练数据集生成单元、语义匹配模型构建单元、语义匹配模型训练单元,分别实现权利要求1-7所描述的基于多角度交互的中文句子对语义智能匹配方法的步骤。
9.一种存储介质,其中存储有多条指令,其特征在于,所述指令有处理器加载,执行权利要求1-7中所述的基于多角度交互的中文句子对语义智能匹配方法和装置的步骤。
10.一种电子设备,其特征在于,所述电子设备包括:
权利要求9所述的存储介质;以及处理器,用于执行所述存储介质中的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111490833.7A CN114238563A (zh) | 2021-12-08 | 2021-12-08 | 基于多角度交互的中文句子对语义智能匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111490833.7A CN114238563A (zh) | 2021-12-08 | 2021-12-08 | 基于多角度交互的中文句子对语义智能匹配方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114238563A true CN114238563A (zh) | 2022-03-25 |
Family
ID=80754084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111490833.7A Pending CN114238563A (zh) | 2021-12-08 | 2021-12-08 | 基于多角度交互的中文句子对语义智能匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114238563A (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111310439A (zh) * | 2020-02-20 | 2020-06-19 | 齐鲁工业大学 | 一种基于深度特征变维机制的智能语义匹配方法和装置 |
CN111310438A (zh) * | 2020-02-20 | 2020-06-19 | 齐鲁工业大学 | 基于多粒度融合模型的中文句子语义智能匹配方法及装置 |
CN111325028A (zh) * | 2020-02-20 | 2020-06-23 | 齐鲁工业大学 | 一种基于深度分层编码的智能语义匹配方法和装置 |
CN111914067A (zh) * | 2020-08-19 | 2020-11-10 | 苏州思必驰信息科技有限公司 | 中文文本匹配方法及系统 |
CN112000772A (zh) * | 2020-08-24 | 2020-11-27 | 齐鲁工业大学 | 面向智能问答基于语义特征立方体的句子对语义匹配方法 |
CN112001166A (zh) * | 2020-08-24 | 2020-11-27 | 齐鲁工业大学 | 面向政务咨询服务的智能问答句子对语义匹配方法和装置 |
CN112000770A (zh) * | 2020-08-24 | 2020-11-27 | 齐鲁工业大学 | 面向智能问答的基于语义特征图的句子对语义匹配方法 |
CN112000771A (zh) * | 2020-08-24 | 2020-11-27 | 齐鲁工业大学 | 一种面向司法公开服务的句子对智能语义匹配方法和装置 |
CN113065359A (zh) * | 2021-04-07 | 2021-07-02 | 齐鲁工业大学 | 面向智能交互的句子对语义匹配方法和装置 |
WO2021223323A1 (zh) * | 2020-05-06 | 2021-11-11 | 首都师范大学 | 一种中文视觉词汇表构建的图像内容自动描述方法 |
CN113705241A (zh) * | 2021-08-27 | 2021-11-26 | 齐鲁工业大学 | 面向高考咨询基于多视角注意力的智能语义匹配方法与装置 |
CN113705242A (zh) * | 2021-08-27 | 2021-11-26 | 齐鲁工业大学 | 面向教育咨询服务的智能语义匹配方法和装置 |
-
2021
- 2021-12-08 CN CN202111490833.7A patent/CN114238563A/zh active Pending
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021164199A1 (zh) * | 2020-02-20 | 2021-08-26 | 齐鲁工业大学 | 基于多粒度融合模型的中文句子语义智能匹配方法及装置 |
CN111310438A (zh) * | 2020-02-20 | 2020-06-19 | 齐鲁工业大学 | 基于多粒度融合模型的中文句子语义智能匹配方法及装置 |
CN111325028A (zh) * | 2020-02-20 | 2020-06-23 | 齐鲁工业大学 | 一种基于深度分层编码的智能语义匹配方法和装置 |
CN111310439A (zh) * | 2020-02-20 | 2020-06-19 | 齐鲁工业大学 | 一种基于深度特征变维机制的智能语义匹配方法和装置 |
WO2021164200A1 (zh) * | 2020-02-20 | 2021-08-26 | 齐鲁工业大学 | 一种基于深度分层编码的智能语义匹配方法和装置 |
WO2021223323A1 (zh) * | 2020-05-06 | 2021-11-11 | 首都师范大学 | 一种中文视觉词汇表构建的图像内容自动描述方法 |
CN111914067A (zh) * | 2020-08-19 | 2020-11-10 | 苏州思必驰信息科技有限公司 | 中文文本匹配方法及系统 |
CN112000771A (zh) * | 2020-08-24 | 2020-11-27 | 齐鲁工业大学 | 一种面向司法公开服务的句子对智能语义匹配方法和装置 |
CN112000770A (zh) * | 2020-08-24 | 2020-11-27 | 齐鲁工业大学 | 面向智能问答的基于语义特征图的句子对语义匹配方法 |
CN112001166A (zh) * | 2020-08-24 | 2020-11-27 | 齐鲁工业大学 | 面向政务咨询服务的智能问答句子对语义匹配方法和装置 |
CN112000772A (zh) * | 2020-08-24 | 2020-11-27 | 齐鲁工业大学 | 面向智能问答基于语义特征立方体的句子对语义匹配方法 |
CN113065359A (zh) * | 2021-04-07 | 2021-07-02 | 齐鲁工业大学 | 面向智能交互的句子对语义匹配方法和装置 |
CN113705241A (zh) * | 2021-08-27 | 2021-11-26 | 齐鲁工业大学 | 面向高考咨询基于多视角注意力的智能语义匹配方法与装置 |
CN113705242A (zh) * | 2021-08-27 | 2021-11-26 | 齐鲁工业大学 | 面向教育咨询服务的智能语义匹配方法和装置 |
Non-Patent Citations (4)
Title |
---|
BAOSHUO KAN等: "Multi-Perspective Interactive Model for Chinese Sentence Semantic Matching", 《INTERNATIONAL CONFERENCE ON NEURAL INFORMATION PROCESSING》, 5 December 2021 (2021-12-05), pages 4 - 6 * |
吴炎;王儒敬;: "基于BERT的语义匹配算法在问答系统中的应用", 仪表技术, no. 06, 15 June 2020 (2020-06-15) * |
程淑玉;郭泽颖;刘威;印鉴;: "融合Attention多粒度句子交互自然语言推理研究", 小型微型计算机系统, no. 06, 14 June 2019 (2019-06-14) * |
袁蕾;高曙;郭淼;袁自勇;: "层次化神经网络模型下的释义识别方法", 哈尔滨工业大学学报, no. 10, 25 September 2020 (2020-09-25) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310438B (zh) | 基于多粒度融合模型的中文句子语义智能匹配方法及装置 | |
CN111160035B (zh) | 文本语料的处理方法和装置 | |
CN113312500B (zh) | 一种面向大坝安全运行的事件图谱构建方法 | |
CN111460807B (zh) | 序列标注方法、装置、计算机设备和存储介质 | |
CN112613308B (zh) | 用户意图识别方法、装置、终端设备及存储介质 | |
CN113065358B (zh) | 面向银行咨询服务基于多粒度对齐的文本对语义匹配方法 | |
CN112000772B (zh) | 面向智能问答基于语义特征立方体的句子对语义匹配方法 | |
CN112000770B (zh) | 面向智能问答的基于语义特征图的句子对语义匹配方法 | |
CN112001166B (zh) | 面向政务咨询服务的智能问答句子对语义匹配方法和装置 | |
CN112000771B (zh) | 一种面向司法公开服务的句子对智能语义匹配方法和装置 | |
CN112463924B (zh) | 面向智能问答基于内部相关性编码的文本意图匹配方法 | |
CN112580328A (zh) | 事件信息的抽取方法及装置、存储介质、电子设备 | |
CN113204952A (zh) | 一种基于聚类预分析的多意图与语义槽联合识别方法 | |
CN110852089B (zh) | 基于智能分词与深度学习的运维项目管理方法 | |
CN115831102A (zh) | 基于预训练特征表示的语音识别方法、装置及电子设备 | |
CN114168754A (zh) | 一种基于句法依赖和融合信息的关系抽取方法 | |
CN115438709A (zh) | 基于代码属性图的代码相似性检测方法 | |
CN114896510A (zh) | 基于用户多兴趣特征的智能新闻推荐方法和系统 | |
CN115795038A (zh) | 基于国产化深度学习框架的意图识别方法和装置 | |
CN113065359B (zh) | 面向智能交互的句子对语义匹配方法和装置 | |
CN113254575B (zh) | 一种基于多步证据推理的机器阅读理解方法与系统 | |
CN114238563A (zh) | 基于多角度交互的中文句子对语义智能匹配方法和装置 | |
CN112818688B (zh) | 文本处理方法、装置、设备及存储介质 | |
CN113792120B (zh) | 图网络的构建方法及装置、阅读理解方法及装置 | |
CN112559750B (zh) | 文本数据的分类方法、装置、非易失性存储介质、处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |