博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AIOPS 自然语义处理之TF-IDF算法详解
阅读量:4170 次
发布时间:2019-05-26

本文共 1102 字,大约阅读时间需要 3 分钟。

目录


要解决的问题

 从一个非结构的文本中,在无人工干预的情况下,利用计算机准确提取文本的意思?

名词解释:

  • 词频(Term Frequency 简称TF):一个给定的词在文本中出现的次数
  • 停用词(Stop words ):表示对结果查找没有帮助,毫无意义的词。例如: 的,是,在,is, are
  • 逆文档频率(Inverse Document Frequency 简称IDF): 在词频的基础上,根据日常出现词的频率给定一个权重。比如:《中国的蜜蜂养殖》这个文本中,最常见的词("的"、"是"、"在")给予最小的权重,较常见的词("中国")给予较小的权重,较少见的词("蜜蜂"、"养殖")给予较大的权重

            备注: 一个词的逆文当频率和一个词的常见程度成反比

  • TF-IDF值 = 词频 * 逆文档频率 (TF * IDF) 

          TF-IDF值 越大,表示这个词对于文章的重要性越高。排在最前面的几个词,就是文档的关键词

算法思想:

如果包含词条t的文档越少,IDF越大,则说明词条具有很好的类别区分能力

Step1: 计算词频

TF=特定词在文章中出现的次数

考虑到文章的长短之分:

  TF = 某个词在文章职工出现的次数 / 文章的总词数

写成公式:对一个特定文件里的词语t_i来说,它的重要性可以表示为:

以上公式中, n_i,_j是该词ti在文本dj中出现的次数,分母表示dj文件中所有字词出现次数的之和

Step2, 计算逆文档频率

通用数学符号表示:

其中:

  • |D|:语料库中的文件总数

  • :包含词语的文件数目(即的文件数目)如果该词语不在语料库中,就会导致分母为零,因此一般情况下使用

    作为分母。

  • lg是以10为底的对数函数,图形如下

Step3: 计算TF-IDF

TF-IDF = TF * IDF 

可以看出, TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比

举例说明:

假如一篇文件的总词语数是100个,而词语“运维”出现了3次,那么

TF(运维) =  3 / 100 = 0.03

通过百度搜索,运维在中文网页中出现的次数是15,900,000, 假设中文网页总数D=10,000,000,000

IDF(运维) = \log_{10}\frac{10,000,000,000}{15,900,000 + 1}   =  2.79 

TF-IDF的分数 = TF * IDF= 0.03 * 2.79 = 0.084 

优缺点

TF-IDF算法的优点是简单快速,结果比较符合实际情况。

缺点是,单纯以"词频"衡量一个词的重要性,不够全面,有时重要的词可能出现次数并不多。而且,这种算法无法体现词的位置信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同,这是不正确的

参考文章:

你可能感兴趣的文章
命令行下编译java并生成jar包
查看>>
fat插件打包jar(Eclipse会丢掉引用的外部包)
查看>>
卸载apk代码
查看>>
Eclipse快捷键大全[转]
查看>>
soap 的使用
查看>>
Android Handler的使用!!!
查看>>
Android SharedPreferences的使用
查看>>
代码实现改变语言
查看>>
如何用CVS下载SourceForge.net上的源码
查看>>
教你如何开关Android的APN网络
查看>>
JDK1.6官方下载_JDK6官方下载
查看>>
显示word文档
查看>>
C# 与 java 的异同?
查看>>
图片的格式JPG. BMP. GIF. PNG有什么区别
查看>>
访问 IIS 元数据库失败的问题
查看>>
acl 并使用 MetaACL 元数据库 ACL 权限更改
查看>>
名称以无效字符开头。处理资源 'http://localhost/WEB/' 时出错
查看>>
DSS 搭建手机流媒体服务器
查看>>
在Android中实现全屏显示的方法
查看>>
Toast和Handler的间隔使用
查看>>