zoukankan      html  css  js  c++  java
  • sklearn文本特征提取——TfidfVectorizer

    什么是TF-IDF

    TF-IDF(term frequency-inverse document frequency)词频-逆向文件频率。在处理文本时,如何将文字转化为模型可以处理的向量呢?TF-IDF就是这个问题的解决方案之一。字词的重要性与其在文本中出现的频率成正比(TF),与其在语料库中出现的频率成反比(IDF)。

    TF

    TF:词频。TF(w)=(词w在文档中出现的次数)/(文档的总词数)

    IDF

    IDF:逆向文件频率。有些词可能在文本中频繁出现,但并不重要,也即信息量小,如is,of,that这些单词,这些单词在语料库中出现的频率也非常大,我们就可以利用这点,降低其权重。IDF(w)=log_e(语料库的总文档数)/(语料库中词w出现的文档数)

    TF-IDF

    将上面的TF-IDF相乘就得到了综合参数:TF-IDF=TF*IDF

    如何使用?

    在文本处理中,我们经常遇到将一段话变成向量,以组成矩阵来输入到模型中处理。我们这时就可以用到TF-IDF来做。但是我们需要自己找语料库训练TF-IDF吗?看看sklearn.feature_extraction.text.TfidfVectorizer吧~~~
    示例:

    from sklearn.feature_extraction.text import TfidfVectorizer
    
    cv=TfidfVectorizer(binary=False,decode_error='ignore',stop_words='english')
    vec=cv.fit_transform(['hello world','this is a panda.'])#传入句子组成的list
    arr=vec.toarray()
    

    arr是一个2*3的矩阵,如下:

    array([[ 0.70710678,  0.        ,  0.70710678],
        [ 0.        ,  1.        ,  0.        ]])
    

    一行代表一个句子样本,这样的矩阵就可以放入模型中训练了。与TfidfVectorizer类似的还有CountVectorizer。与此相关的概念还有词袋,词集

  • 相关阅读:
    bzoj3064: Tyvj 1518 CPU监控
    bzoj3272: Zgg吃东西&&3267: KC采花
    bzoj2759: 一个动态树好题
    bzoj4594: [Shoi2015]零件组装机
    bzoj4873: [Shoi2017]寿司餐厅
    bzoj4593: [Shoi2015]聚变反应炉
    codeforces 739E
    bzoj2034: [2009国家集训队]最大收益
    mybatis-generator使用心得
    Linux 各种软件的安装-Jenkins和svn结合
  • 原文地址:https://www.cnblogs.com/mengnan/p/9307648.html
Copyright © 2011-2022 走看看