tf-idf关键词提取算法

来源:互联网 发布:代理商查询系统源码 编辑:程序博客网 时间:2024/05/18 09:14

tf-idf简介

在信息提取的应用场景之中,我们往往需要一些文本中的重要的词而不是文本中的所有词语来进行分析,即使原文本已经进行了去停用词的处理。
那么什么样的词算是文本中的关键词呢?一方面,这个词应该在文本中出现的次数比较多;另一方面,这个词应该不那么常见,若是这个词在很多文档中都有出现,这个词显然不能用来作为代表某个文档的重要词汇。一个合适的算法便是tf-idf算法。
tf-idf是term frequency–inverse document frequency的缩写。该算法用一种统计学的方法来衡量一个词语在文本中的重要程度,常被用于信息提取、文本挖掘等场景之中。该算法的核心便是计算一个文本中某个词语的tf值与idf值。

tf计算

tf是term frequency的缩写,指文本中的词频。衡量一个词语在文档中的出现频率有很多方法,最简单也足够有效的,便是直接计算这个词出现的次数,来作为这个词的tf值。

idf计算

idf是inverse document frequency的缩写,指“逆文档频率”,是一个用来衡量一个词常见程度的值。这个值的计算不应该基于单个文档,而应该考虑所有要进行分析的文档,来得出结果。
idf值的计算方法也有很多,这里仅提供一个常见的公式:

idf=log+1

分母处加一,是为了防止某个词从未出现过而导致分母为0。

算法实现

上面的两个值显然都与一个词的重要程度正相关,所以将其直接相乘,以乘积比较不同词之间的重要程度差异。下面是使用python的实现:

def idf(corpus):    idfs = {}    d = 0.0    # 统计词出现次数    for doc in corpus:        d += 1        counted = []        for word in doc:            if not word in counted:                counted.append(word)                if word in idfs:                     idfs[word] += 1                else:                     idfs[word] = 1    # 计算每个词逆文档值    for word in idfs:        idfs[word] = math.log(d/float(idfs[word]))    return idfsif __name__ == '__main__':    # 获取需要的语料库,根据实际情况自行更改    # 这里获取的语料库是每个文档的分词结果列表的列表    corpus = getCorpus()    idfs = idf(corpus)    for doc in corpus:        tfidfs = {}        for word in doc:            if word in tfs:                tfidfs[word] += 1            else:                tfidfs[word] = 1        for word in tfidfs:            tfidfs[word] *= idfs[word]        '''        在这里实现你要做的事        '''

实际应用中,有时tf-idf还会与别的算法相结合,比如根据词语出现的位置附加一些评判词语重要程度的信息等。

总结

tf-idf算法非常简单,但其有一个极为致命的缺陷,就是没有考虑词语的语义信息,无法处理一词多义与一义多词的情况。
在过去,往往通过结合一些外部信息如“知网”(WordNet)或者使用可以表达隐藏信息的概率模型来处理这一缺陷。
2013年,Google开源了其Word2Vec算法,通过计算上下文来将词语进行向量化表示,在正常的训练结果下语义相近的词语向量距离较近而语义较远的词语距离向量较远。结合这一深度学习的新算法,tf-idf的传统问题得到了很好的解决。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 word文档用不了怎么办 wps文档不能编辑怎么办 电脑e盘不见了怎么办 电脑d盘权限怎么办 共享打印机无法打印怎么办 网络权限被禁止怎么办 硬盘显示不出来怎么办 硬盘插上不显示怎么办 mac不能读取移动硬盘怎么办 mac系统坏了怎么办 ip地址网站打不开怎么办? 电脑页面偏了怎么办 wifi被禁止联网怎么办 oppo浏览器屏蔽网站怎么办 被网站禁言怎么办 网站被模仿了怎么办 公积金不允许提取还房贷怎么办 电脑超出频率限制怎么办 海带宝转运丢失怎么办 xp电脑证书过期怎么办 电脑qq重复登录怎么办 海带宝少东西怎么办 苹果手机照片打不开怎么办 旧电脑没有密码了怎么办 快手忘记登录账号怎么办 b站永久封禁怎么办 微博自动关注怎么办 微博会自动点赞怎么办 游戏名字被占用怎么办 闲鱼头像违规怎么办 请求状态码错误怎么办 微博错误20521怎么办 忘记申请的邮箱怎么办 填写简历忘记邮箱怎么办 雅虎邮箱忘记用户名怎么办 oppo手机忘记密码怎么办 设备昵称忘了怎么办 快手昵称被注册怎么办 app占用越来越大怎么办 淘宝昵称被占用怎么办 电脑开机时间不准怎么办