jieba库中基于 TextRank 算法的关键词抽取——源代码分析(一)

   日期:2024-12-27     作者:caijiyuan       评论:0    移动:http://w.yusign.com/mobile/news/5510.html
核心提示:2021SC@SDUSC 2021SC 2021SC@SDUSC在一篇文章中已经提到从这篇文章开始会对jieba库中的源代码实现进行分析,首先从TextRank算法

2021SC@SDUSC
2021SC


2021SC@SDUSC


在一篇文章中已经提到从这篇文章开始会对jieba库中的源代码实现进行分析,首先从TextRank算法开始进行,具体算法内容及源代码分析如下:


jieba库中基于 TextRank 算法的关键词抽取——源代码分析(一)

jieba库中用于关键词提取的算法主要有两种,一种是TF-IDF算法,一种是TextRank算法。其中Text Rank算法是基于用于解决网页排名的PageRank算法。

TextRank算法思想通过词之间的相邻关系构建网络,然后用PageRank迭代计算每个节点的rank值,排序rank值即可得到关键词。

算法可以这样理解:
1.每个单词有一个rank值,rank值越高代表其重要性越高,即关键词
2.如果一个单词出现在很多单词后面的话,那么说明这个单词比较重要,其rank值升高
3.一个TextRank值很高的单词后面跟着的一个单词,那么这个单词的TextRank值会相应地因此而提高

也可以表示成如下公式(在PageRank的基础上):
S(vi)表示TextRank值,j、i在这里表示任意两个单词,Wij表示的是边的权重;
公式表示的主要意思就是:一个单词i的权重取决于与在i前面的各个点j组成的 (j,i) 这条边的权重,以及 j这个点到其他其他边的权重之和。

具体实现过程可以概括为以下三点:

1.将待抽取关键词的文本进行分词
2.以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构建图
3.计算图中节点的PageRank,注意是无向带权图

打开textrank.py可以看到里面主要有两个类UndirectWeightedGraph和TextRank,其实分别对应于textrank实现过程中的二、三步,第一步则是使用了jieba.cut方法,在textrank方法中使用。

首先分析TextRank类,类中先进行初始化

 

之后定义函数方法pairfilter用于过滤关键词不在初始化中规定的词性,和词的长度小于2不符合条件的关键词。

     本文地址:http://w.yusign.com/news/5510.html    述古往 http://w.yusign.com/static/ , 查看更多
 
标签: 算法 单词
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0评论 0
 
更多>同类资讯
0相关评论

相关文章
最新文章
推荐文章
推荐图文
资讯
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号