zoukankan      html  css  js  c++  java
  • 学习TextRank算法

    TextRank是啥:

    一种用于文本的基于图的排序算法。

    优点:

    不需要学习训练。

    模型原理:

    TextRank可以表示为一个有向有权图G=(V,E),图中任何两点V和Vj之间的边的权重为wji,对于一个给定的点Vi ,In(V)为指向该点的点集合。out(V)为点Vi指向的点集合。

    点Vi的得分定义为:

    d为阻尼系数,取值范围为[0,1],代表从图中的一点指向其他任意点的概率。

    计算开始时,需要给图中的点赋初始得分。然后不断迭代计算直到收敛。

     TextRank其实是PageRank应用到关键词提取上的情形,如果一个单词连接另一个单词后的权重很低,那么在迭代工程中他的pagerank会下降。那另一个单词的权重也会降低。

    利用TextRank实现关键词的提取原理。

    1.将给定的文本进行分割

    2.将句子进行分词,然后作词性标注,过滤停用词,保留指定词性的的词。

    3.利用候选关键词,建立候选关键词图,构造两点之间的边。

    4.迭代传播各节点权重,最终收敛。

    5.对节点权重进行倒序排序,得到最重要的T个单词。

    6.回到原始文本进行标记,如果某些单词构成相邻词组,则组成多词关键词。

    实战测试

    数据来源:24500条用户订购有关套餐信息,分为促销活动、销售产品、礼包内容。

    需求:从数据中提取出某些合成词、专有名词

    实战过程:

    TextRank4Keyword类初始化可以传入一个自己写的停用词文件。没有传入就是开发者提供的stopwords.txt

    我们还可实现词性过滤,默认是不使用词性过滤。

    官方提供的词性标签有

     ['an', 'i', 'j', 'l', 'n', 'nr', 'nrfg', 'ns', 'nt', 'nz', 't', 'v', 'vd', 'vn', 'eng']

     ['具有名词功能的形容词', '成语', '略语', '习用语', '名词', '人名', '名词性语素', '地名', '机构团体', '专有名词', '时间词', '动词', '副动词', '名动词', '英文']

    推测来自于ICTCLAS的词性标注标准

    详见:https://blog.csdn.net/solo_ws/article/details/52585549

    jieba.posseg可以实现对单词标注,分词后的词性标签与刚才的列表对比,可以实现保留指定词性的效果

    使用get_keywords方法得到,设置窗口为3,单词最小长度为3,得到的效果并不理想。

    使用get_keyphrases方法设置(keywords_num=4, min_occur_num=1)。得到的效果更好

    参考资料

    1.https://www.cnblogs.com/chenbjin/p/4600538.html

    2.https://blog.csdn.net/solo_ws/article/details/52585549

    3.https://blog.csdn.net/qq_35164554/article/details/90205175

    4.https://www.letianbiji.com/machine-learning/page-rank.html?from=singlemessage

    5.https://blog.csdn.net/hguisu/article/details/7996185?from=singlemessage

  • 相关阅读:
    Knative Serving 进阶: Knative Serving SDK 开发实践
    从求生存到修体系,我在阿里找到了技术人的成长模式
    K8s 学习者绝对不能错过的最全知识图谱(内含 56个知识点链接)
    P1197 [JSOI2008]星球大战
    P1311 选择客栈
    P2822 组合数问题
    贪心 加工生产调度
    P3375 【模板】KMP字符串匹配
    P1025 数的划分
    P1019 单词接龙
  • 原文地址:https://www.cnblogs.com/liuguangshou123/p/13299048.html
Copyright © 2011-2022 走看看