关键词提取算法

一、tf-idf

二、bm25

三、pagerank

3.1 解决什么问题

是Google的网页排序算法,它是给每个网页附加权值的。一个网页的PR值,概率上理解就是网页被访问的概率,PR值越高其排名越高。

3.2 算法原理

对每个目标网页进行附上权值,权值大的就靠前显示,权值小的就靠后显示。该算法借鉴学术界论文重要性的评估方法:谁被引用的次数多,谁就越重要。

核心思想:

(1)如果一个网页被很多其他网页链接到的话,说明这个网页比较重要,也就是PageRank值会比较高;

(2)如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值也会相应地因此而提高。

3.3 算法公式

关键词提取算法_第1张图片

所有网页PR值一直迭代计算,停止知道下面两种情况之一发生:每个网页的PR值前后误差小于自定义误差阈值,或者迭代次数超过了自定义的迭代次数阈值。

四、textrank

4.1 算法解决什么问题

TextRank是一种用来做关键词提取的算法,也可以用于提取短语和自动摘要。

4.2 算法思想

1)如果一个单词出现在很多单词后面的话,那么说明这个单词比较重要;

2)一个TextRank值很高的单词后面跟着的一个单词,那么这个单词的textrank值也会相应地因此而提高;

这样textrank的公式就可以由pagerank公式改写为:

\large S(v_{i})=(1-d)+d\sum_{(j,i)\in \varepsilon }\frac{w_{ji}}{\sum_{v_{k}\in out(v_{j})}w_{jk}}S(v_{j}) 该公式仅仅比PageRank多了一个权重项Wji,用来表示两个节点之间的边连接有不同的重要程度。

公式的意思很明显:

textrank中一个单词i的权重,取决于在i前面的各个点j组成的(j,i)这条边的权重,以及j这个点到其它边的权重之和。

4.3 TextRank用于关键词提取的算法如下:

1)把给定的文本T按照完整句子进行分割;

2)对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词;

3)构建候选关键词G = (V,E),V为节点集,由(2)生成的候选关键词组成。然后采用共线关系(co-occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现,K表示窗口大小。

4)根据TextRank的公式,迭代传播计算各个节点的权重S,直至收敛;

5)对节点权重进行倒序排序,得到最重要的T个单词,作为候选关键词;

6)对于这T个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。例如,文本中有句子“Matlab code for plotting ambiguity function”,如果“Matlab”和“code”均属于候选关键词,则组合成“Matlab code”加入关键词序列。

TextRank提取关键词实战

from textrank4zh import TextRank4Keyword, TextRank4Sentence

 

with open('./test.txt','r') as fileread:
    text = fileread.read()
tr4w = TextRank4Keyword()

tr4w.analyze(text=text, lower=True, window=2)  # py2中text必须是utf8编码的str或者unicode对象,py3中必须是utf8编码的bytes或者str对象

print( '关键词:' )
for item in tr4w.get_keywords(20, word_min_len=1):
    print(item.word, item.weight)

print()

五、左右熵 :左右熵高的作为关键词

六、[互信息](https://blog.csdn.net/BigData_Mining/article/details/81279612)

你可能感兴趣的:(NLP)