您的位置:首页 > 其它

sklearn文本特征提取CountVectorizer 和 TfidfVectorizer

2018-01-08 13:05 357 查看
fromsklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
1. CountVectorizer
vectorizer=CountVectorizer(analyzer = "word",  \
                            tokenizer =None,    \
                            preprocessor =None, \
                            stop_words =None,   \
                            max_features =5000)
将文本文档集合转换为token计数矩阵
该实现使用scipy.sparse.csr_matrix生成计数的稀疏表示。
如果您没有提供先验字典,而且也不使用某种特征选择的分析器,那么特征的数量将等于通过分析数据找到的词汇量。
(1) analyzer字符串,{'单词','字符','char_wb'}或可调用
特征是否应该由单词或字符n-gram组成。 选项“char_wb”仅从字边界内的文本创建字符n-gram; 单词边缘的n元素用空格填充。
如果通过了可调用的函数,它将用来从原始未处理的输入中提取特征序列。
(2) tokenizer可调用或无(默认)
重写字符串标记化步骤,同时保留预处理和n-gram生成步骤。 只适用于分析仪=='单词'。
(3) preprocessor 可调用或无(默认)
重写预处理(字符串转换)阶段,同时保留标记化和n-gram生成步骤。
(4) stop_words字符串{'english'},列表或无(默认)
如果使用“英语”,则使用英语的内置停用词表。
如果列表中的列表被假定为包含停用词,则将从结果标记中删除所有这些词。 只适用于分析仪=='单词'。
如果没有,则不会使用停用词。 可以将max_df设置为[0.7,1.0]范围内的一个值,以便根据术语内部语料文档的频率自动检测并过滤停用词。
(5) ax_features int或None,default = None
如果不是None,则建立一个词汇表,只考虑整个语料库中按词频排序的顶级max_features。

2. TfidfVectorizer部分参数

TfidfVectorizer将原始文档集合转换为TF-IDF特征矩阵。等同于TvidfTransformer之后的CountVectorizer。

(1) binary:默认为False,tf-idf中每个词的权值是tf*idf,如果binary设为True,所有出现的词的tf将置为1,TfidfVectorizer计算得到的tf与CountVectorizer得到的tf是一样的,就是词频,不是词频/该词所在文档的总词数。
(2) norm:默认为'l2',可设为'l1'或None,计算得到tf-idf值后,如果norm='l2',则整行权值将归一化,即整行权值向量为单位向量,如果norm=None,则不会进行归一化。大多数情况下,使用归一化是有必要的。
(3) use_idf:默认为True,权值是tf*idf,如果设为False,将不使用idf,就是只使用tf,相当于CountVectorizer了。
(4) smooth_idf:idf平滑参数,默认为True,idf=ln((文档总数+1)/(包含该词的文档数+1))+1,如果设为False,idf=ln(文档总数/包含该词的文档数)+1
(5) sublinear_tf:默认为False,如果设为True,则替换tf为1 +log(tf)。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: