Fact-based Text Editing,基于事实的文本编辑,2020,ACL,https://arxiv.org/pdf/2007.00916.pdf
Abstract
我们提出了一种新的文本编辑任务,称为基于事实的文本编辑,其目标是修改给定的文档,以更好地描述知识库中的事实(例如,几个三元组)。这项任务在实践中很重要,因为反映真实是文本编辑的一个共同要求。首先,我们提出了一种自动生成数据集的方法,用于基于事实的文本编辑研究,其中每个实例由一个草稿文本、一个修订文本和多个以三元组表示的事实组成。
我们将该方法应用到两个公共table-to-text数据集中,得到两个由233k和37k个实例组成的新数据集。接下来,我们提出了一种新的基于事实的文本编辑的神经网络结构FACTEDITOR,它通过使用缓冲区、流和内存引用给定的事实来编辑草稿文本。解决这个问题的一个简单方法是使用一个编码器-解码器模型。我们在两个数据集上的实验结果表明FACTEDITOR在保真度和流畅性方面优于编解码方法。结果还表明FACTEDITOR的推理速度比编解码方法快。
Introduction
文本的计算机自动编辑是一个重要的应用,它可以帮助人类的作者在准确性、流畅性等方面写出更好的文档。与从头开始自动生成文本相比,这项任务更简单、更实用,近年来备受关注(Yang et al.,2017;Yin et al.,2019)。在本文中,我们考虑了一个新的和具体的设置,称为基于事实的文本编辑,其中给出了一个草稿文本和几个事实(以三倍表示),该系统旨在通过添加缺失的事实和删除不支持的事实来修改文本。表1给出了一个任务示例。

