关键词提取

TF-IDF

TF-IDF(Term Frequency - Inverse Document Frequency)分为两个部分词频(Term Frequency)和逆文档频率(Inverse Document Frequency)。

词频(Term Frequency)

词频= 某 个 词 在 文 章 中 出 现 的 频 数 文 章 总 词 数 \frac{某个词在文章中出现的频数}{文章总词数} ,表示某个词语在某篇文章中出现的频数。某词语出现频数越高,则重要性越高。除以文章总词数是减少文章长短不同而导致的影响。

逆文档频率(Inverse Document Frequency)

逆文档频率= log ⁡ 语 料 库 文 档 总 数 含 有 该 词 的 文 档 数 + 1 \log_{}{\frac{语料库文档总数}{含有该词的文档数+1}} log+1如果含有该词的文档数越多,则说明这个词很常见、不重要,IDF值越小

注意:语料库文档总数≥含有该词的文档数,因此IDF值必然大于0(分母+1是为了避免分母为0,即所有文档都不含该词)

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

TF-IDF值与一个词在文档中的出现次数成正比,与该词在整个语料库中出现次数成反比。

当一个词的TF-IDF值越高,则说明这个词在这篇文章中多次出现,在其他文章中很少见,那么这个词就很可能是关键词。

优缺点

  • 优点:简单快速,而且容易理解

  • 缺点:用词频来衡量文章中的一个词的重要性不够全面;没有考虑语序,“武松打虎”,"虎打武松"是一样的特征表示

代码实现-jieba

from jieba.analyse import *
with open('sample.txt', encoding='utf-8') as f:
    data = f.read()

# 使用TF-idf方式提取关键词和权重,并且依次显示出来。如果你不做特殊指定的话,默认显示数量为20个关键词。
for keyword, weight in extract_tags(data, topK=20, withWeight=True):
    print('%s %s' % (keyword, weight))

基于特定语料库的TF-IDF关键词提取实现 原 - 云+社区 - 腾讯云 (tencent.com)

补充阅读:TF-IDF与余弦相似性的应用(一):自动提取关键词 - 阮一峰的网络日志 (ruanyifeng.com)

Text Rank

  1. 提取词汇,形成节点
  2. 依据词汇的关联,建立链接
  3. 依照连接节点的多少,给每个节点赋予一个初始的权重数值
  4. 开始迭代。根据某个词所连接所有词汇的权重,重新计算该词汇的权重,然后把重新计算的权重传递下去,直到这种变化达到均衡态,权重数值不再发生改变
  5. 根据最后的权重值,取其中排列靠前的词汇,作为关键词提取结果

代码-jieba

from jieba.analyse import *
with open('sample.txt', encoding='utf-8') as f:
    data = f.read()
for keyword, weight in textrank(data, withWeight=True):
    print('%s %s' % (keyword, weight))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值