一、句法分析的任务
词法分析回答「这是什么词」,句法分析(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 | 并列关系 | 分词和标注 |
一句话不论多长,都有一根「主心骨」;找到核心动词,再顺藤摸瓜,整句的语义框架便浮现出来。
四、分析方法与工具
依存句法器的算法大致经历了三代:
- 基于规则:语言学家手写文法规则,覆盖窄、维护难;
- 基于统计:转移式(Transition-based)与图式(Graph-based)方法,在人工标注树库上学习打分;
- 基于神经网络: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 为虚拟根节点
阅读方法:从右往左看箭头——箭头指向的是从属词。第三句「剧情」是「精彩」的主语,「非常」是状语,而「电影」通过领属关系修饰「剧情」,层层嵌套,正是汉语定中结构的典型样貌。