Tf-Idf
tf-idf(term frequency–inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术。tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。tf-idf加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。
tf
词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率。这个数字是对词数(term count)的归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否。)对于在某一特定文件里的词语来说,它的重要性可表示为:
\mathrm{tf}_{\mathrm{i}, \mathrm{j}}=\frac{n_{i, j}}{\sum_{k} n_{k, j}}
分子该词在文件中的出现次数,而分母则是在文件中所有字词的出现次数之和。
idf
逆向文件频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取以10为底的对数得到:
\mathrm{idf}_{\mathrm{i}}=\lg \frac{|D|}{\left|\left\{j : t_{i} \in d_{j}\right\}\right|}
最终
\operatorname{tfid} \mathrm{f}_{\mathrm{i}, \mathrm{j}}=\mathrm{tf}_{\mathrm{i}, \mathrm{j}} \times \mathrm{idf}_{\mathrm{i}}
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的tf-idf。因此,tf-idf倾向于过滤掉常见的词语,保留重要的词语。
TextRank
TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的PageRank算法。
- PageRank
PageRank算法原理
- 1、PageRank算法:就是预先给每个网页一个PR值(PageRank值),由于PR值物理意义上为一个网页被访问概率,所以一般是1/N,其中N为网页总数(初始概率)。
- 2、所有网页的PR值的总和为1。如果不为1的话也不是不行,最后算出来的不同网页之间PR值的大小关系仍然是正确的,只是不能直接地反映概率了。
- 3、预先给定PR值后,通过下面的算法不断迭代,直至达到平稳分布为止。α参数为阻尼系数
- 公式:
P R\left(p_{i}\right)=\alpha \sum_{p_{j} \in M_{p_{i}}} \frac{P R\left(p_{j}\right)}{L\left(p_{j}\right)}+\frac{(1-\alpha)}{N}
其中Mpi是所有对pipi网页有出链的网页集合,L(pj)是网页pj的出链数目,N是网页总数,α原论文中取0.85。
-
- 上次迭代结果与本次迭代结果小于某个误差,或者达到设置最大循环次数, 结束程序运行。按PR值由大到小排序。
- TextRank
TextRank算法是由PageRank算法改进而来的,二者的思想有相同之处,区别在于:PageRank算法根据网页之间的链接关系构造网络(图结构),而TextRank算法根据词之间的共现关系构造网络;PageRank算法构造的网络中的边是有向无权边,而TextRank算法构造的网络中的边是无向有权边。
TextRank算法是利用局部词汇之间关系(共现窗口)对后续关键词进行排序,直接从文本本身抽取。
TextRank实现步骤:
-
- 把给定的文本T按照词语进行分割(可使用jieba分词等工具),对于每个句子,进行分词和词性标注处理,并过滤掉标点符号、停用词,只保留指定词性的单词,如名词、动词、形容词,即保留候选关键词。
-
- 构建候选关键词图G = (V,E),其中V为节点集,上一步生成的候选关键词组成,然后采用共现关系(co-occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现,K表示窗口大小,即最多共现K个单词。
-
- 根据公式,迭代传播各节点的权重,直至收敛。d值一般取0.85。
公式:
\operatorname{WS}\left(V_{i}\right)=(1-\mathrm{d})+\mathrm{d} \times \sum_{V_{j} \in I n\left(V_{i}\right)} \frac{\omega_{j i}}{\sum_{V_{k} \in \operatorname{Out}\left(V_{j}\right)} \omega_{j k}} W S\left(V_{j}\right)
-
- 对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词。
Api:jieba.anlyse.textrank
- 对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词。