赞
踩
阶段 | 时间 | 发展意义 |
---|---|---|
早期阶段 | 1956 年以前 | 香农曾提出过概率模型来描述语言,乔姆斯基提出了基于规则的上下文无关文法。阶段还没有太明确的产出,只有一些简单的拼凑 |
快速发展 | 1957-1970 | 两大派别分别从概率模型和规则模型分别进行了深入的研究,使用规则构建机器翻译已经小有成效 |
瓶颈期 | 1971-1993 | 研究停滞,产出的隐马尔科夫模型(HMM) |
再次爆发 | 1994 年之后 | 运力设备提升,互联网崛起,飞速发展 |
TF-IDF(Term frequency–inverse document frequency),中文翻译就是词频 - 逆文档频率,是一种用来计算关键词的传统方法。
一本储存文本都很长,获取有价值的信息就需要提取文章的关键字,相当于数据的降维,提取的关键词再用与文本的分类。
TF(Term Frequency):TF 的意思就是词频,是指某个词(Term)在一篇新闻中出现的次数。
但是想文章里面“他的”、“即是”等等无关词也会在文章中反复出现,这时候需要IDF
IDF(Inverse Document Frequency):IDF 称为逆文档频率
如果一个词约普通,那么IDF值越接近与0
但是对于某一些生僻的词,比如“埿好”,虽然他的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
输出的结果我们发现:
上述的语料是英文,处理中文有专用的分词工具jieba
#使用jieba分词工具处理中文
import jieba
seg_list = jieba.cut("我就不信你能把我切得很好?不存在的,小老弟",cut_all=False)
print("Default Mode: " + " ".join(seg_list)) # 精确模式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。