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))