0

目前我正在尝试构建语法感知的 NMT 模型。
在这个项目中,我需要三个转换动作之一的序列(SHIFT、REDUCE-L、REDUCE-R)

类似于图像中

此块表示 2 个句子的基于转换的依赖关系(1 表示 1 个块被空行分割)

我使用Syntaxnet首先获取依赖项解析树,但它不直接提供转换操作序列。
其结果如下,

b

是否有可能获得类似于此图像的动作序列?是否可以将从此图像中获得的内容转换为原始图像的格式。

4

1 回答 1

0

将依赖树转换为转换序列的函数称为 oracle。它是统计解析器的必要组件。您描述的转换(shift,reduce-l,reduce-r)¹是弧标准转换系统的转换(不是arc-eager系统,即:shift,left-arc,right-arc,reduce)。

弧标准预言机的伪代码:

stack = [] # stack[0] is the top of the stack
buffer = [w1, w2, ..., wn]

while len(buffer) > 0 or len(stack) != 1:
    if stack[0] is the head of stack[1]:
        apply left-arc
    if stack[1] is the head of stack[0]:
        if there is a token in the buffer whose head is stack[0] 
            # (i.e not all children of stack[1] have been attached to it)
            apply shift
        else:
            apply right-arc

这些幻灯片展示了两种解析算法及其预言。

¹Reduce-left、reduce-right 在依赖解析的上下文中通常被命名为 right-arc 和 left-arc。

于 2018-06-06T14:00:50.837 回答