TF-IDF
什么是TF-IDF?
TF-IDF(Term Frequency — Inverse Document Frequency)代表词语频率反文档频率,tf-idf权重是信息检索和文本挖掘中经常使用的权重。该权重是一种统计量度,用于评估单词对集合或语料库中文档的重要性。重要性与单词在文档中出现的次数成正比地增加,但是被单词在语料库中的出现频率所抵消。
TF-IDF计算
通常,TF-IDF权重由两个项组成:
第一个当前需求计算词频率(TF)。一个单词在文档中出现的次数除以该文档中单词的总数;
第二项是文档的逆向频率(IDF),用语料库中文档数除以出现特定术语的文档数的对数来计算。
- TF:词语频率,它测量词语在文档中出现的频率。由于每个文档的长度都不同,因此一个词语在长文档中的出现次数可能会比短文档中出现的次数更多。因此,作为标准化的一种方式,经常将词语频率除以文档长度(也就是文档中词语的总数):
- IDF:逆文档频率,它衡量词语的重要性。在计算TF时,所有词语都被视为同等重要。但是,众所周知,某些词语(例如“is”,“of”和“that”)可能会出现很多次,但意义不大。因此,我们需要通过计算以下内容来权衡频繁项,同时按比例缩小稀有项:
举例
考虑一个包含个单词的文档,其中单词 出现次。 那么的词语频率(即tf)为。现在,假设我们有万个文档 ,其中一千个出现了一词 。然后,反向文档频率(即idf)的计算公式为。因此,Tf-idf权重是这些数量的乘积:。
为什么在机器学习中使用TF-IDF?
使用自然语言的机器学习面临一个主要障碍–它的算法通常处理数字,而自然语言则是文本。因此,我们需要将该文本转换为数字,或者称为文本矢量化。这是机器学习过程中用于分析数据的基本步骤,并且不同的矢量化算法会严重影响最终结果,因此您需要选择一种能够提供所需结果的算法。
将单词转换为数字后,以机器学习算法可以理解的方式将TF-IDF分数馈入诸如Naive Bayes和Support Vector Machines之类的算法,从而大大改善了诸如单词计数之类的更基本方法的结果。
为什么这样做?简而言之,单词向量将文档表示为数字列表,而语料库的每个可能单词都带有一个。向量化文档是获取文本并创建这些向量之一,向量的编号以某种方式表示文本的内容。TF-IDF使我们能够提供一种将文档中每个单词与代表该文档中每个单词的相关性的数字相关联的方法。然后,具有相似且相关词的文档将具有相似的向量,这正是我们在机器学习算法中寻找的东西。
TF-IDF的应用
确定单词与文档或TF-IDF的相关性在许多方面都很有用,例如:
- 信息检索
TF-IDF发明用于文档搜索,可用于提供与您要搜索的内容最相关的结果。假设您有一个搜索引擎,有人在寻找勒布朗。结果将按照相关性顺序显示。就是说,最相关的体育文章将排名较高,因为TF-IDF给勒布朗一词带来了更高的分数。
您遇到的每个搜索引擎都有可能在其算法中使用TF-IDF分数。
- 关键字提取
TF-IDF对于从文本中提取关键字也很有用。怎么样?文档中得分最高的词与该文档最相关,因此可以将其视为该文档的关键字。非常简单。
TextRank
TextRank是一种用来做关键词提取的算法,也可以用于提取短语和自动摘要。因为TextRank是基于PageRank的,所以首先简要介绍下PageRank算法。
PageRank算法
PageRank设计之初是用于Google的网页排名的,以该公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。
PageRank通过互联网中的超链接关系来确定一个网页的排名,其公式是通过一种投票的思想来设计的:如果我们要计算网页A的PageRank值(以下简称PR值),那么我们需要知道有哪些网页链接到网页A,也就是要首先得到网页A的入链,然后通过入链给网页A的投票来计算网页A的PR值。这样设计可以保证达到这样一个效果:当某些高质量的网页指向网页A的时候,那么网页A的PR值会因为这些高质量的投票而变大,而网页A被较少网页指向或被一些PR值较低的网页指向的时候,A的PR值也不会很大,这样可以合理地反映一个网页的质量水平。那么根据以上思想,佩奇设计了下面的公式:
该公式中,
:表示某个网页,
:表示链接到的网页(即的入链),
:表示网页的PR值,
:表示网页的所有入链的集合,
:表示网页,
:表示阻尼系数,是用来克服这个公式中后面的部分的固有缺陷用的:如果仅仅有求和的部分,那么该公式将无法处理没有入链的网页的值,因为这时,根据该公式这些网页的值为0,但实际情况却不是这样,所有加入了一个阻尼系数来确保每个网页都有一个大于0的值,根据实验的结果,在0.85的阻尼系数下,大约100多次迭代值就能收敛到一个稳定的值,而当阻尼系数接近1时,需要的迭代次数会陡然增加很多,且排序不稳定。
公式中前面的分数指的是所有出链指向的网页应该平分的值,这样才算是把自己的票分给了自己链接到的网页。
:表示为次数
PageRank举例运算
迭代多次后就可以得到稳定的
同理也可以得到……等等
Text Rank 算法
可以看出,该公式仅仅比PageRank多了一个权重项,用来表示两个节点之间的边连接有不同的重要程度。
在这里算是简单说明了TextRank的内在原理,以下对其关键词提取应用做进一步说明。
TextRank用于关键词提取的算法如下:
- 1)把给定的文本按照完整句子进行分割,即
- 2)对于每个句子属于,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,即
其中 是保留后的候选关键词。
3)构建候选关键词图,其中为节点集,由(2)生成的候选关键词组成,然后采用共现关系(co-occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为的窗口中共现,表示窗口大小,即最多共现个单词。
4)根据上面公式,迭代传播各节点的权重,直至收敛。
5)对节点权重进行倒序排序,从而得到最重要的个单词,作为候选关键词。
6)由5得到最重要的个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。
对比总结:
- TextRank与TFIDF均严重依赖于分词结果——如果某词在分词时被切分成了两个词,那么在做关键词提取时无法将两个词黏合在一起(TextRank有部分黏合效果,但需要这两个词均为关键词)。因此是否添加标注关键词进自定义词典,将会造成准确率、召回率大相径庭。
- TextRank的效果并不优于TFIDF。
- TextRank虽然考虑到了词之间的关系,但是仍然倾向于将频繁词作为关键词。
此外,由于TextRank涉及到构建词图及迭代计算,所以提取速度较慢。