【自然语言处理-1】TF-IDF简单最实用的关键词提取技术

自然语言处理历史

阶段时间发展意义
早期阶段1956 年以前香农曾提出过概率模型来描述语言,乔姆斯基提出了基于规则的上下文无关文法。阶段还没有太明确的产出,只有一些简单的拼凑
快速发展1957-1970两大派别分别从概率模型和规则模型分别进行了深入的研究,使用规则构建机器翻译已经小有成效
瓶颈期1971-1993研究停滞,产出的隐马尔科夫模型(HMM)
再次爆发1994 年之后运力设备提升,互联网崛起,飞速发展

TF-IDF

TF-IDF(Term frequency–inverse document frequency),中文翻译就是词频 - 逆文档频率,是一种用来计算关键词的传统方法。
一本储存文本都很长,获取有价值的信息就需要提取文章的关键字,相当于数据的降维,提取的关键词再用与文本的分类。
TF(Term Frequency):TF 的意思就是词频,是指某个词(Term)在一篇新闻中出现的次数。

  • TF标准化=该词词频/文章的总词数

但是想文章里面“他的”、“即是”等等无关词也会在文章中反复出现,这时候需要IDF
IDF(Inverse Document Frequency):IDF 称为逆文档频率

  • IDF=Log(新闻总数量/包含某一个词的新闻数量+1)

如果一个词约普通,那么IDF值越接近与0
但是对于某一些生僻的词,比如“埿好”,虽然他的IDF值会非常大, 但是似乎这个词并没有什么意义

于是乎
就有了TF-IDF,即是TF*IDF
性质:TF-IDF 与一个词在新闻中出现的次数成正比,与该词在整个语料上出现的次数成反比。

TF-IDF优缺点

优点:

算法简单、好理解、运算速度快。

缺点:

短文本无效,因为短文本的很多词出现一次的概率太大,算法很难提取到有效的关键词
很难处理一词多义,因为中文博大精深呀!

案例实战

import gensim.downloader as api

from gensim.corpora import Dictionary

#加载数据 注意第一次加载需要下载 时间有点长

dataset = api.load("text8")

dct = Dictionary(dataset)

new_corpus = [dct.doc2bow(line) for line in dataset]

#加载模型库

from gensim import models

#训练模型

tfidf = models.TfidfModel(new_corpus)

#保存模型

tfidf.save("tfidf.model")

# 载入模型

tfidf = models.TfidfModel.load("tfidf.model")

# 使用这个训练好的模型得到单词的tfidf值

tfidf_vec = []

for i in range(len(new_corpus)):

    string_tfidf = tfidf[new_corpus[i]]

    tfidf_vec.append(string_tfidf)

# 输出 词语id与词语tfidf值

print(tfidf_vec)

友情提示

  • 处理dataset = api.load("text8")可能需要调bug
  • 可能会报错,请参照文章【传送门
  • 可能需要借助科学上网工具

模型结果展示

在这里插入图片描述
输出的结果我们发现:

  • 一条数据有两个值,第一个是词的ID,第二个是TF-IDF值

上述的语料是英文,处理中文有专用的分词工具jieba

#使用jieba分词工具处理中文

import jieba

seg_list = jieba.cut("我就不信你能把我切得很好?不存在的,小老弟",cut_all=False)

print("Default Mode: " + " ".join(seg_list)) # 精确模式

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wency(王斯-CUEB)

我不是要饭的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值