知识点2.3.1 TextRank算法的思想起源
TextRank算法的基本思想起源于PageRank算法,PageRank算法(Google,1997)主要用于评价搜索引擎覆盖的网页重要性
网页重要性的排名准则:
- 链接数量——如果一个网页被数量越多的其他网页链接,那么这个网页越重要
- 链接质量——如果一个网页被权值越高的其他网页链接,那么这个网页越重要
PageRank值(网页重要性得分)的计算公式:
S ( V i ) S(V~i~) S(V i ):网页Vi的重要性得分,即PageRank值
I n ( V i ) In(V~i~) In(V i ):网页Vi的入链集合,即指向网页Vi的其他网页的集合
O u t ( V j ) Out(V~j~) Out(V j ):网页Vj的出链集合,即网页Vj指向的其他网页的集合
∣ O u t ( V j ) ∣ \vert Out(V~j~) \vert ∣Out(V j )∣:网页Vj的出链数量,即网页Vj指向的其他网页的数量
d d d:阻尼系数,用于避免没有入链和出链的网页(孤立网页)得分为0,一般取0.85
知识点2.3.2 TextRank算法的基本思想
用于关键词提取时,TextRank算法的基本思想和PageRank算法类似,但有三点不同
- PageRank以网页为节点,而TextRank以词为节点
- PageRank建立的网页与网页的共现关系是有向的(入链和出链),而TextRank建立的词与词的共现关系是无向的
- PageRank建立的是某网页与其他所有网页的共现关系,而TextRank建立的仅是某个词与指定上下文范围内(窗口长度内)其他词的共现关系
用于关键词提取时,TextRank算法的计算公式:
用于关键句提取(自动摘要)时,TextRank建立某句与其他句的共现关系时,除了考虑其他句的重要性外,还考察其他句与该句的相似度(重复度),并以相似度占总相似度的比重作为两个节点间的边连接的权重
还需要注意的是,对一篇文档进行关键句提取(自动摘要)时,往往默认每个句子都与其他所有句子都存在共现关系,但正由于句与句间的相似度不同(边连接的权重不同),因此构成了无向有权完全的共现关系图
用于关键句提取时,TextRank算法的计算公式:
知识点2.3.3 基于jieba的TextRank关键词提取
#载入需要的程序模块
import jieba.analyse
#导入需分析的文档(str类型),并打印
with open('C:\\Users\\dell-pc\\desktop\\2021.txt', "r", encoding = 'utf-8') as f:
chap2_tr = f.read()
print(chap2_tr)
#导入自定义的停用词词典
jieba.analyse.set_stop_words('C:\\Users\\dell-pc\\desktop\\停用词.txt')
#使用textrank算法提取前50个指定词性的关键词及其textrank值,默认的窗口长度为5(n表示名词)
freq_tr = jieba.analyse.textrank(chap2_tr, topK = 50, withWeight = True, allowPOS=('n'))
freq_tr
#载入需要的程序包
import wordcloud
import matplotlib.pyplot as plt
#导入需要的中文字体,并绘制词云图
myfont = r'C:\Windows\Fonts\msyhbd.ttc'
word_cloud = wordcloud.WordCloud(font_path = myfont,
width = 1200,
height = 800,
mode = 'RGBA',
background_color = None,
max_words = 50,
colormap = 'cividis').fit_words(dict(freq_tr))
#展示词云图
plt.imshow(word_cloud)
plt.axis("off")
plt.show()
#保存词云图
word_cloud.to_file("chap204.png")