写在前头
- 最关键的部分,我都会使用英语单词来表示,为了大家在看原文档的时候能够将概念对齐。
- 大家可以去看原版的英文资料,这个资料是我从数据集中拷出来的,目前没发现比这个更好的资料,大家如果觉得我的分析和原版有什么出入,以原版为准,我已经上传了,可以免费下载
- 我会把 AMR 相关的所有内容写成一个系列,大家可以等后面的内容更新,也可以自己去看原版,我相信吸收会更好
- 我的描述很多时候并不 100% 准确,但是会帮助你更好的理解,因为原版中很多晦涩的表示可能让你摸不着头脑,我尝试写的更详细、生动一些,希望能帮助理解。
AMR 定义
- AMR 全称 abstract meaning representation,是对语言的一种表示方法,他并不表示单个的句子,而是着重表示句子中的逻辑,也就是说他不存在 语法 和 单词 的概念,只有 semantic relation 和 concept 的概念,多个 concept 之间被 semantic relation 连接起来,当然为了方便理解,你也可以认为 concept 就充当了单词的角色,而 semantic relation 充当了语法的角色,但是不要仅限于这种想法,否则不利于后面的理解。
- AMR在句子中捕捉“谁在对谁做什么”。每个句子都表示为一个有根、有向、无环的图(graph),在边(每条边代表一个语义关系 semantic relation) 和叶(每个叶子节点代表一个 concept) 都有标签。
- AMR 是一个叫做 “OntoNote” 项目的产物,AMR 中的所有的 predicate sense(谓词词义), semantic roles(语义角色) 都继承自 OntoNote
Example
-
graph 表示
- 首先弄清楚两个重要的概念:predicate-argument (述词论元结构),所谓的 predicate 可以叫做谓词/述词, argument 叫论元,也可以叫参数。然后看 graph 中的每个节点(node) 都是有
instance
和 若干个ARGx
构成的,你可以粗暴地认为ARGx
是围绕instance
展开的。 - 比如根节点(root)你可以看到:扮演
instance
角色的是want
,而ARG0, ARG1
分别又产生了两个子图subgraph
,他们一直这样发展下去直到 叶子节点 结束 - 对待任何一级的节点,我们都把
instance
作为主要部分,ARG0, ARG1
分别看作是instance
的 施事方 和 受事方,具体一点,如果只看root
结点涉及的内容(instance, ARG0, ARG1),这里面蕴含的逻辑关系就可以表示为ARG0 -> want -> ARG1
这么一个简单的逻辑。 - 如果我们关注 整个 graph 中所有的节点(在每个节点中先找出 instance,然后再把 ARG0, ARG1 的逻辑连起来) 就会发现,呈现的其实是这样一种逻辑:
boy -> want -> believe, girl -> believe -> boy
,又因为这个逻辑链中两次出现的boy
是同一个(没有进行区分)因此这句话的逻辑如果变成英语就是:the boy wants the girl to believe himself
,但是能表示这个逻辑的句子有很多,每一句包含相同含义的话都可以作为这个 AMR 的 文字表示。
- 首先弄清楚两个重要的概念:predicate-argument (述词论元结构),所谓的 predicate 可以叫做谓词/述词, argument 叫论元,也可以叫参数。然后看 graph 中的每个节点(node) 都是有
-
AMR 表示
-
这个表示方法与上面的图完全一致,只是将其用 AMR 的方式(一堆括号和符号表示)了,你不需要再去对着图找每一个叶子节点,你可以在这个 AMR 的表示中得到任何你想要的关系。你自己读一下看看
boy -> want -> believe, girl -> believe -> boy
- 还有一点需要很注意,就是每一级的表示中的
ARG0, ARG1
都是对应 当前级别 的内容的(want
下面有ARG0, ARG1
这是属于want
这个级别的,beileve
下面也有ARG0, ARG1
这是属于believe
这个级别的),比如:ARG1 b
和:ARG1 (b2 / believe-01)
虽然都是ARG1
但没有任何关系。
-
相信你还有如下疑问:
want-01
为啥后面跟个后缀01
(w / want-01)
这个w /
又是什么- 为什么
:ARG1 b
不写成:ARG1 (b / boy)
-
want-01
代表我们采用的是want
的第一个含义,want
的所有含义都被预先定义好了(w / want-01)
相当于:instance(w, want-01)
其中w
叫variable
是want
这个谓词的一个实例(instance),因为 AMR 是一种抽象表示,每个成分都需要进行实例化(这有点像面向对象编程中每个类在进行实例化之后才能进行操作):ARG1 b
中的b
因为是boy
的实例化variable
而这个variable
在之前已经实例化过了,所以直接引用之前那个b
即可,必须要再实例化一遍了
want-01
表示的意义是“想要”
因此,当一个 AMR 对应到一个确定的文本的时候,可以是动词的want
表示,也可以是名词desire
表示的意义,也可以是形容词desirous
表示的意义,在这个位置的词的形式并不被局限,- 在 AMR 中,不会直接标注某个叶子节点说:“这是一个动词,或者这是一个名词”,相反,会说这是一个
obejct
, 那是一个event
,都是这种抽象概念
-
三元组表示法(一般用在对 AMR 解析任务评估的时候,通过比较生成的 AMR 的三元组是否符合标准来评估 AMR 的解析算法的效果)
-
AMR 的表示是将代词之类的全部抛弃(不出现在 AMR 的 graph 中)
- 按照我们上述的知识,我们知道这个想表示的逻辑是:
girl -> adjust -> machine
所以生成的句子可以是:
- 首先这些
made, to
这些词全部不表示在 AMR 中,当然你在对齐
的时候可以加上这些内容来构成符合 AMR 逻辑的完整的句子 - 我们上面也说了,虽然在 AMR 中我们表示的是
adjust
这个词,但是真正在对齐
的时候,我们可以给他不同的形式:ajust, adjustment, be ajusted by
只要符合 AMR 描述的逻辑即可
- 按照我们上述的知识,我们知道这个想表示的逻辑是:
对齐 Alignment
- 你会在 AMR 相关的很多文献和数据集中发现
alignment
这个词汇,那么什么是对齐呢? - 很简单,就是我们刚才说的,每个 AMR 表示的逻辑是一句话中最重要的部分,但是其他的部分并没有一个标准答案。
- 在深度学习训练 AMR 解析任务的时候(就是给定一个 text,让 seq2seq 模型把这个 text 转化成一个 AMR 结构的输出)或者进行 AMR-to-text 的任务(训练一个 seq2seq 模型让其输入是一个 AMR 结构的数据,输出是一个对应的文本)的时候,由于进行的是 supervised 训练,所以肯定一个 AMR 要给他一个固定的 text 作为 label。
- 比如还是上面的例子:
- 我们可以选择下面的其中一句话作为 groundtruth label 进行对齐:
- 我们可以选择下面的其中一句话作为 groundtruth label 进行对齐: