TextRank算法获取文本关键词

TextRank算法是基于PageRank的一种文本处理算法,常用于关键词抽取。它通过分析单词间的共现关系来评估重要性,高权重的单词被视为关键词。算法主要包括:初始化单词权重,构建基于共现窗口的关键词图,迭代更新权重直到收敛,最后选取最高权重的单词作为关键词。
摘要由CSDN通过智能技术生成

TextRank算法获取文本关键词


1.PageRank

在了解TextRank前,首先一定要知道PageRank,实质上个人认为可以把TextRank当做PageRank2.0。谷歌的两位创始人的佩奇和布林,借鉴了学术界评判学术论文重要性的通用方法,“那就是看论文的引用次数”。由此想到网页的重要性也可以根据这种方法来评价。于是PageRank的核心思想就诞生了:

  • 如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是PageRank值会相对较高
  • 如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值会相应地因此而提高

2.PageRank算法原理

PageRank算法输出概率分布,用于表示随机点击链接的人到达任何特定页面的可能性。可以为任何大小的文档集合计算PageRank。在一些研究论文中假设在计算过程开始时,分布在集合中的所有文档中均匀分配。PageRank计算需要多次传递,称为“迭代”,通过集合调整近似PageRank值以更接近地反映理论真实值。

概率表示为介于0和1之间的数值。0.5概率通常表示为发生事件的“50%概率”。因此,PageRank为0.5表示点击随机链接的人有50%的可能性被导向0.5 PageRank的文档。

假定有四个网页:ABCD,从页面到其自身的链接将被忽略。从一个网页到另一个网页的多个出站链接被视为单个链接。PageRank初始化为所有网页的相同值。在PageRank的原始形式中,所有网页上PageRank的总和是当时Web上的网页总数,因此在本例中的每个页面的初始值都为1。但是,PageRank的更高版本和本节的其余部分假设概率分布在0和1之间。因此,此示例中每个页面的初始值为0.25。

在下一次迭代时,从给定网页转移到其出站链接目标的PageRank在所有出站链接中平均分配。

如果系统中的唯一链接是从网页BCDA,则每个链接在下一次迭代时将0.25 PageRank传输到A,总计0.75。
P R ( A ) = P R ( B ) + P R ( C ) + P R ( D ) PR(A)=PR(B)+PR(C)+PR(D) PR(A)=PR(B)+PR(C)+PR(D)
假设B具有到CA的链接,页面C具有到页面A的链接,而页面D具有到所有三个页面的链接。因此,在第一次迭代中,B将转移一半现有的值,即0.125,A转移它的一半,即0.125,至C。而C将其所有现有值0.25转移到它链接到的唯一页面A。由于D有三个出站链接,它会将现有值的三分之一或大约0.083转移到A。在此迭代完成时,页面A的PageRank大约为0.458。
P R ( A ) = P R ( B ) L ( B ) + P R ( C ) L ( C ) + P R ( D ) L ( D ) PR(A)=\frac{PR(B)}{L(B)}+\frac{PR(C)}{L(C)}+\frac{PR(D)}{L(D)} PR(A)=L(B

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个示例代码,展示如何利用LDA主题模型、Word2Vec词向量模型与TextRank相融合的关键词抽取算法获取火锅店用户评价文本中的关键词。 ```python import jieba import gensim from gensim.models import LdaModel from gensim import corpora from textrank4zh import TextRank4Keyword # 加载停用词表 stopwords = [] with open('stopwords.txt', 'r', encoding='utf-8') as f: for line in f: stopwords.append(line.strip()) # 加载LDA模型 lda_model = LdaModel.load('lda_model.model') # 加载Word2Vec模型 w2v_model = gensim.models.Word2Vec.load('w2v_model.model') # 加载TextRank模型 tr4kw = TextRank4Keyword() # 处理文本 text = '这家火锅店的羊肉很好吃,服务也不错,环境很舒适。但是价格有点贵,希望能优惠一下。' # 分词 seg_list = jieba.cut(text) # 过滤停用词 seg_list = [word for word in seg_list if word not in stopwords] # 获取关键词 keywords = [] # 利用LDA模型获取关键词 bow = lda_model.id2word.doc2bow(seg_list) topic_list = lda_model.get_document_topics(bow) for topic in topic_list: topic_words = lda_model.show_topic(topic[0]) for word in topic_words: keywords.append(word[0]) # 利用Word2Vec模型获取关键词 for word in seg_list: try: similar_words = w2v_model.wv.most_similar(word, topn=3) for similar_word in similar_words: keywords.append(similar_word[0]) except KeyError: pass # 利用TextRank模型获取关键词 tr4kw.analyze(text, lower=True, window=2) keywords += tr4kw.get_keywords(10, word_min_len=2) # 去重 keywords = list(set(keywords)) print(keywords) ``` 这个示例代码中,我们首先加载了停用词表、LDA模型、Word2Vec模型和TextRank模型。然后,我们对输入的文本进行分词,并过滤掉停用词。接着,我们利用LDA模型、Word2Vec模型和TextRank模型分别获取关键词,并将它们合并起来去重。最后,我们打印出获取到的关键词
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值