TextRank 算法的来源
在深入 TextRank 之前,回顾一下著名的 PageRank 算法。PageRank 由谷歌联合创始人拉里·佩奇提出,最初用于搜索引擎优化,通过计算网页链接的数量和质量来评估网页重要性。其核心思想借鉴了学术界的'影响因子',即论文被引用次数。如果一个网页被很多其他网页连接,说明它比较重要;反之,高权重的网页链接到另一个网页,也会提升后者的权重。
TextRank 算法的概念
类比 PageRank,TextRank 用于衡量哪些单词是关键词。如果一个单词出现在很多单词后面,说明它与许多词有关联,重要性较高。同样,高 TextRank 值的单词若指向另一个单词,后者的权重也会相应提高。理论细节可参考原始论文。
TextRank 算法代码实践
下面通过示例代码展示如何在 Python 中应用 TextRank,包括关键词抽取、关键短语抽取和关键句抽取。
关键词抽取
关键词抽取旨在从文本中确定描述文档含义的关键术语。构建顶点集时,可以使用句子中的一个或多个字,并根据关系构建边。实际工程中,常使用 textrank4zh 工具包辅助。
from textrank4zh import TextRank4Keyword
def keywords_extraction(text):
tr4w = TextRank4Keyword(allow_speech_tags=['n', 'nr', 'nrfg', 'ns', 'nt', 'nz'])
tr4w.analyze(text=text, window=2, lower=True, vertex_source='all_filters', edge_source='no_stop_words', pagerank_config={'alpha': 0.85})
keywords = tr4w.get_keywords(num=6, word_min_len=2)
return keywords
调用示例:
if __name__ == "__main__":
text = "来源:中国科学报本报讯(记者肖洁)又有一位中国科学家喜获小行星命名殊荣!4 月 19 日下午,中国科学院国家天文台在京举行'周又元星'颁授仪式,我国天文学家、中国科学院院士周又元的弟子与后辈在欢声笑语中济济一堂。国家天文台党委书记、副台长赵刚在致辞一开始更是送上白居易的诗句:'令公桃李满天下,何须堂前更种花。'据介绍,这颗小行星由国家天文台施密特 CCD 小行星项目组于 1997 年 9 月 26 日发现于兴隆观测站,获得国际永久编号第 120730 号。2018 年 9 月 25 日,经国家天文台申报,国际天文学联合会小天体联合会小天体命名委员会批准,国际天文学联合会《小行星通报》通知国际社会,正式将该小行星命名为'周又元星'。"
keywords = keywords_extraction(text)
print(keywords)
输出结果会返回包含权重信息的关键词列表,如'小行星'、'天文台'等。
关键短语抽取
关键短语由相邻的关键词构成。get_keyphrases() 函数内部先获取关键词,再分析是否存在相邻情况。