表1:基于事实的文本编辑示例。事实用三元组表示。绿色的事实出现在草稿文本和三元组文本中。橙色的事实出现在草稿文本中,但没有出现在三元组文本中。蓝色的事实没有出现在文本草案中,而是出现在三元组文本中。基于事实的文本编辑的任务是在三元组的基础上编辑文本草稿,删除不支持的事实并插入缺失的事实,同时保留支持的事实。
据我们所知,以前没有任何工作能解决这个问题。在文本到文本生成中,给定文本,系统会自动创建另一个文本,其中新文本可以是另一种语言的文本(机器翻译)、原始文本的摘要(摘要)或格式更好的文本(文本编辑)。在表到文本生成中,给定一个包含三个事实的表,系统会自动组成一个文本,该文本描述事实。前者是文本到文本的问题,后者是表到文本的问题。相比之下,基于事实的文本编辑可以看作是一个“文本&表格到文本”的问题。
首先,我们设计了一种自动创建基于事实的文本编辑数据集的方法。最近,已经创建并发布了几个表到文本的数据集,这些数据集由成对的事实和相应的描述组成。我们在我们的方法中利用了这类数据。我们首先检索事实及其描述。接下来,我们将描述作为修改后的文本,使用多个规则根据事实自动生成草稿文本。我们在WEBNLG(Gardent et al.,2017)和ROTOWIRE的基础上构建了两个基于事实的文本编辑数据集,分别由233k和37k个实例组成(Wiseman et al.,2017)
其次,我们提出了一个基于事实的文本编辑模型FACTEDITOR。我们可以使用一个编码器-解码器模型,例如编码器-编码器模型来执行任务。编码器-编码器模型隐式地表示将草稿文本转换为修订文本的操作。相反,FACTEDITOR显式地表示文本编辑的操作,包括Keep、Drop和Gen,分别表示保留、删除和生成单词。该模型利用一个缓冲区来存储草稿文本,一个流来存储修改后的文本,以及一个存储事实的内存。它还使用神经网络来控制整个编辑过程。FACTEDITOR比编解码器模型具有更低的时间复杂度,因此它可以更有效地编辑文本。
实验结果表明,FACTEDITOR在文本编辑的保真度和流畅性方面优于使用encoder-decorder的基线模型,并且FACTEDITOR可以比编解码器模型更快地执行文本编辑。
Data Creation
table-to-text有两个基准数据集,WEBNLG2和ROTOWIRE。我们在此基础上创建两个数据集,分别称为WEBEDIT和ROTOEDIT。在数据集中,每个实例都由一个表(结构化数据)和一个描述几乎相同内容的关联文本(非结构化数据)组成。
对于每个实例,我们将表视为事实的三元组,并将相关文本作为修订文本,然后自动创建一个草案文本。三元组表示为T={t}\mathcal{T}=\{t\}T={t}。每个三元组{t}\{t\}{t}由主语、谓语和宾语组成,表示为t=(subj,pred,obj)t = (subj, pred, obj)t=(subj,pred,obj).为了简单起见,我们把主客体的名词或名词短语简单地称为实体。修订后的文本是用yyy表示的一系列单词,草案文本是用xxx表示的一系列单词。
考虑到三元组T\mathcal{T}T和修改后的文本yyy,我们的目标是创建一个草案文本xxx,使得xxx与T\mathcal{T}T不一致,与yyy相反,因此需要从xxx到yyy进行文本编辑。
我们的方法首先为所有三元组和修订文本创建模板,然后根据它们的相关模板为每组三元组和修订文本构建一个草稿文本。
Creation of templates
对于每一个实例,我们的方法首先对三元组T\mathcal{T}T和修改后的文本yyy中的实体词进行去语法化,得到一组三元组模板T′\mathcal{T}^{\prime}T′和一个修改后的模板y′y^{\prime}y′。例如,给定T=(Baymax,voice,ScottAdsit)\mathcal{T}={(Baymax,voice,Scott Adsit)}T=(Baymax,voice,ScottAdsit)和yyy=“Scott Adsit does the voice For Baymax”,它将生成一组三元组模板T′\mathcal{T}^{\prime}T′={(AGENT1,voice,PATIENT-1)}和修改后的模板y′y^{\prime}y′=“AGENT-1 does the voice for PATIENT-1”
然后我们的方法收集所有三元组模板T′\mathcal{T}^{\prime}T′和修改模板y′y^{\prime}y′,并将它们保存在一个键值存储区中,y′y^{\prime}y′是一个键,T′\mathcal{T}^{\prime}T′是一个值。
Creation of draft text
接下来,我们的方法使用一组三元组模板T′\mathcal{T}^{\prime}T′和一个修改过的模板y′y^{\prime}y′构造一个草稿文本x。
为了简单起见,它只考虑在文本编辑中使用插入或删除,并且可以很容易地将其扩展到更复杂的设置。请注意,数据创建的过程与文本编辑的过程相反。

在得到草稿模板x′x^{\prime}x′后,我们的方法将其字典化以获得草稿文本xxx,其中词典(实体词)从相应的修订文本yyy中收集。我们用我们的方法得到两个数据集,分别称为WEBEDIT和ROTOEDIT。表3给出了数据集的统计数据。
在WEBEDIT数据中,有时实体只出现在subject的三元组中。在这种情况下,我们也让它们出现在obj中,为此,我们为每个sub引入一个额外的三元组(ROOT、IsOf、subj),其中ROOT是一个虚拟实体。

表3:WEBEDIT和ROTOEDIT统计,其中#D为实例数,#Wd和#Wr分别为草稿和修订文本的总字数,#S为句子总数。
FACTEDITOR
FACTEDITOR将草稿文本转换为基于给定三元组的修订文本。该模型由三个组件组成,一个用于存储草稿文本及其表示的缓冲区,一个用于存储修订文本及其表示的流,以及一个用于存储三元组及其表示形式的内存,如图1所示。
FACTEDITOR扫描缓冲区中的文本,将缓冲区中的文本部分复制到流中(如果它们是在内存中的三元组中描述的),如果文本部分在三元组中没有提及,则删除这些部分,并将next的新部分插入到仅以三元组显示的流中。
FACTEDITOR的实际处理是从缓冲区中给定的单词序列和内存中的三元组生成一个单词序列到流中。采用神经网络控制整个编辑过程。

