CountVectorizer#

class sklearn.feature_extraction.text.CountVectorizer(*, input='content', encoding='utf-8', decode_error='strict', strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, stop_words=None, token_pattern='(?u)\\b\\w\\w+\\b', ngram_range=(1, 1), analyzer='word', max_df=1.0, min_df=1, max_features=None, vocabulary=None, binary=False, dtype=<class 'numpy.int64'>)[源代码]#

将文本文档集合转换为令牌计数矩阵。

此实现使用scipy.sparse.csr_matrix生成计数的稀疏表示。

If you do not provide an a-priori dictionary and you do not use an analyzer that does some kind of feature selection then the number of features will be equal to the vocabulary size found by analyzing the data.

有关不同特征提取器的效率比较,请参阅 收件箱Hasher和DictVectorizer比较 .

阅读更多的 User Guide .

参数:
input'文件','内容'},默认='内容'
  • 如果 'filename' ,作为参数传递的序列预计是需要读取才能获取原始内容进行分析的文件名列表。

  • 如果 'file' ,序列项必须有一个“read”方法(类似文件的对象),调用该方法可以获取内存中的字节。

  • 如果 'content' ,输入预计是一个项目序列,可以是字符串或字节类型。

encoding字符串,默认=' utf-8 '

如果提供字节或文件来分析,则使用此编码来解码。

decode_error'严格',','替换'},默认='严格'

说明如果提供要分析的字节序列包含不属于给定的字符,该怎么办 encoding .默认情况下,它是“严格”的,这意味着将引发UnicodeDecodeLock。其他值包括“忽略”和“替换”。

strip_accents' asð ',' unicode '}或可调用,默认=无

在预处理步骤期间删除口音并执行其他字符规范化。“asspel”是一种快速方法,仅适用于具有直接ASC映射的字符。“unicode”是一种稍慢的方法,适用于任何字符。无(默认)意味着不执行字符规范化。

“assummit”和“unicode”都使用NFKD规范化 unicodedata.normalize .

lowercase布尔,默认=True

在标记化之前将所有角色转换为字形。

preprocessor可调用,默认值=无

删除预处理(strip_accents和n-gram)阶段,同时保留标记化和n-gram生成步骤。仅适用于 analyzer 不可调用。

tokenizer可调用,默认值=无

重新启动字符串标记化步骤,同时保留预处理和n-gram生成步骤。仅适用于 analyzer == 'word' .

stop_words' english '},列表,默认=无

如果是“english”,则使用内置的英语停止词列表。“英语”有几个已知问题,您应该考虑替代方案(请参阅 使用停止词 ).

如果是列表,则假设该列表包含停止词,所有这些都将从生成的令牌中删除。仅适用于 analyzer == 'word' .

如果为“无”,则不使用停止词。在这种情况下, max_df 到更高的值,例如在范围(0.7,1.0)中,可以基于词条的文档内频率自动检测和过滤停止词。

token_patternstr or None, default=r"(?u)\b\w\w+\b"

表示构成“令牌”的内容的规则表达,仅在以下情况下使用 analyzer == 'word' .默认regopp选择2个或更多字母数字字符的标记(标点符号被完全忽略并始终被视为标记分隔符)。

如果token_pattern中存在捕获组,那么捕获的组内容(而不是整个匹配)将成为令牌。最多允许一个捕获组。

ngram_rangetuple(min_n,max_n),默认=(1,1)

要提取的不同单词n语法或char n语法的n值范围的下限和上限。将使用min_n <= n <= max_n的所有n值。例如一个 ngram_range(1, 1) 仅意味着一元词, (1, 2) 意味着一元和二元,并且 (2, 2) 仅意味着二元组合。仅适用于 analyzer 不可调用。

analyzer' word ',' char_wb '}或可调用,默认=' word '

该特征是否应由单词n-gram或字符n-gram组成。选项“char_RST”仅从单词边界内的文本创建字符n-gram;单词边缘的n-gram用空白填充。

如果传递了可调用内容,则使用它从原始、未处理的输入中提取特征序列。

在 0.21 版本发生变更.

自v0.21以来,如果 inputfilenamefile ,首先从文件中读取数据,然后传递给给定的可调用分析器。

max_df浮动在范围内 [0.0, 1.0] 或int,默认=1.0

在构建词汇表时,忽略文档频率严格高于给定阈值的术语(特定于数据库的停止词)。如果是float,则该参数表示文档的比例,即integer绝对计数。如果词汇表不为无,则忽略此参数。

min_df浮动在范围内 [0.0, 1.0] 或int,默认=1

构建词汇表时,忽略文档频率严格低于给定阈值的术语。这个值在文献中也被称为截止值。如果是float,则该参数表示文档的比例,即integer绝对计数。如果词汇表不为无,则忽略此参数。

max_featuresint,默认=无

