一句话定义:词袋模型(Bag of Words,简称 BoW)是把一段文本变成一串数字的最朴素办法——把所有词丢进一个"袋子",只记每个词出现了几次,完全不管谁先谁后。
它是怎么运转的
流程只有两步。第一步,先扫一遍全部语料,把出现过的词收集成一张固定词表,比如 {我, 爱, 你, 苹果, 手机}。第二步,对每一句话,按词表顺序数一遍每个词出现了几次,得到一个与词表等长的向量。
拿两句话试试:
- "我爱你" →
[1, 1, 1, 0, 0] - "你爱我" →
[1, 1, 1, 0, 0]
两句话的向量一模一样。这就是词袋的脾气:语序信息被彻底扔掉。
打个生活化的比方:去超市结账,小票上只写着"牛奶 ×1、苹果 ×2、盐 ×1",它不会记录你先拿的牛奶还是先拿的盐,也不会记录你把苹果放在了购物车哪个角落。词袋模型就是文本的小票——只统计商品和数量,不记录动线。
和相邻概念的区别
很多人会把词袋模型和词嵌入(Word AI 词典:Embedding">Embedding,比如 word2vec、GloVe)搞混。两者的层级其实不一样:词袋描述的是"一整篇文档怎么表示",词嵌入描述的是"单个词怎么表示成有语义的稠密向量"。
| 对比项 | 词袋模型 | 词嵌入 |
|---|---|---|
| 表示对象 | 整篇文档 | 单个词 |
| 向量维度 | 等于词表大小,动辄几万维 | 通常几十到几百维 |
| 稠密程度 | 极度稀疏,大量 0 | 稠密,几乎没 0 |
| 语序 | 完全忽略 | 部分保留 |
| 语义相似度 | 没有,"猫"和"狗"互相垂直 | 有,相似词向量距离近 |
词袋也有小修补:用 TF-IDF(词频-逆文档频率)给"的""是"这类到处都出现的词降权,或者用二元语法(bigram)把相邻两个词绑成一个新特征,勉强找回一点语序。但骨架没变。
对从业者和普通人的意义
词袋模型今天依然是文本分类和检索的强基线。垃圾邮件识别、情感分析、新闻打标、关键词抽取,用词袋加一个逻辑回归(Logistic Regression),往往几分钟就能跑出相当能打的结果;搜索引擎早年靠 TF-IDF 加权加倒排索引做召回,本质上也是词袋的思路。
它的实际价值在于两点:便宜和可解释。训练快、几乎不用调参,而且哪几个词把结果推高了,一眼就能看出来。更关键的是,如果词袋模型完全学不动,大概率是数据本身出了问题,而不是模型不够聪明——这时候上大模型只是把问题掩盖掉。
对普通人来说,理解词袋模型就能理解为什么老式搜索是"关键词匹配":搜"苹果手机"会命中同时含"苹果"和"手机"的页面,却搜不到只写了"iPhone"的那篇。这正是今天的搜索引擎和大模型要补上语义这一课的原因。至于具体产品现在做到哪一步,以官方页面为准。
