中文关键字提取-TextRank

TextRank算法是什么

TextRank算法是由 Google 搜索的核心网页排序算法(PageRank算法) 改编的,通过词语的共现窗口构建共现网络计算词语的得分。把文本拆分成词语作为网络节点,组成词语网络图模型,将词语间的相似关系看成是一种推荐或投票关系,使其可以计算每一个词语的重要性(得分),以此来提取文本中的关键词。

(1)  对文本进行jieba分词、词性标注和去除停用词等数据预处理操作, 得到词语节点。
(2) 构建候选关键词图G=(V,E),其中V为节点集,由候选关键词组成,并采用**共现**关系构造任两点之间的边,两个节点之间仅当它们对应的词汇在长度为K的窗口中共现则存在边,K表示窗口大小即最多共现K个词汇;
(3) 计算各节点的权重,直至收敛;
(4) 对节点权重进行倒序排列,得到排名前TopN个词汇作为文本关键词。

PageRank算法

PageRank算法认为网页重要性由两部分组成:

① 如果一个网页被大量其他网页链接到说明这个网页比较重要,即被链接网页的数量;

② 如果一个网页被排名很高的网页链接说明这个网页比较重要,即被链接网页的权重。

一般情况下,一个网页的PageRank值(PR)计算公式如下所示
P R ( p i ) = 1 − α N + α ∑ p i ε M p j P R ( p j ) L ( p i ) PR(p_i) =\frac{1-α}{N} + α \sum_{p_iεM_{p_j}}\frac{PR(p_j)}{L(p_i)} PR(pi)=N1α+αpiεMpjL(pi)PR(pj)

其中,PR(Pi)是第i个网页的重要性排名即PR值;ɑ是阻尼系数,一般设置为0.85;N是网页总数;Mpi 是所有对第i个网页有出链的网页集合;L(Pj)是第j 个网页的出链数目。

初始时,假设所有网页的排名都是1/N,根据上述公式计算出每个网页的PR值,在不断迭代趋于平稳的时候,停止迭代运算,得到最终结果。一般来讲,只要10次左右的迭代基本上就收敛了。

代码实现

(1)读取样本数据

(2)加载自定义停用词表stopWord.txt

(3)使用用jieba.analyse.textrank函数筛选出指定词性,以及topN个文本关键词,并将结果存入数据框中

(4)保存最终结果

def getKeywords_textrank(data,topK):
    idList,textList= data['id'], data['text']
    ids, texts, keys = [], [], []
    for index in range(len(idList)):
        text = abstractList[index]
        jieba.analyse.set_stop_words("./stopWord.txt") # 加载自定义停用词表
        keywords = jieba.analyse.textrank(text, topK=topK, allowPOS=('n','nz','v','vd','vn'))  # TextRank关键词提取,词性筛选
        word_split = " ".join(keywords)
        keys.append(word_split.encode("utf-8"))
        ids.append(idList[index])
        texts.append(textList[index])

    result = pd.DataFrame({"id": ids, "title": titles, "key": keys}, columns=['id', 'title', 'key'])
    result .to_csv('./result .csv', index=False)
    return result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值