- 签证留学 |
- 笔译 |
- 口译
- 求职 |
- 日/韩语 |
- 德语
基于递归转移网络的句法分析算法可以采取和上下文无关文法分析一样的方法路线。其任何一个时刻的分析状态均可以表示为:
当前位置——指向下一个待分析词的位置指针。
当前节点——在转移网络中当前所在的节点。
返回点——从当前网络中返回退出后进入其他网络的节点栈。
首先,让我们考虑一种RTN的搜索算法。这种算法假定一旦可以沿着一条边往前推进,那么在最终的句法分析中,它将是正确分析结果中的一步。假定正处在句法分析过程的一个中间状态,并且知道我们刚才提到的三条信息。在下列情形中,可以离开当前的节点,并成功穿过一条边:
情况1:如果当前边标记的是词类,并且句子中的下一个词就属于该词类,则:
(1)更新当前位置,当前位置从下一个词开始。
(2)更新当前节点,当前节点指向当前边的终点。
情况2:如果当前边是指向转移网络N的压入边,则:
(1)将当前边的终点加入到返回点栈的顶部。
(2)更新当前节点,当前节点指向转移网络N的起点。
情况3:如果当前边是弹出边,而且返回点栈非空,则:
(1)取出返回点栈中的第一个返回点,并将其设为当前节点。
情况4:如果当前边是弹出边,返回点栈为空,而且没有词语剩下,则:
(1)句法分析成功。
语法1给出了一个网络语法。其中,有向边的上面有一些数字,其作用体现在当节点存在多条出边的时候,边上的数字表示了分析器尝试访问该边的先后次序。
语法1
给定例句“1 The2 old3 man4 cried5”,图1 给出了算法生成的整个分析状态序列。最终结果表明该句可以被语法接受,是合法的句子。在整个过程中,起始节点和访问次序表示惟一的一条边。因此,S/1边表示的是从节点S出发,标记为1的边。如果从节点S开始分析,接下来要通过的边只有压入边NP。根据算法的情况2,计算之后,新的分析状态设置为当前节点为NP,并且将节点S1置于返回点栈中。从节点NP出发,我们先尝试通过边NP/1,根据算法第一种情况的处理方法,需要检查输入的词是否属于冠词。检查成功,则该边通过,并修改当前位置(步骤3)。按这种方式继续分析到步骤5,此时遇到弹出边,则重新设置当前节点为S1(也就是说,NP边分析成功)。在步骤6中分析算法找到了一个动词,并且在步骤7中遇到了S网络的弹出边,最终句法分析成功。