第 六 章

句法分析

句中有法度,词词有纲纪

一、句法分析的任务

词法分析回答「这是什么词」,句法分析(Syntactic Parsing)则回答「词与词按什么结构组成句子」。它揭示的是词语之间的支配与修饰关系,让机器从「认识词」走向「读得懂句子骨架」。

两大主流形式:

成分句法分析依存句法分析
核心单位短语成分(名词短语、动词短语)词与词之间的依存关系
输出形式短语结构树依存弧(中心词 → 修饰词)
直观比喻句子的「解剖层级图」句子的「关系网络图」
工程热度相对较少NLP 应用主流

二、成分句法分析

成分句法(短语结构句法)认为句子由一层层短语递归构成:句子 S → 名词短语 NP + 动词短语 VP;名词短语又可拆为限定词 DT + 名词 NN……

句子:小明 学习 人工智能

        S
       / \
      NP  VP
      |  /  \
     NN VBZ   NP
      |  |    |
     小明 学习  人工智能

标记:S=句子 NP=名词短语 VP=动词短语 NN=名词 VBZ=动词

这种层次结构清晰,但对中文存在两个麻烦:短语边界争议多、标注成本高。因此在中文工程中,依存句法更为常用。

三、依存句法分析

依存句法认为:句子有且只有一个核心词(root),其余词都以某种依存关系直接或间接依附于核心词。每条依存弧记为:

支配词(核心词) ——依存关系——> 从属词(修饰词)

以「小明 在 北京 学习 人工智能」为例:

ROOT ──root──────> 学习        (全句核心:动词“学习”)
学习 ──nsubj─────> 小明        (名词性主语)
学习 ──nmod:prep─> 北京        (介词性处所修饰)
北京 ──case──────> 在          (介词依附于处所词)
学习 ──dobj──────> 人工智能    (直接宾语)

中文依存分析中常见的关系标签:

标签关系示例
root全句核心词通常是主要动词
nsubj名词性主语小明学习
dobj直接宾语学习人工智能
nmod名词性修饰(定中)我们的生活
advmod状语修饰非常精彩
amod形容词修饰精彩的电影
aux / case助词 / 介词格标记了、着、的、在
conj并列关系分词和标注
一句话不论多长,都有一根「主心骨」;找到核心动词,再顺藤摸瓜,整句的语义框架便浮现出来。

四、分析方法与工具

依存句法器的算法大致经历了三代:

  1. 基于规则:语言学家手写文法规则,覆盖窄、维护难;
  2. 基于统计:转移式(Transition-based)与图式(Graph-based)方法,在人工标注树库上学习打分;
  3. 基于神经网络:BiLSTM / BERT 编码器 + 注意力打分,是当前主流,准确率普遍超过 90%。

工具方面:

python · HanLP 依存句法import hanlp

pipeline = hanlp.pipeline() \
    .append(hanlp.utils.rules.split_sentence) \
    .append(hanlp.load("CTB6_CONVSEG")) \
    .append(hanlp.load("CTB5_POS_RNN_FASTTEXT_ZH")) \
    .append(hanlp.load(hanlp.pretrained.dep.CTB7_BIAFFINE_DEP_ZH))

print(pipeline("小明在北京学习人工智能"))
# 每个词附带 (词性, 中心词序号, 依存关系)

英文场景可用 spaCy,一行 nlp(text) 即可在 token.head 与 token.dep_ 中读出依存弧,并自带 displacy 可视化树。

五、典型应用场景

  • 问答机器人:通过主语—谓语—宾语快速定位「用户问的是谁和什么」,辅助槽位抽取;
  • 信息抽取与知识图谱:公司(主语)— 收购(谓语)— 公司(宾语) 直接构成三元组;
  • 观点与情感分析:用依存弧找到评价词修饰的具体对象,实现方面级情感分析(「续航很强,但价格很贵」);
  • 机器翻译与句子改写:用句法结构约束语序调整;
  • 复杂问答校验:判断问句是否有明确主语,缺成分时向用户追问。
依存树给出的是结构骨架,但「为什么这两个词构成这种关系」的意义问题,需要第七章的语义分析来回答。

六、交互演示:查看依存树

切换下列例句,观察每句的核心词(红色)如何通过依存关系(青色)支配其他词(金色):

依存句法观察台ROOT 为虚拟根节点

阅读方法:从右往左看箭头——箭头指向的是从属词。第三句「剧情」是「精彩」的主语,「非常」是状语,而「电影」通过领属关系修饰「剧情」,层层嵌套,正是汉语定中结构的典型样貌。