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

    参考:http://www.cnblogs.com/ybjourney/p/4793370.html

    http://www.cnblogs.com/ybjourney/p/4824903.html

    https://janav.wordpress.com/2013/10/27/tf-idf-and-cosine-similarity/

    词频(TF)和逆文档频率IDF

    我们需要一个重要性调整系数,衡量一个词是不是常见词。如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。

    用统计学语言表达,就是在词频的基础上,要对每个词分配一个"重要性"权重。最常见的词("的"、"是"、"在")给予最小的权重,较常见的词("中国")给予较小的权重,较少见的词("蜜蜂"、"养殖")给予较大的权重。这个权重叫做"逆文档频率"(Inverse Document Frequency,缩写为IDF),它的大小与一个词的常见程度成反比。

    步骤

    (1)计算词频

      词频 = 某个词在文章中出现的总次数

    当然为了消除不同文章大小之间的差异,便于不同文章之间的比较,我们在此标准化词频:

      词频 = 某个词在文章中出现的总次数/文章的总词数

    或者:词频 = 某个词在文章中出现的总次数/文章中出现次数最多的词的个数 

    (2)计算逆文档频率

    在此,首先需要一个语料库来模拟语言的使用环境。

    逆文档频率(IDF) = log(词料库的文档总数/包含该词的文档数+1)

    为了避免分母为0,所以在分母上加1.

    (3)计算TF-IDF值

    基于之前的分析了解,有:TF-IDF值 = TF * IDF。

    在此有:TF-IDF值与该词的出现频率成正比,与在整个语料库中的出现次数成反比,符合之前的分析。

    (4)求出关键字

    计算出文章中每个词的TF-IDF值之后,进行排序,选取其中值最高的几个作为关键字。

    (5)计算文章的相似性

        计算出每篇文章的关键词,从中各选取相同个数的关键词,合并成一个集合,计算每篇文章对于这个集合中的词的词频,生成两篇文章各自的词频向量,进而通过欧氏距离或余弦距离求出两个向量的余弦相似度,值越大就表示越相似。

    某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。

    优缺点

     1.优点是算法的容易理解,便于实现。

     2.缺点:IDF的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好的完成对权值的调整功能,所以在一定程度上该算法的精度并不是很高。除此之外,算法也没哟体现位置信息,对于出现在文章不同位置的词语都是一视同仁的,而我们知道,在文章首尾的词语势必重要性要相对高点。据此,我们可以或许也可以将处于文章不同位置的词语赋予不同的权重。

  • 相关阅读:
    div相对屏幕居中
    Webstorm快捷键
    VIM快捷键
    美食 pizza 家常菜
    ln -s 软链接
    解决Linux服务器执行出现-bash: ./xxx.sh: /bin/sh^M: bad interpreter: No such file or directory
    PHP Apache 搭建FastCGI环境
    VS Code 添加php.validate.executablePath 路径
    git push 时报错 remote: The project you were looking for could not be found.
    PHP类中私有静态成员初始化
  • 原文地址:https://www.cnblogs.com/TMatrix52/p/7886751.html
Copyright © 2011-2022 走看看