Neural Network
Initialization
FACTEDITOR首先初始化缓冲区、流和内存中内容的表示。有一个与存储器相关联的前馈网络,用于创建三元组的嵌入。设M表示三元组的个数。这个三元组的嵌入表示为tj,j=1,⋯Mt_{j}, j=1, \cdots Mtj,j=1,⋯M。
tj=tanh(Wt⋅[ejsubj;ejpred;ejobj]+bt)\boldsymbol{t}_{j}=\tanh \left(\boldsymbol{W}_{\mathrm{t}} \cdot\left[\boldsymbol{e}_{j}^{\mathrm{subj}} ; \boldsymbol{e}_{j}^{\mathrm{pred}} ; \boldsymbol{e}_{j}^{\mathrm{obj}}\right]+\boldsymbol{b}_{\mathrm{t}}\right)tj=tanh(Wt⋅[ejsubj;ejpred;ejobj]+bt)
where Wt\boldsymbol{W}_{\mathrm{t}}Wt and bt\boldsymbol{b}_{\mathrm{t}} \quadbt denote parameters ejsubj j,ejpred ,ejobj e_{j}^{\text {subj } j}, e_{j}^{\text {pred }}, e_{j}^{\text {obj }} \quadejsubj j,ejpred ,ejobj denote \quad the \quad embeddings of subject, predicate, and object of triple tj,t_{j},tj, and
[;][;][;] denotes vector concatenation.
有一个与缓冲区相关联的双向LSTM,用于创建草稿文本单词的嵌入。嵌入量为b=BILSTM(x),其中x=(x1⋯xN)x=(x1 \cdots x_N)x=(x1⋯xN)是单词嵌入的列表,b=(b1⋯,bN)b=(b1 \cdots,b_N)b=(b1⋯,bN)是单词表示的列表,其中N表示单词的数量。
有一个LSTM与流关联,用于表示流的隐藏状态。第一个隐藏状态初始化为
s1=tanh(Ws⋅[∑i=1NbiN;∑j=1MtjM]+bs)s_{1}=\tanh \left(\boldsymbol{W}_{s} \cdot\left[\frac{\sum_{i=1}^{N} \boldsymbol{b}_{i}}{N} ; \frac{\sum_{j=1}^{M} \boldsymbol{t}_{j}}{M}\right]+\boldsymbol{b}_{s}\right)s1=tanh(Ws⋅[N∑i=1Nbi;M∑j=1Mtj]+bs)
Action prediction
FACTEDITOR使用LSTM在每个时间t预测一个动作。有三种类型的动作,即Keep、Drop和Gen。首先,它使用注意力在时间t处组成一个三元组的上下文向量t~t\tilde{\boldsymbol{t}}_{t}t~t
t~t=∑j=1Mαt,jtj\tilde{\boldsymbol{t}}_{t}=\sum_{j=1}^{M} \alpha_{t, j} \boldsymbol{t}_{j}t~t=j=1∑Mαt,jtj
where αt,j\alpha_{t, j}αt,j is a weight calculated as
αt,j∝exp(vα⊤⋅tanh(Wα⋅[st;bt;tj]))\alpha_{t, j} \propto \exp \left(\boldsymbol{v}_{\alpha}^{\top} \cdot \tanh \left(\boldsymbol{W}_{\alpha} \cdot\left[\boldsymbol{s}_{t} ; \boldsymbol{b}_{t} ; \boldsymbol{t}_{j}\right]\right)\right)αt,j∝exp(vα⊤⋅tanh(Wα⋅[st;bt;tj]))
然后,它在时间ttt创建隐藏状态ztz_tzt用于动作预测
zt=tanh(Wz⋅[st;bt;t~t]+bz)\boldsymbol{z}_{t}=\tanh \left(\boldsymbol{W}_{z} \cdot\left[\boldsymbol{s}_{t} ; \boldsymbol{b}_{t} ; \tilde{\boldsymbol{t}}_{t}\right]+\boldsymbol{b}_{z}\right)zt=tanh(Wz⋅[st;bt;t~t]+bz)
接下来,它计算动作αt\alpha_{t}αt的可能性
P(at∣zt)=softmax(Wa⋅zt)P\left(a_{t} \mid \boldsymbol{z}_{t}\right)=\operatorname{softmax}\left(\boldsymbol{W}_{a} \cdot \boldsymbol{z}_{t}\right)P(at∣zt)=softmax(Wa⋅zt)
选择概率最大的动作
Action executio
FACTEDITOR根据时间t的预测结果执行操作。
对于保持时间ttt,FACTEDITOR弹出缓冲区中的顶部嵌入bt,并将顶部嵌入btb_tbt和三元组t~t\tilde{\boldsymbol{t}}_{t}t~t的上下文向量的组合输入流中,如图1a所示。用LSTM更新流状态,即st+1=LSTM([t~t;bt],st)\boldsymbol{s}_{t+1}=\mathrm{L} \operatorname{STM}\left(\left[\tilde{\boldsymbol{t}}_{t} ; \boldsymbol{b}_{t}\right], \boldsymbol{s}_{t}\right)st+1=LSTM([t~t;bt],st)。FACTEDITOR还将缓冲区中的顶级单词复制到流中。
Word generation
FACTEDITOR在时间ttt生成一个单词yty_tyt,当动作是Gen时,
Pgen (yt∣zt)=softmax(Wy⋅zt)P_{\text {gen }}\left(y_{t} \mid \boldsymbol{z}_{t}\right)=\operatorname{softmax}\left(\boldsymbol{W}_{y} \cdot \boldsymbol{z}_{t}\right)Pgen (yt∣zt)=softmax(Wy⋅zt)
为了避免生成OOV单词,FACTEDITOR利用了复制机制。它计算复制三元组tjt_jtj对象的概率
Pcopy(oj∣zt)∝exp(vc⊤⋅tanh(Wc⋅[zt;tj]))P_{\operatorname{copy}}\left(o_{j} \mid \boldsymbol{z}_{t}\right) \propto \exp \left(\boldsymbol{v}_{c}^{\top} \cdot \tanh \left(\boldsymbol{W}_{c} \cdot\left[\boldsymbol{z}_{t} ; \boldsymbol{t}_{j}\right]\right)\right)Pcopy(oj∣zt)∝exp(vc⊤⋅tanh(Wc⋅[zt;tj]))
它还计算了gating的概率
pgate =sigmoid(wg⊤⋅zt+bg)p_{\text {gate }}=\operatorname{sigmoid}\left(\boldsymbol{w}_{\mathrm{g}}^{\top} \cdot \boldsymbol{z}_{t}+b_{\mathrm{g}}\right)pgate =sigmoid(wg⊤⋅zt+bg)
最后,它计算通过生成或复制生成单词wtw_twt的概率,
P(yt∣zt)=pgate Pgen (yt∣zt)+(1−pgate )∑j=1:oj=ytMPcopy (oj∣zt)\begin{array}{l} P\left(y_{t} \mid \boldsymbol{z}_{t}\right)=p_{\text {gate }} P_{\text {gen }}\left(y_{t} \mid \boldsymbol{z}_{t}\right) \\ \quad+\left(1-p_{\text {gate }}\right) \sum_{j=1: o_{j}=y_{t}}^{M} P_{\text {copy }}\left(o_{j} \mid \boldsymbol{z}_{t}\right) \end{array}P(yt∣zt)=pgate Pgen (yt∣zt)+(1−pgate )∑j=1:oj=ytMPcopy (oj∣zt)
假设内存中的三元组有相同的主语,因此只需要复制对象。
Model Learning
给定三元组T\mathcal{T}T,动作序列的条件概率a=(a1,a2,⋅⋅⋅,aT)a=(a_1,a_2,···,a_T)a=(a1,a2,⋅⋅⋅,aT),输入字序列可以写成
P(a∣T,x)=∏t=1TP(at∣zt)P(\boldsymbol{a} \mid \mathcal{T}, \boldsymbol{x})=\prod_{t=1}^{T} P\left(a_{t} \mid \boldsymbol{z}_{t}\right)P(a∣T,x)=t=1∏TP(at∣zt)
给定动作序列aaa的条件概率y=(y1,y2,⋅⋅⋅⋅,yT)y=(y_1,y_2,····,y_T)y=(y1,y2,⋅⋅⋅⋅,yT)可以写成
P(y∣a)=∏t=1TP(yt∣at)P(\boldsymbol{y} \mid \boldsymbol{a})=\prod_{t=1}^{T} P\left(y_{t} \mid a_{t}\right)P(y∣a)=t=1∏TP(yt∣at)
其中
P(yt∣at)={P(yt∣zt) if at= Gen 1 otherwise P\left(y_{t} \mid a_{t}\right)=\left\{\begin{array}{ll}
P\left(y_{t} \mid \boldsymbol{z}_{t}\right) & \text { if } a_{t}=\text { Gen } \\
1 & \text { otherwise }
\end{array}\right.P(yt∣at)={P(yt∣zt)1 if at= Gen otherwise
注意并不是所有的位置都有生成的单词。在这种情况下,yty_tyt只是一个空单词。
模型的学习是通过监督学习来实现的。学习的目标是最小化P(a∣τ,x)P(\boldsymbol{a} \mid \boldsymbol{\tau}, \boldsymbol{x})P(a∣τ,x)和P(y∣a)P(\boldsymbol{y} \mid \boldsymbol{a})P(y∣a)的负对数可能性
L(θ)=−∑t=1T{logP(at∣zt)+logP(yt∣at)}\mathcal{L}(\boldsymbol{\theta})=-\sum_{t=1}^{T}\left\{\log P\left(a_{t} \mid \boldsymbol{z}_{t}\right)+\log P\left(y_{t} \mid a_{t}\right)\right\}L(θ)=−t=1∑T{logP(at∣zt)+logP(yt∣at)}
训练实例包括一对草稿文本和修订文本,以及一组三元组,分别表示为xxx、yyy和T\mathcal{T}T。对于每个实例,我们的方法都会导出一系列表示为aaa的动作,其方式与(Dong等人,2019)中的方法类似。它首先在xxx和yyy之间找到最长的公共子序列,然后根据yyy是如何从xxx和T\mathcal{T}T中获得的,在每个位置选择一个Keep、Drop或Gen操作当两者都有效时,Action Gen优先于Action Drop。
Time Complexity
FACTEDITOR中推理的时间复杂度为O(NM),其中N是缓冲区中的字数,M是三元组的数目。在缓冲区中扫描数据的复杂性为O(N)。行动的产生需要注意力的执行,这是一个复杂的过程 O(M)。通常,N比M大得多。

Experimental Results

表5给出了我们提出的模型FACTEDITOR的性能和基于facts文本编辑的基线。从结果中可以得出几个结论。
首先,我们提出的模型FACTEDITOR在几乎所有的度量方面都比主基线encdecditor获得了更好的性能。特别是factedit在WEBEDIT和ROTOEDIT上的删除分数都有显著提高。
第二,基于事实的文本编辑模型(FACTEDITOR和ENCDECEDITOR)在流畅性得分方面明显优于其他模型,在保真度得分方面也取得了相似的表现。
第三,与不编辑相比,表格到文本的保真度得分较高,但流畅度得分较低。
文本到文本的流畅度得分几乎相同,但ROTOEDIT的保真度得分较低。
Conclusion
本文在对这两个问题进行研究的基础上,提出了一个新的课题,并在此基础上提出了本文所指的两个问题。首先,我们提出了一种基于事实的文本编辑的数据构造方法,并创建了两个数据集。其次,我们提出了一个基于事实的文本编辑模型FACTEDITOR,它通过生成一系列动作来完成任务。实验结果表明,该模型FACTEDITOR的性能优于基线,包括编解码模型。
介绍了一种新的文本编辑任务,即基于事实的文本编辑,旨在修改文档以更好地反映知识库中的事实。文章提出了一种自动生成数据集的方法,并设计了FACTEDITOR模型,实验证明其在保真度和流畅性方面优于基线。

962

被折叠的 条评论
为什么被折叠?



