一种基于循环注意力的联想动词生成方法与流程
未命名
10-18
阅读:62
评论:0

1.本发明属于自然语言处理技术领域,具体为一种基于循环注意力的联想动词生成方法。
背景技术:
2.文本中的动词对于一个文本来说,通常具有特定业务含义,比如“打架”一词通常代表着一个事件,如果能够检测出文本中的动词,并通过模型进行动词联想,将对原始输入文本呈现出立体的信息。相对于需要定义多种范式的事件抽取用模型训练来说,动词的词库收集要相对简单的多;同时针对动词在具体的文本中训练,生成的联想动词相对于事件抽取任务来说,提供的动词联想更具有潜在的关系,也即文本通过动词联想,赋予原始文本更加立体的信息。本发明定义为联想动词生成任务。联想词任务在业界已经有具体的应用,本发明将联想词生成任务限定为联想动词生成任务,动词词库在人类社会活动中相对稳定,而名词、量词、形容词等词库不但词库量大,而且一直在变化。相对于文本生成任务来说,当用户输入动词,生成的一系列动词不会透露用户隐私信息,相对于文本生成任务因而更加具有公共通用价值;相对于知识图谱任务来说,动词联想生成可以理解为一种不带关系的动词图谱,他的实现比知识图谱的人力成本要低的多。
技术实现要素:
3.本发明的目的在于提供一种基于循环注意力的联想动词生成方法,采用基于循环注意力的模型进行动词生成,通过深度学习的dropout,针对用户输入的动词,每次联想出不同的相关动词序列,联想生成速度快。
4.本发明一种基于循环注意力的联想动词生成方法包括有如下步骤:s1.建立动词词库映射词典:针对实际的语料,采用开源的词性标注工具jieba中posseg模块进行词性标注,挑出标注为动词v和名动词vn的动词词汇,将实际的语料全部通过jieba工具挑出动词后作为动词词库,并去除重复的动词词库,针对vocab.txt中的动词词库建立映射词典为dict_verb={0:”[cls]”,1:”[pad]“,2:”[unk]”,3:”离婚”,4:”负债”,5:”中毒”.......},其中[cls]为文本起始符,[pad]代表当文本长度不够最大长度时,采用[pad]填充到max_len长度,[unk]为不在动词词库中的特殊字符,除该三个特殊字符外,其它皆为动词;s2.训练集制作:针对实际语料中的每条文本,基于动词词库采用最大逆向匹配分词算法,将每条文本变成动词序列;逆向最大匹配分词算法从文本末端开始匹配扫描,每次取i个字符进行匹配,i为词典中最长字数,如果在vocab.txt动词词库未匹配成功,则去掉匹配字段的最前面一个字,继续匹配,如果匹配成功,则该词为分词的一个动词,然后从输入文本中扣除该动词,从剩下的文本中继续执行上述操作,如果未匹配成果,继续去掉匹配字段的最前面的一个字,重新执行上述操作,直到完成最终分词结果;将其它训练数据集中的文本执行同样的操作,得到整个训练数据集,作为模型的输入x和优化目标y,使得循环注
意力模型变成在每次迭代过程中生成对应的动词的可能性大小;s3.构建循环注意力网络模型结构:将gru的每个细胞单元替换为每个字的表示和隐藏状态拼接后的向量的自注意力运算,然后将具有强大拟合功能的前馈神经网络融入到每个细胞单元中,提高了模型拟合能力,针对人工智能语料中某文本x通过最大逆向匹配分词算法映射为列表,然后通过dict_verb将列表变为索引列表,进而变成张量,通过嵌入层得到每个动词的嵌入表示,矩阵大小为【10,512】,然后将10个动词的每个词嵌入表示依次输入对应的循环注意力计算公式得到所有动词的隐藏层状态表示,假如模型训练过程中批次batch_size为16,则输入循环注意力单元的第一个词的嵌入表示x_in大小为【16,512】,第一个隐藏状态随机初始化的表示h_in大小为【16,512】,然后在中间插入一个维度后,x_in大小为【16,1,512】,h_in大小为【16,1,512】,将x_in和h_in在中间一个维度进行拼接,此时大小为【16,2,512】,记为x_hin,x_hin分别经过参数为【512,512】的全连接两次,输出分别记为key,query,大小皆为【16,2,512】,query交换后面两个维度仍然记为query,然后将key和query相乘除以,并在最后一个维度取softmax记为att,att大小为【16,2,2】,然后将att和x_hin相乘仍然记为【16,2,512】,然后在中间的维度进行相加,在最后一个嵌入维度进行层归一化,此时记为x_new,针对x_new在嵌入维度,此处的维度为最后一个维度,经过【512,2042】的全连接,然后经过gelu激活函数,然后经过【2042,512】的全连接,经过dropout失活层,并经过嵌入层归一化 此时记为output。然后将output和x_new进行残差相加,此时记为h_out,即完成第一个动词的隐藏层表示,然后将第一个动词的隐藏层表示h_out和第二个动词的嵌入表示x_in经过上述同样的步骤,输出第二个动词的隐藏层表示h_out,通过上述循环操作,生成所有动词的隐藏层表示,每个动词的隐藏层表示【16,512】,在每个动词中间插入一个维度【16,1,512】,并将所有动词在中间一个维度拼接,此时张量大小为【16,10,512】,然后经过【512,49259】的全连接,此时张量大小为【16,10,49259】;s4.模型训练:根据步骤s3中已设定好的模型结构,并加入模型优化器adam和交叉熵损失函数进行模型训练;具体训练过程为:将步骤s2得到的模型输入数据喂入步骤s3中得到的网络结构,模型最终目标即最小化损失函数,先将x输入循环注意力模型进行前向传播,根据预测输出与真实输出y计算损失,然后进行反向传播,通过adam优化器不断更新网络模型参数,以此往复运行,当损失函数一天内下降不到0.05,将此时的参数矩阵进行保存,即可得到可用网络模型,训练过程中dropout设置为0.1;s5.模型预测:为了保证同样的动词输入模型每次结果更加多样性,推理阶段模型dropout设置仍然为0.1;用户输入动词“aa”,然后将“[cls]”,“aa”依次通过循环注意力单元,最终得到“aa”处的隐藏层表示,大小为【1,512】,然后经过【512,49259】的全连接,张量大小为【1,49259】,然后取出最后一个维度最大值的索引,然后通过该索引通过dict_verb取出动词,即预测的第一个动词。然后该动词输入循环注意力单元,预测下一个动词,依次类推,最终输出aa相关的动词。
[0005]
进一步的,步骤s1中去除重复的动词词库的过程为先将所有动词词库读取到一个数据类型为列表的列表中,将该列表变成集合,最后变回列表,通过一个动词占一行的形式存到vocab.txt中,即完成动词词库去重。
[0006]
进一步的,步骤s3中所述的嵌入层为【49259,512】的全连接矩阵,512为每个动词表示维度,49259为动词词表dict_verb大小。
[0007]
进一步的,步骤s3中16为batch_size,10为模型可以推荐的动词数量,512为每个动词的表示维度。
[0008]
本发明的有益效果是:本发明构建了循环注意力网络模型,将gru的每个细胞单元替换为每个字的表示和隐藏状态拼接后的向量的自注意力运算,然后将具有强大拟合功能的前馈神经网络融入到每个细胞单元中,提高了模型拟合能力,本发明赋予用户对于事件层面的联想能力,同时消耗相对较小的计算资源和人力成本,本发明采用基于循环注意力的模型进行动词生成,通过深度学习的dropout、以及采样等技术,可以针对用户输入的动词,每次联想出不同的相关动词序列,联想生成速度快,本发明能够应用于文本事件层面的立体感知能力,比业界定义的事件抽取任务简单,相对于文本生成任务,模型生成的一系列动词为大家所熟知,不涉及用户任何隐私,更加安全,深度学校模型相当于通过训练学习进行了一次海量数据压缩,通过采样、dropout等技术每次生成的联想动词都不相同,更加多样丰富;本发明提出了一种新的自然语言处理基础任务,即用户输入一个动词,进行联想生成相关的动词,旨在赋予一个文本内容中每个动词呈现出更加立体的动词信息。在模型层面,本发明提出了一种基于循环注意力的模型,该模型架构采用基于rnn的循环迭代机制,该机制可以使得推理阶段可以按照迭代机制进行快速生成相关的动词。在每个循环迭代单元中,本发明将动词嵌入层和隐藏层表示拼接为一个张量,进行transformer的自注意力操作,transformer的自注意力机制中因注意力系数融入了词向量的信息,表示能力比gru系列模型更加高级。
具体实施方式
[0009]
本发明一种基于循环注意力的联想动词生成方法包括有如下步骤:s1、建立动词词库映射词典:针对实际的语料,采用开源的词性标注工具jieba中posseg模块进行词性标注,挑出标注为动词v和名动词vn的动词词汇,将实际的语料全部通过jieba工具挑出动词后作为动词词库,并去除重复的动词词库,先将所有动词词库读取到一个数据类型为列表的列表中,将该列表变成集合,最后变回列表,通过一个动词占一行的形式存到vocab.txt中,即完成动词词库去重,针对vocab.txt中的动词词库建立映射词典为dict_verb={0:”[cls]”,1:”[pad]“,2:”[unk]”,3:”离婚”,4:”负债”,5:”中毒”.......},其中[cls]为文本起始符,[pad]代表当文本长度不够最大长度时,采用[pad]填充到max_len长度,[unk]为不在动词词库中的特殊字符,除该三个特殊字符外,其它皆为动词;s2、训练集制作:针对实际语料,该语料是指许多的语料文本,比如某条文本为网民给政府部门反馈的问题留言,比如某条文本为某地发生地震的一条新闻。针对语料中的每条文本,基于动词词库采用最大逆向匹配分词算法,将每条文本变成动词序列,假如现在在步骤s1中得到的训练数据集中的某条文本样本为“当前,国内新发疫情不断出现,部分地区社会面感染人数增加。在此情况下,做好个人防护尤为重要,优化防控措施绝不意味着个人可以放飞自我。”,逆向最大匹配分词算法可以从该文本末端开始匹配扫描,每次取i个字符进行匹配,i为词典中最长字数,如果在vocab.txt动词词库未匹配成功,则去掉匹配字段的最前面一个字,继续匹配,如果匹配成功,则该词为分词的一个动词,然后从输入文本中扣除该动词,从剩下的文本中继续执行上述操作,如果未匹配成果,继续去掉匹配字段的最
前面的一个字,重新执行上述操作,直到完成最终分词结果。通过上述方法,用户输入的数据分词为['[cls]', '新发疫情', '不断出现', '社会面感染', '人数增加', '个人防护', ',', '优化', '放飞自我'],记为列表a,本条文本不够最大长度max_len,则将列表a通过[pad]填充到该文本最大长度10,然后通过字典dict,映射成索引编号列表,进而变成输入循环注意力模型张量x,对应的y输出为缺少起始符的[ '新发疫情', '不断出现', '社会面感染', '人数增加', '个人防护', '优化', '放飞自我']通过字典映射后的张量,将其它训练数据集中的文本执行同样的操作,得到整个训练数据集,作为模型的输入x和优化目标y,使得循环注意力模型变成在每次迭代过程中生成对应的动词的可能性大小;s3、构建循环注意力网络模型结构:将gru的每个细胞单元替换为每个字的表示和隐藏状态拼接后的向量的自注意力运算,然后将具有强大拟合功能的前馈神经网络融入到每个细胞单元中,提高了模型拟合能力,针对人工智能语料中某文本x通过最大逆向匹配分词算法映射为列表,然后通过dict_verb将列表变为索引列表,进而变成张量,通过嵌入层,嵌入层为【49259,512】的全连接矩阵,512为每个动词表示维度,49259为动词词表dict_verb大小,得到每个动词的嵌入表示,矩阵大小为【10,512】,然后将10个动词的每个词嵌入表示依次输入对应的循环注意力计算公式得到所有动词的隐藏层状态表示,假如模型训练过程中批次batch_size为16,则输入循环注意力单元的第一个词的嵌入表示x_in大小为【16,512】,第一个隐藏状态随机初始化的表示h_in大小为【16,512】,然后在中间插入一个维度后,x_in大小为【16,1,512】,h_in大小为【16,1,512】,将x_in和h_in在中间一个维度进行拼接,此时大小为【16,2,512】,记为x_hin,x_hin分别经过参数为【512,512】的全连接两次,输出分别记为key,query,大小皆为【16,2,512】,query交换后面两个维度仍然记为query,然后将key和query相乘除以,并在最后一个维度取softmax记为att,att大小为【16,2,2】,然后将att和x_hin相乘仍然记为【16,2,512】,然后在中间的维度进行相加,在最后一个嵌入维度进行层归一化,此时记为x_new,针对x_new在嵌入维度(最后一个维度)经过【512,2042】的全连接,然后经过gelu激活函数,然后经过【2042,512】的全连接,经过dropout失活层,并经过嵌入层归一化 此时记为output。然后将output和x_new进行残差相加,此时记为h_out,即完成第一个动词的隐藏层表示。然后将第一个动词的隐藏层表示h_out和第二个动词的嵌入表示x_in经过上述同样的步骤,输出第二个动词的隐藏层表示h_out。通过上述循环操作,生成所有动词的隐藏层表示,每个动词的隐藏层表示【16,512】。在每个动词中间插入一个维度【16,1,512】,并将所有动词在中间一个维度拼接,此时张量大小为【16,10,512】(备注:16为batch_size,10为模型可以推荐的动词数量,512为每个动词的表示维度)。然后经过【512,49259】的全连接,此时张量大小为【16,10,49259】;s4、模型训练:根据步骤s3中已设定好的模型结构,并加入模型优化器adam和交叉熵损失函数进行模型训练;具体训练过程为:将步骤s2得到的模型输入数据,喂入步骤s3中得到的网络结构,模型最终目标即最小化损失函数。先将x输入循环注意力模型进行前向传播,根据预测输出与真实输出y计算损失,然后进行反向传播,通过adam优化器不断更新网络模型参数,以此往复运行,当损失函数一天内下降不到0.05,将此时的参数矩阵进行保存,即可得到可用网络模型,训练过程中dropout设置为0.1;s5、模型预测:为了保证同样的动词输入模型每次结果更加多样性,推理阶段模型dropout设置仍然为0.1;如用户输入动词“打架”,然后将“[cls]”,“打架”依次通过循环注
意力单元,最终得到“打架”处的隐藏层表示,大小为【1,512】,然后经过【512,49259】的全连接,张量大小为【1,49259】,然后取出最后一个维度最大值的索引,然后通过该索引通过dict_verb取出动词,即预测的第一个动词,然后该动词输入循环注意力单元,预测下一个动词,依次类推,最终输出为“立案 派出 回复 结案 受伤 打架 信访 报警 调查 投诉 出警”,为了体现多样性,当用户再次输入“打架”,输出为“损伤 诊断 受伤 送往 打架 撕裂 骨折 挫伤 治疗 震荡”,当用户再次输入“打架”,输出为“参赌 助纣为虐 打架 勾结 聚赌 充当 举报 提供 投诉 交易 保护”。
[0010]
本发明提出了一种新的自然语言处理基础任务,即用户输入一个动词,进行联想生成相关的动词,旨在赋予一个文本内容中每个动词呈现出更加立体的动词信息。在模型层面,本发明提出了一种基于循环注意力的模型,该模型架构采用基于rnn的循环迭代机制,该机制可以使得推理阶段可以按照迭代机制进行快速生成相关的动词。在每个循环迭代单元中,本发明将动词嵌入层和隐藏层表示拼接为一个张量,进行transformer的自注意力操作,transformer的自注意力机制中因注意力系数融入了词向量的信息,表示能力比gru系列模型更加高级。
技术特征:
1.一种基于循环注意力的联想动词生成方法,其特征在于:包括有如下步骤:s1.建立动词词库映射词典:针对实际的语料,采用开源的词性标注工具jieba中posseg模块进行词性标注,挑出标注为动词v和名动词vn的动词词汇,将实际的语料全部通过jieba工具挑出动词后作为动词词库,并去除重复的动词词库,针对vocab.txt中的动词词库建立映射词典为dict_verb={0:”[cls]”,1:”[pad]“,2:”[unk]”,3:”离婚”,4:”负债”,5:”中毒”.......},其中[cls]为文本起始符,[pad]代表当文本长度不够最大长度时,采用[pad]填充到max_len长度,[unk]为不在动词词库中的特殊字符,除该三个特殊字符外,其它皆为动词;s2.训练集制作:针对实际语料中的每条文本,基于动词词库采用最大逆向匹配分词算法,将每条文本变成动词序列;逆向最大匹配分词算法从文本末端开始匹配扫描,每次取i个字符进行匹配,i为词典中最长字数,如果在vocab.txt动词词库未匹配成功,则去掉匹配字段的最前面一个字,继续匹配,如果匹配成功,则该词为分词的一个动词,然后从输入文本中扣除该动词,从剩下的文本中继续执行上述操作,如果未匹配成果,继续去掉匹配字段的最前面的一个字,重新执行上述操作,直到完成最终分词结果;将其它训练数据集中的文本执行同样的操作,得到整个训练数据集,作为模型的输入x和优化目标y,使得循环注意力模型变成在每次迭代过程中生成对应的动词的可能性大小;s3.构建循环注意力网络模型结构:将gru的每个细胞单元替换为每个字的表示和隐藏状态拼接后的向量的自注意力运算,然后将具有强大拟合功能的前馈神经网络融入到每个细胞单元中,提高了模型拟合能力,针对人工智能语料中某文本x通过最大逆向匹配分词算法映射为列表,然后通过dict_verb将列表变为索引列表,进而变成张量,通过嵌入层得到每个动词的嵌入表示,矩阵大小为【10,512】,然后将10个动词的每个词嵌入表示依次输入对应的循环注意力计算公式得到所有动词的隐藏层状态表示,假如模型训练过程中批次batch_size为16,则输入循环注意力单元的第一个词的嵌入表示x_in大小为【16,512】,第一个隐藏状态随机初始化的表示h_in大小为【16,512】,然后在中间插入一个维度后,x_in大小为【16,1,512】,h_in大小为【16,1,512】,将x_in和h_in在中间一个维度进行拼接,此时大小为【16,2,512】,记为x_hin,x_hin分别经过参数为【512,512】的全连接两次,输出分别记为key,query,大小皆为【16,2,512】,query交换后面两个维度仍然记为query,然后将key和query相乘除以,并在最后一个维度取softmax记为att,att大小为【16,2,2】,然后将att和x_hin相乘仍然记为【16,2,512】,然后在中间的维度进行相加,在最后一个嵌入维度进行层归一化,此时记为x_new,针对x_new在嵌入维度,此处的维度为最后一个维度,经过【512,2042】的全连接,然后经过gelu激活函数,然后经过【2042,512】的全连接,经过dropout失活层,并经过嵌入层归一化 此时记为output;然后将output和x_new进行残差相加,此时记为h_out,即完成第一个动词的隐藏层表示,然后将第一个动词的隐藏层表示h_out和第二个动词的嵌入表示x_in经过上述同样的步骤,输出第二个动词的隐藏层表示h_out,通过上述循环操作,生成所有动词的隐藏层表示,每个动词的隐藏层表示【16,512】,在每个动词中间插入一个维度【16,1,512】,并将所有动词在中间一个维度拼接,此时张量大小为【16,10,512】,然后经过【512,49259】的全连接,此时张量大小为【16,10,49259】;s4.模型训练:根据步骤s3中已设定好的模型结构,并加入模型优化器adam和交叉熵损失函数进行模型训练;具体训练过程为:将步骤s2得到的模型输入数据喂入步骤s3中得到
的网络结构,模型最终目标即最小化损失函数,先将x输入循环注意力模型进行前向传播,根据预测输出与真实输出y计算损失,然后进行反向传播,通过adam优化器不断更新网络模型参数,以此往复运行,当损失函数一天内下降不到0.05,将此时的参数矩阵进行保存,即可得到可用网络模型,训练过程中dropout设置为0.1;s5.模型预测:为了保证同样的动词输入模型每次结果更加多样性,推理阶段模型dropout设置仍然为0.1;用户输入动词“aa”,然后将“[cls]”,“aa”依次通过循环注意力单元,最终得到“aa”处的隐藏层表示,大小为【1,512】,然后经过【512,49259】的全连接,张量大小为【1,49259】,然后取出最后一个维度最大值的索引,然后通过该索引通过dict_verb取出动词,即预测的第一个动词;然后该动词输入循环注意力单元,预测下一个动词,依次类推,最终输出aa相关的动词。2.根据权利要求1所述的一种基于循环注意力的联想动词生成方法,其特征在于: 步骤s1中去除重复的动词词库的过程为先将所有动词词库读取到一个数据类型为列表的列表中,将该列表变成集合,最后变回列表,通过一个动词占一行的形式存到vocab.txt中,即完成动词词库去重。3.根据权利要求2所述的一种基于循环注意力的联想动词生成方法,其特征在于:步骤s3中所述的嵌入层为【49259,512】的全连接矩阵,512为每个动词表示维度,49259为动词词表dict_verb大小。4.根据权利要求3所述的一种基于循环注意力的联想动词生成方法,其特征在于:步骤s3中16为batch_size,10为模型可以推荐的动词数量,512为每个动词的表示维度。
技术总结
本发明属于自然语言处理技术领域,具体为一种基于循环注意力的联想动词生成方法,包括步骤有建立动词词库映射词典、训练集制作、构建循环注意力网络模型结构、模型训练和模型预测,本发明构建了循环注意力网络模型,将GRU的每个细胞单元替换为每个字的表示和隐藏状态拼接后的向量的自注意力运算,然后将具有强大拟合功能的前馈神经网络融入到每个细胞单元中,提高了模型拟合能力,采用基于循环注意力的模型进行动词生成,通过深度学习的dropout、以及采样等技术,可以针对用户输入的动词,每次联想出不同的相关动词序列,联想生成速度快。快。
技术研发人员:曹肖攀 马国祖 陈超 张喜强
受保护的技术使用者:中电万维信息技术有限责任公司
技术研发日:2023.05.05
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/