2021SC@SDUSC
2021SC@SDUSC
在之前的博客中已经详细分析了jieba中用于提取关键词的TextRank算法的源代码分析,但是比较零碎,我们现在可以使用例子来更好地了解TextRank算法源代码的工作原理以及一些可能忽略掉的细节。
例如下面这段话(选自人民日报微博):
【夜读:过得充实的人,都有这六个好习惯】①读书:不断追求成长和进步;②运动:保持积极的身心状态;③培养兴趣:爱好让生活丰富有趣;④制定计划:让目标成就更好的自己;⑤自省:拥有自我更新的能力,完善和提高自己;⑥保持好心态;始终保持空杯心态,接纳和学习更多东西。
如果我们对其使用Text Rank算法,那么第一步就是分词。
首先使用到方法中的这段源代码:
def textrank(self, sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'), withFlag=False):
"""
Extract keywords from sentence using TextRank algorithm.
Parameter:
- topK: return how many top keywords. `None` for all possible words.
- withWeight: if True, return a list of (word, weight);
if False, return a list of words.
- allowPOS: the allowed POS list eg. ['ns', 'n', 'vn', 'v'].
if the POS of w is not in this list, it will be filtered.
- withFlag: if True, return a list of pair(word, weight) like posseg.cut
if False, return a list of words
"""
self.pos_filt = frozenset(allowPOS)
g = UndirectWeightedGraph()
cm = defaultdict(int)
words = tuple(self.tokenizer.cut(sentence))