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'>)[source]#

将文本文档集合转换为词元计数矩阵。

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

如果您不提供先验词典,并且不使用执行某种特征选择的分析器,则特征数量将等于通过分析数据找到的词汇表大小。

有关不同特征提取器效率的比较,请参见 FeatureHasher 和 DictVectorizer 比较

用户指南 中阅读更多内容。

参数:
input{‘filename’, ‘file’, ‘content’},默认值=’content’
  • 如果为 'filename',则传递给 fit 的序列应为文件名列表,需要读取这些文件以获取要分析的原始内容。

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

  • 如果为 'content',则输入应为可为字符串或字节类型的项目序列。

encodingstr,默认值=’utf-8’

如果给出字节或文件进行分析,则使用此编码进行解码。

decode_error{‘strict’, ‘ignore’, ‘replace’},默认值=’strict’

当给定包含不属于指定 encoding 字符的字节序列进行分析时,应如何处理的指令。默认值为“strict”,表示将引发 UnicodeDecodeError。其他值包括“ignore”和“replace”。

strip_accents{‘ascii’, ‘unicode’} 或 callable,默认值=None

在预处理步骤中移除重音并执行其他字符规范化。“ascii”是一种快速方法,仅适用于具有直接 ASCII 映射的字符。“unicode”是一种稍慢的方法,适用于任何字符。None(默认)表示不执行字符规范化。

“ascii”和“unicode”都使用 unicodedata.normalize 的 NFKD 规范化。

lowercasebool,默认值=True

在分词之前将所有字符转换为小写。

preprocessorcallable,默认值=None

覆盖预处理(去除重音和转换为小写)阶段,同时保留分词和 n-gram 生成步骤。仅当 analyzer 不可调用时适用。

tokenizercallable,默认值=None

覆盖字符串分词步骤,同时保留预处理和 n-gram 生成步骤。仅当 analyzer == 'word' 时适用。

stop_words{‘english’}, list,默认值=None

如果为“english”,则使用内置的英语停用词列表。‘english’存在一些已知问题,您应考虑使用替代方案(参见 使用停用词)。

如果是一个列表,则该列表被假定包含停用词,所有这些词都将从结果词元中移除。仅当 analyzer == 'word' 时适用。

如果为 None,则不使用停用词。在这种情况下,将 max_df 设置为更高的值,例如在 (0.7, 1.0) 范围内,可以根据词项在语料库内部的文档频率自动检测和过滤停用词。

token_patternstr 或 None,默认值=r”(?u)\b\w\w+\b”

表示“词元”构成的正则表达式,仅当 analyzer == 'word' 时使用。默认的正则表达式选择由 2 个或更多字母数字字符组成的词元(标点符号完全被忽略,并始终被视为词元分隔符)。

如果 token_pattern 中存在捕获组,则捕获组的内容(而非整个匹配项)将成为词元。最多只允许一个捕获组。

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

要提取的不同词 n-gram 或字符 n-gram 的 n 值范围的下限和上限。所有满足 min_n <= n <= max_n 的 n 值都将被使用。例如,ngram_range(1, 1) 意味着仅限 unigram(单字词元),(1, 2) 意味着 unigram 和 bigram(双字词元),而 (2, 2) 意味着仅限 bigram。仅当 analyzer 不可调用时适用。

analyzer{‘word’, ‘char’, ‘char_wb’} 或 callable,默认值=’word’

特征是应由词 n-gram 还是字符 n-gram 构成。选项“char_wb”仅从单词边界内的文本创建字符 n-gram;单词边缘的 n-gram 用空格填充。

如果传入一个可调用对象,则它将用于从原始、未处理的输入中提取特征序列。

0.21 版本中的变更。

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

max_dffloat,范围 [0.0, 1.0] 或 int,默认值=1.0

在构建词汇表时,忽略文档频率严格高于给定阈值的词项(语料库特定停用词)。如果为浮点数,该参数表示文档的比例,整数表示绝对计数。如果 vocabulary 为 None,则此参数将被忽略。

min_dffloat,范围 [0.0, 1.0] 或 int,默认值=1

在构建词汇表时,忽略文档频率严格低于给定阈值的词项。这个值在文献中也称为截止值。如果为浮点数,该参数表示文档的比例,整数表示绝对计数。如果 vocabulary 为 None,则此参数将被忽略。

max_featuresint,默认值=None

如果不是 None,则构建一个词汇表,该词汇表仅考虑按语料库中词项频率排序的前 max_features 个。否则,将使用所有特征。

如果 vocabulary 为 None,则此参数将被忽略。

vocabularyMapping 或 iterable,默认值=None

可以是映射(例如,字典),其中键是词项,值是特征矩阵中的索引;也可以是词项上的可迭代对象。如果未给出,则词汇表将从输入文档中确定。映射中的索引不应重复,并且在 0 和最大索引之间不应有任何间隙。

binarybool,默认值=False

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

dtypedtype,默认值=np.int64

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

属性:
vocabulary_dict

词项到特征索引的映射。

fixed_vocabulary_bool

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

另请参见

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()[source]#

返回一个可调用对象以处理输入数据。

此可调用对象负责预处理、分词和 n-gram 生成。

返回:
analyzer: callable

一个处理预处理、分词和 n-gram 生成的函数。

build_preprocessor()[source]#

返回一个函数,用于在分词之前预处理文本。

返回:
preprocessor: callable

一个在分词前预处理文本的函数。

build_tokenizer()[source]#

返回一个将字符串拆分为词元序列的函数。

返回:
tokenizer: callable

一个将字符串拆分为词元序列的函数。

decode(doc)[source]#

将输入解码为 Unicode 符号字符串。

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

参数:
docbytes 或 str

要解码的字符串。

返回:
doc: str

一个 Unicode 符号字符串。

fit(raw_documents, y=None)[source]#

学习原始文档中所有词元的词汇表。

参数:
raw_documentsiterable

一个可生成 str、unicode 或文件对象的可迭代对象。

yNone

此参数被忽略。

返回:
selfobject

已拟合的矢量化器。

fit_transform(raw_documents, y=None)[source]#

学习词汇表并返回文档-词元矩阵。

这等同于先 fit 后 transform,但实现更高效。

参数:
raw_documentsiterable

一个可生成 str、unicode 或文件对象的可迭代对象。

yNone

此参数被忽略。

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

文档-词元矩阵。

get_feature_names_out(input_features=None)[source]#

获取转换后的输出特征名称。

参数:
input_featuresstr 或 None 的类数组,默认值=None

未被使用,按照惯例在此处是为了 API 一致性。

返回:
feature_names_outstr 对象的 ndarray

转换后的特征名称。

get_metadata_routing()[source]#

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

请查看 用户指南 了解路由机制的工作原理。

返回:
routingMetadataRequest

一个 MetadataRequest 封装了路由信息。

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool,默认值=True

如果为 True,将返回此估计器以及所包含的估计器子对象的参数。

返回:
paramsdict

参数名称与其值的映射。

get_stop_words()[source]#

构建或获取有效的停用词列表。

返回:
stop_words: list 或 None

停用词列表。

inverse_transform(X)[source]#

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

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

文档-词元矩阵。

返回:
X_original形状为 (n_samples,) 的数组列表

词项数组列表。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
self估计器实例

估计器实例。

transform(raw_documents)[source]#

将文档转换为文档-词元矩阵。

使用通过 fit 拟合的词汇表或提供给构造函数的词汇表,从原始文本文档中提取词元计数。

参数:
raw_documentsiterable

一个可生成 str、unicode 或文件对象的可迭代对象。

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

文档-词元矩阵。