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

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

等同于先进行 CountVectorizer 转换,再进行 TfidfTransformer 转换。

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

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

有关文档聚类以及与 HashingVectorizer 比较的示例,请参阅 使用 k-means 对文本文档进行聚类

更多信息请阅读 用户指南

参数:
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 或字符 n-grams 组成。选项“char_wb”仅从词边界内的文本创建字符 n-grams;词边缘的 n-grams 用空格填充。

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

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 的 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

要么是一个映射(例如,字典),其中键是词项,值是特征矩阵中的索引;要么是一个词项的可迭代对象。如果未给出,则从输入文档中确定词汇表。

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

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

smooth_idfbool, 默认值=True

通过在文档频率上加一来平滑 idf 权重,就像额外看到一个包含集合中每个词项一次的文档一样。防止零除。

sublinear_tfbool, 默认值=False

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

属性:
vocabulary_dict

词项到特征索引的映射。

fixed_vocabulary_bool

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

idf_shape 为 (n_features,) 的数组

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

另请参阅

CountVectorizer

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

TfidfTransformer

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

示例

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

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

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

返回:
analyzer: callable

用于处理预处理、分词和 n-grams 生成的函数。

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]#

从训练集学习词汇表和 idf。

参数:
raw_documentsiterable

生成字符串、Unicode 或文件对象的可迭代对象。

yNone

计算 tfidf 不需要此参数。

返回:
selfobject

拟合后的向量化器。

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

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

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

参数:
raw_documentsiterable

生成字符串、Unicode 或文件对象的可迭代对象。

yNone

此参数被忽略。

返回:
Xshape 为 (n_samples, n_features) 的稀疏矩阵

TF-IDF 加权的文档-词项矩阵。

get_feature_names_out(input_features=None)[source]#

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

参数:
input_featuresarray-like of str 或 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{array-like, 稀疏矩阵},shape 为 (n_samples, n_features)

文档-词项矩阵。

返回:
X_originalshape 为 (n_samples,) 的数组列表

词项数组列表。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
self估计器实例

估计器实例。

transform(raw_documents)[source]#

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

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

参数:
raw_documentsiterable

生成字符串、Unicode 或文件对象的可迭代对象。

返回:
Xshape 为 (n_samples, n_features) 的稀疏矩阵

TF-IDF 加权的文档-词项矩阵。