会员中心 |  会员注册  |  兼职信息发布    浏览手机版!    超值满减    人工翻译    英语IT服务 贫困儿童资助 | 留言板 | 设为首页 | 加入收藏  繁體中文
当前位置:首页 > 机翻技术 > 机器翻译 > 正文

把合一结合到Earley剖析器中

发布时间: 2022-07-27 09:26:22   作者:etogether.net   来源: 网络   浏览次数:
摘要: Earley算法在运算时要使用一套无装饰的上下文无关语法规则,来填充一种称为线图的数据结构,这种线图由状态的集合组成。


把特征结构与合一运算结合到Earley算法中的目的有两个:第一,使用特征结构,从而为剖析的组成成分提供更丰富的表达方式;第二,阻止成分进入破坏合一约束的非良构成分的线图中。只要最小限度地改变原来的Earley算法,就可以达到这样的目的。


第一个改变是改变在原来的代码中使用的各种表达方法。Earley算法在运算时要使用一套无装饰的上下文无关语法规则,来填充一种称为线图的数据结构,这种线图由状态的集合组成。在剖析的终点,构成线图的状态可以表示对于输入的一切可能的剖析结果。因此,我们要进行的改变首先从改变上下文无关语法规则和线图中的状态开始。


在改变规则时,除了它们当前的成分之外,还包括从它们的合一约束推导出的特征结构。更具体地说,我们将使用由规则列出的约束来建立特征结构,把特征结构表示为DAG,以便在剖析过程中与规则一起使用它们。


我们来研究如下的带有合一约束的上下文无关规则:


S → NP VP

=


把这些约束转变为特征结构,得到如下的结构:

图1.png



在这个推导中,我们首先对上下文无关规则中的每个部分创建顶层特征,在这个例子中,这些顶层特征是S,NP和VP;使用这样的方法,把各种不同的约束结合到一个单独的结构中。然后,顺着约束中的路径等式,进一步再把各种成分加到这个结构中。注意,这只是一种纯粹的表记法的变换,DAG和约束等式中包含的信息都是完全一样的。但是,把各种约束捆绑到一个单独的特征结构中,这样的形式就可以直接放到合一算法中。


第二个改变是改变用于表示Earley算法中局部剖析的状态。原来的状态包括所用的上下文无关规则、表示规则已经完成部分的点的位置、状态的开始和终止位置以及表示状态中已完成子部分的其他状态的一个表。现在再加上一个附加的区域,这个区域包含表示与状态相应的特征结构的DAG。注意,当一个规则首次被PREDICTOR用来建立一个状态时,与状态相联系的DAG将由规则中检索出来的DAG组成。例如,当PREDICTOR使用上面的S规则而进入到线图中的一个状态时,上面给出DAG将是初始的DAG。我们把状态表示如下,其中DAG表示上面给出的特征结构:


S → •NP VP, [0,0], [], Dag


给出了这些新增加的表示之后,就可以来改变算法本身了。在行动方面的最重要的改变是:当通过扩充现有状态建立一个新状态时,在COMPLETER程序中发生了变化。我们知道,当一个完成的成分加到线图中时,就要调用COMPLETER。COMPLETER的任务是发现并扩充线图中现有状态,这个状态正在查找与新完成的成分相容的成分。因此,COMPLETER是一种结合两个状态中的信息建立新状态的功能,它要使用合一的操作。


更具体地说,COMPLETER通过发现现有状态的方式,把一个新的状态加到线图中,并把现有状态中的“.”由新的完成状态向前推进。当直接在“.”后面的成分的范畴与新完成的成分的范畴相匹配时,就可以把“.”向前推进。为了便于使用特征结构,我们可以改变这样的做法,而把与新的完成状态相联系的特征结构与被推进的特征结构中的适当部分进行合一。如果这样的合一取得成功,那么新状态的DAG就接受合一后的结构,并进入线图中。如果合一失败,则没有新的状态进入线图中。COMPLETER的这种改变情况如图2所示。

图2.png

图2a.png


图2 修改Earley算法使之包括合一运算



微信公众号

[1] [2] [下一页] 【欢迎大家踊跃评论】
  • 上一篇:类型与继承的应用
  • 下一篇:合一的数据结构


  • 《译聚网》倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请30天内提供版权疑问、身份证明、版权证明、联系方式等发邮件至info@qiqee.net,我们将及时沟通与处理。


我来说两句
评论列表
已有 0 条评论(查看更多评论)