有效
基于动作场景强化的脚本事件预测方法
黄振宇、王勇军、马行空、解培岱、许方亮、施江勇、严晔晴
中国人民解放军国防科技大学
摘要
本发明公开了一种基于动作场景强化的脚本事件预测方法,目的是提高脚本事件预测准确率。技术方案是:先构建由元素编码模块、Token表示模块、事件预测层构成的脚本事件预测系统;从事件性新闻文本中抽取出一系列事件序列作为训练脚本事件预测系统所需的数据;对训练数据进行预处理,得到事件序列的token编码序列和动作序列的token编码序列,作为训练数据。使用训练数据训练Token表示模块和事件预测层,得到网络权重参数。训练后的脚本事件预测系统接收用户输入的已发生的事件序列,进行元素编码、Token表示,根据已发生的事件序列预测候选事件集合中最可能发生的事件。采用本发明可以提高脚本事件预测准确率。
1.一种基于动作场景强化的脚本事件预测方法,其特征在于包括以下步骤:第一步,构建脚本事件预测系统,脚本事件预测系统由元素编码模块、Token表示模块、事件预测层构成;元素编码模块与Token表示模块相连,从键盘或文件接收用户输入的文本形式的事件组,记作EE;事件组EE包含N条已观测到的上下文事件和K条候选事件,N条已观测到的上下文事件用上下文事件序列E表示,E=<e 1 ,e 2 ,...,e n ,...,e N >,e n 是第n个上下文事件;K条候选事件用候选事件集合C表示,C={c 1 ,c 2 ,...c k ,...,c K },c k 是第k个候选事件;一条事件包含一个事件元素四元组(a s ,v,a o ,a p )、动作v与主角人物的语法关系GR,事件表示为文本集合{a s ,v,a o ,a p ,GR},其中v表示事件中的动作,a s ,a o ,a p 则分别指代与动词相关的主语、宾语和补语,GR∈{subj,obj,prep},subj,obj,prep分别表示主角人物为动作v的主语、谓语和补语关系,N和K为正整数,1≤n≤N,1≤k≤K;元素编码模块将c k 和E组成第k条虚拟事件序列S k :<e 1 ,e 2 ,...,e n ,...,e N ,c k >,将S k 中动作和GR的组合记作v-GR,并拼接成对应的虚拟动作序列V-GR k :<v-GR 1 ,v-GR 2 ,...,v-GR n ,...,v-GR N ,v-GR N+k >;将S k 和V-GR k 分别转换成句子,句子的头部和末尾分别添加字符“<s>”即CLS令牌和字符“</s>”即SEP令牌,用于表示句子开头和结尾;对S k 或V-GR k 转换成的句子进行分词,得到事件序列的token编码序列 和动作序列的token编码序列 经过K次循环,元素编码模块得到 和 将 和 发送给Token表示模块;Token表示模块与元素编码模块、事件预测层相连,是一个Roberta模型;Token表示模块从元素编码模块接收 和 进行嵌入、线性变换、多头自注意力、池化操作,分别得到相应的两种token动态交互的向量表示,即事件序列的向量表示和动作序列对应的向量表示;Token表示模块从事件序列的向量表示中提取出事件CLS令牌的向量表示 从动作序列对应的向量表示中提取出动作CLS令牌的向量表示 将 连接成包含候选事件c k 特征的CLS合并向量表示 经过K次循环,得到 发送给事件预测层;事件预测层与Token表示模块相连,是一个由全连接层组成的神经网络,对从Token表示模块接收的 进行处理,输出候选事件集合C的K个得分s 1 ,...,s k ,...s K ,通过排序,取最大得分的事件序号作为脚本事件预测结果,记为y;第二步,准备训练脚本事件预测系统所需的数据;方法是:2.1选择事件性新闻文本作为原始语料;2.2利用C&C工具对原始语料进行词性标注和依赖分析,即将原始语料中的句子切分成多个标注了词性的词语集合,词语集合中的词语根据句子的语法依赖关系进行关联;2.3利用OpenNLP函数对词语集合进行短语结构处理,得到句子成分即主语、谓语、宾语和补语的短语文本,将这些短语文本作为事件元素四元组(a s ,v,a o ,a p );通过共指消解,将原始语料库中新闻文本中涉及同一主角的事件元素四元组按顺序连接成一个原始事件序列,并记录动作v与主角人物的语法关系GR;2.4从提取的原始事件序列中选取出至少包含N+1个事件的原始事件序列,得到M条事件序列长度符合要求的原始事件序列集合{R 1 ,...,R m ,...,R M },1≤m≤M为正整数,原始事件序列R m 包含N+1个事件,每个事件包含文本集合{a s ,v,a o ,a p ,GR};2.5从{R 1 ,...,R m ,...,R M }的每个原始事件序列中取出事件元素四元组中的动作构成动作集;2.6利用{R 1 ,...,R m ,...,R M }构造符合模型训练所需的数据结构,得到训练数据{(EE 1 ,g 1 ),...,(EE m ,g m ),...,(EE M ,g M )},第m个事件组EE m 由第m个上下文事件序列E m 和第m个候选事件集合C m 共同组成,E m =<e 1 ,e 2 ,...,e n ,...,e N >,C m ={c 1 ,c 2 ,...c k ,...,c K },c k 的数据结构和e n 一样,g m 为C m 中真实发生的事件的序号,称为真实序号,转第三步;第三步,元素编码模块对训练数据进行预处理,得到事件序列的token编码序列T S 和动作序列的token编码序列T V-GR ,将T S 和T V-GR 发送给Token表示模块,方法是:3.1初始化m=1;令e 1 ,e 2 ,...,e n ,...,e N 和c 1 ,c 2 ,...c k ,...,c K 中的第i个事件为e i ,1≤i≤N+K;3.2处理第m个训练数据(EE m ,g m )中的N+K个事件的文本集合中的缺失元素,并隐去其中的主角信息;3.3利用EE m 中的E m 和C m 构造虚拟事件序列和虚拟动作序列,将虚拟事件序列和虚拟动作序列转换成句子后进行分词编码,得到EE m 对应的事件序列的token编码序列 和EE m 对应的动作序列的token编码序列 方法是:3.3.1初始化k=1;3.3.2构建第k个虚拟事件序列S k m 并转换成句子,S k m 为<e 1 ,e 2 ,...,e n ,...,e N ,c k >;3.3.3构建S k m 对应的虚拟动作序列V-GR k m 并转换成句子;3.3.4利用Roberta的分词编码器Tokenizer将S k m 转换成的句子进行分词,得到token序列,并且通过查询RoBERTa的词表得到token序列的对应编码,即EE m 对应的S k m 事件序列的token编码序列 其中 表示EE m 中e n 中的第D 1 个令牌编号;maxLen 1 为S k m 中e n 的token序列限定长度,maxLen 1 ≥4,1≤D 1 ≤maxLen 1 ;3.3.5利用Roberta的分词编码器将V-GR k m 转换的句子进行分词,得到动作的token序列,并查询RoBERTa的词表得到对应的编码,即EE m 对应的动作序列V-GR k m 的token编码序列 其中 表示第n个动词及其语法关系v-GR n 中的第D 2 个令牌编号;maxLen 2 为V-GR k m 中的token序列限定长度,maxLen 2 ≥2,1≤D 2 ≤maxLen 2 ;3.3.6令k=k+1,如果k≤K,转步骤3.3.2;否则说明得到了EE m 对应的事件token编码序列 和EE m 对应的动作token编码序列 转步骤3.4;3.4令m=m+1,如果m≤M,转步骤3.2;否则说明得到了M条训练数据对应的所有事件序列的token编码序列集合T S , 和M条训练数据对应的所有动作序列的token编码序列集合T V-GR , 以及M条训练数据对应的真实事件序号G,G={g 1 ,...,g m ,...g M }构成的M条数据,即 第m条数据为 数据,将M条数据发送给Token表示模块,转第四步;第四步,使用训练数据训练Token表示模块和事件预测层,得到网络权重参数;4.1初始化Token表示模块和事件预测层的参数:将Token表示模块中的RoBERTa中所有的网络载入已预训练好的参数来实现初始化;将事件预测层中的权重矩阵W中所有的元素和偏置b都初始化为[0,1]之间的随机数, 表示W是大小为2d×1的矩阵,矩阵元素值均为实数, 表示b为实数,d为Token表示模块中token对应向量的长度;4.2设置网络训练参数:设置网络模型学习率Learning Rate=10 -5 ,数据批量大小Batch Size=16,测试步长Num Step=1000,L2正则化参数=10 -8 ,训练轮数Epochs=3;4.3训练Token表示模块和事件预测层,方法是:Token表示模块从元素编码模块接收T S 和T V-GR ,进行计算,得到T S 和T V-GR 中所有令牌的事件序列的向量表示Vs和动作序列的向量表示V V-GR ,再从Vs和V V-GR 中提取CLS的向量表示,拼接成CLS合并向量表示V cls ,将V cls 输入发送给事件预测层;事件预测层由V cls 计算得到候选事件的得分;根据候选事件的得分和真实序号来计算损失值,最小化损失值并同时更新Token表示模块和事件预测层网络参数,直到符合提前停止的要求或满足训练轮数要求,得到Token表示模块和事件预测层的权重参数;将Token表示模块中的Roberta模型参数和事件预测层的权重矩阵W和偏置b存储备用,转第五步;第R步,训练后的脚本事件预测系统接收用户输入的已发生的事件序列,进行元素编码、Token表示,根据已发生的事件序列预测候选事件集合中最可能发生的事件,方法是:5.1元素编码模块从键盘或文件接收用户输入的已发生的事件序列,即文本形式的事件组EE 0 ;事件组EE 0 包含已观测到的上下文事件序列E 0 =<e 1 0 ,e 2 0 ,...,e n 0 ,...,e N 0 >和候选事件集合C 0 ={c 1 0 ,c 2 0 ,...c k 0 ,...,c K 0 };5.2利用E 0 和C 0 构造虚拟事件序列和虚拟动作序列,将虚拟事件序列和虚拟动作序列转换成句子后进行分词编码,得到EE 0 对应的事件token编码序列 和EE 0 对应的动作token编码序列 5.2.3构建虚拟动作序列V-GR k 0 并转换成句子;5.2.4利用Roberta的分词编码器将S k 0 转换的句子进行分词得到输入事件token序列,并且通过查询RoBERTa的词表得到输入事件token序列对应的编码,即输入事件序列的token编码序列 5.2.5利用Roberta的分词编码器将V-GR k 0 转换的句子进行分词得到输入动作token序列,并且通过查询RoBERTa的词表得到输入动作token序列对应的编码,即输入动作序列的token编码序列 5.2.6令k=k+1,如果k≤K,转步骤5.2.2;否则说明得到了输入事件token编码序列 和输入动作token编码序列 转步骤5.3;5.3训练后的Token表示模块即载入了训练后的Roberta模型参数的Token表示模块对 和 进行嵌入、线性变换、多头自注意力、池化操作,得到具有上下文特征的向量表示 和 训练后的Token表示模块从中提取两种序列中的CLS令牌的向量表示拼接成CLS合并向量表示 训练后的事件预测层即载入了训练后的权重矩阵W和偏置b的事件预测层接收 并输出候选事件的得分 力法是:5.3.1初始化k=1;5.3.2训练后的Token表示模块对 进行嵌入、线性变换、多头自注意力、池化操作,得到 对应的具有上下文特征的向量表示 其中 和 为CLS令牌和SEP令牌在 编码序列中的向量表示;5.3.3训练后的Token表示模块对 利用进行嵌入、线性变换、多头自注意力、池化操作,得到 对应的具有上下文特征的向量表示 其中 和 为CLS令牌和SEP令牌在 编码序列中的向量表示;5.3.4将 和 横向拼接成CLS合并向量表示 5.3.5事件预测层利用载入的参数计算候选事件的得分 5.3.6令k=k+1,如果k≤K,转步骤4.3.4.2.2;否则说明得到了 对应的候选事件的得分 转步骤5.4;5.4从所有的候选事件分数 中选出分数最大的序号作为预测值y 0 ,y 0 对应的事件即为模型预测的最可能发生的事件。
2.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于2.1步所述选择事件性新闻文本作为原始语料的选择依据是要求事件性新闻文本真实可信,并且涵盖主角参与的一系列事件。
3.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于2.6步所述构造符合模型训练所需的数据结构的方法是:2.6.1初始化m=1;2.6.2将R m 中的前N个事件构成上下文事件序列E m ,即<e 1 ,e 2 ,...,e n ,...,e N >;2.6.3构造K-1个干扰事件;采用随机函数从动作集中随机选取动词,再从原始事件序列R m 的新闻来源中随机选取出现的人或物补全主语宾语,构成干扰事件;2.6.4将R m 中的第N+1个事件和K-1个干扰事件组成用于预测的第m个候选事件集合C m ,即C m ={c 1 ,c 2 ,...c k ,...,c K },c k 的数据结构和e n 一样;E m 和C m 共同组成第m个事件组EE m ,EE m 中有N+K个事件,即e 1 ,e 2 ,...,e n ,...,e N 和c 1 ,c 2 ,...c k ,...,c K ;2.6.5随机排列C m 中的事件,并记录C m 中真实发生的事件的序号作为真实序号g m ;2.6.6令m=m+1,如果m≤M,转步骤2.6.2;否则说明得到了训练数据{(EE 1 ,g 1 ),...,(EE m ,g m ),...,(EE M ,g M )}。
4.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于3.2步所述处理第m个训练数据(EE m ,g m )中的N+K个事件的文本集合中的缺失元素,并隐去其中的主角信息的方法是;3.2.1初始化i=1;3.2.2元素编码模块将e i 的空缺元素用字符“<pad>”进行替换,“<pad>”称为PAD令牌,是预训练模型中的占位符;3.2.3隐去e i 中的主角信息;将e i 的事件文本集合中的主角信息采用“X”字符予以替换;3.2.4令i=i+1,如果i≤N+K,转步骤3.2.2;否则结束。
5.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于3.3.2步所述构建虚拟事件序列S k m 并转换成句子的方法是:3.3.2.1将C m 中第k个候选事件c k 和E m 组成对应的第k个虚拟事件序列S k m :<e 1 ,e 2 ,...,e n ,...,e N ,c k >;3.3.2.2将S k m 中N+1个事件通过字符“##”连接,句子的头部和句子的末尾分别添加CLS令牌和SEP令牌,形成“CLSe 1 ##e 2 ##...##e n ##...,e N ##c k SEP”的句式,其中事件e n 和c k 都按照a s ,v,a o ,a p 的顺序拼接文本。
6.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于3.3.3步所述构建S k m 对应的虚拟动作序列V-GR k m 并转换成句子的方法是:3.3.3.1将S k m 中N+1个事件的v-GR组合拼接成S k m 对应的虚拟动作序列V-GR k m :<v-GR 1 ,v-GR 2 ,...,v-GR n ,...,v-GR N ,v-GR N+k >;3.3.3.2将V-GR k m 中的v-GR 1 ,v-GR 2 ,...,v-GR n ,...,v-GR N ,v-GR N+k 通过字符“##”连接,句子的头尾分别添加CLS令牌和SEP令牌,形成“CLSv-GR 1 ##v-GR 2 ##...##v-GR n ##...,v-GR N ##v-GR N+k SEP”的句式,其中v-GR组合组合都按照v,GR的顺序拼接文本。
7.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于4.3步所述训练Token表示模块和事件预测层的方法是:4.3.1将3.4步构造得到的M条数据 分为两个部分:训练集和测试集,记训练集的数据量为M 1 ,测试集的数据量为M 2 ,且M 1 ∶M 2 =8∶2;训练集用于网络参数的更新,测试集用于判断训练是否过拟合;令训练集中事件token编码序列集合为T S训 ,令测试集中事件token编码序列集合为T S测 ;令训练集中动作token编码序列集合为T V-GR训 ,令测试集中动作token编码序列集合为T V-GR测 ;4.3.2初始化训练迭代参数n_epoch=1,令测试集上系统的当前准确率curr_acc=0,测试集上系统的最佳准确率opti_acc=0;4.3.3Token表示模块接收训练集中的T S训 和T V-GR训 ,输出对应的向量表示,并选择其中的CLS向量,拼接成CLS合并向量表示V cls ;事件预测层接收V cls 进行计算得到候选事件的得分,方法是:4.3.3.1初始化m=1;4.3.3.2 Token表示模块接收T S训 训练集中的第m条数据中的事件token编码序列 和T V-GR训 中第m条数据中的动作token编码序列 其中 表示事件e n 中的第D 1 个令牌编号, 为第n个动词及其语法关系v-GR n 第D 2 个令牌编号,Token表示模块利用Roberta对接收的 和 进行嵌入表示,得到对应的具有上下文特征的事件序列的向量表示集合 和动作序列的向量表示集合 是 对应的具有上下文特征的向量表示, 是 对应的具有上下文特征的向量表示;Token表示模块从 和 中提取CLS令牌的向量表示,依次拼接成K个CLS合并向量表示 事件预测层接收 并输出候选事件的得分s 1 ,...,s k ,...,s K ;4.3.3.3计算损失值,方法是把EE m 中K个候选事件得分 和正确选项g m 一同输入CrossEntropyLoss函数,得到第m个损失值Loss m ;4.3.3.4令m=m+1,如果m>M 1 ,说明测试集对脚本事件预测系统已经完成了一轮训练,转步骤4.3.5;如果m≤M 1 且m是训练步长Num Step的倍数,则转步骤4.3.4进行过拟合检查,如果m≤M 1 且m不是Num Step的倍数,转步骤4.3.3.2继续训练;4.3.4采用测试集对脚本事件预测系统进行过拟合检查,并判断是否提前结束训练,如果没有出现明显的过拟合问题,转步骤4.3.3.2继续训练;如果满足提前停止训练的条件,将Token表示模块中的Roberta模型参数和事件预测层的权重矩阵W和偏置b存储备用,训练结束;4.3.5计算M 1 个测试集样本的平均损失值 4.3.6使用Adam优化算法对Loss最小化以更新Token表示模块和事件预测层的网络权重参数;4.3.7令n_epoch=n_epoch+1,如果n_epoch≤Epochs,转4.3.3步;如果n_epoch>Epochs,说明训练满足训练轮数要求,训练结束。
8.如权利要求7所述的一种基于动作场景强化的脚本事件预测方法,其特征在于4.3.3.2步所述Token表示模块利用Roberta对接收的 和 进行嵌入表示,得到对应的具有上下文特征的事件序列的向量表示集合 和动作序列的向量表示集合 Token表示模块从 和 中提取CLS令牌的向量表示,依次拼接成K个CLS合并向量表示 事件预测层接收 并输出候选事件的得分s 1 ,...,s k ,...,s K 的方法是:4.3.3.2.1初始化k=1,初始化 为空,初始化 为空;4.3.3.2.2 Token表示模块利用Roberta对 进行嵌入、线性变换、多头自注意力、池化操作,得到 对应的具有上下文特征的向量表示 其中 为令牌 对应的向量表示, 和 分别为CLS令牌和SEP令牌在 中的向量表示,并且所有向量表示的长度为d,将 放到 中;4.3.3.2.3 Token表示模块利用Roberta对 进行嵌入、线性变换、多头自注意力、池化操作,得到 对应的具有上下文特征的向量表示 其中 为令牌 对应的向量表示, 和 为CLS令牌和SEP令牌在 中的向量表示,并且所有向量表示的长度为d,将 放到 中;4.3.3.2.4Token表示模块将 和 横向拼接成CLS合并向量表示 的向量表示长度为2×d;4.3.3.2.5事件预测层计算第k个候选事件的得分 W为事件预测层的矩阵参数, 表示W和 这两个矩阵相乘;4.3.3.2.6令k=k+1,如果k≤K,转步骤4.3.3.2.2;否则说明得到了 对应的EE m 中K个候选事件的得分 也得到了 和 结束。
9.如权利要求7所述的一种基于动作场景强化的脚本事件预测方法,其特征在于4.3.4步所述采用测试集对脚本事件预测系统进行过拟合检查,并判断是否提前结束训练的方法是:4.3.4.1初始化迭代参数mt=1;4.3.4.2 Token表示模块接收测试集中的 和token编码序列 利用Roberta得到 的具有上下文特征的向量表示 和 Token表示模块从 和 中提取两种序列中的CLS令牌的向量表示,分别拼接成K个CLS合并向量表示 其中 是 和 由拼接而成,事件预测层接收 并输出对应的K个候选事件的得分 4.3.4.3从 中选取最大得分对应的事件序号作为脚本事件预测结果y mt ;4.3.4.4令mt=mt+1,如果mt>M 2 ,说明得到了测试集所有的数据上的预测结果,转步骤4.3.4.5;如果mt≤M 2 ,转步骤4.3.4.2;4.3.4.5计算脚本事件预测系统在测试集上的准确比例acc, f(y mt ,g mt )是一个二值函数,如果y mt =g mt 则f(y mt ,g mt )=1,如果y mt ≠g mt 则f(y mt ,g mt )=0;4.3.4.6令curr_acc=acc,如果curr_acc>opti_acc,则令opti_acc=curr_acc,使得opti_acc中存储的是测试集上的最佳准确率;如果curr_acc≤opti_acc,且opti_acc-curr_acc≤1.5%,表示没有出现明显的过拟合问题,需继续训练;如果opti_acc-curr_acc>1.5%,说明满足提前停止训练的条件,训练结束。
10.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于5.2.2步所述利用E 0 和C 0 构造虚拟事件序列和虚拟动作序列,将虚拟事件序列和虚拟动作序列转换成句子后进行分词编码,得到EE 0 对应的事件token编码序列 和EE 0 对应的动作token编码序列 方法是:5.2.1初始化k=1;5.2.2构建EE 0 对应的虚拟事件序列S k 0 并转换成句子,方法是:5.2.2.1将C 0 中第k个候选事件c k 0 和E 0 组成对应的第k个虚拟事件序列S k 0 :<e 1 0 ,e 2 0 ,...,e n 0 ,...,e N 0 ,c k 0 >;5.2.2.2将S k 0 中的事件通过字符“##”连接S k 0 中的所有事件,句子的头部和句子的末尾分别添加CLS令牌和SEP令牌,形成“CLSe 1 0 ##e 2 0 ##...##e n 0 ##...,e N 0 ##c k 0 SEP”的句式;其中e n 0 和c k 0 按照a s ,v,a o ,a p 的顺序拼接文本。
11.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于5.2.3步所述构建虚拟动作序列V-GR k 0 并转换成句子的方法是:5.2.3.1将S k 0 中动作v和GR的组合v-GR 0 ,拼接成对应的虚拟动作序列V-GR k 0 :<v-GR 1 0 ,v-GR 2 0 ,...,v-GR n 0 ,...,v-GR N 0 ,v-GR N+k 0 >;5.2.3.2将序列V-GR k 0 中的v-GR n 通过字符“##”连接,句子的头尾分别添加CLS令牌和SEP令牌,形成“CLSv-GR 1 0 ##v-GR 2 0 ##...##v-GR n 0 ##...,v-GR N 0 ##v-GR N+k 0 SEP”的句式;其中v-GR n 0 按照v,GR的顺序拼接文本。
暂无引用专利



