python学智能算法(十四)|机器学习朴素贝叶斯方法进阶-CountVectorizer文本处理简单测试

【1】引用

前序学习文章中,已经对拉普拉斯平滑和简单二元分类进行了初步探索,相关文章链接为:

python学智能算法(十二)|机器学习朴素贝叶斯方法初步-拉普拉斯平滑计算条件概率-CSDN博客

python学智能算法(十三)|机器学习朴素贝叶斯方法进阶-简单二元分类-CSDN博客

在实践应用中也会发现,朴素贝叶斯方法还能对文本进行分类,今天的学习目标就是学习简单的文本操作技巧,需要使用sklearn里面的CountVectorizer包。

【2】代码学习

首先是引入必要的模块或者说库:

python 复制代码
# 引入必要的模块
from sklearn.feature_extraction.text import CountVectorizer

输入待处理的文本:

python 复制代码
# 单个文档
document = ["Python programming is fun and useful for data science."]

这里只有一个句子:Python programming is fun and useful for data science.

直接创建一个文本处理器:

python 复制代码
# 创建向量化器
vectorizer = CountVectorizer()

CountVectorizer是 scikit-learn 库中用于文本向量化的工具,将文本转换为词频矩阵。CountVectorizer()满足默认配置:

  • 自动将文本转为小写。
  • 按空格分词。
  • 不处理停用词。
  • 只考虑单个词。

实际上,vectorizer在这里被定义为一个工具,通过这个工具才可以调用具体的文本处理命令。

然后就是:

python 复制代码
X = vectorizer.fit_transform(document)

这里的fit_transform是由fit和transform两个命令合并在一起的快捷操作:

fit命令的作用是分析文本中有哪些词;

transform命令的作用是将文本转化为词频矩阵,有合并同类项的功能。

CountVectorizer()是类的构造函数,vectorizer是实例,fit和transform是实例方法。

然后是查看词汇表操作:

python 复制代码
# 查看词汇表
print("词汇表:", vectorizer.get_feature_names_out())

这里的vectorizer.get_feature_names_out()执行后,会按照各个词汇首字母的顺序将组成句子的词依次输出,比如上方的句子Python programming is fun and useful for data science会输出为:'and' 'data' 'for' 'fun' 'is' 'programming' 'python' 'science' 'useful'。

最后的向量输出为:

python 复制代码
# 查看向量表示
print("向量表示:", X.toarray())

X.toarray()本质上是输出各个词在句子中出现的次数。

比如上方的句子Python programming is fun and useful for data science,X.toarray()会输出一系列1,因为每个单词出现的频次都是1。

完整代码为:

python 复制代码
# 引入必要的模块
from sklearn.feature_extraction.text import CountVectorizer

# 单个文档
document = ["Python programming is fun and useful for data science."]

# 创建向量化器
vectorizer = CountVectorizer()
print('vetorizer=',vectorizer)
# 拟合并转换文档
X = vectorizer.fit_transform(document)
print('X=',X)
# 查看词汇表
print("词汇表:", vectorizer.get_feature_names_out())

# 查看向量表示
print("向量表示:", X.toarray())

代码运行后的输出为:

vetorizer= CountVectorizer()

X= (0, 6) 1

(0, 5) 1

(0, 4) 1

(0, 3) 1

(0, 0) 1

(0, 8) 1

(0, 2) 1

(0, 1) 1

(0, 7) 1

词汇表: 'and' 'data' 'for' 'fun' 'is' 'programming' 'python' 'science' 'useful'

向量表示: \[1 1 1 1 1 1 1 1 1]

【3】代码测试

实际上要想测试代码非常简单,只需要改变初始句子即可,比如把句子改成:

python 复制代码
# 单个文档
document = ["Python programming is fun and useful for data science and math."]

此时的输出就会变成:

词汇表: ['and' 'data' 'for' 'fun' 'is' 'math' 'programming' 'python' 'science'

'useful']

向量表示: \[2 1 1 1 1 1 1 1 1 1]

显然,出现了两个and后,向量表示的频次会自动增加。

【4】细节说明

代码中文本后面的点号不是必须的。

【5】总结

学习了CountVectorizer文本处理的简单应用。

相关推荐
智能RPA1 分钟前
智能体自动化平台与主数据管理平台(MDM)对比评测
人工智能·自动化·agent·rpa
happylifetree28 分钟前
Python09:核心语法-数据存储与运算-字面量
python
跨境小彭34 分钟前
Temu拉美站点铺货实操复盘:手动复制痛点与批量自动化解决方案
服务器·人工智能·搜索引擎·自动化·temu电商运营
心之语歌38 分钟前
Tkinter 画布基本梳理
运维·服务器·python
封印师请假去地球钓鱼39 分钟前
边解边变的问题:从“决策依赖“一词出发
人工智能·算法
AI搅拌机1 小时前
ComfyUI管理大师:安全稳定升级+切换指定版本!
人工智能
浅安的邂逅1 小时前
20929-OpenAI 一天踩三脚急刹:暂停前沿训练、叫停 Astra、披露越权访问澳政府网站
人工智能·大模型·ai编程·行业动态·ai日报
Wx-bishekaifayuan1 小时前
django个性化旅游路线推荐平台49005-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
Qyr991 小时前
2026-2032直接芯片液冷板市场爆发式增长:AI算力浪潮下的热管理核心赛道
大数据·人工智能
微学AI1 小时前
不让每一步都调用最贵模型:用蓝耘智能路由改造自主式研究 Agent
数据库·人工智能·蓝耘