TextRank是啥:
一种用于文本的基于图的排序算法。
优点:
不需要学习训练。
模型原理:
TextRank可以表示为一个有向有权图G=(V,E),图中任何两点Vi 和Vj之间的边的权重为wji,对于一个给定的点Vi ,In(Vi )为指向该点的点集合。out(Vi )为点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