第13章 NLP 领域的机器学习实践
第 13 章「NLP 领域的机器学习实践」是整个机器学习体系中最具代表性的实战篇章之一。
自然语言处理(Natural Language Processing, NLP)是机器学习在真实世界中最早、也最广泛的落地场景之一。
本章将从数据预处理、表示方法到经典任务与模型,系统地讲解传统机器学习如何“理解文字”。
第13章 NLP 领域的机器学习实践
语言是人类智慧的外化,而 NLP 就是让机器理解、生成、归纳语言规律的科学。
虽然如今的 NLP 已进入深度学习与大模型时代,但传统机器学习方法依然是 NLP 的理论基石与工业入门方案。
13.1 文本预处理与向量化(TF-IDF、Word2Vec)
机器学习无法直接理解文字,它只能理解「数字」。 因此,文本预处理与向量化是所有 NLP 任务的第一步。
🧹 1. 文本预处理(Text Preprocessing)
目标: 清洗、规范化原始文本,让后续算法更好地建模。
常见步骤:
-
分词(Tokenization)
- 英文:按空格、标点切分。
- 中文:需使用分词器,如
jieba、HanLP、THULAC。
-
大小写统一与停用词去除
- 停用词(如 “的”、“and”、“the”)对语义贡献小。
-
词干提取 / 词形还原(Stemming / Lemmatization)
- 把 “running”、“runs” 统一成 “run”。
-
符号与噪声去除
- 表情、网址、数字、HTML 标签等。
-
特征缩放与过滤
- 去除极少出现的词,控制词表规模。
💡 预处理的目标不是“纯净”,而是“高效”。
📊 2. 词袋模型(Bag of Words, BoW)
最基础的文本向量化方式:
- 不考虑词序;
- 统计每个词在文档中出现的次数;
- 用词频向量表示文本。
示例:
“I love NLP” → [1,1,1,0,0,…]
优点: 简单直观; 缺点: 忽略语义与上下文,维度高且稀疏。
📈 3. TF-IDF(Term Frequency - Inverse Document Frequency)
核心思想:
- 词频高说明词重要;
- 但如果在所有文档都常见(如“的”),说明没区分度。
公式: [ \text{TF-IDF}(t, d) = TF(t,d) \times \log\frac{N}{DF(t)} ]
- TF:词频
- DF:包含该词的文档数
- N:总文档数
结果是一个“稀疏但信息量高”的特征向量。
🧠 4. Word2Vec 与词嵌入(Word Embedding)
革命性思想: 让每个词对应一个低维稠密向量,使语义相似的词在空间中距离更近。
两种模型:
- CBOW(Continuous Bag of Words):通过上下文预测中心词;
- Skip-gram:通过中心词预测上下文。
训练目标:最大化词语共现的概率。
示例结果:
vector("king") - vector("man") + vector("woman") ≈ vector("queen")
💡 Word2Vec 让机器开始“理解语义”,是通向深度 NLP 的里程碑。
13.2 文本分类与情感分析
🏷️ 1. 文本分类(Text Classification)
任务目标: 给定一段文本,判断它属于哪个类别。 (如新闻分类、垃圾邮件检测、产品评论分类等)
常见流程:
- 文本预处理
- 特征提取(BoW、TF-IDF、Word2Vec 平均)
- 模型训练(SVM、逻辑回归、朴素贝叶斯等)
- 模型评估(Accuracy、F1、AUC)
经典模型:
| 模型 | 特点 |
|---|---|
| 朴素贝叶斯 (Naive Bayes) | 快速、可解释、效果稳健 |
| 逻辑回归 (Logistic Regression) | 线性分类基准模型 |
| SVM | 适合高维稀疏数据 |
| 随机森林 / XGBoost | 非线性建模能力强 |
💬 2. 情感分析(Sentiment Analysis)
目标: 判断一段文本的情感倾向(正面、中性、负面)。
典型应用:
- 电商评论好评率分析
- 社交媒体舆情监测
- 用户满意度建模
方法演进:
- 基于词典:正负面情感词表 + 规则
- 基于机器学习:TF-IDF + 分类器(SVM / LR)
- 深度学习 / 预训练模型:RNN / BERT 语义建模
💡 传统机器学习在情感分析中仍广泛使用,尤其在小样本、可解释场景中。
13.3 主题模型(LDA、LSA)
🧩 1. 主题模型是什么?
目标: 从大量文档中自动发现“潜在主题”。 比如一堆新闻中自动聚类出「体育」、「财经」、「科技」等话题。
🧮 2. LSA(Latent Semantic Analysis)
基于 SVD(奇异值分解) 对文档-词矩阵进行降维, 提取出潜在语义空间。
[ A_{m \times n} \approx U_{m \times k} \Sigma_{k \times k} V^T_{k \times n} ]
- 每篇文档、每个词都被表示在一个 k 维语义空间中;
- 语义相似的文档、词会在空间中靠近。
缺点: 解释性弱、易受噪声影响。
🧠 3. LDA(Latent Dirichlet Allocation)
一种基于概率图模型的主题模型。 假设:
- 每篇文档由若干主题混合而成;
- 每个主题又由若干词构成。
LDA 用贝叶斯推断求出文档→主题、主题→词的分布。
输出结果:
- 每篇文档的主题比例;
- 每个主题的关键词。
应用场景:
- 新闻聚类与推荐;
- 学术论文主题发现;
- 舆情话题演变分析。
13.4 信息抽取与关键词提取
🧾 1. 信息抽取(Information Extraction, IE)
目标: 从非结构化文本中提取结构化信息。 如:
- 实体识别(人名、地名、机构名)
- 关系抽取(“马斯克—创办—特斯拉”)
- 事件抽取(“发布新产品”、“签署协议”)
常见方法:
| 方法 | 描述 |
|---|---|
| 基于规则 | 关键词 + 正则表达式匹配 |
| 条件随机场(CRF) | 序列标注的经典算法 |
| SVM / 最大熵模型 | 逐词分类 |
| 深度模型 | BiLSTM-CRF, BERT-NER |
💡 信息抽取是 NLP 从“阅读”走向“理解”的关键一步。
🔑 2. 关键词提取(Keyword Extraction)
目标: 自动识别一篇文档中最能代表主题的词语。
常见算法:
| 算法 | 核心思想 |
|---|---|
| TF-IDF | 高频且区分度高的词 |
| TextRank | 基于词共现的图排序算法(类似 PageRank) |
| RAKE | 关键词候选短语的共现统计 |
| YAKE | 无需语料统计的单文档算法 |
应用:
- 搜索引擎摘要生成
- 文档索引与聚类
- 舆情与内容推荐
✅ 本章小结
| 模块 | 核心目标 | 典型算法 | 关键词 |
|---|---|---|---|
| 文本预处理与向量化 | 将语言转为数字 | TF-IDF、Word2Vec | 表示学习 |
| 文本分类与情感分析 | 识别类别或情感倾向 | Naive Bayes、SVM | 监督学习 |
| 主题模型 | 自动发现隐藏主题 | LDA、LSA | 无监督学习 |
| 信息抽取 | 把文本变成结构化数据 | CRF、TextRank | NLP 落地实践 |
