词袋模型与 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/

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/6 14:10:51
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/10/6 12:50:27
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/10/5 19:39:38
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/5 16:06:34
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

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

2026/10/6 12:44:38
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/10/6 12:38:14

日新闻

周新闻

月新闻