赞
踩
CountVectorizer
是自然语言处理中常用的文本特征提取方法之一,用于将文本数据转换为词袋(Bag of Words,BoW)表示。它将文本文档转换为词汇表中的单词计数向量。
以下是CountVectorizer
的使用方法和一些常见参数的含义:
1.导入库:首先,你需要导入Python的相关库。在scikit-learn中,你可以使用以下导入语句:
from sklearn.feature_extraction.text import CountVectorizer
2.创建CountVectorizer对象:接下来,创建一个CountVectorizer
对象,可以通过设定一些参数来控制文本向量化的方式:
vectorizer = CountVectorizer()
你也可以在创建对象时设置一些参数,例如:
vectorizer = CountVectorizer(stop_words='english', max_features=500)
下面是一些常见的参数:
stop_words
:指定停用词列表,这些词将被忽略不计入词袋中。max_features
:限制词汇表中的最大单词数量,保留出现频率最高的前n个单词。ngram_range
:指定要提取的n-gram范围,例如,ngram_range=(1, 2)
将提取单个词和二元词组。lowercase
:是否将文本转换为小写。3.拟合和转换数据:使用创建的CountVectorizer
对象,对文本数据进行拟合和转换:
X = vectorizer.fit_transform(text_data)
这里的text_data
是一个包含文本文档的列表或数组。
4.获取词汇表:你可以通过以下方式获取词汇表,即向量中的特征名称:
vocabulary = vectorizer.get_feature_names_out()
5.获得词频矩阵:通过X
变量,你可以获得文本的词频矩阵,其中每行表示一个文档,每列表示一个词汇表中的单词,矩阵中的值表示单词在文档中的出现次数。
word_counts = X.toarray()
6.使用文本向量:现在你可以将这些词频矩阵作为特征输入到机器学习模型中,用于文本分类、聚类等任务。
下面是一个小案例:
- #从特征提取库中导入向量转化模块儿
- from sklearn.feature_extraction.text import CountVectorizer
- #需要转化的语句
- """
- ngram_range(1, 2):对词进行组合
- (1)本例组合方式:两两组合 #贝叶斯 模型,它只能识别数字, 传入模型,
- ['bird', 'cat', 'cat cat', 'cat fish', 'dog', 'dog cat', 'fish', 'fish bird']
- (2)如果ngram_range(1, 3),则会出现3个词进行组合
- ['bird', 'cat', 'cat cat', 'cat fish', 'dog', 'dog cat', 'dog cat cat',
- 'dog cat fish', 'fish', 'fish bird']
- """
- texts=["dog cat fish","dog cat cat","fish bird", 'bird']
- cont = []
- #实例化一个模型
- cv = CountVectorizer(ngram_range=(1,2)) #统计每篇文章中每个词出现的频率次数
-
- #训练此模型
- cv_fit=cv.fit_transform(texts)#每个词在这篇文章中出现的次数
-
- print(cv_fit)
- # 打印出模型的全部词库
- print(cv.get_feature_names())
-
-
- #打印出每个语句的词向量
- print(cv_fit.toarray())
- # #打印出所有数据求和结果
- # print(cv_fit.toarray().sum(axis=0))
输出的结果如下图:
CountVectorizer
是一个简单而强大的文本特征提取工具,它能够将文本数据转换成数值形式,以便于机器学习算法的处理。根据具体的任务和需求,你可以根据上述参数进行配置,以获得最佳的特征表示。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。