如果不是无,请建立一个只考虑顶部的词汇表 max_features 按整个文集中的术语频率排序。否则,将使用所有功能。

如果词汇表不为无,则忽略此参数。

vocabulary映射或可迭代,默认=无

映射(例如,dict),其中键是项,值是特征矩阵中的索引,或项的迭代项。如果没有给出,则根据输入文档确定词汇表。映射中的索引不应重复,并且0和最大索引之间不应有任何间隙。

binary布尔,默认=假

如果为True,则所有非零计数均设置为1。这对于建模二元事件而不是整计数的离散概率模型很有用。

dtypedype,默认=np.int64

fit_transform()或transform()返回的矩阵类型。

属性:
vocabulary_dict

术语到特征索引的映射。

fixed_vocabulary_bool

如果用户提供了术语到索引映射的固定词汇表,则为真。

参见

HashingVectorizer

将文本文档集合转换为令牌计数矩阵。

TfidfVectorizer

将原始文档集合转换为TF-IDF功能矩阵。

示例

>>> from sklearn.feature_extraction.text import CountVectorizer
>>> corpus = [
...     'This is the first document.',
...     'This document is the second document.',
...     'And this is the third one.',
...     'Is this the first document?',
... ]
>>> vectorizer = CountVectorizer()
>>> X = vectorizer.fit_transform(corpus)
>>> vectorizer.get_feature_names_out()
array(['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third',
       'this'], ...)
>>> print(X.toarray())
[[0 1 1 1 0 0 1 0 1]
 [0 2 0 1 0 1 1 0 1]
 [1 0 0 1 1 0 1 1 1]
 [0 1 1 1 0 0 1 0 1]]
>>> vectorizer2 = CountVectorizer(analyzer='word', ngram_range=(2, 2))
>>> X2 = vectorizer2.fit_transform(corpus)
>>> vectorizer2.get_feature_names_out()
array(['and this', 'document is', 'first document', 'is the', 'is this',
       'second document', 'the first', 'the second', 'the third', 'third one',
       'this document', 'this is', 'this the'], ...)
 >>> print(X2.toarray())
 [[0 0 1 1 0 0 1 0 0 0 0 1 0]
 [0 1 0 1 0 1 0 1 0 0 1 0 0]
 [1 0 0 1 0 0 0 0 1 1 0 1 0]
 [0 0 1 0 1 0 1 0 0 0 0 0 1]]
build_analyzer()[源代码]#

返回一个可调用函数来处理输入数据。

可调用处理预处理、标记化和n-gram生成。

返回:
分析器:可调用

处理预处理、标记化和n-gram生成的函数。

build_preprocessor()[源代码]#

返回一个函数来在标记化之前预处理文本。

返回:
预处理器:可调用

在标记化之前预处理文本的功能。

build_tokenizer()[源代码]#

返回将字符串拆分为标记序列的函数。

返回:
tokenizer: callable

将字符串拆分为标记序列的函数。

decode(doc)[源代码]#

将输入解码为一串unicode符号。

解码策略取决于向量器参数。

参数:
doc字节或字符串

要解码的字符串。

返回:
文档:字符串

一串unicode符号。

fit(raw_documents, y=None)[源代码]#

学习原始文档中所有标记的词汇词典。

参数:
raw_documentsiterable

一个可迭代对象,它可以生成str、unicode或file对象。

y没有一

此参数被忽略。

返回:
self对象

安装了vectorizer。

fit_transform(raw_documents, y=None)[源代码]#

学习词汇词典并返回文档术语矩阵。

这相当于先适应后转换,但实现效率更高。

参数:
raw_documentsiterable

一个可迭代对象,它可以生成str、unicode或file对象。

y没有一

此参数被忽略。

返回:
X形状数组(n_samples,n_features)

Document-term matrix.

get_feature_names_out(input_features=None)[源代码]#

获取用于转换的输出要素名称。

参数:
input_features字符串或无的类数组,默认=无

未使用,此处列出是为了按照惯例实现API一致性。

返回:
feature_names_out字符串对象的nd数组

转换的功能名称。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

get_stop_words()[源代码]#

建立或获取有效的停止词列表。

返回:
stop_words:列表或无

停止词列表。

inverse_transform(X)[源代码]#

返回X中每个文档的非零项。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

Document-term matrix.

返回:
X_invshape(n_samples,)数组列表

术语数组列表。

set_params(**params)[源代码]#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline ).后者具有以下形式的参数 <component>__<parameter> 以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

transform(raw_documents)[源代码]#

将文档转换为文档-术语矩阵。

使用适合fit的词汇表或提供给构造器的词汇表从原始文本文档中提取令牌计数。

参数:
raw_documentsiterable

一个可迭代对象,它可以生成str、unicode或file对象。

返回:
X形状稀疏矩阵(n_samples,n_features)

Document-term matrix.