Python文本向量化入门(四):中文词袋问题

在文本分析和自然语言处理中,将中文文本转换为数值型格式是一个重要的步骤。这有助于我们利用机器学习算法进行高效的数据分析。因为之前的学习中发现Scikit-learn的CountVectorizer不支持中文分词,所以在本篇文章中,我们将介绍如何使用jieba分词和Scikit-learn的CountVectorizer进行中文文本的特征提取。

首先,我们需要导入所需的库和模块:

python 复制代码
import jieba  
from sklearn.feature_extraction.text import CountVectorizer

接下来,我们定义了一些中文文本数据:

python 复制代码
documents = [  
    '这是第一个文档。',  
    '这是第二个文档。',  
    '这是第三个文档。第三个文档有很多词,但有些词是重复的。'  
]

然后,我们使用jieba分词对文本进行预处理,将其切分成单独的词或词素:

python 复制代码
documents = [' '.join(jieba.cut(doc)) for doc in documents]

接下来,我们创建一个CountVectorizer对象,用于将文本数据转换为词频矩阵:

python 复制代码
vectorizer = CountVectorizer()

使用fit_transform方法将分词结果转换为词频矩阵:

python 复制代码
vectorized_data = vectorizer.fit_transform(documents)

现在,我们可以打印词频矩阵的数组表示形式,以查看矩阵的内容:

python 复制代码
print(vectorized_data.toarray())

最后,我们可以使用get_feature_names方法输出默认的词袋(词汇表):

python 复制代码
print(vectorizer.get_feature_names())

输出效果:

python 复制代码
[[0 1 0 1 0 0 0 1 0]
 [0 1 0 0 0 1 0 1 0]
 [1 2 1 0 2 0 1 1 1]]
['很多', '文档', '有些', '第一个', '第三个', '第二个', '词是', '这是', '重复']

不使用结巴分词效果

python 复制代码
[[0 0 1 0 0]
 [0 0 0 0 1]
 [1 1 0 1 0]]
['但有些词是重复的', '第三个文档有很多词', '这是第一个文档', '这是第三个文档', '这是第二个文档']

所以对比一看,中文分词后效果会好很多。这样对比起来准确度应该会更好,更符合我们人的逻辑。

完整代码如下:

python 复制代码
import jieba
from sklearn.feature_extraction.text import CountVectorizer

# 定义文本数据
documents = [
    '这是第一个文档。',
    '这是第二个文档。',
    '这是第三个文档。第三个文档有很多词,但有些词是重复的。',
]

# 使用jieba分词对文本进行预处理
documents = [' '.join(jieba.cut(doc)) for doc in documents]

# 创建CountVectorizer对象
vectorizer = CountVectorizer()

# 将分词结果转换为词频矩阵
vectorized_data = vectorizer.fit_transform(documents)

# 输出词频矩阵
print(vectorized_data.toarray())

# 输出默认的词袋(词汇表)
print(vectorizer.get_feature_names())
相关推荐
小珑也要变强1 小时前
队列基础概念
c语言·开发语言·数据结构·物联网
AI原吾3 小时前
掌握Python-uinput:打造你的输入设备控制大师
开发语言·python·apython-uinput
机器视觉知识推荐、就业指导3 小时前
Qt/C++事件过滤器与控件响应重写的使用、场景的不同
开发语言·数据库·c++·qt
毕设木哥3 小时前
25届计算机专业毕设选题推荐-基于python的二手电子设备交易平台【源码+文档+讲解】
开发语言·python·计算机·django·毕业设计·课程设计·毕设
珞瑜·3 小时前
Matlab R2024B软件安装教程
开发语言·matlab
weixin_455446173 小时前
Python学习的主要知识框架
开发语言·python·学习
孤寂大仙v3 小时前
【C++】STL----list常见用法
开发语言·c++·list
D11_4 小时前
Pandas缺失值处理
python·机器学习·数据分析·numpy·pandas
花生了什么树~.4 小时前
python基础知识(四)--if语句,for\while循环
python
她似晚风般温柔7894 小时前
Uniapp + Vue3 + Vite +Uview + Pinia 分商家实现购物车功能(最新附源码保姆级)
开发语言·javascript·uni-app