计数向量化器#
- 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’}, default=’content’
如果为
'filename'
,则传递给fit的参数序列应为需要读取以获取要分析的原始内容的文件名列表。如果为
'file'
,则序列项必须具有 ‘read’ 方法(类似文件的对象),该方法用于获取内存中的字节。如果为
'content'
,则输入应为可以是字符串或字节类型的项序列。
- encodingstr, default=’utf-8’
如果给出字节或文件进行分析,则使用此编码进行解码。
- decode_error{‘strict’, ‘ignore’, ‘replace’}, default=’strict’
关于如果给出包含非给定
encoding
编码的字符的字节序列进行分析时该怎么做。默认情况下,它是 ‘strict’,这意味着将引发 UnicodeDecodeError。其他值为 ‘ignore’ 和 ‘replace’。- strip_accents{‘ascii’, ‘unicode’} or callable, default=None
在预处理步骤中去除重音符号并执行其他字符规范化。‘ascii’ 是一种快速方法,仅适用于具有直接 ASCII 映射的字符。‘unicode’ 是一种稍微慢一些的方法,适用于任何字符。None(默认值)表示不执行字符规范化。
‘ascii’ 和 ‘unicode’ 都使用来自
unicodedata.normalize
的 NFKD 规范化。- lowercasebool, default=True
在标记化之前将所有字符转换为小写。
- preprocessorcallable, default=None
覆盖预处理(strip_accents 和 lowercase)阶段,同时保留标记化和 n-gram 生成步骤。仅当
analyzer
不是可调用对象时才适用。- tokenizercallable, default=None
覆盖字符串标记化步骤,同时保留预处理和 n-gram 生成步骤。仅当
analyzer == 'word'
时才适用。- stop_words{‘english’}, list, default=None
如果为 ‘english’,则使用英语的内置停用词列表。‘english’ 存在一些已知问题,您应该考虑其他替代方案(请参见 使用停用词)。
如果为列表,则假定该列表包含停用词,所有这些停用词都将从生成的标记中删除。仅当
analyzer == 'word'
时才适用。如果为 None,则不使用停用词。在这种情况下,将
max_df
设置为更高的值(例如在 (0.7, 1.0) 范围内)可以根据术语的语料库内文档频率自动检测和过滤停用词。- token_patternstr or None, default=r”(?u)\b\w\w+\b”
表示构成“标记”的正则表达式,仅当
analyzer == 'word'
时才使用。默认正则表达式选择 2 个或更多字母数字字符的标记(标点符号将被完全忽略,始终被视为标记分隔符)。如果 token_pattern 中存在捕获组,则捕获组的内容(而不是整个匹配项)将成为标记。最多允许一个捕获组。
- ngram_rangetuple (min_n, max_n), default=(1, 1)
要提取的不同词 n-gram 或字符 n-gram 的 n 值范围的下限和上限。将使用所有满足 min_n <= n <= max_n 的 n 值。例如,
ngram_range
为(1, 1)
表示只有 unigrams,(1, 2)
表示 unigrams 和 bigrams,而(2, 2)
表示只有 bigrams。仅当analyzer
不是可调用对象时才适用。- analyzer{‘word’, ‘char’, ‘char_wb’} or callable, default=’word’
特征是否应由词 n-gram 或字符 n-gram 构成。选项 ‘char_wb’ 仅从词边界内的文本创建字符 n-gram;词边缘的 n-gram 用空格填充。
如果传递可调用对象,则将其用于从原始的、未处理的输入中提取特征序列。
0.21 版中的更改。
自 v0.21 起,如果
input
为filename
或file
,则首先从文件中读取数据,然后传递给给定的可调用分析器。- max_dffloat in range [0.0, 1.0] or int, default=1.0
构建词汇表时,忽略文档频率严格高于给定阈值的术语(特定于语料库的停用词)。如果为浮点数,则参数表示文档的比例,整数表示绝对计数。如果 vocabulary 不为 None,则忽略此参数。
- min_df介于 [0.0, 1.0] 区间的浮点数或整数,默认为 1
构建词汇表时,忽略文档频率严格低于给定阈值的词语。此值在文献中也称为截止值。如果为浮点数,则该参数表示文档的比例;如果为整数,则表示绝对计数。如果 vocabulary 不为 None,则忽略此参数。
- max_features整数,默认为 None
如果非 None,则构建一个词汇表,该词汇表仅考虑根据语料库中词频排序的前
max_features
个词语。否则,将使用所有特征。如果 vocabulary 不为 None,则忽略此参数。
- vocabulary映射或迭代器,默认为 None
一个映射(例如,字典),其中键是词语,值是特征矩阵中的索引,或者是一个词语迭代器。如果没有给出,则词汇表将根据输入文档确定。映射中的索引不应重复,并且在 0 和最大索引之间不应有任何间隙。
- binary布尔值,默认为 False
如果为 True,则所有非零计数都设置为 1。这对于对二元事件而不是整数计数进行建模的离散概率模型很有用。
- dtype数据类型,默认为 np.int64
fit_transform() 或 transform() 返回的矩阵的类型。
- 属性:
- vocabulary_字典
词语到特征索引的映射。
- fixed_vocabulary_布尔值
如果用户提供了一个固定的词语到索引映射的词汇表,则为 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 元语法生成。
- 返回:
- analyzer: 可调用对象
用于处理预处理、标记化和 n 元语法生成的函数。
- decode(doc)[source]#
将输入解码为 unicode 符号字符串。
解码策略取决于向量化器的参数。
- 参数:
- doc字节或字符串
要解码的字符串。
- 返回:
- doc: 字符串
unicode 符号字符串。
- fit(raw_documents, y=None)[source]#
学习原始文档中所有标记的词汇表字典。
- 参数:
- raw_documents可迭代对象
生成 str、unicode 或文件对象的迭代器。
- yNone
此参数被忽略。
- 返回:
- self对象
已拟合的向量化器。
- fit_transform(raw_documents, y=None)[source]#
学习词汇表字典并返回文档-词项矩阵。
这等效于 fit 后跟 transform,但实现效率更高。
- 参数:
- raw_documents可迭代对象
生成 str、unicode 或文件对象的迭代器。
- yNone
此参数被忽略。
- 返回:
- X形状为 (n_samples, n_features) 的数组
文档-词项矩阵。
- get_feature_names_out(input_features=None)[source]#
获取转换后的输出特征名称。
- 参数:
- input_features字符串数组或 None,默认为 None
未使用,出于 API 一致性的约定而在此处显示。
- 返回:
- feature_names_out字符串对象的 ndarray
转换后的特征名称。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看 用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个
MetadataRequest
封装路由信息。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, 默认值=True
如果为 True,则将返回此估计器及其包含的子对象(也是估计器)的参数。
- 返回:
- paramsdict
参数名称与其值的映射。
- inverse_transform(X)[source]#
返回X中具有非零条目的每个文档的词语。
- 参数:
- X形状为 (n_samples, n_features) 的 {类数组,稀疏矩阵}
文档-词项矩阵。
- 返回:
- X_inv形状为 (n_samples,) 的数组列表
词语数组列表。
示例#
FeatureHasher 和 DictVectorizer 比较