第13章 NLP 领域的机器学习实践

第 13 章「NLP 领域的机器学习实践」是整个机器学习体系中最具代表性的实战篇章之一。

自然语言处理(Natural Language Processing, NLP)是机器学习在真实世界中最早、也最广泛的落地场景之一。

本章将从数据预处理、表示方法到经典任务与模型,系统地讲解传统机器学习如何“理解文字”。

第13章 NLP 领域的机器学习实践

语言是人类智慧的外化,而 NLP 就是让机器理解、生成、归纳语言规律的科学。

虽然如今的 NLP 已进入深度学习与大模型时代,但传统机器学习方法依然是 NLP 的理论基石与工业入门方案。


13.1 文本预处理与向量化(TF-IDF、Word2Vec)

机器学习无法直接理解文字,它只能理解「数字」。 因此,文本预处理与向量化是所有 NLP 任务的第一步。


🧹 1. 文本预处理(Text Preprocessing)

目标: 清洗、规范化原始文本,让后续算法更好地建模。

常见步骤:

  1. 分词(Tokenization)

    • 英文:按空格、标点切分。
    • 中文:需使用分词器,如 jiebaHanLPTHULAC
  2. 大小写统一与停用词去除

    • 停用词(如 “的”、“and”、“the”)对语义贡献小。
  3. 词干提取 / 词形还原(Stemming / Lemmatization)

    • 把 “running”、“runs” 统一成 “run”。
  4. 符号与噪声去除

    • 表情、网址、数字、HTML 标签等。
  5. 特征缩放与过滤

    • 去除极少出现的词,控制词表规模。

💡 预处理的目标不是“纯净”,而是“高效”。


📊 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)

任务目标: 给定一段文本,判断它属于哪个类别。 (如新闻分类、垃圾邮件检测、产品评论分类等)

常见流程:

  1. 文本预处理
  2. 特征提取(BoW、TF-IDF、Word2Vec 平均)
  3. 模型训练(SVM、逻辑回归、朴素贝叶斯等)
  4. 模型评估(Accuracy、F1、AUC)

经典模型:

模型 特点
朴素贝叶斯 (Naive Bayes) 快速、可解释、效果稳健
逻辑回归 (Logistic Regression) 线性分类基准模型
SVM 适合高维稀疏数据
随机森林 / XGBoost 非线性建模能力强

💬 2. 情感分析(Sentiment Analysis)

目标: 判断一段文本的情感倾向(正面、中性、负面)。

典型应用:

  • 电商评论好评率分析
  • 社交媒体舆情监测
  • 用户满意度建模

方法演进:

  1. 基于词典:正负面情感词表 + 规则
  2. 基于机器学习:TF-IDF + 分类器(SVM / LR)
  3. 深度学习 / 预训练模型: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 落地实践