郭震 AI公众号:郭震AI

10 从零学NLP系列教程:词袋模型生成词向量

发布日期:

最近更新:

分类: NLP小白

预计阅读: 3 分钟

阅读次数: 0

预计阅读3 分钟
结构重点5 个
图文要点6 张
正文规模1.3k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 5 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

词袋模型生成词向量流程图查看大图
词袋模型生成词向量流程图

词袋模型简单但有价值。它丢掉词序,却能快速建立可解释基线,适合先判断任务是否有明显词频信号。

词袋模型生成词向量实操核对图查看大图
词袋模型生成词向量实操核对图

我会先跑词袋基线,再上复杂模型。复杂模型没有超过基线,就要先查数据和标签。

在上一篇文章中,我们探讨了文本预处理中的“词干提取”和“词形还原”。在进行进一步的自然语言处理(NLP)任务之前,了解如何将文本转化为可供计算机处理的数值数据是至关重要的。这一篇,我们将专注于如何通过“词袋模型”生成词向量。

什么是词袋模型?

“词袋模型”(Bag-of-Words, BoW)是一种简单而有效的文本表示方法,它忽略了词语的顺序和语法,仅关心词语的出现频次。我们将文本视为一个“词的集合”,在这个集合中,词的顺序不再重要。使用词袋模型,我们可以将文本转化为一个向量,以便后续的分析和建模。

从零学NLP系列教程:词袋模型生成词向量应用检查卡查看大图
从零学NLP系列教程:词袋模型生成词向量应用检查卡

如果想把《从零学NLP系列教程:词袋模型生成词向量》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。

从零学NLP系列教程:词袋模型生成词向量应用复盘卡查看大图
从零学NLP系列教程:词袋模型生成词向量应用复盘卡

学完《从零学NLP系列教程:词袋模型生成词向量》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。

词袋模型的步骤

  1. 文本预处理:在将文本转化为词袋模型之前,我们通常会进行一些预处理工作,例如去除停用词、词干提取和词形还原。这一部分我们在上一篇文章中已经讨论过。

  2. 构建词典:从所有预处理后的文本中提取出唯一的词汇表,称为词典。

  3. 构建词向量:针对每一篇文档,我们生成一个向量,向量的每个维度对应于词典中的一个词,值表示该词在文档中的出现频率或存在与否。

案例分析:词袋模型的使用

假设我们有以下三篇简短的文本:

文档 1:  喜欢 自然语言处理
文档 2: 自然语言处理 很有趣
文档 3:   编程

第一步:文本预处理

我们可以进行简单的预处理,去除停用词(如“我”、“很”)并提取词干,假设最终保留的词是:

自然语言处理, 喜欢, 有趣, 爱, 编程

第二步:构建词典

从上述文本中提取的词典为:

词典 = ["自然语言处理", "喜欢", "有趣", "爱", "编程"]

第三步:构建词向量

现在我们为每篇文档构建词向量。使用最简单的方式,计算每个词的出现频率。

  • 文档 1: [1, 1, 0, 0, 0]
  • 文档 2: [1, 0, 1, 0, 0]
  • 文档 3: [0, 0, 0, 1, 1]

最终的词向量表示为:

文档 1: [1, 1, 0, 0, 0]
文档 2: [1, 0, 1, 0, 0]
文档 3: [0, 0, 0, 1, 1]

Python实现词袋模型

以下是一个简单的Python代码示例,使用 sklearn 库实现词袋模型:

词袋模型判断卡查看大图
词袋模型判断卡

学习词袋模型时,先看分词、词表、计数、稀疏向量和词序丢失带来的影响。

from sklearn.feature_extraction.text import CountVectorizer

# 我们的文档
documents = [
    "我 喜欢 自然语言处理",
    "自然语言处理 很有趣",
    "我 爱 编程"
]

# 初始化 CountVectorizer
vectorizer = CountVectorizer()

# 将文档转化为词向量
X = vectorizer.fit_transform(documents)

# 获取词典
vocabulary = vectorizer.get_feature_names_out()

# 输出词向量
print(f"词典: {vocabulary}")
print("词向量呈现:\n", X.toarray())

这个代码会输出词典及其对应的词向量:

词典: ['编程' '爱' '很' '有趣' '自然语言处理' '喜欢']
词向量呈现:
 [[0 0 0 0 1 1]
 [0 0 1 1 1 0]
 [1 1 0 0 0 0]]

总结

在本篇中,我们探讨了“词袋模型”的原理和实现,介绍了如何将文本转化为数值向量。词袋模型是许多NLP任务的基础,可以作为后续特征选择和机器学习模型的输入。

自然语言处理阅读地图卡查看大图
自然语言处理阅读地图卡

看《从零学NLP系列教程:词袋模型生成词向量》时,先把图中的问题、关键词、操作和验收标准对上,再读正文会更省力。读完后,最好能用自己的项目重新讲一遍。

接下来的一篇文章中,我们将深入探讨“词向量之TF-IDF”,它是一种在词袋模型基础上改进的文本表示方法,能够考虑到词的重要性。我们将讨论TF-IDF的原理以及如何在Python中实现它,敬请期待!

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

从零学NLP系列教程:词袋模型生成词向量适合谁读?

这是 自然语言处理入门 系列第 10 / 30 篇,适合正在学习自然语言处理入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇自然语言处理入门教程要多久?

按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...