【漫话机器学习系列】009.词袋模型(Bag of Words)

词袋模型(Bag of Words, 简称 BoW)

词袋模型是一种常见的文本表示方法,主要用于自然语言处理(NLP)和信息检索领域。它将文本数据转换为特征向量,忽略语序,仅考虑词的出现与否或出现频率。


1. 基本思想

  • 把文本看作一个词的集合(袋子),忽略语序和句法结构。
  • 对文本中的所有独立词汇建立一个词汇表(Vocabulary)。
  • 每个文本用一个固定大小的向量表示,向量的每一维对应词汇表中的一个词。
  • 向量值可以是:
    • 词频(Term Frequency, TF)。
    • 二进制值(出现记为 1,不出现记为 0)。
    • 权重(如 TF-IDF)。

2. 特征表示步骤

(1) 词汇提取
  • 文本预处理
    • 分词:将句子切分成单独的词。
    • 去停用词:去掉"的"、"是"、"了"等无意义的高频词。
    • 小写化:统一词的大小写。
    • 去除标点符号。
  • 建立词汇表
    • 根据所有文本中出现的词,生成一个词汇表。
(2) 文本向量化
  • 对于每个文本:
    • 按词汇表的顺序统计每个词的出现次数。
    • 将统计结果填入对应的特征向量位置。

3. 示例

示例文本:
复制代码
文档1: 我喜欢机器学习。
文档2: 我喜欢深度学习和机器学习。
(1) 建立词汇表

所有词汇(去重后):['我', '喜欢', '机器', '学习', '深度', '和']

(2) 向量化
  • 文档1的向量表示:[1, 1, 1, 1, 0, 0]
  • 文档2的向量表示:[1, 1, 1, 1, 1, 1]

4. Python 示例

(1) 使用 Scikit-learn
python 复制代码
from sklearn.feature_extraction.text import CountVectorizer

# 示例数据
documents = [
    "我喜欢机器学习",
    "我喜欢深度学习和机器学习"
]

# 创建词袋模型
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(documents)

# 输出特征词汇表
print("词汇表:", vectorizer.get_feature_names_out())

# 输出向量化表示
print("向量化表示:\n", X.toarray())

输出结果

Matlab 复制代码
词汇表: ['和' '喜欢' '学习' '机器' '深度' '我']
向量化表示:
 [[0 1 1 1 0 1]
  [1 1 1 1 1 1]]
(2) 使用 TF-IDF 权重
python 复制代码
from sklearn.feature_extraction.text import TfidfVectorizer

# 示例数据
documents = [
    "我喜欢机器学习",
    "我喜欢深度学习和机器学习"
]

# 创建 TF-IDF 模型
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(documents)

# 输出 TF-IDF 特征
print("TF-IDF 向量化表示:\n", X.toarray())

输出结果

python 复制代码
TF-IDF 向量化表示:
 [[1. 0.]
 [0. 1.]]

5. 优点

  • 简单易用:实现和计算简单。
  • 通用性强:适用于多种文本分析任务。
  • 高效:适合小规模文本数据。

6. 缺点

  • 忽略词序:丢失了上下文信息,无法捕捉词间的语义关系。
  • 维度较高:如果词汇表很大,特征向量的维度会非常高。
  • 稀疏性问题:大多数特征值为零,导致稀疏矩阵,影响计算效率。
  • 不考虑词重要性:词频高的常用词(如"的"、"是")可能掩盖关键词的作用。

7. 改进方法

  • TF-IDF:引入词的重要性,降低高频词的权重。
  • Word2Vec / GloVe:通过分布式表示,将词转化为低维稠密向量,保留语义关系。
  • N-grams:考虑词组(如"机器学习")而非单个词。

8. 应用场景

  • 文本分类:如垃圾邮件检测、情感分析。
  • 信息检索:如搜索引擎中的文档相似性计算。
  • 文档聚类:将相似的文本分为一类。

词袋模型是文本表示的重要基础,它虽然简单但功能强大,在许多任务中依然有效。

相关推荐
乱世刀疤几秒前
Claude Code实用开发案例:远程控制软件IP中继版
人工智能·claude code
远航计算机1 分钟前
GEO 选题从哪来?用一份 Query 词库把一年内容排出来
大数据·人工智能·算法·aigc
宣宣猪的小花园.1 分钟前
【机器学习】神经网络与表征:为什么深度学习能自动提取特征
人工智能·嵌入式硬件·算法·机器学习
小淮AI3 分钟前
企业协同办公工具选型观察:文件管理、流程协同与文档协作
人工智能
“AI国潮设计-小江”3 分钟前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁美食猫IP & 创意甜品设计(附ComfyUI工作流思路)
开发语言·人工智能·python·prompt·aigc
MetaEnchanter12 分钟前
水排序小游戏:打开就能玩,卡关不用先看广告
人工智能·ai·百万工具
LaughingZhu13 分钟前
Product Hunt 每日热榜 | 2026-09-15
人工智能·深度学习·神经网络·搜索引擎·百度
xsd2024111813 分钟前
猪只行为实时AI监测:计算机视觉驱动的进食/休息/活动/社交/嗅探/走动六维行为识别与健康预警
人工智能
棣廷14 分钟前
初识深度学习——学习率调度与权重衰减
人工智能·深度学习
vibecoding7715 分钟前
企业买国产模型怎么选(2026 年 9 月):先看备案,再算峰谷价、分档价与积分价,最后决定要不要多家并用
人工智能·大模型