基于jieba包的自动提取

  关键方法:jieba.analyse.extract_tags(content,topK=n)

  具体思路:通过jieba包自带的extract_tags方法,在遍历读取文件内容时,获得每篇文档前n个关键字

 使用的包: 

import os
import codecs
import pandas as pd
import jieba
import jieba.analyse

 过程:

'''定义变量
文件路径/文件内容/关键字(5个)'''
filepaths = []
contents =[]
tag1 = []
tag2 = []
tag3 = []
tag4 = []
tag5 = []#遍历文件,同时得到关键字
for root, dirs, files in os.walk(r'path'):for name in files:filepath = root + '\\' +name  #根目录加文件名构成文件路径f = codecs.open(filepath,'r','utf-8')  #根据文件路径以只读的形式打开文件content = f.read().strip()  #将文件内容传入content变量f.close() #关闭文件tags = jieba.analyse.extract_tags(content,topK=5) #根据文件内容获取前5个关键字(出现次数最多)filepaths.append(filepath) #得到文件路径的集合contents.append(content) #得到文件内容的集合
        tag1.append(tags[0]) tag2.append(tags[1])tag3.append(tags[2])tag4.append(tags[3])tag5.append(tags[4])tagDF = pd.DataFrame({'文件路径':filepaths,'文件内容':contents,'关键词1':tag1,'关键词2':tag2,'关键词3':tag3,'关键词4':tag4,'关键词5':tag5})

  最终得到包含文件路径,文件内容,和每篇5个关键字的数据框

基于TF-IDF算法的手动提取

  关键:基于TF-IDF原理,引入分词权重的概念

  词频(TF)
  逆文档频率(IDF):词的权重,即词的重要程度
  TF-IDF:权衡某个分词是否关键词的指标,值越大,是关键字的可能性就越大

  TF-IDF的计算公式:
  TF=该词在文档中出现的次数
  IDF=log[文档总数/(包含该词的文档数+1)]
  TF-IDF = TF*IDF

  Tips:只提取中文关键字,用正则表达式判断分词是否为中文

  具体实现:

  #创建语料库,导入停用词

  #获得分词结果

import re
zh = re.compile(u'[\u4e00-\u9fa5]+')
import jieba
segments = []
filepath = []
#导入停用词
stopwords = pd.read_csv(r'path',encoding='utf-8',index_col=False)for index, row in corpos.iterrows(): filePath = row['filePath']  fileContent = row['fileContent'] segs = jieba.cut(fileContent)  for seg in segs:if zh.search(seg):  #只匹配中文分词if (seg not in stopwords.stopword.values) and (len(seg.strip())>1): #取非停用词和长度>1的词segments.append(seg)filepath.append(filePath)segmeng_DF = pd.DataFrame({'segment': segments,'filePath': filepath})

  #词频统计

import numpy as np
segcount = segmeng_DF.groupby(by=['filePath','segment'])['segment'].agg({'词频':np.size}).reset_index().sort_values(by=['词频'],ascending=False)
segcount = segcount[segcount.词频 > 1] #只取词频大于1的分词

  #词频向量化运算  

TF =segcount.pivot_table(index='filePath',columns='segment',values='词频',fill_value=0)
TF.columns #列名是各篇文章的分词集合

  #根据公式分别得到IDF和TF-IDF的值

def hanlder(x):return (np.log2(len(corpos) / (np.sum(x>0)+1)))IDF = TF.apply(hanlder)  #结果是各分词的权重

TF_IDF = pd.DataFrame(TF*IDF)TF_IDF.columns #列名是各篇文章的分词集合
TF_IDF.index #索引是文件路径

  #获取关键字

tag1 = []
tag2 = []
tag3 = []
tag4 = []
tag5 = []for filePath in TF_IDF.index:tagis = TF_IDF.loc[filePath].sort_values(ascending=False)[:5].indextag1.append(tagis[0]) tag2.append(tagis[1])tag3.append(tagis[2])tag4.append(tagis[3])tag5.append(tagis[4])

  #最后得到包含文件路径,文件内容,和每篇5个关键字数据框

  

转载于:https://www.cnblogs.com/rix-yb/p/9690314.html

数据挖掘——文本挖掘-关键字提取相关推荐

  1. pandas关键字提取_使用NLP从文章中自动提取关键字

    背景 在研究和新闻文章中,关键词构成了一个重要的组成部分,因为它们提供了文章内容的简洁表示.关键词在从信息检索系统,书目数据库和搜索引擎优化中定位文章方面也起着至关重要的作用.关键词还有助于将文章分类 ...

  2. 一种关键字提取新方法

    一种关键字提取新方法  (转载) 原文链接https://xw.qq.com/amphtml/20181116A037K400 https://xw.qq.com/amphtml/20181116A0 ...

  3. jieba tfidf_【NLP】【三】jieba源码分析之关键字提取(TF-IDF/TextRank)

    [一]综述 利用jieba进行关键字提取时,有两种接口.一个基于TF-IDF算法,一个基于TextRank算法.TF-IDF算法,完全基于词频统计来计算词的权重,然后排序,在返回TopK个词作为关键字 ...

  4. HarmonyOS之AI能力·关键字提取

    一.概念 在日常生活中充满了各种各样的信息,这些信息千变万化.文本语言作为信息传递的一种载体,同样面临有用信息和无用信息糅杂在一起的问题.关键字提取帮助用户在众多文本信息中快速提取出关键信息和核心内容 ...

  5. 【NLP基础】NLP关键字提取技术之LDA算法原理与实践

    点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要11分钟 跟随小博主,每天进步一丢丢 引文 人们是如何从大量文本资料中便捷得浏览和获取信息?答案你肯定会说通过关键字.仔细想想,我们人类是怎么提 ...

  6. 新闻关键字提取和新闻推荐

    新闻关键字提取和新闻推荐 jieba--超好用的分词器 在介绍我自己的关键字提取之前先介绍一下这个中文处理的包,现在在中文处理里使用非常广泛,也真的效率很高使用便捷.有非常多的功能,也有关键字提取的功 ...

  7. 关键字提取工具(面向英文)

    最近研究关键字提取技术(毕设需要).语料集是英文.推荐一些相关工具. 开源工具: RAKE(https://github.com/zelandiya/RAKE-tutorial) KEA(http:/ ...

  8. java jieba tfidf_【NLP】【三】jieba源码分析之关键字提取(TF-IDF/TextRank)

    [一]综述 利用jieba进行关键字提取时,有两种接口.一个基于TF-IDF算法,一个基于TextRank算法.TF-IDF算法,完全基于词频统计来计算词的权重,然后排序,在返回TopK个词作为关键字 ...

  9. text rank java 实现_使用TextRank实现的关键字提取

    本文主要用于实现使用TextRank算法的关键字提取 TextRank是PageRank算法的变种,用于文本关键字 关键句的提取 主要参考为原作者Rada Mihalcea论文<TextRank ...

最新文章

  1. 卓瑞机器人_校企合作专业共建记涪陵职教中心机器人专业中泰学术交流活动
  2. IdentityServer4 配置负载均衡
  3. 如何构建高扩展性网站?
  4. 电平转换电路(三极管共射极)
  5. 题意解读+详细题解-Leecode 319. 灯泡开关——Leecode每日一题系列
  6. Spring 框架的JDBC模板技术
  7. Oracle(二):查询、函数、集合运算
  8. 苯(Benzene)
  9. Android功耗(16)---自启动管理
  10. android 获取wifi的ip地址吗,Android获取有线和无线(wifi)的IP地址
  11. nginx authorization 丢失_婚礼影像丢失 损失如何弥补?_政务_澎湃新闻
  12. mysql explode函数_hive中,lateral view 与 explode函数
  13. kali linux nmap命令的使用
  14. Swagger2+Apizza接口文档
  15. android 如何发送短信,如何在android中发送短信
  16. 【JAVA】Map和Set
  17. 复盘:霍夫曼编码平均长度计算方式,信源符号a1-a6概率为:0.1,0.4,0.06,0.1,0.04,0.3,霍夫曼编码平均长度是
  18. Pytorch框架中余弦相似度(Cosine similarity)、欧氏距离(Euclidean distance)源码解析
  19. 解决springmvc中添加了静态资源访问路径之后就访问不到Controller路径的问题
  20. 00942 oracle_Oracle物化视图创建报ORA-00942错误解决

热门文章

  1. EXCEPT、INTERSECT和UNION
  2. php钓鱼怎么使用方法,初学钓鱼最详细的方法教程
  3. 20172316 2017-2018-2 《程序设计与数据结构》 实验三报告
  4. 嵌入式 LINUX 应用开发
  5. 【36C++STL-常用容器----5、stack容器详解】
  6. 启动MySQL服务报错解决
  7. 深度学习与自然语言处理教程(5) - 语言模型、RNN、GRU与LSTM(NLP通关指南·完结)
  8. 使用mllib完成mnist手写识别任务
  9. 计算机控制系统fcs是,在计算机控制系统中,FCS是指()。A.集散控制系统B.数字仪表控制系统C.现场总线控制系统...
  10. AudioES8374音频驱动调试