文本特征工程详解:TF-IDF算法、相似度计算与词袋模型演进及PyTorch实现
目录
什么是文本特征工程?
机器无法直接理解“自然语言处理”这样的字符串,它只接受数值数据。文本特征工程的核心任务,就是把原始文本转换成带有语义线索的数值向量,让算法能够处理。
它的四大核心目标:
- 数值化文本:将文字映射为数字。
- 提取关键特征:比如让关键词拥有更高的权重。
- 合理降维:避免词汇表爆炸式增长。
- 保留语义:尽可能让相似的文本在向量空间中也靠近。
词袋模型(Bag of Words)
词袋模型是文本向量化的“初代机”,思想非常简单:完全忽略词序和语法,只统计每个词在文档里出现的次数。就好像把所有词语倒进一个袋子里,只看每个词的数量。
极简代码实现
借助 sklearn 和中文分词库 jieba,几行代码就能实现:
优缺点一览
TF-IDF算法详解
TF-IDF 可以看作词袋模型的升级版,它为每个词赋予一个权重。核心思想是:如果一个词在当前文档中出现频繁,但在整个语料库中很少见,那么它就能很好地代表这篇文档。
比如,“机器学习”在技术文章里很关键,而“的”在所有文章中都很常见,TF-IDF 会给前者高权重,后者低权重。
核心权重逻辑
- 词频 (TF):衡量某个词在当前文档里的“存在感”。
- 逆文档频率 (IDF):衡量某个词在整个语料中的“稀缺度”——越稀缺的词信息量越大,权重越高。
- 最终权重:TF 与 IDF 的乘积。
实用 Sklearn 实现
TfidfVectorizer 不仅封装了上述逻辑,还支持 n-gram、归一化等高级功能,是工程中的首选:
相似度度量方法
得到文本向量后,最常见的操作就是计算文本相似度,应用在文档检索、问答匹配等场景。
1. 余弦相似度(最常用)
余弦相似度通过计算两个向量的夹角来衡量相似程度:夹角越小,相似度越高。它的最大优势是不受向量长度影响,特别适合经过 L2 归一化后的 TF-IDF 向量。
2. 其他方法对比
极简PyTorch TF-IDF实现
既然标题提到 PyTorch,这里提供一个极简、可直接运行的版本,方便你自定义底层逻辑,或将其嵌入到深度学习管线中:
实际应用与案例
文档相似度搜索
下面展示一个最贴近工程的应用:输入查询,返回最相似的 N 个文档。
局限性与现代替代方案
TF-IDF 的三大局限
- 完全忽略词序:无法区分“深度学习”和“学习深度”。
- 无法捕捉语义:“汽车”和“轿车”在向量空间中毫无关联。
- 高维稀疏:词汇表极大时,计算效率与内存会成为瓶颈。
现代替代方案对比
总结
TF-IDF 是 NLP 文本特征工程中必学的入门算法,也是工业界长期依赖的实用工具:
- 核心逻辑清晰,便于理解和调试。
- 计算效率极高,适合大规模语料处理。
- 至今仍在文档检索、关键词提取等场景中广泛使用。
- 建议先掌握 TF-IDF,再逐步过渡到更复杂的预训练模型。

