NLG自然语言生成搜集地内容Word下载.docx
《NLG自然语言生成搜集地内容Word下载.docx》由会员分享,可在线阅读,更多相关《NLG自然语言生成搜集地内容Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
![NLG自然语言生成搜集地内容Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/28/5ed9eab8-2c6f-4ca9-a63c-4fbac0242676/5ed9eab8-2c6f-4ca9-a63c-4fbac02426761.gif)
这不是少数人短时期内可以完成的,还有待长期的、系统的工作。
以上说的是一个中文文本或一个汉字(含标点符号等)串可能有多个含义。
它是自然语言理解中的主要困难和障碍。
反过来,一个相同或相近的意义同样可以用多个中文文本或多个汉字串来表示,所以一个中文文本或一个汉字(含标点符号等)串可能有多个含义同样也是自然语言生成的主要困难和障碍。
(《WAPEDIA》)
因此,自然语言的形式(字符串)与其意义之间是一种多对多的关系。
其实这也正是自然语言的魅力所在。
从自然语言理解的角度看,我们必须消除歧义,即要把带有潜在歧义的自然语言输入转换成某种无歧义的计算机内部表示。
而从自然语言生成的角度看,我们也要消除歧义,从抽象概念生成符合语义,语法,语用的无歧义文本,所以不论从哪方面看,自然语言的魅力都给我们带来了巨大的困难。
历史上对自然语言理解研究得较多,而对自然语言生成研究得较少。
但这种状况近年来已有所改变。
1.2 自然语言生成的研究
从20世纪40年代算起,自然语言处理的研究已经接近有70年的历史,而自然语言生成正是在自然语言处理的发展中逐渐清晰化的其中一个部分,大概兴起于70年代早期,在1983年~1993年这十年期间,自然语言生成的研究取得了令人瞩目的成就。
自然语言生成迄今已走过了近四十年的历程,在这段时间里,从事该领域研究的专家们不断提出新的理论和方法,设计出新的生成模型,使语言生成的研究不断取得新的进展。
目前语言生成的研究侧重于以下几个方面:
在特定的语法理论框架内更加广泛深入地处理语言现象,如:
生成系统。
"
在同一语法环境下生成多语言,例如英国大学的多语种生成系统(包括英语、德语、)日语、法语、荷兰语、西班牙语),上海交通大学的多语言天气预报发布系统。
面向实际应用的开发,如国内有北京交通大学和北京颐和园的导游系统、中国科技大学的机器人足球现场解说系统以及人机接口等;
国外的有英国大学所设计的在线文件剪接系统。
在生成过程中对所要表达的信息进行语义和句法方面的聚合亦是目前研究重点之一。
当前语言生成的研究方向主要是在语言表示形式、信息内容规划以及语言生成模型等方面。
自然语言生成的研究将继续在诸多语言学科、计算机领域和其他学科的通力协作下获得新的成果。
(《自然语言生成综述》)
2自然语言生成的内容
传统来说,自然语言生成的任务大致分为两个个部分:
内容选择,即“应该表达什么”;
以及内容表示,即“怎样去表达”。
但随着自然语言生成的发展,我们还应解决一个问题,那就是“为什么要用这种方式表达?
”,所以提出了更为标准的自然语言生成结构,它由三部分构成:
内容(文本)规划(也称宏观规划),句子规划(微观规划)和句子实现。
标准自然语言生成结构见图1:
(《NaturalLanguageGeneration》)
图1:
自然语言标准生成结构
事实上还没有一个已实现的自然语言生成器完全的体现了图1中所有的模块,目前试验性的尝试来完成这一结构的自然语言生成器有ERMA(Clippinger1974)和PAULINE(Hovy1988)。
而大多数的自然语言生成器在不同的安排下只包含这一结构中的某些阶段而已,如Reiter(1994)和DeSmedt,Horacek,andZock(1995)。
2.1自然语言生成体系结构
下面对自然语言生成体系结构的三个基本模块进行介绍。
(《自然语言生成综述》,《NatrualLanguageGneration:
Requirmentforconstruction》,《NaturalLanguageGeneration》,《MicroplanningwithCommunicativeIntentions:
TheSPUDSystem》)
2.1.1内容规划
内容规划的任务主要包括内容确定和结构构造两个方面。
内容确定的功能是决定生成的文本应该表示什么样的问题,而结构构造则是完成对已确定内容的结构描述,即用一定的结构将所要表达的内容组织起来,并决定这些内容块是怎样按照修辞方法互相联系起来的,以便更加符合阅读和理解的习惯。
通俗讲,就是输入是一个或多个交互目标,像[DESCRIBEHOUSE-15]或[MOTIVATEGOING-ON-VACATION-12]之类的这种抽象的概念,经过内容规划,输出通常会是树结构,或者是一个有着更加详细的内容命题的列表,这些命题会用像“and”,“therefore”,“however”这样的连接词连接起来。
当然,每个命题都包含着一个单子句所应该包含的信息。
比如初始目标是[DESCRIBEHOUSE-15],那么它被简单扩展后应该是像[GENERATEHOUSE-IDENTIFIER][GENERATEADDRESS][INTRODUCEFLOORPLAN][ELABORATE[GENERATEGROUND-FLOOR]“and”[GENERATETOP-FLOOR]“and”[GENERATEBASEMENT]]这样的。
2.1.2句子规划
通常,内容规划并没有完全指定输出文本的内容和结构,句子规划的任务就是进一步明确定义规划文本的细节,具体包括选词(Lexicalization)、优化聚合(Aggregation)、指代表达式生成(ReferringExpressionGeneration)等工作。
选词模块:
在应用中,特定信息必须根据上下文环境、交互目标和实际因素(如人的知识背景或作强调等特定处理)用词或短语来表示。
选择特定的词、语法结构以表示规划文本的信息意味着对规划文本进行消息映射。
有时只用一种选词方法用来表示信息或信息片段,在多数系统中允许有多种选词方法。
优化聚合模块:
为了能够消除句子间的冗余信息,增加可读性以及能从子句构造更复杂的句子,在句子规划中应用了聚合技术,通常按照粒度区分有句子、词汇、语义、修辞和概念等聚合。
即决定内容规划输出的结构怎样才能映射到像句子和段落那样的语言结构。
聚合就是使用修改,联合短语,以及其它语言结构等方法来将信息打包到较少的句子中(当然这可能会使得这些句子反映的信息更为复杂一些),聚合依赖一些应用操作,这些操作的作用是会检测将要表达的信息之间的联系,比如,有的信息会重复指向共同的参与者(如Doeisapatient,DOEisafemale),这样就要组织相关材料信息到一个嵌套的语义结构了(得到Doeisafemalepatient)。
指代表达式生成:
决定什么样的表达式,句子或词汇应该被用来指代特定的实体或对象。
在实现选词和聚合之后,对指代表达式生成的工作来说,就是让句子的表达更具语言色彩,对已经描述的对象进行指代以增加文本的可读性。
句子规划的输出是文本描述(TextSpecification),但其仍然不是最终输出文本,仍有句法、词法等特征需进一步处理。
一般文本描述的层次结构仍然对应于逻辑结构,需经过文本实现系统实现逻辑结构向物理结构(段落章节)的映射,才能最终生成文本。
也就是说,句子规划的基本任务涵括确定句子边界,组织材料内部的每一句话,规划句子交叉引用和其它的回指情况,选择合适的词汇或段落来表达内容,确定时态,模式,以及其它的句法参数等,即通过句子规划,理想化的输出应该是一个子句集列表,且每一个子句都应该有较为完善的句法规则。
但是事实上,自然语言是有很多歧义性和多义性的,各个对象之间大范围的交叉联系等情况,也就造成了句子规划是一个很难的任务,这点很多做过相关实验的学者都已经指出过。
针对句子规划的许多子任务,如果要一起很好的完成是不容易的,所以有一种考虑是,单独,或者只着重考虑其中几个子任务,这样的研究也是早已存在。
相比之下,现在已经较少人研究完成所有句子规划子任务的了。
2.1.3句子实现
句子实现主要包括语言实现和结构实现两部分,具体地讲就是将经句子规划后的文本描述映射至由文字、标点符号和结构注解信息组成的表层文本。
生成算法首先按主谓宾的形式进行语法分析,并决定动词的时态和形态,再完成遍历输出。
其中,结构实现完成结构注解信息至文本实际段落、章节等结构的映射;
语言实现完成将短语描述映射到实际表层的句子或句子片段。
3SPUD系统基础
了解了自然语言生成的大致过程,应该看到,句子规划问题是比较复杂又为重要的。
句子规划就像一个装满特殊任务的包一样,而这些任务又各自调用它们自己的表示方法和算法,所以比如像选词,聚合,指代表达式生成这些任务都是用系统的而又复杂的方法进行交互作用。
但是这些交互也给集成异构的句子规划进程带来了挑战。
(《MicroplanningwithCommunicativeIntentions:
相对的,也有考虑对句子规划使用统一方法的研究,而不是像上面所描述的那种集成异构,如SPUD(Stoneetal.,2003)。
SPUD(sentenceplanningusingdescription)就是在整个句子规划的过程中对临时信息(provisionalutterance)使用同一种表示方法,并利用这种表示方法给出一个单独的决策策略,而不是像传统上的句子规划那样不同的子任务有自己的表示方法和算法。
SPUD这个框架的关键就是生成器中临时信息(provisionalutterance)的解释意图(intendedofinterpretation)的表示,SPUD将这种表示叫做交际意图(communicateintent)。
同时,强调句子规划是一个协商的过程,即对句子规划而言,临时意图能引导和约束规划中进一步的推理(Bratman,1987;
Pollack,1992)。
SPUD中交际意图的具体表示是与一种语言结构相关联的,这个语言结构拥有关于它所包含意义的“指向”,而这些意义表明了在当前的语境中,这个结构怎样描述各种各样的广义信息(generalizedindividuals)。
这样就可以通过交际意图的具体表示与语言结构之间的联系来关联相关应用领域的具体信息。
交际意图的具体表示拥有句子规划作出决策所需的所有信息,比如它会记录指代表达式(referringexpressions)转变为非歧义形式的过程,它还能表明给定的结构和意义怎样才能用修饰词加以修饰阐述,这样多个信息片就能在一个单一的表达式中被组织起来等。
因此,有了交际意图模型,SPUD能同时地补充一个不完整句子的句法,语义以及语用,并能逐步评估掌握句子规划子问题相互作用的进展情况。
使用交际意图来进行句子规划,意味着要通过对语法推导进行搜索来同时构建一个话语(utterance)和它的解释,而能将有意义的决策打包在一起并允许逐步修改评估这些决策的语法形式会有助于这个搜索。
所以,SPUD使用了LTAG(thelexicalizedtree-adjoininggrammarformalism)形式,同时,使用像逻辑编程和约束满足等这样的技术会有助于为给定的语言形式决定交际意图。
SPUD的重点在于句子规划,它是基于交际意图的,它的整个过程结构如下:
图2基于交际意图的句子规划(微规划)的对话结构(conversationalarchitecture)
3.1SPUD基础举例说明
例子
(1)Slidecouplingnutontoelbowtouncoverfuel-linesealingring.
使用依赖关系树表示这一话语(utterace):
图3例
(1)关系树
为了表示交际意图,需要三个组成成分:
(1)话语(utterace)怎样添加有关于交际目标的信息;
(2)怎样增加与对象特性有联系的约束;
(3)怎样建立参与者角色(thestatusofparticipants)与谈话中的指向(referentsinthediscourse)之间的关系。
即:
Assertion:
是语法规则在树种每个元素的体现,它用于更新话语(utterance)的意图;
Presupposition:
旨在用共享的领域知识表现话语;
Pragmaticcondition:
表现描述参与者角色(thestatusofparticipants)以及话语中的“指向”(referentsinthediscourse);
所以,经过一系列基于领域知识和语法语义以及语用的假设与设计,图3可表示为:
这些都是对元素的解释,约束。
接下来给出交际意图表示的一般规范:
图4交际意图的一般规范
之后例
(1)再经过进一步的设计与设定,如定义一些新的函数,还有采用领域表达和语言表达等。
领域表达分别是盒装表达式(boxedexpression)和下划线表达式(underlinedexpression),它们分别表示对已有记录的更新和记录中已经有的功能。
之后得到以下结果:
图5例
(1)中slide的交际意图
图5中的边表示语言表达与领域表达之间的推理连接。
所以,句子规划经过考虑语法以及领域知识得到的初步交际意图便呈现出来:
图6例
(1)的交际意图。
就像图2所展示的,内容规划是综合规划管理器下面的多个子任务中的一个,一旦内容规划给出了一些更新,那么对话管理器就要将这些更新作为句子规划的输入。
相应的,句子规划模块会生成一些交际意图表示,这些交际意图表示阐述了一个达到这些更新的方法,这个方法是通过使用一个具体语言形式的话语(utterance)来达到这些更新的。
句子规划会依据语法和一个广义知识库构建这个交际意图的表示。
这个知识库指定了系统的私有领域知识,以及关于领域的所有背景信息,而这些信息是所有参与者都可以共享的。
句子规划生成的交际意图返回到对话管理器中,对话管理器不仅能将这个交际意图推进到实现模块,而且还能将它作为协调过程的一般资源。
有了以上的背景知识,我们可以给出SPUD系统的关键:
图6给出的结构不仅给对话管理器提供了资源,也给句子规划自己提供了资源。
例子
(1)中,句子规划开始于对话管理器给出的任务:
在一个可认知的方法下,这一话语(uterance)是有助于更新的,即move是next的,并且它的purpose是uncover。
句子规划器可以通过给临时的交际意图表示一次添加一个解释元素来达到这些要求,如第一步添加如图5中slide的结构。
在每一个步骤中,句子规划器都可以使用这些话语解释来推进解决像词汇选择,聚合和指代表达式的相互关联的问题。
图7就提供了一些这样步骤的简单示意图:
图7例
(1)的初始阶段的句子规划示意图
通过之前的介绍,我们发现了能确定NLG中指代意图的一般方法:
通过添加预先假定的关系来扩充一个话语的内容。
以上只是介绍了SPUD系统中句子规划大致过程,当然后期会有别的处理,如句法结构,形态结构,文法推论等,但是大致的前提基础如上所述。
SPUD系统是将句子生成作为一个规划问题在解,利用贪婪算法和先到先进(head-first)的算法作为规划基本算法,最后输出一个plan可以达到交际目标。
4近期改进
近来有基于SPUD基本思想作出改进的方法,如论文《Sentencegenerationasaplanningproblem》中提到的改进,下面介绍此文中具体改进。
这个方法也是将生成语句这个问题编码为规划问题,将包含语义和语用信息的TAG语法的句子生成问题转换为基于PDDL的规划问题。
但和以往的系统不一样的是它将重点放在了每个单词所做的贡献上,这些贡献包括对所要求生成的语句的句法,语义和语用上作出的语法特定的贡献。
本文刻意避免对话语(utterance)像协调理性行为一样进行推理,早期的系统就是这样做的,本文避免这样,为的是能够得到一种更简单的逻辑。
文章解决的问题是围绕指称表达式(REs)的生成的,它开发了一个针对distractor(后面会介绍)的生命周期的新的观点,这样会生成更简洁的REs。
另外,这个方法还跟之前系统不一样的是它不像别的系统将句子生成问题分为句子规划和生成两个步骤解决,而是只用一个综合步骤解决句子生成问题。
4.1
图8例
(2)
图8展示了例
(2)的过程。
如图8a所示,是通过“替代”和“附加”(都是TAG的主要操作)来合并元素树,这些操作的结果是如图8b所示的推导树,图8c则展示了最后的结果表示。
现在来考虑从上到下地构造如图8c的推导树过程。
如图8所示,很明显,过程开始于一个空的推导树,目的将要生成一个S层的表达式。
为了满足这个目标,首先往空树上添加了“likes”树,将它作为推导树的根,但是这样做后,会引入两个新的未满足的NP层的“替代”节点,即这棵树还是不完整的。
接下来,我们又用NP层的树“mary”和“rabbit”来放到这两个“替代”节点上,虽然这个动作满足了所有的“替代”节点,但是如图,“rabbit”树又引入了一些“附加”(adjunction)约束,而这个约束是我们必须通过毗连“the”辅助树才能满足的。
之后就得到了一个语法推导树,当然我们是可以自由地继续添加辅助树的,比如图8a中添加的“white”树。
如上所述的过程我们可以看出,其实推导树的生成本质上是一个规划问题。
对于规划问题我们是知道的,它需要状态以及可以从一个状态到另一个状态的动作,解决规划问题其实就是找到一个完整的动作序列,这个序列可以从初始状态一直到满足目标状态。
本文过程中,状态是由非满足的“替代”节点,非满足的强制性“附加”约束以及在一些推导树中“添加”动作可作用的节点来表示的。
对于动作,是每个动作添加一个单独的元素树到推导树上,移除一些“开放节点”,当然同时也引入一些新的“开放节点”。
初始状态是由空推导树以及为给定的根(category)生成一个表达式所需的要求组成,而目标状态是将现有的推导树规划为语法上完整的树。
4.2语义角色
这个方法是需要推导树中每个节点都有自己单独的名字,这样的名字对区分非满足的“替代”节点和“附加”节点之间的不同是必要的。
因此方法中引入了“语义角色”。
以图8中例
(2)为例,假定给根节点取名为self,还有角色ag和pat。
另外引入索引确保一个节点一个名字。
比如“likes”树的索引是1且树中“替代”节点的语义角色分别为ag和pat,那么给“likes”推导树添加元素树的规划动作就要求用这个元素树去替代“likes”树NP层的名为1.ag的替代节点以及另一个也是NP层的名为1.pat的替代节点。
4.3PDDL编码
现在将语法LTAG推导树的生成问题编码为PDDL。
在这个模式下。
一个规划状态被定义为有限的谓词逻辑原子的集合,这些谓词逻辑是取得真值。
动作(action)有很多个参数,还有一个precondition和一个effect,这两个都是逻辑公式。
PDDL允许对可以作为precondition和effect的公式进行扩展。
Precondition中的subst(A,s)表示根类别为A的初始树有一个替代节点的标志为u。
即说对于一个对替代节点进行替代的动作,它的前提条件就是subst(A,s),如果当前树有这么一个替代节点u,那么就可以应用这个动作了,同样的道理对于辅助树的操作也是一样的,不过要求的前提条件是canadjoin(A,s)。
这里还有一个区别:
对于初始树,它的替代动作的结果是从规划状态中消除subst条件,即¬
subst(A,u);
而对于辅助树,它的附加动作的结果是影响:
¬
mustadjoin(A,u),它表明这个被附加(adjoin)元素树的“附加”节点可以不用再进行附加操作了,但是也可以继续进行附加操作,即不作必须进行附加操作的硬性规定了。
就像图8a例
(2)中已经有“the”附加在上面了,就算后来不附加“white”也符合了句法要求,但也可以依据生成语句的后继要求继续附加。
之前提到过,动作的应用会为节点引入新的身份,因此我们使用目前规划的步骤数作为索引,给初始状态引入一个原子:
step
(1)。
然后给每个元素树引入一个step(k),这里k是规划规模的最大上限。
图9展示了一些动作。
图9图8中语法的一些动作
由上所述,最后的目标状态应该含有以下状态:
∀A,u.¬
subst(A,u)∧∀A,u.¬
mustadjoin(A,u)
然后我们就可以将这些动作,初始状态以及目标规定放到任何现成的规划器,获得像图10显示的规划。
图10对图9中动作的规划
4.4
以上是最基本的句子生成到规划问题的介绍,接下来,我们扩展这个编码来处理语义和指代表达式。
4.4.1
为了将规划器像TAG的语句实现(surfacerealization)算法那样使用,我们将语义内容(semanticcontent)附给每一个元素树,并要求语句要达到某个特定的交际目标。
这里也会用到知识库,知识库中只用树来表示信息。
比如,我们定义“likes”树的语义内容形如:
{like(self,ag,pat)},知识库也是有限的原子集合,比如包含like(e,m,r)和rabbit(r)等,交际目标是知识库的子集,如like(e,m,r)。
针对交际目标,对其每一个元素P(a1,...,an)都在初始状态添加cg(P,a1,...,an),相应的,在目标上添加∀P,x1,...,xn.¬
cg(P,x1,...,xn)。
另外,为每一个有n个语义角色作为参数的动作赋予参数x1,...,xn,对知识库中每一个元素P(a1,...,an),在初始状态下都添加skb(P,a1,...,an)。
然后定义一个函数id,它将