TF-IDF向量化器#(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’}, 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
- 覆盖预处理(字符串转换)阶段,同时保留标记化和 n-gram 生成步骤。仅当 - analyzer不可调用时才适用。
- tokenizercallable, default=None
- 覆盖字符串标记化步骤,同时保留预处理和 n-gram 生成步骤。仅当 - analyzer == 'word'时才适用。
- analyzer{‘word’, ‘char’, ‘char_wb’} or callable, default=’word’
- 特征是否应由词或字符 n-gram 组成。选项 ‘char_wb’ 只从词边界内的文本创建字符 n-gram;词边缘的 n-gram 用空格填充。 - 如果传递了可调用对象,则将其用于从原始的、未处理的输入中提取特征序列。 - 版本 0.21 中更改: 从 v0.21 开始,如果 - input为- 'filename'或- 'file',则首先从文件中读取数据,然后将其传递给给定的可调用分析器。
- stop_words{‘english’}, list, default=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'时使用。默认正则表达式选择包含两个或更多字母数字字符的词元(标点符号被完全忽略,始终被视为词元分隔符)。- 如果 token_pattern 中存在捕获组,则捕获的组内容(而不是整个匹配)将成为词元。最多允许一个捕获组。 
- ngram_range元组 (min_n, max_n),默认值=(1, 1)
- 要提取的不同 n-gram 的 n 值范围的下限和上限。将使用所有满足 min_n <= n <= max_n 的 n 值。例如, - ngram_range为- (1, 1)表示仅使用一元组,- (1, 2)表示使用一元组和二元组,- (2, 2)表示仅使用二元组。仅当- analyzer不可调用时适用。
- max_df浮点数或整数,默认值=1.0
- 构建词汇表时,忽略文档频率严格高于给定阈值的词项(语料库特定的停用词)。如果为 [0.0, 1.0] 范围内的浮点数,则该参数表示文档的比例,整数表示绝对计数。如果 vocabulary 不为 None,则忽略此参数。 
- min_df浮点数或整数,默认值=1
- 构建词汇表时,忽略文档频率严格低于给定阈值的词项。此值在文献中也称为截止值。如果为 [0.0, 1.0] 范围内的浮点数,则该参数表示文档的比例,整数表示绝对计数。如果 vocabulary 不为 None,则忽略此参数。 
- max_features整数,默认值=None
- 如果非 None,则构建一个词汇表,该词汇表仅考虑根据语料库中词频排序的前 - max_features个词。否则,将使用所有特征。- 如果 vocabulary 不为 None,则忽略此参数。 
- vocabulary映射或可迭代对象,默认值=None
- 一个映射(例如,字典),其中键是词项,值是特征矩阵中的索引,或者是一个词项的可迭代对象。如果没有给出,则从输入文档中确定词汇表。 
- binary布尔值,默认值=False
- 如果为 True,则所有非零词项计数都设置为 1。这并不意味着输出将仅具有 0/1 值,而只是意味着 tf-idf 中的 tf 词项是二进制的。(将 - binary设置为 True,- use_idf设置为 False,- norm设置为 None 以获得 0/1 输出)。
- dtype数据类型,默认值=float64
- fit_transform() 或 transform() 返回的矩阵的类型。 
- norm{'l1', 'l2'} 或 None,默认值='l2'
- 每一输出行都将具有单位范数,即 - ‘l2’:向量元素的平方和为 1。当应用 l2 范数时,两个向量之间的余弦相似度是它们的点积。 
- ‘l1’:向量元素的绝对值之和为 1。参见 - normalize。
- None:不进行归一化。 
 
- use_idf布尔值,默认值=True
- 启用逆文档频率重新加权。如果为 False,则 idf(t) = 1。 
- smooth_idf布尔值,默认值=True
- 通过向文档频率添加 1 来平滑 idf 权重,就好像看到一个额外的文档包含集合中每个词项恰好一次一样。防止出现零除法。 
- sublinear_tf布尔值,默认值=False
- 应用次线性 tf 缩放,即用 1 + log(tf) 替换 tf。 
 
- 属性:
- vocabulary_字典
- 词项到特征索引的映射。 
- fixed_vocabulary_布尔值
- 如果用户提供固定的词项到索引映射的词汇表,则为 True。 
- idf_形状为 (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-gram 生成。 - 返回:
- analyzer:可调用对象
- 用于处理预处理、词元化和 n-gram 生成的函数。 
 
 
 - decode(doc)[source]#
- 将输入解码为 unicode 符号字符串。 - 解码策略取决于向量化器参数。 - 参数:
- doc字节或字符串
- 要解码的字符串。 
 
- 返回:
- doc:字符串
- unicode 符号字符串。 
 
 
 - fit(raw_documents, y=None)[source]#
- 从训练集学习词汇和逆文档频率 (idf)。 - 参数:
- raw_documents可迭代对象
- 一个可迭代对象,生成 str、unicode 或文件对象。 
- yNone
- 此参数对于计算 tfidf 不是必需的。 
 
- 返回:
- self对象
- 已拟合的向量化器。 
 
 
 - fit_transform(raw_documents, y=None)[source]#
- 学习词汇和逆文档频率 (idf),返回文档-词项矩阵。 - 这等效于先拟合再转换,但实现效率更高。 - 参数:
- raw_documents可迭代对象
- 一个可迭代对象,生成 str、unicode 或文件对象。 
- yNone
- 此参数将被忽略。 
 
- 返回:
- X(n_samples, n_features) 形状的稀疏矩阵
- TF-IDF 加权的文档-词项矩阵。 
 
 
 - 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]#
- 获取此估计器的参数。 - 参数:
- deep布尔值,默认为 True
- 如果为 True,则将返回此估计器及其包含的作为估计器的子对象的参数。 
 
- 返回:
- params字典
- 参数名称与其值的映射。 
 
 
 - property idf_#
- 逆文档频率向量,仅当 - use_idf=True时定义。- 返回:
- (n_features,) 形状的 ndarray
 
 
 - inverse_transform(X)[source]#
- 返回 X 中具有非零条目的文档的词项。 - 参数:
- X(n_samples, n_features) 形状的{类数组,稀疏矩阵}
- 文档-词项矩阵。 
 
- 返回:
- X_inv(n_samples,) 形状的数组列表
- 词项数组列表。 
 
 
 
 
     
 
 
 
 
 
