sklearn 的 TfidfVectorizer
可以把原始文本内容变换为以 tf-idf 组成的特征矩阵,为后续的文本分类、计算文本相似度、主题模型等工作奠定基础;TfidfVectorizer
本质上是 CountVectorizer
词频计算类和 TfidfTransformer
tf-idf 变换类的结合体。
参数说明
input
-
可选值,
{'filename', 'file', 'content'}
,默认值是'content'
。指定输入内容的数据形式。
若指定为
'filename'
,fit
函数接收的是可序列化的文件名,fit
(拟合)数据时会从文件名对应的文件中读取数据。若指定为
'file'
,fit
函数接收的是可以调用read
函数的文件对象。若指定为
'content'
,即默认值,fit
函数传递的是可以直接读取的 string 或 byte 类型的文本内容。 encoding
-
str
类型,默认值是'utf-8'
。如果给定的解析内容是文件或字节内容时,需要解码的形式。
decode_error
-
可选值,
{'strict', 'ignore', 'replace'}
,默认值是'strict'
。该参数表示提供的内容不是指定的解码形式时,应该怎么做。
若指定为
'strict'
,在遇到解码错误时,程序会抛出UnicodeDecodeError
错误。若指定为
'ignore'
,顾名思义,在遇到解码错误时,忽略该错误。若指定为
'replace'
,顾名思义,在遇到解码错误时,替换非法字符,一般是用?
占位符替换解码错误的字符,这个相对来可能一眼就知道那些字符编码出问题了。 strip_accents
-
可选值,
{'ascii', 'unicode'}
,默认值是None
。将使用
ascii
或unicode
编码在预处理步骤中去除原始文本中的重音符号(accents),重音符号指的是加粗、单引号等。ascii
是一种快速的方法,且仅适用于能直接映射 ASCII 的字符上;unicode
比较慢一些,它可以作用在任何字符上;None
的话什么都不做。ascii
和unicode
都采用 NFKD 的统一码形式。 lowercase
-
bool
类型,默认值是True
。是否在分词(tokenizing)之前小写化字符。
preprocessor
-
可调用对象(callable) 或
None
,默认值是None
。在分词(tokenizing)和生成 n-grams 时,覆盖预处理阶段,即指定预处理步骤。该参数只在
analyzer
未设置可调用对象(callable)时。 tokenizer
-
可调用对象(callable) 或
None
,默认值是None
。在预处理和生成 n-grams 时,覆盖分词(tokenizing)步骤。该参数只在
analyzer
设置为'word'
时。 analyzer
-
可调用对象(callable) 或
{'word', 'char', 'char_wb'}
,默认值是'word'
。指定特征向量是基于词(word)还是 n-grams 的字符形式。
stop_words
-
可选项为
{'english'}
,列表(list)或None
,默认值是None
。指定停用词。
字符串当前只支持
'english'
,采用内置默认的英语停用词。指定一个
list
类型的停用词列表,在分词阶段会过滤调这些停用词,该设置只有在analyzer=='word' 时起作用
。如果设置为
None
,即默认值,表示不会有停用词;但是可以通过设置max_df
参数在 [0.7, 1.0) 时可以自动过滤停用词这种高频词。 token_pattern
-
str
类型。表示 token 的正则表达式,需要设置
analyzer == 'word'
;默认的正则表达式选择 2 个及以上的字母或数字作为 token,标点符号默认当作 token 分隔符,而不会被当作 token。 ngram_range
-
元组(tuple)类型,tuple(min_n, max_n),默认是 (1, 1)。
要提取的 n-gram 的 n-values 的下限和上限范围,在 min_n <= n <= max_n 区间的 n 的全部值。
有时候我们觉得单个的词语作为特征还不足够,能够加入一些词组更好,就可以设置这个参数。
max_df
-
float
或者int
类型,默认值 1.0。当构建词汇表时,严格忽略高于给出阈值的文档频率的词条。
当设置为
float
类型时,应该介于 [0.0, 1.0] 浮点数,表示词条文档出现比例阈值。当设置为
int
类型时,表示词条文档出现频数阈值。 min_df
-
float
或者int
类型,默认值 1。当构建词汇表时,严格忽略低于给出阈值的文档频率的词条。
当设置为
float
类型时,应该介于 [0.0, 1.0] 浮点数,表示词条文档出现比例阈值。当设置为
int
类型时,表示词条文档出现频数阈值。 max_features
-
int
类型,默认值None
。最大的特征词条数。
当设置为
None
时,词条有多少算多少,这时要注意维度爆炸。 vocabulary
-
mapping(如 字典)或 可迭代的对象(iterable),默认值
None
。指定词表的映射,key 是词条,value 是索引值(其实是矩阵的列索引值)。
如果设置为
None
,即没有指定,这以输入文本内容来建词条索引。 binary
-
bool
类型,默认值False
。一个关键词在一个文档中可能出现 n 次,如果
binary=True
,非零的 n 将全部置为 1,这对需要布尔值输入的离散概率模型是比较有用的。 dtype
-
dtype, default=float64
fit_transform() 和 transform() 函数返回的矩阵元素数据类型。
属性说明
vocabulary_
-
字典(dict)类型
词表特征及索引的映射数据。