TfidfVectorizer#

class sklearn.feature_extraction.text.TfidfVectorizer(*, input='content', encoding='utf-8', decode_error='strict', strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, analyzer='word', stop_words=None, token_pattern='(?u)\\b\\w\\w+\\b', ngram_range=(1, 1), max_df=1.0, min_df=1, max_features=None, vocabulary=None, binary=False, dtype=<class 'numpy.float64'>, norm='l2', use_idf=True, smooth_idf=True, sublinear_tf=False)#

将一组原始文档转换为TF-IDF特征矩阵。

等同于 CountVectorizer 后跟 TfidfTransformer

有关使用示例,请参见 使用稀疏特征对文本文档进行分类

有关不同特征提取器效率比较的示例,请参见 特征哈希器和字典向量化器比较

有关文档聚类和与 HashingVectorizer 比较的示例,请参见 使用k-means聚类文本文档

更多信息请参见 用户指南

Parameters:
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-grams 生成步骤。 仅在 analyzer 不可调用时适用。

tokenizercallable, 默认=None

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

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

特征应由词或字符 n-grams 组成。 选项 ‘char_wb’ 仅从词边界内的文本创建字符 n-grams;词边缘的 n-grams 用空格填充。

如果传递了可调用对象,则用于从原始未处理输入中提取特征序列。

Changed in version 0.21: 自 v0.21 起,如果 input'filename''file' ,数据首先从文件中读取,然后传递给给定的可调用分析器。

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

如果是字符串,则传递给 _check_stop_list,并返回适当的停用词列表。目前 ‘english’ 是唯一支持的字符串值。 有关 ‘english’ 的几个已知问题,请考虑替代方案(参见 使用停用词 )。

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

如果为 None,则不使用停用词。在这种情况下,设置 max_df 为较高值,例如在范围 (0.7, 1.0) 内,可以自动检测并过滤基于词条在语料库内文档频率的停用词。

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

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

如果 token_pattern 中有捕获组,则捕获组内容(而不是整个匹配)成为词元。最多允许一个捕获组。

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

要提取的 n-grams 的下限和上限范围。所有 n 值,使得 min_n <= n <= max_n 将被使用。例如, ngram_range(1, 1) 表示仅使用 unigrams, (1, 2) 表示使用 unigrams 和 bigrams, (2, 2) 表示仅使用 bigrams。 仅在 analyzer 不可调用时适用。

max_dffloat 或 int, 默认=1.0

构建词汇表时忽略文档频率严格高于给定阈值的词条(特定于语料库的停用词)。 如果浮点数在范围 [0.0, 1.0] 内,参数表示文档的比例,整数绝对计数。 如果 vocabulary 不为 None,则忽略此参数。

min_dffloat 或 int, 默认=1

构建词汇表时忽略文档频率严格低于给定阈值的词条。该值在文献中也称为截断。 如果浮点数在范围 [0.0, 1.0] 内,参数表示文档的比例,整数绝对计数。 如果 vocabulary 不为 None,则忽略此参数。

max_featuresint, 默认=None

如果不为 None,则仅考虑语料库中按词频排序的前 max_features 个词条构建词汇表。 否则,所有特征都被使用。

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

vocabularyMapping 或 iterable, 默认=None

要么是一个 Mapping(例如,字典),其中键是词条,值是特征矩阵中的索引,要么是一个词条的 iterable。如果不给定,则从输入文档中确定词汇表。

binarybool, 默认=False

如果为 True,所有非零词条计数都设置为 1。这不意味着输出将只有 0/1 值,仅表示 tf-idf 中的 tf 项是二进制的。(设置 binary 为 True, use_idf 为 False 和 norm 为 None 以获得 0/1 输出)。

dtypedtype, 默认=float64

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

norm{‘l1’, ‘l2’} 或 None, 默认=’l2’

