详解 Scikit-learn 的 feature_extraction.text.CountVectorizer函数:文本特征提取器

yizhihongxing

Scikit-learn 中,sklearn.feature_extraction.text.CountVectorizer 函数的作用与使用方法的完整攻略

1. 简介

CountVectorizerscikit-learn 中一个非常实用的文本特征提取函数,主要将文本数据转换成词频矩阵,统计每一个文档中每个词语出现的次数,以此构建矩阵。

2. 使用方法

2.1 导入库和数据

先导入相关的第三方库和需要处理的数据:

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer

# 假设我们有以下两个文本数据:
doc1 = "Hi, I'm Jack. I like playing games."
doc2 = "I'm interested in playing strategy games like chess."
document_list = [doc1, doc2]

导入库后,我们需要处理的数据为两个文本数据。

2.2 实例1:基本用法

下面是 CountVectorizer 的基本用法,将文本转化成词频矩阵。

# 初始化CountVectorizer模型,将文本转化成词频矩阵
count = CountVectorizer()
bow = count.fit_transform(document_list)
# 输出文本数据中出现的所有单词
print(count.get_feature_names())
# 输出对应的词频矩阵
print(bow.toarray())

该代码段的运行效果如下:

['chess', 'games', 'hi', 'in', 'interested', 'jack', 'like', 'playing', 'strategy']
[[0 1 1 0 0 1 1 1 0]
 [1 1 0 1 1 0 0 1 1]]

在下面的结果中:

  1. 第一行是 document_list 中所有文本中出现的单词。
  2. 词频矩阵表明每个单词在每个文档中出现的次数。

参数解释

在上面的例子中,我们使用 CountVectorizer 类初始化了一个对象,然后给文本建立了一个词袋模型(Bag of Words,bow)。在 fit_transform() 方法中传入一个文本列表,将这些文本转换成了一个表示文本的词频矩阵,方便进行模型训练和分类。

此外,CountVectorizer 类可以接受许多参数,这里是一些常用参数的解释:

  • input:可以传入各种待处理的文本数据,包括列表、字符串、文件路径等。
  • tokenizer: 用来进行分词的函数。默认使用 word_tokenize() 函数。
  • stop_words: 用来移除停用词的列表或者字符串。
  • ngram_range: 输入参数是元组,包含两个整数,表示一元语法的单个单词以及多元语法(n-gram)的组合,比如(1,2)表示既包括单个词也包括两个连续的单词组合。
  • max_df: 在特定条件下忽略高频词的阈值。比如 max_df=0.3,表示出现频率在 30% 以上的单词不能被当做特征词。
  • min_df: 在特定条件下忽略低频词的阈值。比如 min_df=2,表示只有在至少出现了两次才能当做特征词。

2.3 实例2:添加自定义 stop words

我们可以通过添加自定义的停用词,来进一步清洗数据,提高模型表现:

# 添加停用词表
stopwords = ['I', 'am', 'in', 'like']
# 初始化CountVectorizer模型,并指定停用词表
count = CountVectorizer(stop_words=stopwords)
bow = count.fit_transform(document_list)
# 输出文本数据中出现的所有单词
print(count.get_feature_names())
# 输出对应的词频矩阵
print(bow.toarray())

该代码段的运行效果如下:

['chess', 'games', 'hi', 'interested', 'jack', 'playing', 'strategy']
[[0 1 1 0 1 1 0]
 [1 1 0 1 0 1 1]]

在下面的结果中:

  1. 我们可以观察到,停用词表中的单词不再出现在词袋模型中。

2.4 可视化

最后,我们可以通过 pandas 库将词频矩阵转化为 DataFrame 格式,并进行可视化展示。

# 基于词频矩阵,创建DataFrame对象,然后可视化展示
df_bow = pd.DataFrame(bow.toarray(), columns=count.get_feature_names())
print(df_bow)

该代码段的运行效果如下:

   chess  games  hi  interested  jack  playing  strategy
0      0      1   1           0     1        1         0
1      1      1   0           1     0        1         1

在上面的结果中,我们可以观察到通过转换后的词频矩阵成功构建了一个 DataFrame 对象,并得以可视化展示。

3. 总结

scikit-learn 中,CountVectorizer 是非常实用的文本特征提取函数,通过它我们可以轻松地将文本数据转换成词频矩阵,以此进行模型训练和分类。在上文中,我们介绍了基本的用法和添加自定义停用词表,同时还通过可视化展示了词频矩阵构建成功后的 DataFrame 格式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解 Scikit-learn 的 feature_extraction.text.CountVectorizer函数:文本特征提取器 - Python技术站

(0)
上一篇 2023年3月30日
下一篇 2023年3月30日

相关文章

合作推广
合作推广
分享本页
返回顶部