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 .

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

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

有关文档集群的示例并与 HashingVectorizer ,看到了 基于k-means的文本聚类 .

阅读更多的 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可调用,默认值=无

初始化预处理(字符串转换)阶段,同时保留标记化和n-gram生成步骤。仅适用于 analyzer 不可调用。

tokenizer可调用,默认值=无

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

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

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

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

在 0.21 版本发生变更: 自v0.21以来,如果 input'filename''file' ,首先从文件中读取数据,然后传递给给定的可调用分析器。

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

如果是字符串,则将其传递给_check_stop_list,并返回适当的停止列表。“english”是目前唯一支持的字符串值。“英语”有几个已知问题,您应该考虑替代方案(请参阅 使用停止词 ).

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

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

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

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

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

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

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

max_dffloat或int,默认=1.0

在构建词汇表时,忽略文档频率严格高于给定阈值的术语(特定于数据库的停止词)。如果浮动在范围内 [0.0, 1.0] ,该参数代表文档的比例,整绝对计数。如果词汇表不为无,则忽略此参数。

min_dffloat或int,默认=1

构建词汇表时,忽略文档频率严格低于给定阈值的术语。这个值在文献中也被称为截止值。如果浮动在范围内 [0.0, 1.0] ,该参数代表文档的比例,整绝对计数。如果词汇表不为无,则忽略此参数。

max_featuresint,默认=无

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

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

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

映射(例如,dict),其中键是项,值是特征矩阵中的索引,或项的迭代项。如果没有给出,则根据输入文档确定词汇表。

binary布尔,默认=假

如果为True,则所有非零项计数均设置为1。这并不意味着输出将只有0/1值,只是tf-idf中的tf项是二进制。(套 binary 对于真, use_idf 为False并且 norm 到无以获得0/1输出)。

dtypedype,默认= float 64

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

norm' l1 '、' l2 '或无,默认=' l2 '

每个输出行都将具有单位规范,其中之一:

  • ' l2 ':载体元素的平方和为1。当应用l2规范时,两个载体之间的cos相似度是它们的点积。

  • ' l1 ':载体元素绝对值之和为1。看到 normalize .

  • 无:没有正常化。

use_idf布尔,默认=True

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

smooth_idf布尔,默认=True

通过在文档频率中添加一来平滑idf权重,就好像看到一个额外的文档恰好包含一次集合中的每个术语一样。防止零分裂。

sublinear_tf布尔,默认=假

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

属性:
vocabulary_dict

术语到特征索引的映射。

fixed_vocabulary_bool

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

idf_形状数组(n_features,)

反向文档频率载体,仅在以下情况下定义 use_idf=True .

参见

CountVectorizer

将文本转换为n元语法计数的稀疏矩阵。

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()[源代码]#

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

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

返回:
分析器:可调用

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

build_preprocessor()[源代码]#

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

返回:
预处理器:可调用

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

build_tokenizer()[源代码]#

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

返回:
tokenizer: callable

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

decode(doc)[源代码]#

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

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

参数:
doc字节或字符串

要解码的字符串。

返回:
文档:字符串

一串unicode符号。

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

从培训集中学习词汇和idf。

参数:
raw_documentsiterable

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

y没有一

计算tfidf不需要此参数。

返回:
self对象

安装了vectorizer。

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

学习词汇和idf,返回文档术语矩阵。

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

参数:
raw_documentsiterable

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

y没有一

此参数被忽略。

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

Tf-idf加权文档术语矩阵。

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(或fit_transform)学习的词汇和文档频率(DF)。

参数:
raw_documentsiterable

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

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

Tf-idf加权文档术语矩阵。