zoukankan      html  css  js  c++  java
  • TF-IDF原理

    1.TF-IDF原理

     

    TF-IDF(Term Frequency-Inverse Document Frequency),中文叫做词频-逆文档频率。在文本挖掘(Text Mining)和信息检索(Information Retrieval)领域具有广泛的应用。TF-IDF通过计算每个词的TF-IDF值,筛选出每个文档中最关键一些词。

    那么问题来了,TF-IDF是怎么定义“关键”?作为一个文档中的关键词,我想应该同时满足如下2个特征:

     

     

    • 特征1:出现次数多,存在感强,这个没毛病;

    • 特征2:作为某文档的关键词,它尽可能只在这一个文档中出现。类似“的”、“是”、“在”...这样的词,存在感强的都感知不到它的存在了,原因就是因为它——不够关键,因此,关键词要尽可能的唯一。

     

    TF-IDF(Term Frequency–Inverse Document Frequency),就是平衡这两者的产物,它由两个部分相乘得到:TF × IDF,下面分别介绍一下:

     

    1. TF

     

    TF不用说了意思很明显,TF值越大,词的存在感越强,他是将特征1进行量化。

     

    这里注意,我们之前的词频是计算词出现的次数,它这里除了文档总词数作为分母,只是做了一个标准化,因为有的文章长,有的文章短,出现100次的不一定算多,出现3次的不一定就少。有时候也用其他作为分母进行标准化(留个问题,你知道会用哪些么?)

    2. IDF

     

    计算IDF,我们首先要有一个语料库,可以是关于某个领域的新闻库——可以是聊天记录,也可以是谷歌上亿级的网页文本等等。语料库的作用在于模拟某种语境,当IDF值越大,说明在语境中包含该词的文档树越少,这个词越具有唯一性代表性,某种意义上说,它越关键。它是将特征2进行量化。

     

    注意这里+1的位置,可以有些小变化,在scikit-learn的TfidfTransformer()方法中,如果声明TfidfTransformer(smooth_idf=false),那么IDF的计算就变为:

     

    我们就叫它“不愿smooth的IDF”吧。

     

    最后,将TF与IDF相乘,就可以计算出文档中每个词的TF-IDF值。它综合考虑了一个词的存在感和唯一性。

    TF-IDF的优点是计算简单,利于理解,性价比极高。但是它也有缺陷,首先单纯依据文章中的TF来衡量重要性,忽略了位置信息。如段首,句首一般权重更高;其次,有的文章可能关键词只出现1-2次,但可能通篇都是围绕其进行阐述和解释,所以单纯靠TF仍然不能解决所有的情况。

  • 相关阅读:
    Seam的安全框架授权(Authorization)(译) (三)
    Seam的安全框架授权(Authorization)(译) (一)
    Seam的安全框架错误信息(Error Messages)(译)
    如何编出健壮的代码,java编程30条规则(转)
    Seam的安全框架身份管理(Identity Management)(译)
    Seam的安全框架授权(Authorization)(译) (二)
    集成Seam,Spring和jBPM指南(译)
    拖拉是种病,不治会要命!(转)
    Jboss Seam, mysql中文乱码问题4步骤总结(转)
    ubuntu上的mysql字符集设置(转)
  • 原文地址:https://www.cnblogs.com/zourui4271/p/7511170.html
Copyright © 2011-2022 走看看