词袋模型与 CountVectorizer:文本也可以做特征表
上一课我们讲了 TF-IDF。为了把 TF-IDF 理解得更扎实这一课先回到更基础的表示方法词袋模型。词袋模型听起来有点抽象其实它的想法很朴素不管词在句子里的顺序先统计每个词出现了多少次。什么是词袋模型词袋模型的英文是 Bag of Words。它把一段文本看成一个装满词的袋子只关心袋子里有哪些词、每个词出现了几次。例如两句话我 喜欢 机器学习 机器学习 很 有用如果词表是[我, 喜欢, 机器学习, 很, 有用]那么文档词袋向量我 喜欢 机器学习[1, 1, 1, 0, 0]机器学习 很 有用[0, 0, 1, 1, 1]每个文档变成等长向量长度等于词表大小每个位置的数字就是对应词在这段文本里的出现次数。这就把文本变成了数字。词袋模型丢掉了什么词袋模型有一个明显缺点它会丢掉顺序。我 不 喜欢 这个 功能 我 喜欢 这个 功能 不如果只统计词频两句话包含的词差不多但真实语义可能完全不同。所以词袋模型不是完美的语言理解方法它更像一个简单、稳定、容易解释的文本特征表。入门阶段先掌握它很有价值因为后面的 TF-IDF、文本分类 baseline、模型评估都会建立在这个基础上。CountVectorizer 做了什么在 sklearn 里CountVectorizer就是用来做词袋特征的工具。它主要做两件事从训练文本里建立词表把每条文本转换成词频向量。fromsklearn.feature_extraction.textimportCountVectorizer# 假设文本已经分好词、用空格隔开中文项目里这一步由 jieba 完成texts[我 喜欢 机器学习,机器学习 很 有用,这个 功能 不好用,]vectorizerCountVectorizer()Xvectorizer.fit_transform(texts)print(vectorizer.get_feature_names_out())# 词表print(X.toarray())# 词频矩阵每行一个文档每列一个词词频矩阵里每一行是一个文档每一列是一个词值是这个词在该文档里的出现次数。一个要注意的细节CountVectorizer默认的token_pattern会过滤掉单个字符。中文里我很这种单字词默认会被丢弃需要保留单字时可以设token_patternr(?u)\b\w\b或者在分词阶段就控制好词长。fit_transform 和 transform 的区别这个区别很重要X_train_vecvectorizer.fit_transform(X_train_text)X_test_vecvectorizer.transform(X_test_text)训练集用fit_transform因为要从训练集里学习词表。测试集只用transform因为测试集不能参与词表学习否则就会发生数据泄漏。这和前面讲过的标准化、Pipeline 是同一个原则训练阶段学到的规则测试阶段只能拿来用不能重新学。词表大小会影响模型如果训练文本很多词表可能非常大。词表越大矩阵列数越多模型训练也会更重。常用参数有参数作用建议max_features最多保留多少个词数据量大时必设否则特征爆炸min_df过滤出现太少的词中小数据集设 2过滤只出现 1 次的词max_df过滤出现太多的词0.7 ~ 0.9 之间太常见的词没区分力ngram_range加入连续词组合(1, 2)同时取单词和双词组合例如vectorizerCountVectorizer(max_features5000,min_df2,max_df0.9,ngram_range(1,2),)这表示最多保留 5000 个特征过滤太少见和太常见的词同时加入单词和连续两个词的组合。ngram 是什么ngram_range(1, 2)表示同时考虑 unigram 和 bigram。比如文本机器 学习 很 有用unigram 是机器 / 学习 / 很 / 有用bigram 是机器 学习 / 学习 很 / 很 有用加入 bigram 后模型有机会捕捉机器 学习这种连续搭配而不是只看到机器和学习两个分散的词。词袋和 TF-IDF 的关系词袋模型输出的是词频计数缺点也由此而来顺序丢失我不喜欢你和你不喜欢我的向量完全一样高频词霸权一个词出现 100 次未必比另一个词说一次更重要维度容易爆炸10 万篇文档乘 2 万词汇就是 2 亿维矩阵稀疏矩阵能处理但内存压力大。TF-IDF 可以看成在词频基础上进一步加权当前文本里重要、全局又有区分度的词权重更高。CountVectorizer数一数每个词出现几次 TfidfVectorizer在词频基础上考虑全局区分度两者都能用于文本分类。CountVectorizer 更直观TF-IDF 往往在很多文本分类任务里效果更好。这一课先记住词袋模型是文本特征工程的第一块积木。它会把文本变成样本数 × 词表大小的矩阵每一列代表一个词或词组每个值代表它在文本里的出现次数。max_features、min_df、max_df是控制维度的三件套丢失词序和高频词霸权是它的主要弱点下一步交给 TF-IDF 修正。下一课我们把 TF-IDF 和逻辑回归接起来训练一个真正可运行的中文文本分类 baseline。在线阅读点击这里阅读博客原文原文地址https://bestsdz.xyz/posts/countvectorizer-bag-of-words/

