TF-IDF
参考github
本github中的tf-idf算法,最主要的处理方式就是计算tf-idf,对于tf较容易计算,对于如何计算idf本repo里面load进来一个新的idf文件。这个idf文件记录了每个关键词的idf。
再就是如何提取关键词,默认是提取top20,取tf-idf最大的前20个关键词。
pagerank
首先了解下pagerank,其中pagerank的核心思想是:
- 一个网页被链接的次数越多,这个网页越重要。
- 一个网页被越重要的网页链接,这个网页越重要。
- 一个网页链接的网页数量越多,被链接网页的重要性越低。
基于此,pagerank提出了一个计算网页重要程度的公式:

其中S(V)表示的是pagerank的值,值越大说明网页越重要。
pagerank中PR的计算是一个不断迭代的过程:给定图中的节点一个初始值,然后不停地计算迭代到每个节点的PR不再变化为止。
然后我们就会问,这个迭代一定会收敛吗,结论是肯定的,有paper证明。
textrank
textrank的核心思想:
- 一个单词跟在很多单词后面的话,这个单词会比较重要。
- 一个单词跟在一个很重要的单词后面的话,这个单词的重要性成都会提高。
- 一个单词链接很多的单词,那么被链接单词的重要性会降低。
接下来就是如何将单词转换成节点了。
jieba是做了如下的处理:
- 对输入的参数sentence进行切词,然后开始构建有向图。
- 每个词的窗口大小是5,创建当前词与后面4个词的有向边,但是有限制条件。
pairfilter(word/pos 对)有三个限制条件1.word的长度大于2 2.pos必须是限制的pos 3.word不能是停用词
这样的话,不仅当前词可能被过滤掉,而且如果当前词后面的4个词被限制的话,一个词就不可能产生4个边了。- 构建好有向图之后,开始计算直到收敛。
在textrank中其实有一些不合理的地方,就是上下两句话,如果没有关联,最好不要建立有向边。但是在jieba中也会建立有向边,这个没办法避免。
例如:['媒体', '曝光','高圆圆', '和', '赵又廷','现身', '台北', '桃园','机场','的', '照片']
对于‘媒体‘这个单词,就有('媒体', '曝光')、('媒体', '高圆圆')、('媒体', '和')、('媒体', '赵又廷')4条边,且每条边权值为1,当这条边在之后再次出现时,权值再在基础上加1
下面是jieba的textrank代码jieba
网友评论