人工智能之语言领域 自然语言处理 第二章 语言学基础

人工智能之语言领域

第二章 语言学基础


前言:语言学基础

自然语言处理(NLP)虽是计算机科学的分支,但其根基深深扎在语言学之中。无论是分词、句法分析,还是语义理解,都离不开对人类语言结构规律的认知。本章将系统介绍 NLP 所依赖的核心语言学知识,涵盖词汇、句法、语义、语用及篇章层面,并说明这些知识如何指导实际 NLP 系统的设计与实现。


2.1 词汇学基础

2.1.1 词的构成:语素、词根、词缀

语素(Morpheme) 是语言中最小的有意义单位。

  • 自由语素:可独立成词,如"书"、"跑"。
  • 黏着语素:必须依附于其他语素,如中文的"们"(我们)、英语的 "-ed"(played)。

词根(Root) :承载核心语义的部分。
词缀(Affix):附加在词根上改变意义或语法功能,分为:

  • 前缀(prefix):如 "un-"(unhappy)
  • 后缀(suffix):如 "-ness"(happiness)
  • 中缀、环缀(较少见)

🌰 中文例子:"可爱" = "可"(前缀,表可能性) + "爱"(词根)

英文例子:"unbelievable" = un- + believe + -able

语素
自由语素: 书, 跑
黏着语素
前缀: un-, 可-
后缀: -ed, -们

💡 NLP 应用:词形还原(Lemmatization)词干提取(Stemming) 都依赖形态分析。例如将 "running" 还原为 "run"。

python 复制代码
# 示例:使用 NLTK 进行英文词干提取与词形还原
import nltk
from nltk.stem import PorterStemmer, WordNetLemmatizer

nltk.download('wordnet')
stemmer = PorterStemmer()
lemmatizer = WordNetLemmatizer()

word = "running"
print("Stem:", stemmer.stem(word))           # run
print("Lemma:", lemmatizer.lemmatize(word, pos='v'))  # run

⚠️ 中文无严格词形变化,但需处理构词(如"老师"≠"老"+"师"语义叠加),常通过分词+词性标注间接处理。


2.1.2 词类划分:实词、虚词及其语法功能

词类(Part-of-Speech, POS) 是按语法功能对词的分类。

类别 说明 示例
实词 有实际词汇意义,可独立充当句子成分 名词(苹果)、动词(吃)、形容词(红)
虚词 无实在意义,主要起语法连接作用 介词(在)、连词(和)、助词(的)、语气词(吗)

常见英文 POS 标签(Penn Treebank):

  • NN:名词单数(dog)
  • VB:动词原形(eat)
  • JJ:形容词(red)
  • IN:介词(in, on)

中文常用词性标注集(如 PKU、CTB):

  • n:名词(北京)
  • v:动词(学习)
  • a:形容词(美丽)
  • u:助词(的、了)
python 复制代码
# 示例:中文词性标注(使用 LTP 或 spaCy 中文模型)
# 这里以 jieba + 自定义规则简化演示(实际推荐使用 LAC、HanLP 或 spaCy)
import jieba.posseg as pseg

text = "我喜欢自然语言处理"
words = pseg.cut(text)
for word, flag in words:
    print(f"{word} / {flag}")

输出(近似):

复制代码
我 / r
喜欢 / v
自然语言处理 / nz

🔍 注:nz 表示"其他专有名词",说明未登录词识别仍是挑战。


2.1.3 词汇语义:同义词、反义词、上下位词

  • 同义词(Synonyms):意义相近 → "快乐" ≈ "高兴"
  • 反义词(Antonyms):意义相反 → "大" ↔ "小"
  • 上下位关系(Hyponymy/Hypernymy)
    • 上位词(Hypernym):更泛化 → "水果"
    • 下位词(Hyponym):更具体 → "苹果"、"香蕉"

📚 语言资源:

  • 英文:WordNet(结构化语义网络)
  • 中文:HowNet、同义词词林(Cilin)
python 复制代码
# 示例:使用 NLTK 访问 WordNet 查找同义词集(synsets)
from nltk.corpus import wordnet as wn

nltk.download('wordnet')
syns = wn.synsets('car')
print("Synsets for 'car':", [s.name() for s in syns])
# 输出:['car.n.01', 'car.n.02', ...]

# 获取第一个同义词集的所有同义词
lemmas = syns[0].lemma_names()
print("Lemmas:", lemmas)  # ['car', 'auto', 'automobile', ...]

💡 NLP 应用:语义相似度计算、问答系统中的词汇扩展、文本增强。


2.2 句法学基础

2.2.1 短语结构规则与句法树

短语结构语法(Phrase Structure Grammar) 用规则描述句子如何由短语构成。

例如英语句子生成规则:

复制代码
S → NP VP  
NP → Det N  
VP → V NP  
Det → the  
N → cat, dog  
V → chased

