当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn TfidfVectorizer用法及代码示例


本文简要介绍python语言中 sklearn.feature_extraction.text.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

在用户指南中阅读更多信息。

参数

input{‘filename’, ‘file’, ‘content’},默认='内容'
  • 如果 'filename' ,作为参数传递给 fit 的序列应该是需要读取以获取要分析的原始内容的文件名列表。
  • 如果 'file' ,则序列项必须有一个 ‘read’ 方法(file-like 对象),该方法被调用以获取内存中的字节。
  • 如果 'content' ,则输入应为字符串或字节类型的项目序列。
encodingstr,默认='utf-8'

如果要分析字节或文件,则使用此编码进行解码。

decode_error{‘strict’, ‘ignore’, ‘replace’},默认='严格'

如果要分析的字节序列包含不属于给定 encoding 的字符,请说明如何处理。默认情况下,它是‘strict’,这意味着将引发UnicodeDecodeError。其他值为‘ignore’ 和‘replace’。

strip_accents{‘ascii’, ‘unicode’},默认=无

在预处理步骤中删除重音并执行其他字符规范化。 ‘ascii’ 是一种快速方法,仅适用于具有直接 ASCII 映射的字符。 ‘unicode’ 是一种稍慢的方法,适用于任何字符。无(默认)什么都不做。

‘ascii’ 和 ‘unicode’ 都使用 unicodedata.normalize 的 NFKD 标准化。

lowercase布尔,默认=真

在标记化之前将所有字符转换为小写。

preprocessor可调用,默认=无

覆盖预处理(字符串转换)阶段,同时保留标记化和n-grams 生成步骤。仅当 analyzer 不可调用时才适用。

tokenizer可调用,默认=无

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

analyzer{‘word’, ‘char’, ‘char_wb’} 或可调用,默认='word'

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

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

stop_words{‘english’},列表,默认=无

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

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

如果没有,将不使用停用词。 max_df 可以设置为 [0.7, 1.0) 范围内的值,以根据术语的语料库文档内频率自动检测和过滤停用词。

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

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

如果 token_pattern 中有捕获组,则捕获的组内容,而不是整个匹配项,将成为令牌。最多允许一个捕获组。

ngram_range元组 (min_n, max_n), 默认=(1, 1)

n-values范围的上下边界,用于提取不同的n-grams。将使用所有满足 min_n <= n <= max_n 的 n 值。例如,(1, 1)ngram_range 仅表示一元组,(1, 2) 表示一元组和二元组,而(2, 2) 表示仅二元组。仅在 analyzer 不可调用时适用。

max_df浮点数或整数,默认=1.0

在构建词汇表时,忽略文档频率严格高于给定阈值的术语(corpus-specific 停用词)。如果 float 在 [0.0, 1.0] 范围内,该参数表示文档的比例,整数绝对计数。如果词汇表不是无,则忽略此参数。

min_df浮点数或整数,默认=1

在构建词汇表时,忽略文档频率严格低于给定阈值的术语。该值在文献中也称为cut-off。如果 float 在 [0.0, 1.0] 范围内,该参数表示文档的比例,整数绝对计数。如果词汇表不是无,则忽略此参数。

max_features整数,默认=无

如果不是 None,则构建一个仅考虑按语料库中的词频排序的顶部 max_features 的词汇表。

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

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

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

binary布尔,默认=假

如果为 True,则所有非零项计数都设置为 1。这并不意味着输出将只有 0/1 值,只是 tf-idf 中的 tf 项是二进制的。 (将 idf 和规范化设置为 False 以获得 0/1 输出)。

dtype数据类型,默认=float64

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

norm{‘l1’, ‘l2’},默认='l2'

每个输出行都有单位范数,或者:

  • ‘l2’:向量元素的平方和为 1。当应用 l2 范数时,两个向量之间的余弦相似度是它们的点积。
  • ‘l1’:向量元素的绝对值之和为 1。参见preprocessing.normalize
use_idf布尔,默认=真

启用 inverse-document-frequency 重新加权。如果为假,则 idf(t) = 1。

smooth_idf布尔,默认=真

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

sublinear_tf布尔,默认=假

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

属性

vocabulary_dict

术语到特征索引的映射。

fixed_vocabulary_bool

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

idf_形状数组(n_features,)

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

stop_words_set

被忽略的术语,因为它们:

  • 发生在太多文档中(max_df)

  • 发生在太少的文档中(min_df)

  • 被特征选择(max_features)切断。

这仅在没有给出词汇表的情况下可用。

注意

stop_words_ 属性在酸洗时会变大并增加模型大小。此属性仅用于自省,可以使用 delattr 安全删除或在酸洗前设置为 None。

例子

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

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.feature_extraction.text.TfidfVectorizer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。