美文网首页机器学习机器学习ML
CountVectorizer与TfidfVectorizer

CountVectorizer与TfidfVectorizer

作者: 卷心菜呀 | 来源:发表于2018-04-25 22:43 被阅读729次

    导入

    from skleran.feature_extraction.text import CountVectorizer, TfidfTransformer
    from  sklearn.feature_extraction.text import TfidfVectorizer
    

    CountVectorizer+TfidfTransformer

    CountVectorizer会将文本中的词语转换为词频矩阵,它通过fit_transform函数计算各个词语出现的次数,通过get_feature_names()可获得所有文本的关键词,通过toarray()可看到词频矩阵的结果。
    TfidfTransformer用于统计vectorizer中每个词语的TFIDF值。

    TfidfVectorizer

    将原始文档的集合转化为tf-idf特性的矩阵,相当于CountVectorizer配合TfidfTransformer使用的效果。
    即TfidfVectorizer类将CountVectorizer和TfidfTransformer类封装在一起。

    • 参数
     input:string {'filename','file','content'}
    
        如果'filename',作为参数传递的顺序适合,预计将是需要读取以获取原始内容进行分析的文件名列表。
    
        如果'file',序列项必须有一个'read'方法(类文件对象),被调用来获取内存中的字节。
    
        否则,输入将被预期是顺序字符串或字节项预期直接分析。
    
    encoding:string,'utf-8'。
    
        如果要分配字节或文件,则使用该编码进行解码。
    
    decode_error:{'strict','ignore','replace'}
    
        如果给出分析字节序列包含不是给定编码的字符,该怎么做。默认情况下,它是'strict',这意味着将会引发一个UnicodeDecodeError。其他值是“忽略”和“替换”。
    
    strip_accents:{'ascii','unicode',无}
    
        在预处理步骤中删除口音。'ascii'是一种快速的方法,只适用于具有直接ASCII映射的字符。'unicode'是一种稍慢的方法,适用于任何字符。无(默认)不起作用。
    
    analyzer:string,{'word','char'}或可调用
    
        该功能是否应由字符或字符n-gram组成。
    
        如果传递了一个可调用函数,它将用于从原始未处理的输入中提取特征序列。
    
    预处理器:可调用或无(默认)
    
        覆盖预处理(字符串转换)阶段,同时保留令牌化和n-gram生成步骤。
    
    tokenizer:可调用或无(默认)
    
        覆盖字符串标记化步骤,同时保留预处理和n-gram生成步骤。仅适用如果。analyzer == 'word'
    
    ngram_range:tuple(min_n,max_n)
    
        不同n值的n值范围的下边界和上边界被提取。将使用所有n值,使得min_n <= n <= max_n。
    
    stop_words:string {'english'},list或None(默认)
    
        如果是字符串,则将其传递给_check_stop_list,并返回相应的停止列表。'english'是目前唯一支持的字符串值。
    
        如果一个列表,该列表被假定为包含停止词,所有这些都将从生成的令牌中删除。仅适用如果。analyzer == 'word'
    
        如果没有,将不会使用停止的单词。max_df可以设置为[0.7,1.0]范围内的值,以根据术语的语料库文档频率自动检测和过滤停止词。
    
    小写:布尔值,默认值为True
    
        在标记化之前将所有字符转换为小写。
    
    token_pattern:string
    
        表示什么构成“令牌”的正则表达式,仅用于。默认正则表达式选择2个或更多字母数字字符的标记(标点符号被完全忽略,并始终作为令牌分隔符处理)。analyzer == 'word'
    
    max_df:float in range [ 0.0,1.0 ]或int,default = 1.0
    
        当构建词汇时,忽略文档频率严格高于给定阈值(语料库特定停止词)的术语。如果为float,则该参数代表一定比例的文档,整数绝对计数。如果词汇不是无,则忽略此参数。
    
    min_df:float in range [ 0.0,1.0 ]或int,default = 1
    
        当构建词汇时,忽略文档频率严格低于给定阈值的术语。这个值在文献中也被称为截止值。如果为float,则该参数代表一定比例的文档,整数绝对计数。如果词汇不是无,则忽略此参数。
    
    max_features:int或None,default = None
    
        如果不是无,建立一个词汇,只考虑由词汇频率排序的顶级max_feature。
    
        如果词汇不是无,则忽略此参数。
    
    词汇表:映射或迭代,可选
    
        键是术语和值的映射(例如,dict)是特征矩阵中的索引,或者可迭代的术语。如果没有给出,则从输入文档确定词汇表。
    
    binary:boolean,default = False
    
        如果为True,则所有非零项计数都设置为1.这并不意味着输出将只有0/1值,只有tf-idf中的tf项是二进制的。(将idf归一化为False,得到0/1输出。)
    
    dtype:type,可选
    
        由fit_transform()或transform()返回的矩阵的类型。
    
    规范:'l1','l2'或无,可选
    
        用于规范化术语向量的规范。没有没有规范化。
    
    use_idf:boolean,default = True
    
        启用逆文档频率重新加权。
    
    smooth_idf:boolean,default = True
    
        通过将文档频率添加一个平滑的idf权重,就好像一个额外的文档被看到包含一个集合中的每个术语一次。防止零分。
    
    sublinear_tf:boolean,default = False
    
        应用子线性tf缩放,即用1 + log(tf)替换tf。
    

    参考资料

    https://blog.csdn.net/hutao1101175783/article/details/74618205
    官方文档

    相关文章

      网友评论

        本文标题:CountVectorizer与TfidfVectorizer

        本文链接:https://www.haomeiwen.com/subject/msjulftx.html