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())
相关推荐
Swift社区1 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht1 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht1 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20241 小时前
Swift 数组
开发语言
stm 学习ing2 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc3 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe4 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin4 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python