【自然语言处理】TextRank算法原理●Python实现

上文说了PageRank的实现方式,一鼓作气, 这次就把TextRank的原理和实现方式写一写

TextRank的产生来自于PageRank,中心思想是一样的,只不过在PageRank里,网页与网页的关系,在TextRank里变成了词与词的关系。

目的:
  • 从一段给定的文本中自动抽取出若干有意义的词语或词组。
步骤:
  • 利用局部词汇(共现窗口)之间的关系生成关键词列表,然后通过计算,对后续关键词进行排序,步骤如下:
  1. 切分文章:把给定的文本使用标点或者空格切分成若干个句子;

    T e x t = [ S 1 , S 2 , . . . , S n ] Text = [S_1,S_2, ...,S_n] Text=[S1,S2,...,Sn]

  2. 保留关键词:对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,即,其中是保留后的候选关键词。

    S i = [ W 1 , W 2 , . . . , W n ] S_i = [W_1,W_2,...,W_n] Si=[W1,W2,...,Wn]

  3. 选择共现窗口大小 n n n

  4. 根据共现窗口,重新生成 T e x t Text Text内的所有句子的关键词列表

    [ W 1 , W 2 , . . . , W n ] , [ W 2 , W 3 , . . . , W n + 1 ] [W_1,W_2,...,W_n], [W_2,W_3,...,W_{n+1}] [W1,W2,...,Wn],[W2,W3,...,Wn+1]

  5. 计算每个词之间的共现度,也就是置信度。

  6. 初始化词共现方阵 M M M与均值矩阵 U U U

    U 0 = [ 1 n , 1 n , . . . 1 n ] U_0 = [\frac{1}{n},\frac{1}{n},...\frac{1}{n}] U0=[n1,n1,...n1]

    U n = α M T U n − 1 + ( 1 − α ) U 0 U_n = \alpha M^T U_{n-1} + (1-\alpha)U_0 Un=αMTUn1+(1α)U0

    其中:M为共现方阵,亦可以理解为转移概率矩阵

  7. 根据上面公式,迭代传播各节点的权重,直至收敛。

  8. 对节点权重进行倒序排序,从而得到最重要的N个单词,作为候选关键词。在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。例如,文本中有句子“中国人民站起来了”,如果“中国”和“人民”均属于候选关键词,则组合成“中国人民”加入关键词序列。

代码地址:Github代码链接

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值