python数据分析:关键字提取方式


Posted in Python onFebruary 24, 2020

TF-IDF

TF-IDF(Term Frequencey-Inverse Document Frequency)指词频-逆文档频率,它属于数值统计的范畴。使用TF-IDF,我们能够学习一个词对于数据集中的一个文档的重要性。

TF-IDF的概念

TF-IDF有两部分,词频和逆文档频率。首先介绍词频,这个词很直观,词频表示每个词在文档或数据集中出现的频率。等式如下:

TF(t)=词t在一篇文档中出现的次数/这篇文档的总词数

第二部分——逆文档频率实际上告诉了我们一个单词对文档的重要性。这是因为当计算TF的时候,我们对每个词赋予了同等的重要性,它出现得越多,它的TF就越高,如果它出现了100次,也许相比其他出现更少的词,它并不携带那么多信息,因此我们需要赋予它们权重,决定每个词的重要性。使用下面的等式得到IDF:

IDF(t)=(log10文档的篇数/包含词t文档的篇数)

那么,计算TF-IDF的方法如下:

TF * IDF=(词t在一篇文档中出现的次数/这篇文档的总词数)* log10(文档的篇数/包含词t文档的篇数)

应用

TF-IDF可以应用于如下场景:

通常可以使用TF-IDF进行文本数据分析,得到最准确的关键词信息。

如果你正开发一个文本摘要应用,并正在进行统计,TF-IDF是生成摘要最重要的特征。

TF-IDF权重的变动常用于搜索引擎,以求出文档的得分以及同用户检索的相关性。

文本分类应用将TF-IDF和BOW一起使用。

TextRank

TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法, 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取、文摘。和 LDA、HMM 等模型不同, TextRank不需要事先对多篇文档进行学习训练, 因其简洁有效而得到广泛应用。

基于TextRank的关键词提取

关键词抽取的任务就是从一段给定的文本中自动抽取出若干有意义的词语或词组。TextRank算法是利用局部词汇之间关系(共现窗口)对后续关键词进行排序,直接从文本本身抽取。其主要步骤如下:

把给定的文本T按照完整句子进行分割,即

对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,即,其中是保留后的候选关键词。

构建候选关键词图G = (V,E),其中V为节点集,由(2)生成的候选关键词组成,然后采用共现关系(co-occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现,K表示窗口大小,即最多共现K个单词。

根据上面公式,迭代传播各节点的权重,直至收敛。

对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词。

python实现:

# 导入库
import jieba.analyse # 导入关键字提取库
import pandas as pd # 导入pandas
import newspaper
# 读取文本数据
# 获取文章 银保监会出台新政为例
article = newspaper.Article('https://finance.sina.com.cn/money/bank/bank_hydt/2019-02-25/doc-ihsxncvf7656807.shtml', language='zh')
# 下载文章
article.download()
# 解析文章
article.parse()
# 对文章进行nlp处理
article.nlp()
# nlp处理后的文章拼接
string_data = "".join(article.keywords)
# 关键字提取
def get_key_words(string_data, how=''):
  # topK:提取的关键字数量,不指定则提取全部;
  # withWeight:设置为True指定输出词对应的IF-IDF权重
  if how == 'textrank':
    # 使用TextRank 算法
    tags_pairs = jieba.analyse.textrank(string_data, topK=5, withWeight=True) # 提取关键字标签
  else:
    # 使用TF-IDF 算法
    tags_pairs = jieba.analyse.extract_tags(string_data, topK=5, withWeight=True) # 提取关键字标签
  tags_list = [] # 空列表用来存储拆分后的三个值
  for i in tags_pairs: # 打印标签、分组和TF-IDF权重
    tags_list.append((i[0], i[1])) # 拆分三个字段值
  tags_pd = pd.DataFrame(tags_list, columns=['word', 'weight']) # 创建数据框
  return tags_pd

keywords = get_key_words(string_data)
print("#####################TF-IDF####################")
print(keywords)

keywords_tr = get_key_words(string_data, how='textrank')
print("#####################textrank####################")
print(keywords_tr)

结果如下:

#####################TF-IDF####################
  word  weight
0 民营企业 0.327466
1  贷款 0.112652
2  融资 0.089557
3 商业银行 0.084860
4  服务 0.072322
#####################textrank####################
  word  weight
0 民营企业 1.000000
1   要 0.553043
2  贷款 0.493173
3  融资 0.379846
4  服务 0.371273

以上这篇python数据分析:关键字提取方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python数字图像处理之高级滤波代码详解
Nov 23 Python
python+mysql实现教务管理系统
Feb 20 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
Python使用Turtle库绘制一棵西兰花
Nov 23 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 Python
面向新手解析python Beautiful Soup基本用法
Jul 11 Python
关于python中remove的一些坑小结
Jan 04 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 Python
python 标准库原理与用法详解之os.path篇
Oct 24 Python
Python实现学生管理系统并生成exe可执行文件详解流程
Jan 22 Python
python小型的音频操作库mp3Play
Apr 24 Python
python数据预处理 :数据共线性处理详解
Feb 24 #Python
使用python实现多维数据降维操作
Feb 24 #Python
python数据预处理 :数据抽样解析
Feb 24 #Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 #Python
Python流程控制常用工具详解
Feb 24 #Python
深入浅析Python 函数注解与匿名函数
Feb 24 #Python
python数据预处理方式 :数据降维
Feb 24 #Python
You might like
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
深入分析PHP设计模式
2020/06/15 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
python3 与python2 异常处理的区别与联系
2016/06/19 Python
python3爬虫之设计签名小程序
2018/06/19 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
python db类用法说明
2020/07/07 Python
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
幼儿园实习自我鉴定
2013/12/15 职场文书
单位介绍信范文
2014/01/18 职场文书
迟到检讨书5000字
2014/01/31 职场文书
校运会入场式解说词
2014/02/10 职场文书
保护环境倡议书100字
2014/05/19 职场文书
文明工地标语
2014/06/16 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
思想工作总结范文
2015/08/12 职场文书
校园安全主题班会
2015/08/12 职场文书