关键词提取和文本摘要算法TextRank详解及实战
写在前面
最近一直没有更新文章,实在惭愧。伴随着小老弟的职业方向由风控转向了NLP,后面的文章也会集中在NLP领域,希望大家能够继续支持~
导读
本文围绕原理和特点介绍了关键词提取和文本摘要算法TextRank,并给出了实现代码和算法效果。
TextRank主要有关键词提取和文本摘要两个功能,在Jieba分词里也有集成,在介绍TextRank的原理之前,必须介绍下PageRank,理解了PageRank,也就理解了TextRank的精髓。
PageRank
PageRank算法用于解决互联网网页的价值排序问题,对于某个关键词的搜索,往往会有很多网页与之相关,如何对这些网站进行排序然后返回给用户最有”价值“的网站?最直观的,对每个网页进行“打分”,而打分标准至关重要。
PageRank考虑到不同网页之间,一般会通过超链接相连,即用户可以通过A网页中的链接,跳转到B网页,这种互相跳转关系,可以理解为一种“投票”行为,A网页连接到B网页,表示A网页对B网页的认可,即A网页给B网页投了一票。给B网页投票(链接)的越多,B网页的价值也就越大,所以:
公式中,某个网页的价值,是由连接到(进入)这个网页的每个网页的价值和对应的权重决定的。一个网站,如果越多的网站链接到它,说明这个网站越有价值,为什么要加入一个权重呢?公式可以看到,权重是从某个网页链接出去的数量的倒数,数量越多,权重越小,好比是投票,某个人投出的票越多,说明这个人的票越没有含金量。
从公式中可以看到这是一个迭代公式,所以存在“先有鸡还是先有蛋”的问题,对于这个问题,解决办法是给每一个节点一个初始值,一般是1/N,N即N个网页。
假设现在有5个网页:
……
小老弟就不挨着算了,可以看到这样计算是非常麻烦的,同时对于这5个网页之间的关系表示,也非常麻烦,很不优雅,很不数学,所以就要引入一个新的概念-邻接矩阵(Adjacency Matrix)。
首先介绍一个词: