TF-IDF_NLP_2

一篇文章或文档中,哪些词对文章更重要?哪些词可以作为关键字?自动提取关键词可以快速地从海量的信息中提取和获取信息。

1、关键词提取的机器学习方法

  • 有监督:构建一个丰富的词表,判断每个文档与词表中每个词的匹配程度,优点是准确,缺点是维护词表和标注的成本高。
  • 无监督:2个常见算法是TF-IDF算法和TextRank算法。

2、TF-IDF算法

参考阅读:https://www.cntofu.com/book/85/nlp/tf-idf.md
Term Frequency - Inverse Document Frequency 即“词频-逆文本频率”

TF-IDF(x) = TF(x) * IDF(x)

TF-IDF(x)越大,这个词是关键词的可能性越大

2.1 TF(词频)

在1篇文章中,1个词出现的次数越多,那么这个词在这篇文章中越重要,即越多越好。
词频

2.2 IDF(逆文本频率)

在若干个文档中,1个词出现的次数越少,说明这个词越重要;即越少越好。
在这里插入图片描述

2.3 举例

在某个语料库中,共有2000个文档,标记为d1,d2,d3……,d2000
其中d1文档,共有1000个词,其中“自然语言处理”出现了33次;
全部5000个文档中,“自然语言处理”这个词,在10个文档中出现过;

则d1中的,“自然语言处理的”的TF值为:33/1000=0.033;
在整个语料库中,“自然语言处理”的IDF值就是:log(5000/11)=2.66
TF-IDF(x) = 0.033*2.66 = 0.088

2.4 Jieba分词-TF-IDF

jieba.analyse.extract_tags(sentence,topK=20,withWeight=False,allowPOS=())

  • sentence:待提取的文本
  • topK:返回关键词的数量,默认值为20
  • withWeight:是否返回关键词的权重值,默认值为False
  • allowPOS:仅包括指定词性的词,默认值为空,即不筛选
import jieba.analyse

text = '自然语言处理是计算机科学领域与人工智能领域中的一个重要方向,它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法,自然语言处理是一门融语言学、计算机科学、数学于一体的科学。'

print('总的词数:{}'.format(len(list(jieba.cut(text)))))

keywords_all = jieba.analyse.extract_tags(text)
print('所有关键词(默认取top20):'+"/".join(keywords_all))

keywords_top = jieba.analyse.extract_tags(text, topK=3)
print('top3的关键词:'+"/".join(keywords_top))

运行结果

总的词数:48
所有关键词(默认取top20):自然语言/计算机科学/领域/处理/人工智能/语言学/一体/一门/计算机/通信/数学/科学/方向/有效/理论/方法/实现/各种/之间/研究
top3的关键词:自然语言/计算机科学/领域
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值