每个输出行将具有单位范数,可以是:

  • ‘l2’:向量元素的平方和为 1。当应用 l2 范数时,两个向量之间的余弦相似度是它们的点积。

  • ‘l1’:向量元素的绝对值和为 1。参见 normalize

  • None:不进行规范化。

use_idfbool, 默认=True

启用逆文档频率重新加权。如果为 False,idf(t) = 1。

smooth_idfbool, 默认=True

通过将文档频率加一,如同看到包含集合中每个词条恰好一次的额外文档,平滑 idf 权重。防止零除。

sublinear_tfbool, 默认=False

应用次线性 tf 缩放,即用 1 + log(tf) 替换 tf。

Attributes:
vocabulary_dict

词条到特征索引的映射。

fixed_vocabulary_bool

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

idf_形状为 (n_features,) 的数组

逆文档频率向量,仅在 use_idf=True 时定义。

See also

CountVectorizer

将文本转换为 n-gram 计数的稀疏矩阵。

TfidfTransformer

从提供的计数矩阵执行 TF-IDF 转换。

Examples

>>> from sklearn.feature_extraction.text import TfidfVectorizer
>>> corpus = [
...     'This is the first document.',
...     'This document is the second document.',
...     'And this is the third one.',
...     'Is this the first document?',
... ]
>>> vectorizer = TfidfVectorizer()
>>> X = vectorizer.fit_transform(corpus)
>>> vectorizer.get_feature_names_out()
array(['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third',
       'this'], ...)
>>> print(X.shape)
(4, 9)
build_analyzer()#

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

该可调用对象处理预处理、标记化和n-grams生成。

Returns:
analyzer: callable

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

build_preprocessor()#

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

Returns:
preprocessor: callable

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

build_tokenizer()#

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

Returns:
tokenizer: callable

一个将字符串拆分为一系列标记的函数。

decode(doc)#

解码输入为一个unicode符号字符串。

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

Parameters:
docbytes 或 str

要解码的字符串。

Returns:
doc: str

一个unicode符号字符串。

fit(raw_documents, y=None)#

学习训练集中的词汇和idf。

Parameters:
raw_documentsiterable

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

yNone

计算tfidf不需要此参数。

Returns:
selfobject

拟合的向量化器。

fit_transform(raw_documents, y=None)#

学习词汇和idf,返回文档-词项矩阵。

这相当于先fit再transform,但更有效地实现。

Parameters:
raw_documentsiterable

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

yNone

此参数被忽略。

Returns:
X稀疏矩阵 (n_samples, n_features)

Tf-idf加权的文档-词项矩阵。

get_feature_names_out(input_features=None)#

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

Parameters:
input_features字符串的数组或None,默认=None

未使用,此处仅为保持API一致性而存在。

Returns:
feature_names_out字符串对象的ndarray

变换后的特征名称。

get_metadata_routing()#

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

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

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

get_stop_words()#

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

Returns:
stop_words: list 或 None

一个停用词列表。

property idf_#

逆文档频率向量,仅在 use_idf=True 时定义。

Returns:
ndarray,形状为 (n_features,)
inverse_transform(X)#

返回每个文档在X中具有非零条目的术语。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

文档-术语矩阵。

Returns:
X_invlist of arrays of shape (n_samples,)

术语数组的列表。

set_fit_request(*, raw_documents: bool | None | str = '$UNCHANGED$') TfidfVectorizer#

Request metadata passed to the fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to fit if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to fit .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
raw_documentsstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for raw_documents parameter in fit .

Returns:
selfobject

The updated object.

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_transform_request(*, raw_documents: bool | None | str = '$UNCHANGED$') TfidfVectorizer#

Request metadata passed to the transform method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to transform if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to transform .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
raw_documentsstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for raw_documents parameter in transform .

Returns:
selfobject

The updated object.

transform(raw_documents)#

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

使用由 fit(或 fit_transform)学习到的词汇表和文档频率(df)。

Parameters:
raw_documentsiterable

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

Returns:
Xsparse matrix of (n_samples, n_features)

Tf-idf 加权的文档-词项矩阵。