目前我正在尝试构建语法感知的 NMT 模型。
在这个项目中,我需要三个转换动作之一的序列(SHIFT、REDUCE-L、REDUCE-R)
类似于图像中 的
此块表示 2 个句子的基于转换的依赖关系(1 表示 1 个块被空行分割)
我使用Syntaxnet
首先获取依赖项解析树,但它不直接提供转换操作序列。
其结果如下,
是否有可能获得类似于此图像的动作序列?是否可以将从此图像中获得的内容转换为原始图像的格式。
目前我正在尝试构建语法感知的 NMT 模型。
在这个项目中,我需要三个转换动作之一的序列(SHIFT、REDUCE-L、REDUCE-R)
类似于图像中 的
此块表示 2 个句子的基于转换的依赖关系(1 表示 1 个块被空行分割)
我使用Syntaxnet
首先获取依赖项解析树,但它不直接提供转换操作序列。
其结果如下,
是否有可能获得类似于此图像的动作序列?是否可以将从此图像中获得的内容转换为原始图像的格式。
将依赖树转换为转换序列的函数称为 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。