TF-IDF算法简介

简介:

TF-IDF算法全称为term frequency–inverse document frequency。TF就是term frequency的缩写,意为词频。IDF则是inverse document frequency的缩写,意为逆文档频率。

该算法在信息处理中通常用来抽取关键词。比如,对一个文章提取关键词作为搜索词,就可以采用TF-IDF算法。

要找出一篇文章中的关键词,通常的思路就是,就是找到出现次数最多的词。如果某个词很重要,它应该在这篇文章中多次出现。于是,我们进行"词频"(Term Frequency,缩写为TF)统计。

但是通常,一篇中文的文章中,都会有很多没有实际意义的词,比如“的”,“是”,“了”,这类词是最常用的词,称为停用词,称它们为停用词是因为在文本处理过程中如果遇到它们,则立即停止处理,将其扔掉。将这些词扔掉减少了索引量,增加了检索效率,并且通常都会提高检索的效果。停用词主要包括英文字符、数字、数学字符、标点符号及使用频率特高的单汉字等。

当过滤掉所有的停用词后,剩下的都是实际意义的词,但也不能简单的认为那个词出现的次数多就是关键词。比如在一篇如何组装电脑的文章中,出现“CPU”,“主板”等关键词和出现“说明书”的次数一样多,但很显然,CPU,主板等关键词,更能确定这个文章的特性。也就是说,“CPU”,“主板”等关键词比“说明书”这个关键词更重要,需要排在前面。所以我们就需要一个权重系数,用来调整各个关键词的重要性。如果一个词很少见,但是它在某个文章中反复出现多次,那么可以认为这个词反应了这个文章的特性,可以把它作为关键词。在信息检索中,这个权重非常重要,它决定了关键词的重要度,这个权重叫做"逆文档频率"(Inverse Document Frequency,缩写为IDF),它的大小与一个词的常见程度成反比。

在知道了词频和权重之后,两者相乘,就得到一个词的TF-IDF值,某个词对文章的重要性越高,它的TF-IDF值就越大。所以,排在最前面的几个词,就是这篇文章的关键词。

因此TF-IDF算法的主要工作就是计算出TF*IDF值最大的那几个词,作为文章的关键词。

计算TF*IDF值需要分成以下几步:

首先需要切词,也就是说把一个文章切成一个个可以作为关键字的词语。由于中文不像英文那样,可以通过空格切词,因此到目前为止,中文分词包括三种方法:

1)基于字符串匹配的分词;

2)基于理解的分词;

3)基于统计的分词。

目前还无法证明哪一种方法更准确,第一种方法是最早出现也是最成熟的算法,算法复杂度也是最低的。切词首先需要一个语料库,然后根据这个库,匹配其中的词语。目前较流行很多,但是支持.NET平台的不多见,主要有中科院计算所ICTCLAS系统和盘古分词,功能强大自带词典,同时支持用户词典,并且支持.NET开发者调用。

分词完成后,就可以计算词频。词频就是某歌词在文章中出现的次数,由于文章有长短,为了规格化词频的,取词频为一个相对值,而不是绝对值。这个相对值可以有2种计算方法。

一种

词频(TF)=某关键词出现次数/文章中关键词总数

或者

词频(TF)=某关键词出现次数/文章中出现最多次数关键词的出现次数

接着,计算逆文档频率(IDF)。计算IDF需要一个语料库,它的计算公式很简单

逆文档频率(IDF)=log(语料库文档总数/(包含该词的文档数+1)),之所以要+1是为了防止分母为0。由此可见,当一个词被越多的文档包含,则IDF值就越小,也就是所这个词很常见,不是最重要的能区分文章特性的关键词。

最后将TF和IDF相乘就得到TF-IDF值。

前面提到的盘古分词的词库中,已经包含了IDF的值,因此使用这个分词工具,也可以计算出各个关键词的TF-IDF值,实现排序。

举个例子,如下一个文章。

标题为清华科研团队重大突破 人类有望“饿死”癌细胞

京华时报讯(记者张晓鸽)昨天,清华大学宣布:该校医学院颜宁教授研究组在世界上首次解析了人源葡萄糖转运蛋白GLUT1的晶体结构,初步揭示了它的工作机制以及相关疾病的致病机理,在人类攻克癌症、糖尿病等重大疾病的探索道路上迈出了极为重要的一步。未来,人类有望“饿死”癌细胞。

昨天的英国《自然》杂志以长文的形式正式刊发了这一成果。据介绍,葡萄糖是地球上各种生物最重要、最基本的能量来源,也是人脑和神经系统最主要的供能物质。据估算,大脑平均每天消耗约120克葡萄糖,占人体葡萄糖总消耗量的一半以上。葡萄糖代谢的第一步就是进入细胞,但亲水的葡萄糖溶于水,而疏水的细胞膜就像一层油,因此,葡萄糖自身无法穿过细胞膜进入到细胞内发挥作用,必须依靠转运蛋白这个“运输机器”来完成。葡萄糖转运蛋白镶嵌于细胞膜上,如同在疏水的细胞膜上开了一扇一扇的门,能够将葡萄糖从细胞外转运到细胞内。

