学习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

posted @ 2020-07-14 14:49  猫七的blog  阅读(745)  评论(2编辑  收藏  举报