跳到主要内容

语义图与 AMR:把句子变成结构化含义

AMR 语义图理解地图

本节定位

文本不只是一串词。很多时候,我们真正想要的是句子背后的结构化含义。

AMR 这类语义图路线想回答的问题是:

能不能把一句话变成“谁做了什么、对谁做、在什么条件下做”的结构图?

一、为什么需要语义图?

普通文本表示常常像这样:

乔布斯创立了苹果公司。

但信息抽取和知识库系统更想要这样的结构:

人物:乔布斯
关系:创立
组织:苹果公司

如果再复杂一点,句子里可能有时间、地点、因果、条件、否定和指代。
这时简单的关键词匹配就不够了。

语义图的目标是:

把自然语言里的含义,变成机器更容易操作的图结构。

二、AMR 是什么?

AMR 是 Abstract Meaning Representation,可以先理解为一种抽象语义图表示。

它不只是标出实体,还会尝试表示事件和角色关系。

例如“学生阅读论文”可以想象成:

read-01
ARG0: 学生
ARG1: 论文

这个结构表达的是:

  • 核心事件是阅读
  • 谁在阅读:学生
  • 阅读对象是什么:论文

这比单纯分词更接近“句子真正想说什么”。

三、语义图和信息抽取有什么关系?

信息抽取通常先做比较具体的任务:

  • 抽实体
  • 抽关系
  • 抽事件
  • 抽属性

语义图更像把这些结果组织成一张更完整的含义结构。

任务输出更像什么
NER哪些词是人名、组织、地点
关系抽取A 和 B 有什么关系
事件抽取谁在什么时间做了什么
AMR / 语义图整句话背后的角色和语义结构

四、为什么它对 RAG 和知识库项目有用?

你前面提到的“根据知识库自动写 Word 课件”项目,语义图思路很有帮助。

因为课程材料里常常有:

  • 定义
  • 例题
  • 步骤
  • 条件
  • 注意事项
  • 前后因果

如果系统只做向量检索,可能会找到相似段落,但不一定理解结构。
如果能抽出结构化关系,就可以更稳地组织课件:

知识点 -> 定义 -> 例题 -> 解题步骤 -> 常见错误 -> 练习题

这就是语义图和信息抽取对知识库系统的价值。

五、和句法解析、递归神经网络的关系

在 Transformer 成为主流之前,NLP 有很长时间都在研究句法结构和语义结构。

其中包括:

  • 依存句法分析
  • 成分句法分析
  • 语义角色标注
  • 递归神经网络用于树结构表示的探索

这些工作共同说明一件事:

文本理解不只是词向量相似,还包括结构关系。

今天很多大模型已经能隐式处理大量结构,但在严肃知识库、法律、医学、教育课件生成里,显式结构仍然很有价值。

六、一个最小结构化抽取示例

下面不是完整 AMR,只是模拟“把句子改写成结构”的感觉:

sentence = "吴恩达教授讲授机器学习课程"

semantic_graph = {
"event": "讲授",
"teacher": "吴恩达教授",
"topic": "机器学习课程",
}

for role, value in semantic_graph.items():
print(role, "=>", value)

它的重点是让你先看懂:

  • 文本可以被拆成角色
  • 角色可以连接成图
  • 图结构可以服务后续生成和检索

七、把历史节点分配到课程章节

历史节点解决的问题对应课程章节
句法解析 / 递归神经网络探索树结构语言表示7.5 本节、5.2 Seq2Seq 背景
AMR把句子含义表示成语义图7.5 本节、7.4 信息抽取项目
语义角色标注谁对谁做了什么7.4 信息抽取、知识图谱扩展
Knowledge Graph把抽取结果组织成可查询知识第 8 章 RAG、知识库系统

八、学完这一节应该形成的直觉

向量检索告诉你“哪段文本相似”,语义图更关心“这段文本里有哪些角色和关系”。

如果你要做教育课件、知识库问答或自动生成 Word 文档,这个区别非常重要:

  • 向量检索帮你找资料
  • 信息抽取帮你抓要点
  • 语义图帮你组织结构
  • 大模型帮你按模板生成内容

这也是现代知识库应用越来越重视“检索 + 结构化 + 生成”的原因。