python数据分析:关键字提取方式
TF-IDF
TF-IDF(TermFrequencey-InverseDocumentFrequency)指词频-逆文档频率,它属于数值统计的范畴。使用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实现:
#导入库
importjieba.analyse#导入关键字提取库
importpandasaspd#导入pandas
importnewspaper
#读取文本数据
#获取文章银保监会出台新政为例
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)
#关键字提取
defget_key_words(string_data,how=''):
#topK:提取的关键字数量,不指定则提取全部;
#withWeight:设置为True指定输出词对应的IF-IDF权重
ifhow=='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=[]#空列表用来存储拆分后的三个值
foriintags_pairs:#打印标签、分组和TF-IDF权重
tags_list.append((i[0],i[1]))#拆分三个字段值
tags_pd=pd.DataFrame(tags_list,columns=['word','weight'])#创建数据框
returntags_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#################### wordweight 0民营企业0.327466 1贷款0.112652 2融资0.089557 3商业银行0.084860 4服务0.072322 #####################textrank#################### wordweight 0民营企业1.000000 1要0.553043 2贷款0.493173 3融资0.379846 4服务0.371273
以上这篇python数据分析:关键字提取方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。