TF-IDF提取文章关键词算法
来源:互联网 发布:疯狂java讲义下载 编辑:程序博客网 时间:2024/05/18 07:58
一、TF-IDF简介
TF-IDF(terms frequency-inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术。TF-IDF是一种统计方法,用来评估一字词对于一篇文章的重要程度。一个词语对一篇文章的重要性主要是依靠它在文件中出现的次数,如果这个词语在这篇文章中的出现次数越高,则表明这个词语对于这篇文章的重要性越高。同时,它还与这个词语在语料库中出现的文章篇数有关,随着出现的篇数越多,则会降低这个词语在这篇文章中的重要性,具体的算法请看下面。
二、算法实现
1、在实现这个算法之前,我们需要对一篇文章进行分词,在进行中文分词的时候,推荐一个python库,jieba分词,作者将这个项目发布到了GitHub上,是开源的,GitHub地址https://github.com/fxsjy/jieba
2、TF词频的计算
词频(TF)=某个词语在文章中的出现次数
由于我们需要考虑不同的文章,长度不同,我们需要将词频进行归一化处理
词频(TF)=某个词语在文章中的出现次数/文章的总词数 或者词频(TF)=某个词语在文章中的出现次数/这篇文章出现最多的词的出现次数
3、IDF的计算
逆文档频率(IDF)=log(语料库的文档总数/包含该词的文档数+1),语料库可以自己去网上下载,计算逆文档频率的原因是为了去除哪些经常出现的词语,比如说,“的”、“我们”、“他”等这类的词语,这些词语对于整篇文档重要性不高、但是出现的频率会比较多,就有可能会影响到我们最后的计算结果,如果是经常出现的词语就不能作为我们文章的关键词。
4、计算TF-IDF的值
TF-IDF = 词频(TF)* 逆文档频率(IDF)
5、排序
对文章词语的TF-IDF值进行排序,我们可以选择提取TF-IDF值比较大的词语
6、总结
TF-IDF算法的优点是简单快速,结果比较符合实际情况。但,TF-IDF算法是单纯的以“词频”来衡量一个词的重要性,就显得不够全面,这些词语就不一定能体现出文章的主要思想突出文章的主题。而且,这种算法也无法体现出词语所处的不同位置对于文章的重要性不同,如果想解决这个问题,我们可以采用对于词语所处的不同位置给他们设定不同的权重。
三、测试案例
下面的例子是使用jieba库,来实现TF-IDF算法的,下面是文章的内容
有很多不同的数学公式可以用来计算tf-idf。这边的例子以上述的数学公式来计算。词频(tf)是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是3/100=0.03。一个计算文件频率(DF)的方法是测定有多少份文件出现过“母牛”一词,然后除以文件集里包含的文件总数。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是log(10,000,000 / 1,000)=4。最后的tf-idf的分数为0.03 * 4=0.12。python代码
import syssys.path.append('../')import jiebaimport jieba.analysefrom optparse import OptionParserfile_name = "../txt/test.txt"content = open(file_name, 'rb').read()#10表示输出的前10个tags = jieba.analyse.extract_tags(content, topK=10)print(",".join(tags))输出结果
000,文件,母牛,词语,tf,词频,100,idf,10,0.03
- TF-IDF提取文章关键词算法
- tf-idf关键词提取算法
- 利用TF-IDF 提取文章关键词
- TF-IDF提取关键词
- TF-IDF提取关键词
- tf-idf使用-提取文章关键词-搜索文章
- TF-IDF 提取文本关键词
- TF-IDF:自动提取关键词
- TF-IDF自动提取关键词
- TF-IDF自动提取关键词
- TF-IDF提取关键词并用余弦算法计算相似度
- 数据挖掘算法:tf-idf*(自动提取关键词)
- 自然语言处理——TF-IDF算法提取关键词
- 从提取网页关键词到TF-IDF
- 51、tf-idf值提取关键词
- TF-IDF关键词提取方法的学习
- TF-IDF与余弦相似性文本处理:自动提取关键词、找出相似文章
- 关键词权重计算算法 - TF-IDF
- Git Push 避免用户名和密码方法
- spring实战-自动装配bean
- HDFS再学习:HA和Federation机制
- 牧佑OneZeroZeroDayDream--File字节流读入与输出简单实现
- HDU4417 Super Mario(划分树+二分)
- TF-IDF提取文章关键词算法
- linux简介
- hadoop-2.7 在windows环境下安装
- JDBC6大部以及JDBC通用添加修改任意的sql数据
- X86内核启动分析五 保护模式小荷尖尖角
- ServletContext介绍 ,request response中文乱码问题
- Java中的内部类
- 为什么在这里记录学习过程
- 斐波那契数列的最优算法(golang代码)