文本特征向量化:词袋模型、Word2Vec 以及 TF-IDF 介绍
1. 引言
在自然语言处理(NLP)领域,计算机无法直接理解文本信息,因此需要将文本转换为数值向量,以便进行后续的分析和计算。这一过程被称为文本特征向量化。常见的文本向量化方法包括词袋模型(BoW)、TF-IDF 以及Word2Vec。
2. 词袋模型(Bag of Words, BoW)
2.1 词袋模型的基本原理
词袋模型通过统计文本中各个词出现的频次来表示文本。主要步骤如下:
构建词汇表:统计所有文本中出现的不同单词。 计算词频:统计每个文档中各个单词的出现次数。 生成向量:每个文本被表示为一个词频向量,维度等于词汇表大小。
2.2 词袋模型的特点
优势:
简单易理解,计算高效。 适用于文本分类等任务。
局限性:
忽略词语顺序和语义信息。 维度较高,易产生稀疏矩阵。
2.3 词袋模型示例及 Python 实现
from sklearn.feature_extraction.text import CountVectorizerdocuments = ["I love machine learning", "Machine learning is amazing", "Deep learning builds on machine learning"]# 移除停用词可优化结果(示例)vectorizer = CountVectorizer(stop_words='english')X = vectorizer.fit_transform(documents)print("词汇表:", vectorizer.get_feature_names_out()) # 输出词汇表print("词频矩阵:\n", X.toarray()) # 转换为数组形式
输出结果:
词汇表: ['amazing' 'builds' 'deep' 'learning' 'love' 'machine']词频矩阵:[[0 0 0 1 1 1][1 0 0 1 0 1][0 1 1 2 0 1]]
输出结果解释:
get_feature_names_out()返回词汇表中的单词列表。toarray()将稀疏矩阵转换为密集数组,每行对应一个文档的词频向量。
2.4 词袋模型的应用
主题建模(如 LDA):通过词频分布发现文档主题结构。 文本分类(如垃圾邮件检测):根据词频向量训练分类器。
3. TF-IDF:基于统计的文本表示
3.1 TF-IDF 的计算方式
TF-IDF(Term Frequency-Inverse Document Frequency)通过降低常见词权重突出重要词汇。公式如下:
其中:
TF(词频):词在文本中的出现次数。IDF(逆文档频率):衡量词的稀有程度,计算公式为:N:语料库中文档总数DF:包含某个词的文档数量实际实现如 sklearn中默认添加平滑项smooth_idf=True,避免除零错误
3.2 TF-IDF 的特点
优势:
突出重要单词,降低常见词影响。 适用于信息检索和关键词提取。
局限性:
依赖统计信息,无法捕捉语义关系。
3.3 TF-IDF 示例及 Python 实现
from sklearn.feature_extraction.text import TfidfVectorizerdocuments = ["I love machine learning", "Machine learning is amazing", "Deep learning builds on machine learning"]# 使用 TfidfVectorizervectorizer = TfidfVectorizer(stop_words='english') # 过滤常见停用词X = vectorizer.fit_transform(documents)print("词汇表:", vectorizer.get_feature_names_out())print("TF-IDF 矩阵:\n", X.toarray())
输出结果:
词汇表: ['amazing' 'builds' 'deep' 'learning' 'love' 'machine']TF-IDF 矩阵:[[0. 0. 0. 0.45329466 0.76749457 0.45329466][0.76749457 0. 0. 0.45329466 0. 0.45329466][0. 0.51680194 0.51680194 0.61046311 0. 0.30523155]]
输出结果解释:
get_feature_names_out()返回词汇表。toarray()转换为密集数组,每行对应一个文档的TF-IDF向量。
3.4 TF-IDF 的应用
搜索引擎排名:根据 TF-IDF 权重排序搜索结果。 关键词提取:识别文档中的重要词汇。
4. Word2Vec:基于神经网络的词向量表示
4.1 Word2Vec 的基本概念
Word2Vec 通过神经网络将单词映射到低维向量空间,捕捉语义关系(如“国王 - 男人 + 女人 ≈ 女王”)。
4.2 Word2Vec 的训练方法
CBOW(Continuous Bag of Words):通过上下文预测中心词,适合高频词。 Skip-Gram:通过中心词预测周围词,适合捕捉罕见词语义。
4.3 Word2Vec 示例及 Python 实现
from gensim.models import Word2Vecsentences = [["I", "love", "machine", "learning"],["Machine", "learning", "is", "amazing"],["Deep", "learning", "builds", "on", "machine", "learning"]]# 需使用 gensim ≥4.0.0,实际应用中建议设置 min_count=5 过滤低频词model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)print("词向量:", model.wv["machine"]) # 输出 "machine" 的向量(长度 100)
输出结果:
词向量: [-8.6196875e-03 3.6657380e-03 5.1898835e-03 5.7419385e-037.4669183e-03 -6.1676754e-03 1.1056137e-03 6.0472824e-03-2.8400505e-03 -6.1735227e-03 -4.1022300e-04 -8.3689485e-03-5.6000124e-03 7.1045388e-03 3.3525396e-03 7.2256695e-036.8002474e-03 7.5307419e-03 -3.7891543e-03 -5.6180597e-042.3483764e-03 -4.5190323e-03 8.3887316e-03 -9.8581640e-036.7646410e-03 2.9144168e-03 -4.9328315e-03 4.3981876e-03-1.7395747e-03 6.7113843e-03 9.9648498e-03 -4.3624435e-03-5.9933780e-04 -5.6956373e-03 3.8508223e-03 2.7866268e-036.8910765e-03 6.1010956e-03 9.5384968e-03 9.2734173e-037.8980681e-03 -6.9895042e-03 -9.1558648e-03 -3.5575271e-04-3.0998408e-03 7.8943167e-03 5.9385742e-03 -1.5456629e-031.5109634e-03 1.7900408e-03 7.8175711e-03 -9.5101865e-03-2.0553112e-04 3.4691966e-03 -9.3897223e-04 8.3817719e-039.0107834e-03 6.5365066e-03 -7.1162102e-04 7.7104042e-03-8.5343346e-03 3.2071066e-03 -4.6379971e-03 -5.0889552e-033.5896183e-03 5.3703394e-03 7.7695143e-03 -5.7665063e-037.4333609e-03 6.6254963e-03 -3.7098003e-03 -8.7456414e-035.4374672e-03 6.5097557e-03 -7.8755023e-04 -6.7098560e-03-7.0859254e-03 -2.4970602e-03 5.1432536e-03 -3.6652375e-03-9.3700597e-03 3.8267397e-03 4.8844791e-03 -6.4285635e-031.2085581e-03 -2.0748770e-03 2.4403334e-05 -9.8835090e-032.6920044e-03 -4.7501065e-03 1.0876465e-03 -1.5762246e-032.1966731e-03 -7.8815762e-03 -2.7171839e-03 2.6631986e-035.3466819e-03 -2.3915148e-03 -9.5100943e-03 4.5058788e-03]
4.4 Word2Vec 的特点
优势:
捕捉语义信息(相似词、类比推理)。 适用于语义分析、推荐系统。
局限性:
需大量训练数据,低频词可能学习不足。
4.5 Word2Vec 的应用
语义分析:通过向量相似性判断语义关系。 机器翻译的词向量初始化:为模型提供语义先验知识。 推荐系统:利用词向量进行个性化推荐。
5. 三种方法的对比分析
| 特性 | 词袋模型 | TF-IDF | Word2Vec |
|---|---|---|---|
| 计算方式 | |||
| 语义理解 | |||
| 词语独立性 | |||
| 维度大小 | |||
| 适用场景 | |||
| 计算复杂度 | |||
| 内存占用 |
注:词袋模型与
TF-IDF的维度随词汇表增长,而Word2Vec的维度固定。
6. 结合使用不同文本向量化方法
实际应用中可结合方法提升特征表达能力:
TF-IDF + Word2Vec:用 TF-IDF加权词向量生成文档向量,结合统计优势与语义信息。BoW + 主题模型:通过 LDA分析词频分布发现主题结构。扩展方法: Doc2Vec可直接生成文档级向量,GloVe和FastText(支持子词嵌入)也是常用文本表示方法。
7. 总结
词袋模型、TF-IDF 和 Word2Vec 各有优缺点,适用于不同场景。传统方法仍在小规模数据和简单任务中具有实用价值。
随着技术发展,基于 Transformer 的预训练模型(如 BERT、GPT)逐渐成为主流。相比 Word2Vec,BERT 和 GPT 采用自注意力机制(Self-Attention),能够捕捉更复杂的上下文信息,并生成动态词向量(同一单词在不同语境下的向量不同)。这些模型通过上下文相关向量(同一单词在不同语境中向量不同)和长距离依赖捕捉能力,显著提升了 NLP 任务的性能。