CN113919319B - 基于动作场景强化的脚本事件预测方法 - Google Patents
基于动作场景强化的脚本事件预测方法 Download PDFInfo
- Publication number
- CN113919319B CN113919319B CN202111202221.3A CN202111202221A CN113919319B CN 113919319 B CN113919319 B CN 113919319B CN 202111202221 A CN202111202221 A CN 202111202221A CN 113919319 B CN113919319 B CN 113919319B
- Authority
- CN
- China
- Prior art keywords
- event
- token
- sequence
- training
- module
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
-
- 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
-
- 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)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种基于动作场景强化的脚本事件预测方法,目的是提高脚本事件预测准确率。技术方案是:先构建由元素编码模块、Token表示模块、事件预测层构成的脚本事件预测系统;从事件性新闻文本中抽取出一系列事件序列作为训练脚本事件预测系统所需的数据;对训练数据进行预处理,得到事件序列的token编码序列和动作序列的token编码序列,作为训练数据。使用训练数据训练Token表示模块和事件预测层,得到网络权重参数。训练后的脚本事件预测系统接收用户输入的已发生的事件序列,进行元素编码、Token表示,根据已发生的事件序列预测候选事件集合中最可能发生的事件。采用本发明可以提高脚本事件预测准确率。
Description
技术领域
本发明涉及脚本事件预测领域,具体是一种基于动作场景强化的采用神经网络进行脚本事件预测的方法。
背景技术
围绕一个主角展开的一系列事件被称为脚本事件(Script Event),这些事件可能涉及不同的地点、人物和动作。在此基础上根据已经发生的事件,即事件上下文,来预测后续可能发生的事件的任务则被称作脚本事件预测(Script Event Prediction)。脚本事件通常由事件触发词(一般为谓语动词)和事件元素(如与动词关联的主语、宾语和补语等)来进行描述,事件的要素(主语、谓语、宾语和补语)由多个单词进行表示。而网络平台上海量的自然语言文本中包含了大量的事件信息,从中可以抽取出不同场景的脚本事件链,这为训练模型自动化分析脚本事件发展规律提供了基础。同时为了评估模型在预测任务上的效果,相关研究者提出了多选项叙事完形填空(Multiple Choice Narrative Cloze,MCNC)任务。MCNC任务指的是根据已发生的事件链信息,从多个候选事件中选择最可能发生的后续事件。脚本事件预测的主要挑战在于两个方面,一个是事件的特征表示,一个是推断方式的选择。
事件的特征表示也被称为事件表示学习(Event Representation Learning),需要将描述事件的多个要素进行向量化,并在此基础上进行特征融合和更新,使得模型能够学习到具有上下文语境的事件特征信息。早期的研究采用的是统计特征,如事件对的频率,这种方法面临着严重的稀疏性问题,难以捕捉不常出现的事件的特征规律。之后研究者引入浅层词嵌入或者图嵌入的方法来编码事件的要素,但是这些方法采用的都是静态嵌入,无法解决一词多义,集外词(out-of-vocabulary)等问题。为了缓解以上问题,研究者采用基于循环神经网络(Recurrent Neural Network,简称RNN)或图神经网络(GraphNeuralNetwork,简称GNN)的方法使得事件序列在事件层面的进行特征融合,从而更新事件表示,使得其中包含丰富的事件管理信息。而随着预训练模型的发展,部分预训练模型(Pre-trained Model),如Roberta,也被引入到事件表示任务中。预训练模型的分词编码器(称为tokenizer)将单词或句子转换成该模型的词表(预设的大量令牌(token)及其对应的编码)中的一个或多个令牌,例如单词“repairing”会被转换为“repair”和“##ing”两个令牌,再根据词表中查询对应的整数编码;预训练模型的网络结构将接收分词编码器的编码输入,从而获得具有上下文特征的令牌级别的向量表示。预训练模型会在大量文本语料库上通过多种下游任务进行预训练,如掩码预测任务(Mask Prediction,将句子中的部分单词掩去,让模型去预测),从而得到能捕捉基本文本规律的网络参数,这些参数将被保存下来用于后续任务的使用。
推断方式指如何根据事件特征进行候选事件的评估。大多数的方法考虑的是候选事件和事件上下文的语义相似性,根据两者之间令牌级别、事件级别或者事件链级别的向量化距离来评估候选事件可能发生的概率。同时,在此基础上也存在混合多个级别视角的方法。
脚本事件预测是一项具有挑战的任务,预测的准确率是脚本事件预测领域最关注的指标。由于事件的描述文本长度较短,事件关联关系较为复杂,事件上下文序列存在一些噪声事件,所以脚本事件预测准确率较难提高。动词及其承接者是脚本事件的重要部分,事件发展具有是动作场景的连续性。现有方法中使用静态嵌入的方法,如Event-Comp、PairLSTM、SGNN等,不能很好的解决事件文本,特别是动词的一词多义问题,并且尽管添加了向量更新模块也难以捕捉到动作的细致交互信息。而基于预训练模型的RoBERTa+Representation Fusion(知识表示融合)方法(见文献“Shangwen Lv,Fuqing Zhu,andSonglin Hu.2020.Integrating External Event Knowledge for Script Learning.InProceedings of the 28th International Conference on ComputationalLinguistics.306–315.”Shangwen Lv、Fuqing Zhu和Songlin Hu的论文:整合外部事件知识进行脚本学习),虽然一定程度上解决了动词一词多义的问题,但是对输入数据没有做良好的处理。该方法仅仅将事件描述元组中的单词简单地拼接在一起作为输入数据,这种处理方式会在token编码时出现事件的token序列长度不一致而出现模型对事件的关注度倾斜,也会使得部分动词因token较短而被忽视,这不利于事件语义的捕捉,也难以发现动作场景的变化规律,使得脚本事件预测准确率只能达到58.66%。
因此,如何进行合适的数据处理,并设计配套的模型结构,突出事件中动作信息的文本特征的作用,提高后续事件预测的准确率,是脚本事件预测领域极为关注的技术问题。
发明内容
本发明要解决的技术问题是提供一种基于动作场景强化的脚本事件预测方法。此方法预处理时隐去主角信息,利用深度学习网络,突出关注事件序列中的动作信息,从而提高脚本事件预测的准确率。
为了解决上述技术问题,本发明采用的技术方案为先构建由元素编码模块、Token表示模块、事件预测层构成的脚本事件预测系统。从事件性新闻文本中抽取出一系列事件序列作为训练脚本事件预测系统所需的数据;然后元素编码模块对训练数据进行预处理,得到事件序列的token编码序列和动作序列的token编码序列,作为训练Token表示模块和事件预测层的训练数据。使用训练数据训练Token表示模块和事件预测层,得到网络权重参数。训练后的脚本事件预测系统接收用户输入的已发生的事件序列,进行元素编码、Token表示,根据已发生的事件序列预测候选事件集合中最可能发生的事件。
本发明的技术方案如下:
第一步,构建脚本事件预测系统。该系统由元素编码模块、Token表示模块、事件预测层构成。
元素编码模块与Token表示模块相连,从键盘或文件接收用户输入的文本形式的事件组,记作EE。事件组EE包含N条已观测到的上下文事件和K条候选事件,N条已观测到的上下文事件用上下文事件序列E表示,E=<e1,e2,...,en,...,eN>,en是第n个上下文事件;K条候选事件用候选事件集合C表示,C={c1,c2,...ck,...,cK},ck是第k个候选事件。一条事件(上下文事件或候选事件)包含一个事件元素四元组(as,v,ao,ap)、动作v与主角人物的语法关系(Grammatical dependency Relation,简称GR),即事件可表示为文本集合{as,v,ao,ap,GR},其中v表示事件中的动作(表现为谓语动词),as,ao,ap则分别指代与动词相关的主语、宾语和补语,GR∈{subj,obj,prep}(subj,obj,prep分别表示主角人物为动作v的主语、谓语和补语关系),N和K为正整数,1≤n≤N,1≤k≤K。为了计算C中第k个候选事件ck与上下文事件序列E的关联信息,元素编码模块将ck和E组成第k条虚拟事件序列Sk:<e1,e2,...,en,...,eN,ck>;为了突出动作场景的信息,元素编码模块将Sk中动作(共N+1个)和GR的组合(记作v-GR,如(eat,subj)),拼接成对应的虚拟动作序列V-GRk:<v-GR1,v-GR2,...,v-GRn,...,v-GRN,v-GRN+k>。完成虚拟事件序列和虚拟动作序列的构造后,将Sk和V-GRk分别转换成句子,句子的头部和末尾分别添加字符“<s>”(称为CLS令牌,CLS令牌在预训练模型中属于句子的起始标记,包含了整个序列的信息,通常用于表征整个句子的特征。)和字符“</s>”(称为SEP令牌),用于表示句子开头和结尾。利用分词编码器(Tokenizer)对序列Sk或V-GRk转换成的句子进行分词,得到两种token序列,通过查询预训练模型公开的词表得到token数值编码序列,即事件序列的token编码序列和动作序列的token编码序列经过K次循环,元素编码模块得到和后,发送给Token表示模块。
Token表示模块与元素编码模块、事件预测层相连,是一个Roberta模型。Token表示模块从元素编码模块接收和进行嵌入、线性变换、多头自注意力(multi-head self-attention)、池化操作,分别得到相应的两种token动态交互的向量表示,即事件序列的向量表示和动作序列对应的向量表示。Token表示模块从事件序列的向量表示中提取出事件CLS令牌的向量表示从动作序列对应的向量表示中提取出动作CLS令牌的向量表示将连接成包含候选事件ck特征的CLS合并向量表示经过K次循环,得到发送给事件预测层。
事件预测层与Token表示模块相连,是一个由全连接层组成的神经网络,对从Token表示模块接收的进行处理,输出候选事件集合C的K个得分s1,...,sk,...sK,通过排序,取最大得分的事件序号作为脚本事件预测结果,记为y。
第二步,准备训练脚本事件预测系统所需的数据。方法是:
2.1选择权威媒体平台发布(如纽约时报、新闻联播等)的事件性新闻文本作为原始语料,选择依据是要求事件性新闻文本真实可信,并且涵盖某主角参与的一系列事件,便于构成较长的事件序列。
2.2利用C&C工具(见文献“J.R.Curran,S.Clark,and J.Bos,“Linguisticallymotivated large-scale NLP with c&c and boxer,”in ACL.The Association forComputational Linguistics,2007.”J.R.Curran、S.Clark和J.Bos的论文:基于C&C和boxer的语法驱动的大规模自然语言处理方法的第1页-第3页)对原始语料进行词性标注和依赖分析,即将原始语料中的句子切分成多个标注了词性的词语集合,词语集合中的词语根据句子的语法依赖关系进行关联。
2.3利用OpenNLP函数(见https://opennlp.apache.org 2021.5.6)对词语集合进行短语结构处理(Phrase-structure parsing),得到句子成分(主语、谓语、宾语和补语)的短语文本,将这些短语文本作为事件元素四元组(as,v,ao,ap)。通过共指消解(CoreferenceResolution,即将指代同一实体的不同描述合并到一起的过程),将原始语料库中某新闻文本中涉及同一主角的事件元素四元组按顺序连接成一个原始事件序列,并记录动作v与主角人物的语法关系GR。
2.4为了便于后续模型的批量训练,从提取的大量原始事件序列中选取出至少包含N+1个事件的原始事件序列,得到M条事件序列长度符合要求的原始事件序列集合{R1,...,Rm,...,RM},1≤m≤M为正整数,原始事件序列Rm包含N+1个事件,每个事件包含文本集合{as,v,ao,ap,GR}。
2.5从{R1,...,Rm,...,RM}的每个原始事件序列中取出事件元素四元组中的动作构成动作集。
2.6利用{R1,...,Rm,...,RM}构造符合模型训练所需的数据结构(提出方法见文献“Mark Granroth-Wilding and Stephen Clark.2016.What Happens Next?EventPrediction Using a Compositional Neural Network Model.In AAAI.AAAI Press,2727-2733.”Granroth等的论文:接下来会发生什么?基于组合神经网络模型的事件预测第3页)。方法如下:
2.6.1初始化m=1;
2.6.2将Rm中的前N个事件构成上下文事件序列Em,即<e1,e2,...,en,...,eN>。
2.6.3构造K-1个干扰事件。采用随机函数从动作集中随机选取动词,再从原始事件序列Rm的新闻来源中随机选取出现的人或物补全主语宾语,构成干扰事件。
2.6.4将Rm中的第N+i个事件和K-1个干扰事件组成用于预测的第m个候选事件集合Cm,即Cm={c1,c2,...ck,...,cK},ck的数据结构和en一样。Em和Cm共同组成第m个事件组EEm,因此EEm中有N+K个事件,即e1,e2,...,en,...,eN和c1,c2,...ck,...,cK。
2.6.5随机排列第m个候选事件集合Cm中的事件,并记录Cm中真实发生的事件的序号作为真实序号gm。
2.6.6令m=m+1,如果m≤M,转步骤2.6.2;否则说明训练数据已经构造完毕,得到了训练数据{(EE1,g1),...,(EEm,gm),...,(EEM,gM)},转第三步。
第三步,元素编码模块对训练数据进行预处理,得到事件序列的token编码序列TS和动作序列的token编码序列TV-GR,将TS和TV-GR发送给Token表示模块,作为训练Token表示模块和事件预测层的训练数据。方法如下:
3.1初始化m=1;为描述方便,令e1,e2,...,en,...,eN和c1,c2,...ck,...,cK中的第i个事件为ei,1≤i≤N+K;
3.2处理第m个训练数据(EEm,gm)中的N+K个事件的文本集合中的缺失元素,并隐去其中的主角信息,方法是:
3.2.1初始化i=1;
3.2.2 ei的元素由步骤2.3中OpenNLP处理时得到,但是存在主语、宾语或补语的缺失等情况,导致ei的事件文本集合中部分元素为空,元素编码模块将空缺元素用字符“<pad>”(称为PAD令牌,预训练模型中的占位符)进行替换,避免引入无关字符的语义干扰;
3.2.3隐去ei中的主角信息。将ei的事件文本集合中的主角信息采用“X”字符予以替换;
3.2.4令i=i+1,如果i≤N+K,转步骤3.2.2;否则转步骤3.3。
3.3利用EEm中的Em和Cm构造虚拟事件序列和虚拟动作序列,将虚拟事件序列和虚拟动作序列转换成句子后进行分词编码,得到EEm对应的事件序列的token编码序列和EEm对应的动作序列的token编码序列方法是:
3.3.1初始化k=1;
3.3.2构建第k个虚拟事件序列Sk m并转换成句子,方法是:
3.3.2.1将Cm中第k个候选事件ck和Em组成对应的第k个虚拟事件序列Sk m:<e1,e2,...,en,...,eN,ck>;
3.3.2.2将Sk m中N+1个事件通过字符“##”连接,句子的头部和句子的末尾分别添加CLS令牌和SEP令牌,形成“CLSe1##e2##...##en##...,eN##ckSEP”的句式,其中事件en和ck都按照as,v,ao,ap的顺序拼接文本。
3.3.3构建Sk m对应的虚拟动作序列V-GRk m并转换成句子,方法是:
3.3.3.1将Sk m中N+1个事件的v-GR组合拼接成Sk m对应的虚拟动作序列V-GRk m:<v-GR1,v-GR2,...,v-GRn,...,v-GRN,v-GRN+k>;
3.3.3.2将V-GRk m中的v-GR1,v-GR2,...,v-GRn,...,v-GRN,v-GRN+k通过字符“##”连接,句子的头尾分别添加CLS令牌和SEP令牌,形成“CLSv-GR1##v-GR2##...##v-GRn##...,v-GRN##v-GRN+kSEP”的句式,所有的v-GR组合都按照v,GR的顺序拼接文本。
3.3.4利用Roberta(见文献“Yinhan Liu,Myle Ott,Naman Goyal,Jingfei Du,Mandar Joshi,Danqi Chen,Omer Levy,Mike Lewis,Luke Zettlemoyer,and VeselinStoyanov.2019.RoBERTa:ARobustly Optimized BERT Pretraining Approach.CoRRvolumeabs/1907.11692(2019).”Yinhan Liud等的论文:RoBERTa:一种基于Bert的鲁棒性优化的预训练方法)的分词编码器(Tokenizer)(模型从“https://huggingface.co/roberta-base 2021.5.6”下载)将Sk m转换成的句子进行分词,得到token序列,并且通过查询RoBERTa的词表得到token序列的对应编码,即EEm对应的Sk m事件序列的token编码序列其中表示EEm中第n个事件en中的第D1(1≤D1≤maxLen1)个令牌编号。maxLen1为Sk m中en的token序列限定长度,maxLen1≥4。
3.3.5利用Roberta的分词编码器将V-GRk m转换的句子进行分词,得到动作的token序列,并查询RoBERTa的词表得到对应的编码,即EEm对应的动作序列V-GRk m的token编码序列 其中表示第n个动词及其语法关系v-GRn中的第D2(1≤D2≤maxLen2)个令牌编号。maxLen2为V-GRk m中的token序列限定长度,maxLen2≥2。
3.4令m=m+1,如果m≤M,转步骤3.2;否则说明得到了M条训练数据对应的所有事件序列的token编码序列集合TS,和M条训练数据对应的所有动作序列的token编码序列集合TV-GR,以及M条训练数据对应的真实事件序号G,G={g1,...,gm,...gM}构成的M条数据,即 第m条数据为数据,将M条数据发送给Token表示模块,转第四步。
第四步,使用训练数据训练Token表示模块和事件预测层,得到网络权重参数。
4.1初始化Token表示模块和事件预测层的参数:将Token表示模块中的RoBERTa中所有的网络载入已预训练好的参数(从“https://huggingface.co/roberta-base2021.5.6”下载)来实现初始化。将事件预测层中的权重矩阵W中所有的元素和偏置b都初始化为[0,1]之间的随机数,表示W是大小为2d×1的矩阵,矩阵元素值均为实数,表示b为实数,d为Token表示模块中token对应向量的长度。
4.2设置网络训练参数:训练参数包括网络模型学习率(Learning Rate)、数据批量大小(Batch Size)、测试步长Num Step(每完成一个步长进行一次模型测试)、L2正则化参数和训练轮数(Epochs),设置网络模型学习率Learning Rate=10-5,数据批量大小BatchSize=16,测试步长Num Step=1000,L2正则化参数=10-8,训练轮数Epochs=3(实验证明,训练轮数超过3时,系统准确率会下降)。
4.3训练Token表示模块和事件预测层。方法是:Token表示模块从元素编码模块接收TS和TV-GR,进行计算,得到TS和TV-GR中所有令牌的事件序列的向量表示Vs和动作序列的向量表示VV-GR,再从Vs和VV-GR中提取CLS的向量表示,拼接成CLS合并向量表示Vcls,将Vcls输入发送给事件预测层。事件预测层由Vcls计算得到候选事件的得分。根据候选事件的得分和真实序号来计算损失值,最小化损失值并同时更新Token表示模块和事件预测层网络参数,直到符合提前停止的要求或满足训练轮数要求,得到Token表示模块和事件预测层的权重参数。
方法如下:
4.3.1将3.4步构造得到的M条数据 分为两个部分:训练集和测试集,记训练集的数据量为M1,测试集的数据量为M2,且M1∶M2=8∶2。训练集用于网络参数的更新,测试集用于判断训练是否过拟合。令训练集中事件token编码序列集合为TS训,令测试集中事件token编码序列集合为TS测。令训练集中动作token编码序列集合为TV-GR训,令测试集中动作token编码序列集合为TV-GR测。
4.3.2初始化训练迭代参数n_epoch=1,令测试集上系统的当前准确率curr_acc=0,测试集上系统的最佳准确率opti_acc=0;
4.3.3 Token表示模块接收训练集中的TS训和TV-GR训,输出对应的向量表示,并选择其中的CLS向量,拼接成CLS合并向量表示Vcls。事件预测层接收Vcls进行计算得到候选事件的得分,方法是:
4.3.3.1初始化m=1;
4.3.3.2Token表示模块接收TS训训练集中的第m条数据中的事件token编码序列 和TV-GR训中第m条数据中的动作token编码序列 其中表示事件en中的第D1个令牌编号, 为第n个动词及其语法关系v-GRn第D2个令牌编号,Token表示模块利用Roberta对接收的和进行嵌入表示,得到对应的具有上下文特征的事件序列的向量表示集合和动作序列的向量表示集合其中中的第k项 中的第k项 Token表示模块从和中提取CLS令牌的向量表示,依次拼接成K个CLS合并向量表示事件预测层接收并输出候选事件的得分s1,...,sk,...,sK。方法是:
4.3.3.2.2Token表示模块利用Roberta对进行嵌入、线性变换、多头自注意力、池化操作,得到对应的具有上下文特征的向量表示其中为令牌对应的向量表示,和分别为CLS令牌和SEP令牌在中的向量表示,并且所有向量表示的长度为d,将放到中。
4.3.3.2.3Token表示模块利用Roberta对进行嵌入、线性变换、多头自注意力、池化操作,得到对应的具有上下文特征的向量表示其中为令牌对应的向量表示,和为CLS令牌和SEP令牌在中的向量表示,并且所有向量表示的长度为d,将放到中。
4.3.3.2.6令k=k+1,如果k≤K,转步骤4.3.3.2.2;否则说明得到了对应的EEm中K个候选事件的得分也得到了对应的具有上下文特征的事件序列的向量表示集合和动作序列的向量表示集合 转步骤4.3.3.3。
4.3.3.3计算损失值,方法是把EEm中K个候选事件得分和正确选项gm输入CrossEntropyLoss(见https://pytorch.org/docs/stable/generated/torch. nn.CrossEntropyLoss.html2021.06.05)函数,得到第m个损失值Lossm。
4.3.3.4令m=m+1,如果m>M1,说明系统已经完成了一轮训练,转步骤4.3.5;如果m≤M1且m是训练步长Num Step的倍数,则转步骤4.3.4进行过拟合检查,如果m≤M1且m不是Num Step的倍数,转步骤4.3.3.2继续训练。
4.3.4采用测试集对脚本事件预测系统进行过拟合检查,并判断是否提前结束训练,方法是:
4.3.4.1初始化迭代参数mt=1;
4.3.4.2Token表示模块接收测试集中的和token编码序列利用Roberta得至的具有上下文特征的向量表示和Token表示模块从和中提取两种序列中的CLS令牌的向量表示,分别拼接成K个CLS合并向量表示其中是和由拼接而成,事件预测层接收并输出对应的K个候选事件的得分
4.3.4.4令mt=mt+1,如果mt>M2,说明得到了测试集所有的数据上的预测结果,转步骤4.3.4.5;如果mt≤M2,转步骤4.3.4.2。
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%,表示没有出现明显的过拟合问题,转步骤4.3.3.2继续训练;如果opti_acc-curr_acc>1.5%,说明满足提前停止训练的条件,训练结束,将Token表示模块中的Roberta模型参数和事件预测层的权重矩阵W和偏置b存储备用,转第五步。
4.3.6使用Adam优化算法(见文献“Kingma D P,Ba J.Adam:A method forstochastic optimization[J].arXiv preprint arXiv:1412.6980,2014”,Kingma的论文:Adam,一种随机优化方法)对Loss最小化以更新Token表示模块和事件预测层的网络权重参数。
4.3.7令n_epoch=n_epoch+1,如果n_epoch≤Epochs,转4.3.3步;如果n_epoch>Epochs,说明训练满足训练轮数要求,训练结束,将Token表示模块中的Roberta模型参数和事件预测层的权重矩阵W和偏置b存储备用,转第五步。
第五步,训练后的脚本事件预测系统接收用户输入的已发生的事件序列,进行元素编码、Token表示,根据已发生的事件序列预测候选事件集合中最可能发生的事件。方法是:
5.1元素编码模块从键盘或文件接收用户输入的已发生的事件序列,即文本形式的事件组EE0。事件组EE0包含已观测到的上下文事件序列E0=<e1 0,e2 0,...,en 0,...,eN 0>和候选事件集合C0={c1 0,c2 0,...ck 0,...,cK 0}。
5.2.1初始化k=1;
5.2.2构建EE0对应的虚拟事件序列Sk 0并转换成句子,方法是:
5.2.2.1将C0中第k个候选事件ck 0和E0组成对应的第k个虚拟事件序列Sk 0:<e1 0,e2 0,...,en 0,...,eN 0,ck 0>;
5.2.2.2将Sk 0中的事件通过字符“##”连接Sk 0中的所有事件,句子的头部和句子的末尾分别添加CLS令牌和SEP令牌,形成“CLSe1 0##e2 0##...##en 0##...,eN 0##ck 0SEP”的句式。其中en 0和ck 0按照as,v,ao,ap的顺序拼接文本。
5.2.3构建虚拟动作序列V-GRk 0并转换成句子,方法是:
5.2.3.1将Sk 0中N+1个事件的动作v和GR的组合(记作v-GR0),拼接成对应的虚拟动作序列V-GRk 0:<v-GR1 0,v-GR2 0,...,v-GRn 0,...,v-GRN 0,v-GRN+k 0>;
5.2.3.2将序列V-GRk 0中的v-GRn通过字符“##”连接,句子的头尾分别添加CLS令牌和SEP令牌,形成“CLSv-GR1 0##v-GR2 0##...##v-GRn 0##...,v-GRN 0##v-GRN+k 0SEP”的句式。其中v-GRn 0按照v,GR的顺序拼接文本。
5.2.4利用Roberta的分词编码器将Sk 0转换的句子进行分词得到输入事件token序列,并且通过查询RoBERTa的词表得到输入事件token序列对应的编码,即输入事件序列的token编码序列
5.2.5利用Roberta的分词编码器将V-GRk 0转换的句子进行分词得到输入动作token序列,并且通过查询RoBERTa的词表得到输入动作token序列对应的编码,即输入动作序列的token编码序列
5.3训练后的Token表示模块(载入了训练后的Roberta模型参数的Token表示模块),对和进行嵌入、线性变换、多头自注意力、池化操作,得到具有上下文特征的向量表示和Token表示模块从中提取两种序列中的CLS令牌的向量表示拼接成CLS合并向量表示训练后的事件预测层(载入了训练后的权重矩阵W和偏置b的事件预测层)接收并输出候选事件的得分方法是:
5.3.1初始化k=1;
至此完成了对脚本事件的预测。
采用本发明可以达到以下技术效果:
1.本发明第一步构建了一个强化动作场景的脚本事件预测系统,融合了事件序列和动作序列的语义信息。元素编码模块对事件和动作的两种序列的信息进行编码处理,Token表示模块对两种序列进行向量化表示后进行拼接,得到的向量表示不仅包含了事件序列的信息,还突出了动作的连续性,将数据输入到模型之中,进一步强化了系统对动作场景的关注,预测准确率相比RoBERTa+Representation Fusion提升了3.69%。在脚本事件预测任务中,往往提高1%都是十分困难(见文献“X.Ding,K.Liao,T.Liu,Z.Li,and J.Duan,“Event representation learning enhanced with external commonsense knowledge,”arXiv preprint arXiv:1909.05190,2019.”X.Ding等的论文:基于外部常识知识增强的事件表示学习),因此3.69%是一个相当大的进步。
2.本发明第三步的3.3.4和3.3.5中,通过限定每个事件token序列的长度,使得不同事件的初始重要度接近;3.2步处理第m个训练数据(EEm,gm)中的N+K个事件的文本集合中的缺失元素,并隐去其中的主角信息,让系统不关注事件中主角的名字,而是动作以及非主角的其他实体构成的动作场景的特征,便于系统发现具有普遍性的事件发展规律。第三步中的预处理方式使得数据形式更易于捕捉事件发展的规律,这样构造的训练数据使得第四步训练Token表示模块和事件预测层得到的网络权重参数适宜于Token表示模块和事件预测层,使得训练后的Token表示模块和事件预测层能够预测出准确的结果。
附图说明
图1为本发明总体流程图。
图2为本发明第一步构建的脚本事件预测系统逻辑结构图。
图3为采用本发明与其他常见的脚本事件预测方法对公开数据集(NYT)进行预测的实验结果比较图。
具体实施方式
图1是本发明的总体流程图,如图1所示,本发明包括以下步骤:
第一步,构建脚本事件预测系统。该系统如图2所示,由元素编码模块、Token表示模块、事件预测层构成。
元素编码模块与Token表示模块相连,从键盘或文件接收用户输入的文本形式的事件组,记作EE。事件组EE包含N条已观测到的上下文事件和K条候选事件,N条已观测到的上下文事件用上下文事件序列E表示,E=<e1,e2,...,en,...,eN>,en是第n个上下文事件;K条候选事件用候选事件集合C表示,C={c1,c2,...ck,...,cK},ck是第k个候选事件。一条事件(上下文事件或候选事件)包含一个事件元素四元组(as,v,ao,ap)、动作v与主角人物的语法关系(Grammatical dependency Relation,简称GR),即事件可表示为文本集合{as,v,ao,ap,GR},其中v表示事件中的动作(表现为谓语动词),as,ao,ap则分别指代与动词相关的主语、宾语和补语,GR∈{subj,obj,prep}(subj,obj,prep分别表示主角人物为动作v的主语、谓语和补语关系),N和K为正整数,1≤n≤N,1≤k≤K。为了计算C中第k个候选事件ck与上下文事件序列E的关联信息,元素编码模块将ck和E组成第k条虚拟事件序列Sk:<e1,e2,...,en,...,eN,ck>;为了突出动作场景的信息,元素编码模块将Sk中动作(共N+i个)和GR的组合(记作v-GR,如(eat,subj)),拼接成对应的虚拟动作序列V-GRk:<v-GR1,v-GR2,...,v-GRn,...,v-GRN,v-GRN+k>。完成虚拟事件序列和虚拟动作序列的构造后,将Sk和V-GRk分别转换成句子,句子的头部和末尾分别添加字符“<s>”(称为CLS令牌,CLS令牌在预训练模型中属于句子的起始标记,包含了整个序列的信息,通常用于表征整个句子的特征。)和字符“</s>”(称为SEP令牌),用于表示句子开头和结尾。利用分词编码器(Tokenizer)对序列Sk或V-GRk转换成的句子进行分词,得到两种token序列,通过查询预训练模型公开的词表得到token数值编码序列,即事件序列的token编码序列和动作序列的token编码序列经过K次循环,元素编码模块得到和后,发送给Token表示模块。
Token表示模块与元素编码模块、事件预测层相连,是一个Roberta模型。Token表示模块从元素编码模块接收和进行嵌入、线性变换、多头自注意力(multi-head self-attention)、池化操作,分别得到相应的两种token动态交互的向量表示,即事件序列的向量表示和动作序列对应的向量表示。Token表示模块从事件序列的向量表示中提取出事件CLS令牌的向量表示从动作序列对应的向量表示中提取出动作CLS令牌的向量表示将连接成包含候选事件ck特征的CLS合并向量表示经过K次循环,得到发送给事件预测层。
事件预测层与Token表示模块相连,是一个由全连接层组成的神经网络,对从Token表示模块接收的进行处理,输出候选事件集合C的K个得分s1,...,sk,...sK,通过排序,取最大得分的事件序号作为脚本事件预测结果,记为y。
第二步,准备训练脚本事件预测系统所需的数据。方法是:
2.1选择权威媒体平台发布(如纽约时报、新闻联播等)的事件性新闻文本作为原始语料,选择依据是要求事件性新闻文本真实可信,并且涵盖某主角参与的一系列事件,便于构成较长的事件序列。
2.2利用C&C工具对原始语料进行词性标注和依赖分析,即将原始语料中的句子切分成多个标注了词性的词语集合,词语集合中的词语根据句子的语法依赖关系进行关联。
2.3利用OpenNLP函数对词语集合进行短语结构处理,得到句子成分(主语、谓语、宾语和补语)的短语文本,将这些短语文本作为事件元素四元组(as,v,ao,ap)。通过共指消解,将原始语料库中某新闻文本中涉及同一主角的事件元素四元组按顺序连接成一个原始事件序列,并记录动作v与主角人物的语法关系GR。
2.4为了便于后续模型的批量训练,从提取的大量原始事件序列中选取出至少包含N+1个事件的原始事件序列,得到M条事件序列长度符合要求的原始事件序列集合{R1,...,Rm,...,RM},1≤m≤M为正整数,原始事件序列Rm包含N+1个事件,每个事件包含文本集合{as,v,ao,ap,GR}。
2.5从{R1,...,Rm,...,RM}的每个原始事件序列中取出事件元素四元组中的动作构成动作集。
2.6利用{R1,...,Rm,...,RM}构造符合模型训练所需的数据结构。方法如下:
2.6.1初始化m=1;
2.6.2将Rm中的前N个事件构成上下文事件序列Em,即<e1,e2,...,en,...,eN>。
2.6.3构造K-1个干扰事件。采用随机函数从动作集中随机选取动词,再从原始事件序列Rm的新闻来源中随机选取出现的人或物补全主语宾语,构成干扰事件。
2.6.4将Rm中的第N+1个事件和K-1个干扰事件组成用于预测的第m个候选事件集合Cm,即Cm={c1,c2,...ck,...,cK},ck的数据结构和en一样。Em和Cm共同组成第m个事件组EEm,因此EEm中有N+K个事件,即e1,e2,...,en,...,eN和c1,c2,...ck,...,cK。
2.6.5随机排列第m个候选事件集合Cm中的事件,并记录Cm中真实发生的事件的序号作为真实序号gm。
2.6.6令m=m+1,如果m≤M,转步骤2.6.2;否则说明训练数据已经构造完毕,得到了训练数据{(EE1,g1),...,(EEm,gm),...,(EEM,gM)},转第三步。
第三步,元素编码模块对训练数据进行预处理,得到事件序列的token编码序列TS和动作序列的token编码序列TV-GR,将TS和TV-GR发送给Token表示模块,作为训练Token表示模块和事件预测层的训练数据。方法如下:
3.1初始化m=1;为描述方便,令e1,e2,...,en,...,eN和c1,c2,...ck,...,cK中的第i个事件为ei,1≤i≤N+K;
3.2处理第m个训练数据(EEm,gm)中的N+K个事件的文本集合中的缺失元素,并隐去其中的主角信息,方法是:
3.2.1初始化i=1;
3.2.2 ei的元素由步骤2.3中OpenNLP处理时得到,但是存在主语、宾语或补语的缺失等情况,导致ei的事件文本集合中部分元素为空,元素编码模块将空缺元素用字符“<pad>”(称为PAD令牌,预训练模型中的占位符)进行替换,避免引入无关字符的语义干扰;
3.2.3隐去ei中的主角信息。将ei的事件文本集合中的主角信息采用“X”字符予以替换;
3.2.4令i=i+1,如果i≤N+K,转步骤3.2.2;否则转步骤3.3。
3.3利用EEm中的Em和Cm构造虚拟事件序列和虚拟动作序列,将虚拟事件序列和虚拟动作序列转换成句子后进行分词编码,得到EEm对应的事件序列的token编码序列和EEm对应的动作序列的token编码序列方法是:
3.3.1初始化k=1;
3.3.2构建第k个虚拟事件序列Sk m并转换成句子,方法是:
3.3.2.1将Cm中第k个候选事件ck和Em组成对应的第k个虚拟事件序列Sk m:<e1,e2,...,en,...,eN,ck>;
3.3.2.2将Sk m中N+1个事件通过字符“##”连接,句子的头部和句子的末尾分别添加CLS令牌和SEP令牌,形成“CLSe1##e2##...##en##...,eN##ckSEP”的句式,其中事件en和ck都按照as,v,ao,ap的顺序拼接文本。
3.3.3构建Sk m对应的虚拟动作序列V-GRk m并转换成句子,方法是:
3.3.3.1将Sk m中N+1个事件的v-GR组合拼接成Sk m对应的虚拟动作序列V-GRk m:<v-GR1,v-GR2,...,v-GRn,...,v-GRN,v-GRN+k>;
3.3.3.2将V-GRk m中的v-GR1,v-GR2,...,v-GRn,...,v-GRN,v-GRN+k通过字符“##”连接,句子的头尾分别添加CLS令牌和SEP令牌,形成“CLSv-GR1##v-GR2##...##v-GRn##...,v-GRN##v-GRN+kSEP”的句式,所有的v-GR组合都按照v,GR的顺序拼接文本。
3.3.4利用Roberta的分词编码器(Tokenizer)将Sk m转换成的句子进行分词,得到token序列,并且通过查询RoBERTa的词表得到token序列的对应编码,即EEm对应的Sk m事件序列的token编码序列其中表示EEm中第n个事件en中的第D1(1≤D1≤maxLen1)个令牌编号。maxLen1为Sk m中en的token序列限定长度,maxLen1≥4。
3.3.5利用Roberta的分词编码器将V-GRk m转换的句子进行分词,得到动作的token序列,并查询RoBERTa的词表得到对应的编码,即EEm对应的动作序列V-GRk m的token编码序列 其中表示第n个动词及其语法关系v-GRn中的第D2(1≤D2≤maxLen2)个令牌编号。maxLen2为V-GRk m中的token序列限定长度,maxLen2≥2。
3.4令m=m+1,如果m≤M,转步骤3.2;否则说明得到了M条训练数据对应的所有事件序列的token编码序列集合TS,和M条训练数据对应的所有动作序列的token编码序列集合TV-GR,以及M条训练数据对应的真实事件序号G,G={g1,...,gm,...gM}构成的M条数据,即 第m条数据为数据,将M条数据发送给Token表示模块,转第四步。
第四步,使用训练数据训练Token表示模块和事件预测层,得到网络权重参数。
4.1初始化Token表示模块和事件预测层的参数:将Token表示模块中的RoBERTa中所有的网络载入已预训练好的参数(从“https://huggingface.co/roberta-base2021.5.6”下载)来实现初始化。将事件预测层中的权重矩阵W中所有的元素和偏置b都初始化为[0,1]之间的随机数,表示W是大小为2d×1的矩阵,矩阵元素值均为实数,表示b为实数,d为Token表示模块中token对应向量的长度。
4.2设置网络训练参数:训练参数包括网络模型学习率(Learning Rate)、数据批量大小(Batch Size)、测试步长Num Step(每完成一个步长进行一次模型测试)、L2正则化参数和训练轮数(Epochs),设置网络模型学习率Learning Rate=10-5,数据批量大小BatchSize=16,测试步长Num Step=1000,L2正则化参数=10-8,训练轮数Epochs=3。
4.3训练Token表示模块和事件预测层。方法是:Token表示模块从元素编码模块接收TS和TV-GR,进行计算,得到TS和TV-GR中所有令牌的事件序列的向量表示Vs和动作序列的向量表示VV-GR,再从Vs和VV-GR中提取CLS的向量表示,拼接成CLS合并向量表示Vcls,将Vcls输入发送给事件预测层。事件预测层由Vcls计算得到候选事件的得分。根据候选事件的得分和真实序号来计算损失值,最小化损失值并同时更新Token表示模块和事件预测层网络参数,直到符合提前停止的要求或满足训练轮数要求,得到Token表示模块和事件预测层的权重参数。
方法如下:
4.3.1将3.4步构造得到的M条数据 分为两个部分:训练集和测试集,记训练集的数据量为M1,测试集的数据量为M2,且M1∶M2=8∶2。训练集用于网络参数的更新,测试集用于判断训练是否过拟合。令训练集中事件token编码序列集合为TS训,令测试集中事件token编码序列集合为TS测。令训练集中动作token编码序列集合为TV-GR训,令测试集中动作token编码序列集合为TV-GR测。
4.3.2初始化训练迭代参数n_epoch=1,令测试集上系统的当前准确率curr_acc=0,测试集上系统的最佳准确率opti_acc=0;
4.3.3 Token表示模块接收训练集中的TS训和TV-GR训,输出对应的向量表示,并选择其中的CLS向量,拼接成CLS合并向量表示Vcls。事件预测层接收Vcls进行计算得到候选事件的得分,方法是:
4.3.3.1初始化m=1;
其中表示事件en中的第D1个令牌编号, 为第n个动词及其语法关系v-GRn第D2个令牌编号,Token表示模块利用Roberta对接收的和进行嵌入表示,得到对应的具有上下文特征的事件序列的向量表示集合和动作序列的向量表示集合其中中的第k项 中的第k项 Token表示模块从和中提取CLS令牌的向量表示,依次拼接成K个CLS合并向量表示事件预测层接收并输出候选事件的得分s1,...,sk,...,sK。方法是:
4.3.3.2.2Token表示模块利用Roberta对进行嵌入、线性变换、多头自注意力、池化操作,得到对应的具有上下文特征的向量表示其中为令牌对应的向量表示,和分别为CLS令牌和SEP令牌在中的向量表示,并且所有向量表示的长度为d,将放到中。
4.3.3.2.3Token表示模块利用Roberta对进行嵌入、线性变换、多头自注意力、池化操作,得到对应的具有上下文特征的向量表示其中为令牌对应的向量表示,和为CLS令牌和SEP令牌在中的向量表示,并且所有向量表示的长度为d,将放到中。
4.3.3.2.6令k=k+1,如果k≤K,转步骤4.3.3.2.2;否则说明得到了对应的EEm中K个候选事件的得分也得到了对应的具有上下文特征的事件序列的向量表示集合和动作序列的向量表示集合 转步骤4.3.3.3。
4.3.3.4令m=m+1,如果m>M1,说明系统已经完成了一轮训练,转步骤4.3.5;如果m≤M1且m是训练步长Num Step的倍数,则转步骤4.3.4进行过拟合检查,如果m≤M1且m不是Num Step的倍数,转步骤4.3.3.2继续训练。
4.3.4采用测试集对脚本事件预测系统进行过拟合检查,并判断是否提前结束训练,方法是:
4.3.4.1初始化迭代参数mt=1;
4.3.4.2Token表示模块接收测试集中的和token编码序列利用Roberta得到的具有上下文特征的向量表示和Token表示模块从和中提取两种序列中的CLS令牌的向量表示,分别拼接成K个CLS合并向量表示其中是和由拼接而成,事件预测层接收并输出对应的K个候选事件的得分
4.3.4.4令mt=mt+1,如果mt>M2,说明得到了测试集所有的数据上的预测结果,转步骤4.3.4.5;如果mt≤M2,转步骤4.3.4.2。
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%,表示没有出现明显的过拟合问题,转步骤4.3.3.2继续训练;如果opti_acc-curr_acc>1.5%,说明满足提前停止训练的条件,训练结束,将Token表示模块中的Roberta模型参数和事件预测层的权重矩阵W和偏置b存储备用,转第五步。
4.3.6使用Adam优化算法对Loss最小化以更新Token表示模块和事件预测层的网络权重参数。
4.3.7令n_epoch=n_epoch+1,如果n_epoch≤Epochs,转4.3.3步;如果n_epoch>Epochs,说明训练满足训练轮数要求,训练结束,将Token表示模块中的Roberta模型参数和事件预测层的权重矩阵W和偏置b存储备用,转第五步。
第五步,训练后的脚本事件预测系统接收用户输入的已发生的事件序列,进行元素编码、Token表示,根据已发生的事件序列预测候选事件集合中最可能发生的事件。方法是:
5.1元素编码模块从键盘或文件接收用户输入的已发生的事件序列,即文本形式的事件组EE0。事件组EE0包含已观测到的上下文事件序列E0=<e1 0,e2 0,...,en 0,...,eN 0>和候选事件集合C0={c1 0,c2 0,...ck 0,...,cK 0}。
5.2.1初始化k=1;
5.2.2构建EE0对应的虚拟事件序列Sk 0并转换成句子,方法是:
5.2.2.1将C0中第k个候选事件ck 0和E0组成对应的第k个虚拟事件序列Sk 0:<e1 0,e2 0,...,en 0,...,eN 0,ck 0>;
5.2.2.2将Sk 0中的事件通过字符“##”连接Sk 0中的所有事件,句子的头部和句子的末尾分别添加CLS令牌和SEP令牌,形成“CLSe1 0##e2 0##...##en 0##...,eN 0##ck 0SEP”的句式。其中en 0和ck 0按照as,v,ao,ap的顺序拼接文本。
5.2.3构建虚拟动作序列V-GRk 0并转换成句子,方法是:
5.2.3.1将Sk 0中N+1个事件的动作v和GR的组合(记作v-GR0),拼接成对应的虚拟动作序列V-GRk 0:<v-GR1 0,v-GR2 0,...,v-GRn 0,...,v-GRN 0,v-GRN+k 0>;
5.2.3.2将序列V-GRk 0中的v-GRn通过字符“##”连接,句子的头尾分别添加CLS令牌和SEP令牌,形成“CLSv-GR1 0##v-GR2 0##...##v-GRn 0##...,v-GRN 0##v-GRN+k 0SEP”的句式。其中v-GRn 0按照v,GR的顺序拼接文本。
5.2.4利用Roberta的分词编码器将Sk 0转换的句子进行分词得到输入事件token序列,并且通过查询RoBERTa的词表得到输入事件token序列对应的编码,即输入事件序列的token编码序列
5.2.5利用Roberta的分词编码器将V-GRk 0转换的句子进行分词得到输入动作token序列,并且通过查询RoBERTa的词表得到输入动作token序列对应的编码,即输入动作序列的token编码序列
5.3训练后的Token表示模块(载入了训练后的Roberta模型参数的Token表示模块),对和进行嵌入、线性变换、多头自注意力、池化操作,得到具有上下文特征的向量表示和Token表示模块从中提取两种序列中的CLS令牌的向量表示拼接成CLS合并向量表示训练后的事件预测层(载入了训练后的权重矩阵W和偏置b的事件预测层)接收并输出候选事件的得分方法是:
5.3.1初始化k=1;
为验证本发明的效果,使用验证集对模型的预测能力(准确率)进行评估,结果如图3所示,在纽约时报数据集的验证集上,本发明比现有的方法中最好的RoBERTa+Representation Fusion的准确率还提升了3.69%。现有方法中的Event-Comp、PairLSTM和SAM-Net采用的是静态词嵌入的方法,在此基础上使用全连接网络或者LSTM进行了事件表示的更新;SGNN和SGNN+Int+Senti采用了静态图嵌入的方法,之后使用GCN进行事件表示的更新。这些方法难以很好应对动词的一词多义的问题。而RoBERTa+Representation Fusion仅仅将事件简单的连接在一起,没有构建突出动作场景信息的数据结构,不便于系统捕捉动作场景的连续特征。
Claims (11)
1.一种基于动作场景强化的脚本事件预测方法,其特征在于包括以下步骤:
第一步,构建脚本事件预测系统,脚本事件预测系统由元素编码模块、Token表示模块、事件预测层构成;
元素编码模块与Token表示模块相连,从键盘或文件接收用户输入的文本形式的事件组,记作EE;事件组EE包含N条已观测到的上下文事件和K条候选事件,N条已观测到的上下文事件用上下文事件序列E表示,E=<e1,e2,...,en,...,eN>,en是第n个上下文事件;K条候选事件用候选事件集合C表示,C={c1,c2,...ck,...,cK},ck是第k个候选事件;一条事件包含一个事件元素四元组(as,v,ao,ap)、动作v与主角人物的语法关系GR,事件表示为文本集合{as,v,ao,ap,GR},其中v表示事件中的动作,as,ao,ap则分别指代与动词相关的主语、宾语和补语,GR∈{subj,obj,prep},subj,obj,prep分别表示主角人物为动作v的主语、谓语和补语关系,N和K为正整数,1≤n≤N,1≤k≤K;元素编码模块将ck和E组成第k条虚拟事件序列Sk:<e1,e2,...,en,...,eN,ck>,将Sk中动作和GR的组合记作v-GR,并拼接成对应的虚拟动作序列V-GRk:<v-GR1,v-GR2,...,v-GRn,...,v-GRN,v-GRN+k>;将Sk和V-GRk分别转换成句子,句子的头部和末尾分别添加字符“<s>”即CLS令牌和字符“</s>”即SEP令牌,用于表示句子开头和结尾;对Sk或V-GRk转换成的句子进行分词,得到事件序列的token编码序列和动作序列的token编码序列经过K次循环,元素编码模块得到和将和发送给Token表示模块;
Token表示模块与元素编码模块、事件预测层相连,是一个Roberta模型;Token表示模块从元素编码模块接收和进行嵌入、线性变换、多头自注意力、池化操作,分别得到相应的两种token动态交互的向量表示,即事件序列的向量表示和动作序列对应的向量表示;Token表示模块从事件序列的向量表示中提取出事件CLS令牌的向量表示从动作序列对应的向量表示中提取出动作CLS令牌的向量表示将连接成包含候选事件ck特征的CLS合并向量表示经过K次循环,得到发送给事件预测层;
事件预测层与Token表示模块相连,是一个由全连接层组成的神经网络,对从Token表示模块接收的进行处理,输出候选事件集合C的K个得分s1,...,sk,...sK,通过排序,取最大得分的事件序号作为脚本事件预测结果,记为y;
第二步,准备训练脚本事件预测系统所需的数据;方法是:
2.1选择事件性新闻文本作为原始语料;
2.2利用C&C工具对原始语料进行词性标注和依赖分析,即将原始语料中的句子切分成多个标注了词性的词语集合,词语集合中的词语根据句子的语法依赖关系进行关联;
2.3利用OpenNLP函数对词语集合进行短语结构处理,得到句子成分即主语、谓语、宾语和补语的短语文本,将这些短语文本作为事件元素四元组(as,v,ao,ap);通过共指消解,将原始语料库中新闻文本中涉及同一主角的事件元素四元组按顺序连接成一个原始事件序列,并记录动作v与主角人物的语法关系GR;
2.4从提取的原始事件序列中选取出至少包含N+1个事件的原始事件序列,得到M条事件序列长度符合要求的原始事件序列集合{R1,...,Rm,...,RM},1≤m≤M为正整数,原始事件序列Rm包含N+1个事件,每个事件包含文本集合{as,v,ao,ap,GR};
2.5从{R1,...,Rm,...,RM}的每个原始事件序列中取出事件元素四元组中的动作构成动作集;
2.6利用{R1,...,Rm,...,RM}构造符合模型训练所需的数据结构,得到训练数据{(EE1,g1),...,(EEm,gm),...,(EEM,gM)},第m个事件组EEm由第m个上下文事件序列Em和第m个候选事件集合Cm共同组成,Em=<e1,e2,...,en,...,eN>,Cm={c1,c2,...ck,...,cK},ck的数据结构和en一样,gm为Cm中真实发生的事件的序号,称为真实序号,转第三步;
第三步,元素编码模块对训练数据进行预处理,得到事件序列的token编码序列TS和动作序列的token编码序列TV-GR,将TS和TV-GR发送给Token表示模块,方法是:
3.1初始化m=1;令e1,e2,...,en,...,eN和c1,c2,...ck,...,cK中的第i个事件为ei,1≤i≤N+K;
3.2处理第m个训练数据(EEm,gm)中的N+K个事件的文本集合中的缺失元素,并隐去其中的主角信息;
3.3利用EEm中的Em和Cm构造虚拟事件序列和虚拟动作序列,将虚拟事件序列和虚拟动作序列转换成句子后进行分词编码,得到EEm对应的事件序列的token编码序列和EEm对应的动作序列的token编码序列方法是:
3.3.1初始化k=1;
3.3.2构建第k个虚拟事件序列Sk m并转换成句子,Sk m为<e1,e2,...,en,...,eN,ck>;
3.3.3构建Sk m对应的虚拟动作序列V-GRk m并转换成句子;
3.3.4利用Roberta的分词编码器Tokenizer将Sk m转换成的句子进行分词,得到token序列,并且通过查询RoBERTa的词表得到token序列的对应编码,即EEm对应的Sk m事件序列的token编码序列其中表示EEm中en中的第D1个令牌编号;maxLen1为Sk m中en的token序列限定长度,maxLen1≥4,1≤D1≤maxLen1;
3.3.5利用Roberta的分词编码器将V-GRk m转换的句子进行分词,得到动作的token序列,并查询RoBERTa的词表得到对应的编码,即EEm对应的动作序列V-GRk m的token编码序列 其中表示第n个动词及其语法关系v-GRn中的第D2个令牌编号;maxLen2为V-GRk m中的token序列限定长度,maxLen2≥2,1≤D2≤maxLen2;
3.4令m=m+1,如果m≤M,转步骤3.2;否则说明得到了M条训练数据对应的所有事件序列的token编码序列集合TS,和M条训练数据对应的所有动作序列的token编码序列集合TV-GR,以及M条训练数据对应的真实事件序号G,G={g1,...,gm,...gM}构成的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表示模块从元素编码模块接收TS和TV-GR,进行计算,得到TS和TV-GR中所有令牌的事件序列的向量表示Vs和动作序列的向量表示VV-GR,再从Vs和VV-GR中提取CLS的向量表示,拼接成CLS合并向量表示Vcls,将Vcls输入发送给事件预测层;事件预测层由Vcls计算得到候选事件的得分;根据候选事件的得分和真实序号来计算损失值,最小化损失值并同时更新Token表示模块和事件预测层网络参数,直到符合提前停止的要求或满足训练轮数要求,得到Token表示模块和事件预测层的权重参数;将Token表示模块中的Roberta模型参数和事件预测层的权重矩阵W和偏置b存储备用,转第五步;
第R步,训练后的脚本事件预测系统接收用户输入的已发生的事件序列,进行元素编码、Token表示,根据已发生的事件序列预测候选事件集合中最可能发生的事件,方法是:
5.1元素编码模块从键盘或文件接收用户输入的已发生的事件序列,即文本形式的事件组EE0;事件组EE0包含已观测到的上下文事件序列E0=<e1 0,e2 0,...,en 0,...,eN 0>和候选事件集合C0={c1 0,c2 0,...ck 0,...,cK 0};
5.2.3构建虚拟动作序列V-GRk 0并转换成句子;
5.2.4利用Roberta的分词编码器将Sk 0转换的句子进行分词得到输入事件token序列,并且通过查询RoBERTa的词表得到输入事件token序列对应的编码,即输入事件序列的token编码序列
5.2.5利用Roberta的分词编码器将V-GRk 0转换的句子进行分词得到输入动作token序列,并且通过查询RoBERTa的词表得到输入动作token序列对应的编码,即输入动作序列的token编码序列
5.3训练后的Token表示模块即载入了训练后的Roberta模型参数的Token表示模块对和进行嵌入、线性变换、多头自注意力、池化操作,得到具有上下文特征的向量表示和训练后的Token表示模块从中提取两种序列中的CLS令牌的向量表示拼接成CLS合并向量表示训练后的事件预测层即载入了训练后的权重矩阵W和偏置b的事件预测层接收并输出候选事件的得分力法是:
5.3.1初始化k=1;
2.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于2.1步所述选择事件性新闻文本作为原始语料的选择依据是要求事件性新闻文本真实可信,并且涵盖主角参与的一系列事件。
3.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于2.6步所述构造符合模型训练所需的数据结构的方法是:
2.6.1初始化m=1;
2.6.2将Rm中的前N个事件构成上下文事件序列Em,即<e1,e2,...,en,...,eN>;
2.6.3构造K-1个干扰事件;采用随机函数从动作集中随机选取动词,再从原始事件序列Rm的新闻来源中随机选取出现的人或物补全主语宾语,构成干扰事件;
2.6.4将Rm中的第N+1个事件和K-1个干扰事件组成用于预测的第m个候选事件集合Cm,即Cm={c1,c2,...ck,...,cK},ck的数据结构和en一样;Em和Cm共同组成第m个事件组EEm,EEm中有N+K个事件,即e1,e2,...,en,...,eN和c1,c2,...ck,...,cK;
2.6.5随机排列Cm中的事件,并记录Cm中真实发生的事件的序号作为真实序号gm;
2.6.6令m=m+1,如果m≤M,转步骤2.6.2;否则说明得到了训练数据{(EE1,g1),...,(EEm,gm),...,(EEM,gM)}。
4.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于3.2步所述处理第m个训练数据(EEm,gm)中的N+K个事件的文本集合中的缺失元素,并隐去其中的主角信息的方法是;
3.2.1初始化i=1;
3.2.2元素编码模块将ei的空缺元素用字符“<pad>”进行替换,“<pad>”称为PAD令牌,是预训练模型中的占位符;
3.2.3隐去ei中的主角信息;将ei的事件文本集合中的主角信息采用“X”字符予以替换;
3.2.4令i=i+1,如果i≤N+K,转步骤3.2.2;否则结束。
5.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于3.3.2步所述构建虚拟事件序列Sk m并转换成句子的方法是:
3.3.2.1将Cm中第k个候选事件ck和Em组成对应的第k个虚拟事件序列Sk m:<e1,e2,...,en,...,eN,ck>;
3.3.2.2将Sk m中N+1个事件通过字符“##”连接,句子的头部和句子的末尾分别添加CLS令牌和SEP令牌,形成“CLSe1##e2##...##en##...,eN##ckSEP”的句式,其中事件en和ck都按照as,v,ao,ap的顺序拼接文本。
6.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于3.3.3步所述构建Sk m对应的虚拟动作序列V-GRk m并转换成句子的方法是:
3.3.3.1将Sk m中N+1个事件的v-GR组合拼接成Sk m对应的虚拟动作序列V-GRk m:<v-GR1,v-GR2,...,v-GRn,...,v-GRN,v-GRN+k>;
3.3.3.2将V-GRk m中的v-GR1,v-GR2,...,v-GRn,...,v-GRN,v-GRN+k通过字符“##”连接,句子的头尾分别添加CLS令牌和SEP令牌,形成“CLSv-GR1##v-GR2##...##v-GRn##...,v-GRN##v-GRN+kSEP”的句式,其中v-GR组合组合都按照v,GR的顺序拼接文本。
7.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于4.3步所述训练Token表示模块和事件预测层的方法是:
4.3.1将3.4步构造得到的M条数据 分为两个部分:训练集和测试集,记训练集的数据量为M1,测试集的数据量为M2,且M1∶M2=8∶2;训练集用于网络参数的更新,测试集用于判断训练是否过拟合;令训练集中事件token编码序列集合为TS训,令测试集中事件token编码序列集合为TS测;令训练集中动作token编码序列集合为TV-GR训,令测试集中动作token编码序列集合为TV-GR测;
4.3.2初始化训练迭代参数n_epoch=1,令测试集上系统的当前准确率curr_acc=0,测试集上系统的最佳准确率opti_acc=0;
4.3.3Token表示模块接收训练集中的TS训和TV-GR训,输出对应的向量表示,并选择其中的CLS向量,拼接成CLS合并向量表示Vcls;事件预测层接收Vcls进行计算得到候选事件的得分,方法是:
4.3.3.1初始化m=1;
4.3.3.2 Token表示模块接收TS训训练集中的第m条数据中的事件token编码序列 和TV-GR训中第m条数据中的动作token编码序列 其中表示事件en中的第D1个令牌编号, 为第n个动词及其语法关系v-GRn第D2个令牌编号,Token表示模块利用Roberta对接收的和进行嵌入表示,得到对应的具有上下文特征的事件序列的向量表示集合和动作序列的向量表示集合 是对应的具有上下文特征的向量表示, 是对应的具有上下文特征的向量表示;Token表示模块从和中提取CLS令牌的向量表示,依次拼接成K个CLS合并向量表示事件预测层接收并输出候选事件的得分s1,...,sk,...,sK;
4.3.3.4令m=m+1,如果m>M1,说明测试集对脚本事件预测系统已经完成了一轮训练,转步骤4.3.5;如果m≤M1且m是训练步长Num Step的倍数,则转步骤4.3.4进行过拟合检查,如果m≤M1且m不是Num Step的倍数,转步骤4.3.3.2继续训练;
4.3.4采用测试集对脚本事件预测系统进行过拟合检查,并判断是否提前结束训练,如果没有出现明显的过拟合问题,转步骤4.3.3.2继续训练;如果满足提前停止训练的条件,将Token表示模块中的Roberta模型参数和事件预测层的权重矩阵W和偏置b存储备用,训练结束;
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合并向量表示事件预测层接收并输出候选事件的得分s1,...,sk,...,sK的方法是:
4.3.3.2.2 Token表示模块利用Roberta对进行嵌入、线性变换、多头自注意力、池化操作,得到对应的具有上下文特征的向量表示 其中为令牌对应的向量表示,和分别为CLS令牌和SEP令牌在中的向量表示,并且所有向量表示的长度为d,将放到中;
4.3.3.2.3 Token表示模块利用Roberta对进行嵌入、线性变换、多头自注意力、池化操作,得到对应的具有上下文特征的向量表示 其中为令牌对应的向量表示,和为CLS令牌和SEP令牌在中的向量表示,并且所有向量表示的长度为d,将放到中;
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.4令mt=mt+1,如果mt>M2,说明得到了测试集所有的数据上的预测结果,转步骤4.3.4.5;如果mt≤M2,转步骤4.3.4.2;
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步所述利用E0和C0构造虚拟事件序列和虚拟动作序列,将虚拟事件序列和虚拟动作序列转换成句子后进行分词编码,得到EE0对应的事件token编码序列和EE0对应的动作token编码序列方法是:
5.2.1初始化k=1;
5.2.2构建EE0对应的虚拟事件序列Sk 0并转换成句子,方法是:
5.2.2.1将C0中第k个候选事件ck 0和E0组成对应的第k个虚拟事件序列Sk 0:<e1 0,e2 0,...,en 0,...,eN 0,ck 0>;
5.2.2.2将Sk 0中的事件通过字符“##”连接Sk 0中的所有事件,句子的头部和句子的末尾分别添加CLS令牌和SEP令牌,形成“CLSe1 0##e2 0##...##en 0##...,eN 0##ck 0SEP”的句式;其中en 0和ck 0按照as,v,ao,ap的顺序拼接文本。
11.如权利要求1所述的一种基于动作场景强化的脚本事件预测方法,其特征在于5.2.3步所述构建虚拟动作序列V-GRk 0并转换成句子的方法是:
5.2.3.1将Sk 0中动作v和GR的组合v-GR0,拼接成对应的虚拟动作序列V-GRk 0:<v-GR1 0,v-GR2 0,...,v-GRn 0,...,v-GRN 0,v-GRN+k 0>;
5.2.3.2将序列V-GRk 0中的v-GRn通过字符“##”连接,句子的头尾分别添加CLS令牌和SEP令牌,形成“CLSv-GR1 0##v-GR2 0##...##v-GRn 0##...,v-GRN 0##v-GRN+k 0SEP”的句式;其中v-GRn 0按照v,GR的顺序拼接文本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111202221.3A CN113919319B (zh) | 2021-10-15 | 2021-10-15 | 基于动作场景强化的脚本事件预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111202221.3A CN113919319B (zh) | 2021-10-15 | 2021-10-15 | 基于动作场景强化的脚本事件预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113919319A CN113919319A (zh) | 2022-01-11 |
CN113919319B true CN113919319B (zh) | 2022-09-13 |
Family
ID=79240605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111202221.3A Active CN113919319B (zh) | 2021-10-15 | 2021-10-15 | 基于动作场景强化的脚本事件预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113919319B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116227598B (zh) * | 2023-05-08 | 2023-07-11 | 山东财经大学 | 一种基于双阶段注意力机制的事件预测方法、设备及介质 |
CN116738974B (zh) * | 2023-05-10 | 2024-01-23 | 济南云微软件科技有限公司 | 一种基于泛化因果网络的语言模型生成方法、设备及介质 |
CN117495071B (zh) * | 2023-12-29 | 2024-05-14 | 安徽思高智能科技有限公司 | 一种基于预测性日志增强的流程发现方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111259987B (zh) * | 2020-02-20 | 2023-12-29 | 民生科技有限责任公司 | 一种基于bert的多模型融合提取事件主体的方法 |
CN112528676B (zh) * | 2020-12-18 | 2022-07-08 | 南开大学 | 文档级别的事件论元抽取方法 |
-
2021
- 2021-10-15 CN CN202111202221.3A patent/CN113919319B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113919319A (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113919319B (zh) | 基于动作场景强化的脚本事件预测方法 | |
CN112069811B (zh) | 多任务交互增强的电子文本事件抽取方法 | |
CN109947912A (zh) | 一种基于段落内部推理和联合问题答案匹配的模型方法 | |
CN112667818B (zh) | 融合gcn与多粒度注意力的用户评论情感分析方法及系统 | |
CN111597830A (zh) | 基于多模态机器学习的翻译方法、装置、设备及存储介质 | |
CN111651974B (zh) | 一种隐式篇章关系分析方法和系统 | |
CN111966812B (zh) | 一种基于动态词向量的自动问答方法和存储介质 | |
CN110222163A (zh) | 一种融合cnn与双向lstm的智能问答方法及系统 | |
CN112487189B (zh) | 一种图卷积网络增强的隐式篇章文本关系分类方法 | |
CN111401081A (zh) | 神经网络机器翻译方法、模型及模型形成方法 | |
Gao et al. | An over-parameterized exponential regression | |
CN109614611B (zh) | 一种融合生成非对抗网络与卷积神经网络的情感分析方法 | |
CN111914553B (zh) | 一种基于机器学习的金融信息负面主体判定的方法 | |
CN110597968A (zh) | 一种回复选择方法及装置 | |
CN114064117A (zh) | 一种基于字节码和神经网络的代码克隆检测方法及系统 | |
CN117094291B (zh) | 基于智能写作的自动新闻生成系统 | |
CN115204143A (zh) | 一种基于prompt的文本相似度计算方法及系统 | |
Zhang et al. | Description-enhanced label embedding contrastive learning for text classification | |
CN113420117A (zh) | 一种基于多元特征融合的突发事件分类方法 | |
Popattia et al. | Guiding attention using partial-order relationships for image captioning | |
CN115422388B (zh) | 一种视觉对话方法及系统 | |
CN111259651A (zh) | 一种基于多模型融合的用户情感分析方法 | |
Muñoz-Valero et al. | Using recurrent neural networks for part-of-speech tagging and subject and predicate classification in a sentence | |
Priyadarshana et al. | Who Says What (WSW): A Novel Model for Utterance-Aware Speaker Identification in Text-Based Multi-Party Conversations. | |
Lee et al. | A two-level recurrent neural network language model based on the continuous Bag-of-Words model for sentence classification |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |