当前位置:   article > 正文

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

【自然语言处理-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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

友情提示

  • 处理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)) # 精确模式

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/541067
推荐阅读
相关标签
  

闽ICP备14008679号