生成句子 "The cat chased the dog" 的句法树(Parse Tree)
S
NP
VP
Det: the
N: cat
V: chased
NP
Det: the
N: dog

📌 中文也适用类似结构,但语序更灵活(如话题优先)。


2.2.2 依存句法与成分句法

类型 特点 代表
成分句法(Constituency Parsing) 基于短语结构,生成树状层次 Penn Treebank
依存句法(Dependency Parsing) 以词为节点,用有向边表示语法关系 Stanford Dependencies

依存关系示例("我吃苹果"):

  • "吃" 是根(ROOT)
  • "我" → nsubj(主语)
  • "苹果" → obj(宾语)

吃 ROOT
我 nsubj
苹果 obj

✅ 依存句法更简洁,适合信息抽取;成分句法更适合语言学分析。

python 复制代码
# 示例:使用 spaCy 进行英文依存句法分析
import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("I eat an apple.")

for token in doc:
    print(f"{token.text} <--{token.dep_}-- {token.head.text}")

输出:

复制代码
I <--nsubj-- eat
eat <--ROOT-- eat
an <--det-- apple
apple <--dobj-- eat
. <--punct-- eat

🌐 中文可用 LTPHanLPspaCy + zh_core_web_sm 实现类似功能。


2.2.3 语法范畴:时态、语态、性数格

语法范畴(Grammatical Categories) 是语言中通过形态或位置表达的抽象语法属性:

范畴 说明 示例
时态(Tense) 动作发生时间 eat(现在), ate(过去)
语态(Voice) 主语与动作关系 active(I wrote) vs passive(It was written)
性(Gender) 名词/代词的性别属性 法语 le(阳性)/ la(阴性)
数(Number) 单复数 cat / cats
格(Case) 名词在句中的语法角色 德语 der(主格)/ den(宾格)

📝 中文特点:

  • 无严格形态变化:时态靠副词("昨天吃了")、语态靠"被"字句。
  • 无数、无格、无性(除少数方言或古汉语残留)。
    💡 NLP 挑战:中文需通过上下文推断时态/语态,而英文可通过动词形式直接识别。

2.3 语义学与语用学

2.3.1 语义表示:词义、句义、篇章义

  • 词义(Lexical Semantics):单个词的含义(如"bank"有"河岸"和"银行"两义)。
  • 句义(Sentential Semantics):句子整体真值条件(如"猫在垫子上"为真当且仅当......)。
  • 篇章义(Discourse Semantics):跨句语义连贯(如代词指代、逻辑衔接)。

🧩 语义表示方法:

  • 逻辑形式(Logic Form)
  • 语义角色标注(Semantic Role Labeling, SRL)
  • 向量空间模型(Word Embedding)
    Embedding
    BERT
    Coreference
    Word
    Vector
    Sentence
    ContextualVector
    Discourse
    EntityChain

2.3.2 语用规则:语境、预设、言语行为理论

语用学(Pragmatics) 研究语言在语境中的使用。

  • 语境(Context):同一句话在不同场景含义不同

    "你能关窗吗?" → 不是问能力,而是请求。

  • 预设(Presupposition):话语隐含的前提

    "他不再抽烟了" → 预设"他以前抽烟"。

  • 言语行为理论(Speech Act Theory):说话即做事

    • 表述类(Assertives):陈述事实("地球是圆的")
    • 指令类(Directives):请求/命令("请关门")
    • 承诺类(Commissives):承诺未来行为("我明天来")

💡 NLP 应用:对话系统需识别用户真实意图(如将疑问句识别为请求)。


2.4 篇章语言学

2.4.1 篇章结构与连贯性

篇章(Discourse) 指大于句子的语言单位(段落、文章)。

  • 结构:引言--主体--结论;新闻的"倒金字塔"结构。
  • 连贯性(Coherence) :语义逻辑流畅
    • 通过衔接手段实现:指代、省略、连接词("因此"、"然而")

📖 例子:

"张三迟到了。错过了会议。" → "他"指代"张三",保证连贯。


2.4.2 指代消解与核心链分析

指代消解(Coreference Resolution):找出代词或名词短语指向的实体。

  • 核心链(Coreference Chain):同一实体的所有提及组成一个链。

例句:

"[马云]₁ 创立了阿里巴巴。[他]₂ 是中国著名企业家。[这位创始人]₃ 改变了电商。"

→ 核心链:{[马云], [他], [这位创始人]}

python 复制代码
# 示例:使用 spaCy 的神经指代消解(需安装 spacy-coref)
# 注意:官方 spaCy 不直接支持,需第三方插件或使用 transformers 模型
# 此处展示 HuggingFace 的 neuralcoref 替代方案(已归档)或使用 newer models

