1668 字
8 分钟
句法分析与语义角色标注

句法分析的目标#

词法分析回答“句子由哪些词组成”,句法分析回答“这些词如何组织成更大的结构”。句法分析的输入是词序列,输出是一棵非线性的句法结构树。

主要有两大流派:

  • 短语结构分析(Phrase Structure Parsing):分析句子的层次组成,常用上下文无关文法描述。
  • 依存句法分析(Dependency Parsing):分析词与词之间的支配与被支配关系。

短语结构分析#

短语结构树用层次结构表示句子:

  • 叶子节点是句子中的每个词,称为 终结符(terminal);
  • 中间节点是词性和短语标记。词性节点直接支配终结符,称为 预终结符(preterminal);NP、VP、S 等短语标记称为 非终结符(nonterminal)。

例如“双方签署了协议”可以分析为:

S
┌───┴───┐
NP VP
│ ┌──┴──┐
双方 V NP
│ │
签署 协议

根据分析范围,可以分为:

  • 完全句法分析(Full Parsing):给出整个句子的完整句法树;
  • 局部句法分析(Partial / Shallow Parsing):只识别句子中的关键短语,如名词短语、动词短语。

上下文无关文法#

短语结构分析通常使用上下文无关文法(Context-Free Grammar, CFG)。一个 CFG 由四部分组成:

G=(N,Σ,R,S)G = (N, \Sigma, R, S)
  • NN:非终结符集合,如 NP、VP、S;
  • Σ\Sigma:终结符集合,即词表;
  • RR:产生式规则集合,如 VP→V NP\text{VP} \rightarrow \text{V NP};
  • SS:起始符号。

CFG 能描述嵌套结构,但不能直接反映不同规则的常见程度。一个句子往往有多棵合法的句法树,需要额外的机制消歧。

概率上下文无关文法#

概率上下文无关文法(Probabilistic CFG, PCFG)给每条产生式附加一个概率:

A→β[p]A \rightarrow \beta \quad [p]

同一左部 AA 的所有产生式概率之和为 1:

∑βP(A→β∣A)=1\sum_{\beta} P(A \rightarrow \beta \mid A) = 1

一棵句法树 TT 的概率是树中所有产生式概率的乘积:

P(T)=∏(A→β)∈TP(A→β∣A)P(T) = \prod_{(A \rightarrow \beta) \in T} P(A \rightarrow \beta \mid A)

句子的概率则是所有合法句法树概率之和:

P(S)=∑T derives SP(T)P(S) = \sum_{T \text{ derives } S} P(T)

用 PCFG 消歧#

给定句子,PCFG 选择概率最大的句法树:

T∗=arg⁡max⁡TP(T∣S)=arg⁡max⁡TP(T)T^* = \arg\max_T P(T \mid S) = \arg\max_T P(T)

因为 P(S)P(S) 对所有候选树相同。这个搜索可以用 CYK 等动态规划算法完成:把句子分成若干跨度,自底向上计算每个非终结符在每个跨度上的最大概率。

PCFG 的优点和局限:

  • 优点:能结合规则的结构约束和统计的频率偏好;
  • 局限:假设规则之间独立,难以建模远距离依赖和词汇搭配。

现代句法分析器更多使用神经网络(如基于转移的系统、图解析器或预训练模型微调)。

依存句法分析#

依存语法认为句子中的词之间存在直接的支配关系。核心概念:

  • 支配者(head / governor):处于支配地位的词;
  • 从属者(dependent):被支配的词;
  • 依存弧:用有向弧表示支配关系,通常从支配者指向从属者;
  • 依存关系标签:说明关系的类型,如主语(SBV)、宾语(VOB)、定语(ATT)等。

以“北京是中国的首都”为例:

北京 ←SBV─ 是
中国 ←ATT─ 首都
首都 ←VOB─ 是

“是”是句子的根节点(root),“北京”是它的主语,“首都”是它的宾语,“中国”是“首都”的定语。

依存分析的特点#

  • 不要求中间短语节点,结构更紧凑;
  • 词与词的关系直观,适合信息抽取和知识图谱;
  • 对语序变化的适应性较强,适合自由语序语言。

依存树通常还要求满足 投射性(projectivity):如果词 ii 支配词 jj,则 ii 与 jj 之间的所有词都直接或间接依存于 ii 或 jj。自然语言中大多数句子是投射的,但口语和长距离依存中也会出现非投射结构。

依存分析的方法#

  1. 基于规则:人工编写语法规则和约束,可解释但难以覆盖大规模真实文本。
  2. 基于统计/转移:把分析过程建模为一系列转移动作(shift、reduce、left-arc、right-arc),用分类器预测下一步动作。
  3. 基于图:为每个词对预测依存弧的得分,再求解满足树约束的最大生成树。
  4. 神经网络:用 BiLSTM/Transformer 编码上下文,再做转移预测或图打分。

语义角色标注#

句法结构告诉我们“谁修饰谁”,语义角色标注(Semantic Role Labeling, SRL)进一步回答“谁对谁做了什么”。SRL 围绕句子中的 谓词(predicate)展开,识别它的 论元(argument)并标注论元扮演的语义角色。

SRL 的核心单位是 谓词论元结构(predicate-argument structure),通常记为 REL。语义角色分为两大类:

核心语义角色#

直接参与谓词所描述事件的论元,常用编号表示:

  • Arg0:施事(Agent),动作的执行者;
  • Arg1:受事(Patient),动作的承受者;
  • Arg2:工具、受益者、终点等,具体含义取决于谓词;
  • Arg3 / Arg4:更远的论元,出现频率较低。

辅助语义角色#

修饰性的环境成分,标签以 ARGM- 开头:

  • ARGM-TMP:时间
  • ARGM-LOC:地点
  • ARGM-MNR:方式
  • ARGM-PRP:目的
  • ARGM-CAU:原因
  • ARGM-DIS:对比/连接

例如:

小明 昨天 在图书馆 买了 这本书
Arg0 ARGM-TMP ARGM-LOC Predicate Arg1

谓词是“买”,施事是“小明”,受事是“这本书”,时间和地点分别由 ARGM-TMP 和 ARGM-LOC 标注。

SRL 的方法#

SRL 通常分为两步:

  1. 谓词识别:找出句子中的谓词;
  2. 论元识别与角色分类:为每个候选论元分配角色。

传统方法把它转化为序列标注或分类问题,使用 CRF、最大熵等模型和句法特征。神经网络方法用 BiLSTM/Transformer 编码句子,再对每个候选跨度做角色分类,或直接做 BIO 序列标注。预训练模型(如 BERT)显著提升了 SRL 的性能。

SRL 在信息抽取、问答、机器翻译和知识图谱构建中都有应用:它能把“谁在何时何地做了什么”结构化出来,是从句子走向事件表示的重要一步。

相关阅读#

句法分析与语义角色标注
https://biscuit0613.github.io/posts/nlp/03-03-syntax-semantics/
作者
Biscuit
发布于
2026-10-13
许可协议
CC BY-NC-SA 4.0
词法分析:分词、命名实体识别与词性标注
经典 NLP 任务:文本分类、信息抽取与机器翻译