首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于TF-IDF算法抽取文章关键词

基于TF-IDF算法抽取文章关键词

作者头像
Python中文社区
发布2018-01-31 17:32:42
2.5K0
发布2018-01-31 17:32:42
举报
文章被收录于专栏:Python中文社区Python中文社区

專 欄

yonggege,Python中文社区专栏作者

博客:https://www.zhihu.com/people/yonggege

0. 写在前面

本文目的,利用TF-IDF算法抽取一篇文章中的关键词,关于TF-IDF,可以参考TF-IDF与余弦相似性的应用(一):自动提取关键词 - 阮一峰的网络日志。

TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。(百度百科)

TF(Term Frequency)词频,某个词在文章中出现的次数或频率,如果某篇文章中的某个词出现多次,那这个词可能是比较重要的词,当然,停用词不包括在这里。

IDF(inverse document frequency)逆文档频率,这是一个词语“权重”的度量,在词频的基础上,如果一个词在多篇文档中词频较低,也就表示这是一个比较少见的词,但在某一篇文章中却出现了很多次,则这个词IDF值越大,在这篇文章中的“权重”越大。所以当一个词越常见,IDF越低。

当计算出TFIDF的值后,两个一乘就得到TF-IDF,这个词的TF-IDF越高就表示,就表示在这篇文章中的重要性越大,越有可能就是文章的关键词。

而Python的scikit-learn包下有计算TF-IDF的API,我们就用这个来简单的实现抽取文章关键词。

这里用到的文本数据材料则是《冰与火之歌》的1-5季(冰歌粉哈哈哈)

1. 数据采集

文本数据来源《冰与火之歌》小说在线阅读网站的内容爬取,这个的网站很多,这里就不贴出是哪一个了

爬取的难度不大,爬取下来之后写入本地文件

2. 文档分词

爬取了所有文档之后,后续为了计算TF和IDF值,首先要提取文档中的所有词语,利用python的jieba库可以来进行中文分词。

下面遍历所有文件里所有文档来分词

文档分词之后还需要去停用词来提高抽取准确性,这里先准备一个停用词字典。

同时,我们还可以新增自选的词典,提高程序纠错能力,例如

3. scikit-learn的TF-IDF实现

(装好anaconda之后,scikit-learn已经完成)

scikit-learn中TF-IDF权重计算方法主要用到CountVectorizer()类TfidfTransformer()类。

CountVectorizer类会将文本中的词语转换为词频矩阵。矩阵中word[ i ][ j ],它表示j词在i类文本下的词频。

fit_transform(raw_documents[, y])Learn the vocabulary dictionary and return term-document matrix.get_feature_names()Array mapping from feature integer indices to feature name

fit_transform(),学习词语词典并返回文档矩阵,矩阵中元素为词语出现的次数。

get_feature_names(),获取特征整数索引到特征名称映射的数组,即文档中所有关键字的数组。

TfidfTransformer类用于统计每个词语的TF-IDF值。

最后按权重大小顺序输出前n位的词语即可

运行结果

得到每篇文档的关键词。

4. 最后

参考资料:

[1]. TF-IDF与余弦相似性的应用(一):自动提取关键词 - 阮一峰的网络日志

[2]. Python Package Index

[3]. sklearn.feature_extraction.text.CountVectorizer - scikit-learn 0.18.1 documentation

代码GitHub:wzyonggege/tf-idf

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 写在前面
  • 1. 数据采集
  • 2. 文档分词
  • 3. scikit-learn的TF-IDF实现
  • 4. 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档