文本分析与社会网络分析 实验三 关键词提取(TF-idf,TextRank)

er本次实验主要了解两种不同的关键词提取方式:TF-idf和TextRank。

一、TF-IDF

全称是 Term Frequency - inverse document frequency。

第一部分,就是词频(Term Frequency),即某个词语出现的频率。某个词语出现的次数多,也就说明这个词语重要性可能会很高。但是,这只是可能性,并不绝对。 逆文档频率(inverse document frequency)首先计算某个词在各文档中出现的频率。假设一共有10篇文档,其中某个词A在其中10篇文章中都出先过,另一个词B只在其中3篇文中出现。 逆文档频率就是把这种文档频率取倒数。这样第一部分和第二部分都是越高越好。二者都高,就很有可能是关键词了。

 可以看出TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语料库中出现次数成反比。一个词的TF-IDF值非常高,说明这个词比较少见,但是它在这篇文章中多次出现,那么这个词就很可能是我们需要的关键词。

 实验代码:

from jieba.analyse import *

with open('sample.txt',encoding='utf-8',errors='ignore')as f:
    data=f.read();
for keyword,weight in extract_tags(data,withWeight=True):
    print('%s%s'%(keyword,weight))

如果需要修改关键词数量,就需要指定topK参数。例如输出10个关键词,可以这样执行 

import jieba
jieba.add_word('开放政府数据')
from jieba.analyse import *
with open('sample.txt',encoding='utf-8')as f:
    data=f.read()
for keyword,weight in extract_tags(data,topK=10,withWeight=True):
    print('%s %s'%(keyword,weight))

二、TextRank

TextRank首先会提取词汇,形成节点; 然后依据词汇的关联,建立链接。 依照连接节点的多少,给每个节点赋予一个初始的权重数值。 然后就开始迭代。根据某个词所连接所有词汇的权重,重新计算该词汇的权重,然后把重新计算的权重传递下去。 直到这种变化达到均衡态,权重数值不再发生改变。 这与Google的网页排名算法PageRank,在思想上是一致的。 根据最后的权重值,取其中排列靠前的词汇,作为关键词提取结果。

实验代码如下:

from jieba.analyse import *
with open('sample.txt',encoding='utf-8')as f:
    data=f.read()
for keyword,weight in textrank(data,withWeight=True):
    print('%s %s'%(keyword,weight))

 两种方式结果对比:

 sample.txt:

链接:https://pan.baidu.com/s/1KfEFVP5K4Rt7rqy29qpkPQ 
提取码:qbwf 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值