相关新闻

【AI大模型应用开发】【项目实战】24.RAG智慧问答项目-(十二)融合MySQL的RAG系统之基于 FastAPI 的 FAQ 与知识库查询接口

【AI大模型应用开发】【项目实战】24.RAG智慧问答项目-(十二)融合MySQL的RAG系统之基于 FastAPI 的 FAQ 与知识库查询接口

目标: 理解如何基于 FastAPI构建高效的问答系统 API 接口 掌握 WebSocket 流式输出和 HTTP 接口的实现,优化用户交互体验 前后端交互、前端静态文件服务以及日常问候处理的集成 一、开发完RAG系统以后,怎么对外提供服务? 对外: 调用链路: 前端 -> 后端 -> RAG系统 …

2026/10/18 2:33:24 阅读更多 →
Arduino Leonardo做的双旋钮+十四键音游控制器,即插即用支持多平台

Arduino Leonardo做的双旋钮+十四键音游控制器,即插即用支持多平台

本文还有配套的精品资源,点击获取 简介:用Arduino Leonardo打造的音乐游戏专用外设,自带两个带按压功能的高精度旋转编码器和十四颗独立按键,所有输入都可自由映射。设备通过标准HID协议通信,Windows/macOS/Linux系…

2026/10/17 13:00:12 阅读更多 →
基于SpringBoot的社区优选商城(Java+SpringBoot+MySQL)| 计算机毕业设计 附源码论文PPT

基于SpringBoot的社区优选商城(Java+SpringBoot+MySQL)| 计算机毕业设计 附源码论文PPT

本项目为计算机本科毕业设计,采用 Java Spring Boot 作为后端框架,Vue.js 作为前端框架,数据库使用 MySQL。系统涵盖用户管理、商家管理、商品管理、订单管理、客服聊天管理、论坛管理、商品资讯管理、购物车等八大功能模块。配套材料包括论…

2026/10/18 2:35:27 阅读更多 →

最新新闻

E-prime实验设计避坑指南:List嵌套、时间精度与Inline脚本实战

E-prime实验设计避坑指南:List嵌套、时间精度与Inline脚本实战

简介:这份资源是E-prime系列课程的第五讲配套样例包,面向心理学实验编程初学者与需要进阶实验设计技术的研究人员,帮助解决移动窗口、多字符反应、随机方位、N-back、双任务等常见实验范式的实现难题。压缩包共46个文件,约4.2MB&a…

2026/10/18 17:19:12 阅读更多 →
BrowserSkill:基于CDP的轻量级浏览器CLI自动化工具

BrowserSkill:基于CDP的轻量级浏览器CLI自动化工具

1. BrowserSkill 是什么?一个被误读但极具潜力的浏览器自动化 CLI 工具BrowserSkill(常缩写为 bsk)不是浏览器插件,不是 Chrome 扩展,也不是 Edge 的某个隐藏功能——它是一个命令行驱动的、面向开发者与高级用户的浏览…

2026/10/18 17:19:12 阅读更多 →
d3dx9_43.dll缺失怎么办?安全修复DirectX 9运行库教程

d3dx9_43.dll缺失怎么办?安全修复DirectX 9运行库教程

说起 d3dx9_43.dll 这个东西,我估计不少老玩家的电脑里都出现过它的“失踪事件”。明明昨天还在玩的某款经典射击游戏,今天双击图标突然提示“找不到 d3dx9_43.dll,无法继续执行代码”,系统还“贴心”地让你去网上免费下载这个文件…

2026/10/18 17:19:12 阅读更多 →
STM32C5开发避坑指南:从环境搭建到FDCAN与低功耗实战

STM32C5开发避坑指南:从环境搭建到FDCAN与低功耗实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 17:19:12 阅读更多 →
Flutter+OpenHarmony详情页关注收藏实战:状态管理与跨平台适配

Flutter+OpenHarmony详情页关注收藏实战:状态管理与跨平台适配

接手市面上那个内容社区类项目时,详情页一直是需求改动最频繁,也是最容易出状态错乱问题的页面。尤其是“关注”和“收藏”这两个操作,看着只是两个按钮,背后却牵扯到全局状态同步、本地持久化、网络请求重试,以及跨平…

2026/10/18 17:19:12 阅读更多 →
芯片设计第一课怎么学?从数字电路到Verilog的完整闭环

芯片设计第一课怎么学?从数字电路到Verilog的完整闭环

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 17:18:12 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →