核心方法:python数据分析:关键字提取方式
优采云 发布时间: 2021-01-06 11:02核心方法:python数据分析:关键字提取方式
Python数据分析:关键字提取方法
更新时间:2020年2月24日15:45:34作者:总理时期
今天,编辑器将分享一个python数据分析:关键字提取方法,该方法具有很好的参考价值,希望对大家有所帮助。让我们跟随编辑器看看
TF-IDF
TF-IDF(术语频率反文档频率)指术语频率反文档频率,它属于数字统计的类别。使用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算法是基于图的文本排名算法。基本思想来自Google的PageRank算法。通过将文本划分为几个组成单元(单词,句子)并建立图形模型,投票机制可用于对文本的重要组成部分进行排序,并且只能使用单个文档本身的信息。实现关键词提取和摘要。与LDA和HMM等模型不同,TextRank不需要预先学习和训练多个文档,并且由于其简单性和有效性而被广泛使用。
基于TextRank的关键词提取
关键词提取的任务是从给定的文本中自动提取许多有意义的单词或短语。 TextRank算法使用本地词之间的关系(共现窗口)直接从文本本身对后续的关键词进行排序。主要步骤如下:
根据完整句子对给定文本T进行分段,即
对每个句子执行分词和词性标注,过滤掉停用词,仅保留指定的词性词,例如名词,动词和形容词,即他们是保留的候选人关键词。
构造候选关键词图G =(V,E),其中V是节点集,由(2)生成的候选关键词组成,然后使用同现来构造任意两个点。在两个节点之间的一条边上,只有当它们对应的单词在一个长度为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数据分析:关键字提取方法是编辑器共享的所有内容。我希望能给您参考,也希望您能支持脚本库。