# 推荐使用:https://huggingface.co/facebook/bart-large-coref
# 以下为伪代码示意
from transformers import pipeline

coref = pipeline("coreference-resolution", model="facebook/bart-large-coref")
result = coref("马云创立了阿里巴巴。他是中国著名企业家。")
print(result.clusters)  # [[(0,2), (5,6)], ...] 表示指代关系

🔧 实际工程中,中文指代消解仍具挑战,常用规则+模型混合方法。


2.5 语言学知识在 NLP 中的应用

2.5.1 规则制定的语言学依据

早期 NLP 系统高度依赖语言学规则:

  • 分词规则:中文"动词+趋向补语"("走出去"不应切为"走/出/去")
  • 句法模板:问答系统匹配"谁发明了X?" → 提取"发明者"关系
  • 语义角色标注:基于 FrameNet 定义"购买"框架包含 Buyer、Goods、Money

✅ 优势:可解释性强;❌ 劣势:覆盖有限,维护成本高。


2.5.2 模型设计中的语言学启发

现代深度学习模型虽"端到端",但仍受语言学启发:

语言学概念 模型设计体现
层次结构 Transformer 的多层编码器模拟短语嵌套
依存关系 Attention 权重可近似依存弧(可视化显示)
语义角色 SRL 任务作为 BERT 的下游任务微调
篇章连贯 Longformer、BigBird 引入长距离注意力

提供结构先验
Linguistics
ModelDesign
BERT
Transformer
GNN-for-Parsing

🌟 典型案例:

  • Syntax-aware BERT:在预训练中加入句法距离约束
  • Graph Neural Networks for Parsing:将句法树建模为图结构

中文语言学特殊性

  1. 无空格分词:需专门分词工具(jieba、PKUSeg、LAC)
  2. 意合为主:少用连接词,靠语义连贯("下雨了,带伞。")
  3. 量词丰富:"一本书"、"一张纸"、"一条狗"
  4. 话题优先:"这本书,我很喜欢"(话题"这本书"前置)

💡 NLP 建议:处理中文时,务必使用中文语言学资源(如《现代汉语语法信息词典》)。


小结

语言学为 NLP 提供了结构化认知框架 :从词的构成到篇章的连贯,每一层都对应着具体的 NLP 任务。尽管大模型弱化了显式规则,但理解语言本质 仍是设计高效、鲁棒、可解释 NLP 系统的关键。未来的方向是语言学知识与数据驱动方法的深度融合


资料关注

咚咚王

《Python 编程:从入门到实践》

《利用 Python 进行数据分析》

《算法导论中文第三版》

《概率论与数理统计(第四版) (盛骤) 》

《程序员的数学》

《线性代数应该这样学第 3 版》

《微积分和数学分析引论》

《(西瓜书)周志华-机器学习》

《TensorFlow 机器学习实战指南》

《Sklearn 与 TensorFlow 机器学习实用指南》

《模式识别(第四版)》

《深度学习 deep learning》伊恩·古德费洛著 花书

《Python 深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》

《深入浅出神经网络与深度学习 +(迈克尔·尼尔森(Michael+Nielsen)》

《自然语言处理综论 第 2 版》

《Natural-Language-Processing-with-PyTorch》

《计算机视觉-算法与应用(中文版)》

《Learning OpenCV 4》

《AIGC:智能创作时代》杜雨 +&+ 张孜铭

《AIGC 原理与实践:零基础学大语言模型、扩散模型和多模态模型》

《从零构建大语言模型(中文版)》

《实战 AI 大模型》

《AI 3.0》

相关推荐
云烟成雨TD2 小时前
Spring AI 1.x 系列【9】ChatOptions 配置解析
java·人工智能·spring
茗创科技2 小时前
Molecular Psychiatry|将言语模式与情感性及精神病性障碍中的脑结构联系起来:一种整合性的自然语言处理方法
人工智能·自然语言处理
@大迁世界2 小时前
32.CSS魔术师 (CSS Houdini)
前端·css·人工智能·tensorflow·houdini
袋子(PJ)2 小时前
Windows 下本地部署 Qwen3-0.6B:WSL2 + vLLM + Open WebUI 全流程
服务器·人工智能·windows
youyoulg2 小时前
AI与大模型-机器学习
人工智能·机器学习
weiyvyy2 小时前
无人机嵌入式开发实战-姿态解算与稳定控制
人工智能·机器学习·机器人·无人机
薛定谔的猫-菜鸟程序员2 小时前
阿里CoPaw本地部署养虾实录:从“赛博宠物“到“电子遗产“的完整心路历程
人工智能
gaosushexiangji2 小时前
从SPS广州智能制造展看半导体封测“内卷”,高速相机如何成为工艺升级的关键工具
人工智能·制造
胖胖的小肥猫2 小时前
Attention Is All You Need 从零基础到完全理解
人工智能