NLP文本特征提取:词袋模型BOW与TF-IDF原理实战详解 -w3
本章为AI算法自然语言处理入门实战,重点学习文本数字化核心方案:词袋模型(BOW)与 TF-IDF 权重算法。
结合课堂代码运行结果,深度拆解矩阵输出规则、权重计算逻辑,解决新手常见理解误区,夯实NLP基础。
📑 一、学习前言
计算机无法直接识别汉字、文本等非结构化数据,想要让模型处理文本、做分类、相似度计算、情感分析,第一步必须将文本转为数字向量。
本节课学习两种最经典的文本向量化方式:
- 词袋模型 BOW:基于单词计数的简单文本特征提取
- TF-IDF:结合词频与全局权重的进阶文本特征提取,工业级常用方案
💻 二、课堂完整实战代码
1 | # 导入需要的库 |
📚 三、核心工具基础概念
CountVectorizer 词袋模型
核心逻辑:忽略语序、忽略语法,只统计每个词语在单条文本中出现的次数
fit:遍历全部文本,自动分词、去重,生成全局统一词汇表
transform:根据固定词汇表,将每一句话转为数字向量
输出结果:纯整数,代表单词出现频次TfidfVectorizer TF-IDF 模型
TF-IDF 由两部分组成:
TF 词频:单个词语在当前句子中出现的频率,出现越多权重越高
IDF 逆文档频率:词语在全部文本中出现越泛滥、越通用,权重越低
核心思想:物以稀为贵,抑制高频无用词,突出句子专属关键词
输出结果:0~1 之间小数,代表词语重要性权重
🔤 四、全局词汇表规则解析
程序运行后自动生成统一词汇表,固定排序:[‘不好’, ‘今天’, ‘你的’, ‘天气’, ‘心情’, ‘真好’]
关键核心规则
所有句子共用同一套词汇表
词汇表有多少个词,最终矩阵就有多少固定列
单条句子中没有出现的词语,对应位置自动补 0
矩阵列数 ≠ 句子单词数,而是全部文本去重后的总单词数
📊 五、运行结果深度拆解
- 词袋模型输出特点
矩阵数值为整数,直观展示每个词出现多少次
缺陷:高频通用词(如「今天」)次数过高,会掩盖句子真实特征 - TF-IDF 权重矩阵逐行分析
文本内容 TF-IDF 权重向量核心解读 今天 天气 真好 今天权重偏低(全局高频);天气、真好权重更高,区分度更强 今天 天气 不好 通用词权重被压低,差异化词语权重提升 你的 心情 真好 「你的」仅单独出现,稀有度最高,全局权重峰值 0.66 今天 心情 不好 平衡通用词与小众词权重分布 今天 今天 今天 整段文本只有一个词汇,归一化后该词权重直接为 1.0
重点难点解答:第五行为什么是 [0. 1. 0. 0. 0. 0.]
全局词汇表一共 6 个词,矩阵必须固定 6 列,缺一不可
该句子只包含「今天」,其余 5 个词语均未出现,全部补 0
TF-IDF 默认开启向量归一化,单词语独占整段文本时,权重归一化为满分 1.0
通俗理解:所有单词统一占位,没出现就填 0,出现就按重要性打分
| 模型 | 核心思想 | 输出 | 优点 | 缺点 |
|---|---|---|---|---|
| 词袋 BOW | 只看词出现次数 | 整数 | 简单直观 | 常见词权重过高 |
| TF-IDF | 词频 × 逆文档频率 | 0~1 小数 | 突出关键词、过滤废话词 | 计算稍复杂 |
📚 学习心得
这节内容是 NLP 入门最关键的一步:把文字变成计算机能计算的数字。
通过实战我真正理解了:
所有句子共用固定词汇表,按位置填空
词袋模型只计数,TF-IDF 看重要性
越稀有的词,权重越高,越能代表句子特征
矩阵的列数 = 词汇表大小,不是句子词数
把文本向量化搞懂,后面文本分类、情感分析、关键词提取就都通了!