颜宁教授介绍称,葡萄糖转运蛋白GLUT1几乎存在于人体的每一个细胞,是大脑、神经系统、肌肉等组织器官中最重要的葡萄糖转运蛋白,对维持人体正常生理功能极为重要。这种转运蛋白的功能完全缺失将致人死亡,功能部分缺失会导致大脑萎缩、智力低下、发育迟缓等疾病。

同时,这种转运蛋白在癌细胞的新陈代谢中也发挥着重要功能。癌细胞需要消耗超量葡萄糖才能维持其生长扩增,转运蛋白GLUT1在细胞中显著过量往往意味着有癌变发生。

“因此,如能研究清楚GLUT1的组成、结果和工作机理,就有可能通过调控它实现葡萄糖转运的人工干预。”颜宁教授说,这样既可以增加正常细胞的葡萄糖供应,达到治疗相关疾病的目的,又可以通过阻断葡萄糖供应“饿死”癌细胞。

使用C#代码调用盘古分词的dll,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static  void  Main( string [] args)
         {
             string  text = ReadFile( @"D:\系统桌面\ar1.txt" );
             PanGu.Segment.Init();
             Segment segment =  new  Segment();
             //调用分词方法
             ICollection<WordInfo> words = segment.DoSegment(text);
             Dictionary< string double > d =  new  Dictionary< string double >();
             foreach  ( var  word  in  words)
             {
                 //统计频率
                 float  tf = ( float )System.Text.RegularExpressions.Regex.Matches(text, word.Word).Count / ( float )words.Count;
                 if  (!d.ContainsKey(word.Word))
                     d[word.Word] = tf * word.Frequency;
             }
             //排序
             var  lst = d.Select(x => x.Key).OrderByDescending(x => d[x]).ToList();
             //打印出前5个关键词
             lst.Take(5).ToList().ForEach(x => Console.WriteLine(x));
         }

结果为:

4a8b1968bb7148caa79c710a643c7b2b[15]

用这几个关键词去百度里面查询,得到的查询结果为:

eaef8dabe30d4703bb9a25215803e74d[15]

TF-IDF算法的优点是简单快速,结果比较符合实际情况。缺点是,单纯以"词频"衡量一个词的重要性,不够全面,有时重要的词可能出现次数并不多。而且,这种算法无法体现词的位置信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同,这是不正确的。(一种解决方法是,对全文的第一段和每一段的第一句话,给予较大的权重。)

当通过TF-IDF算法找出文章的关键字后,可以运用到一些具体的场景。比如:根据关键字找出相似的文章。


参考文档:

http://www.ruanyifeng.com/blog/2013/03/tf-idf.html

http://zh.wikipedia.org/wiki/TF-IDF












本文转自cnn23711151CTO博客,原文链接: http://blog.51cto.com/cnn237111/1423795,如需转载请自行联系原作者


相关文章
|
2月前
|
存储 算法 安全
【加密算法】AES对称加密算法简介
【加密算法】AES对称加密算法简介
|
2月前
|
机器学习/深度学习 算法 安全
【加密算法】RSA非对称加密算法简介
【加密算法】RSA非对称加密算法简介
|
6月前
|
监控 算法 安全
二进制转十进制算法简介及其在监控软件中的应用
在上网行为管理软件中,匈牙利算法主要应用于解决资源分配的问题。上网行为管理软件可能存在多个用户同时访问同一文件或打印机的情况,为了确保资源的公平共享,需要对资源进行分配
181 2
|
7月前
|
算法
文档管理软件中的冰桶算法简介与应用探讨
冰桶算法在文档管理软件中的作用主要是用于控制用户的访问频率和流量,以保证网络的稳定性和安全性。具体来说,它可以通过限制用户的访问速度、设置访问时间段、限制访问次数等方式,来防止用户对网络资源的过度消耗和滥用,从而提高网络的可用性和效率。
118 0
|
4月前
|
缓存 算法 Java
Linux内核新特性年终大盘点-安卓杀后台现象减少的背后功臣MGLRU算法简介
MGLRU是一种新型内存管理算法,它的出现是为了弥补传统LRU(Least Recently Used)和LFU(Least Frequently Used)算法在缓存替换选择上的不足,LRU和LFU的共同缺点就是在做内存页面替换时,只考虑内存页面在最近一段时间内被访问的次数和最后一次的访问时间,但是一个页面的最近访问次数少或者最近一次的访问时间较早,可能仅仅是因为这个内存页面新近才被创建,属于刚刚完成初始化的年代代页面,它的频繁访问往往会出现在初始化之后的一段时间里,那么这时候就把这种年轻代的页面迁移出去
|
4月前
|
算法
TF-IDF算法是什么呢?
TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用于信息检索和文本挖掘的统计方法,用于评估一个词在文档集或一个语料库中的重要程度。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
|
10天前
|
算法
|
2月前
|
自然语言处理 算法
文本分析-使用jieba库实现TF-IDF算法提取关键词
文本分析-使用jieba库实现TF-IDF算法提取关键词
78 0
|
2月前
|
机器学习/深度学习 自然语言处理 算法
基于TF-IDF+KMeans聚类算法构建中文文本分类模型(附案例实战)
基于TF-IDF+KMeans聚类算法构建中文文本分类模型(附案例实战)
118 1
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解TF-IDF、BM25算法与BM25变种:揭秘信息检索的核心原理与应用
深入理解TF-IDF、BM25算法与BM25变种:揭秘信息检索的核心原理与应用

热门文章

最新文章