Python3 文章标题关键字提取的例子


Posted in Python onAugust 26, 2019

思路:

1.读取所有文章标题;

2.用“结巴分词”的工具包进行文章标题的词语分割;

3.用“sklearn”的工具包计算Tf-idf(词频-逆文档率);

4.得到满足关键词权重阈值的词

结巴分词详见:结巴分词Github

sklearn详见:文本特征提取——4.2.3.4 Tf-idf项加权

import os
import jieba
import sys
from sklearn.feature_extraction.text import TfidfVectorizer
 
 
sys.path.append("../")
jieba.load_userdict('userdictTest.txt')
STOP_WORDS = set((
  "基于", "面向", "研究", "系统", "设计", "综述", "应用", "进展", "技术", "框架", "txt"
 ))
 
def getFileList(path):
 filelist = []
 files = os.listdir(path)
 for f in files:
  if f[0] == '.':
   pass
  else:
   filelist.append(f)
 return filelist, path
 
def fenci(filename, path, segPath):
 
 # 保存分词结果的文件夹
 if not os.path.exists(segPath):
  os.mkdir(segPath)
 seg_list = jieba.cut(filename)
 result = []
 for seg in seg_list:
  seg = ''.join(seg.split())
  if len(seg.strip()) >= 2 and seg.lower() not in STOP_WORDS:
   result.append(seg)
 
 # 将分词后的结果用空格隔开,保存至本地
 f = open(segPath + "/" + filename + "-seg.txt", "w+")
 f.write(' '.join(result))
 f.close()
 
def Tfidf(filelist, sFilePath, path, tfidfw):
 corpus = []
 for ff in filelist:
  fname = path + ff
  f = open(fname + "-seg.txt", 'r+')
  content = f.read()
  f.close()
  corpus.append(content)
 
 vectorizer = TfidfVectorizer() # 该类实现词向量化和Tf-idf权重计算
 tfidf = vectorizer.fit_transform(corpus)
 word = vectorizer.get_feature_names()
 weight = tfidf.toarray()
 
 if not os.path.exists(sFilePath):
  os.mkdir(sFilePath)
 
 for i in range(len(weight)):
  print('----------writing all the tf-idf in the ', i, 'file into ', sFilePath + '/', i, ".txt----------")
  f = open(sFilePath + "/" + str(i) + ".txt", 'w+')
  result = {}
  for j in range(len(word)):
   if weight[i][j] >= tfidfw:
    result[word[j]] = weight[i][j]
  resultsort = sorted(result.items(), key=lambda item: item[1], reverse=True)
  for z in range(len(resultsort)):
   f.write(resultsort[z][0] + " " + str(resultsort[z][1]) + '\r\n')
   print(resultsort[z][0] + " " + str(resultsort[z][1]))
  f.close()

TfidfVectorizer( ) 类 实现了词向量化和Tf-idf权重的计算

词向量化:vectorizer.fit_transform是将corpus中保存的切分后的单词转为词频矩阵,其过程为先将所有标题切分的单词形成feature特征和列索引,并在dictionary中保存了{‘特征':索引,……},如{‘农业':0,‘大数据':1,……},在csc_matric中为每个标题保存了 (标题下标,特征索引) 词频tf……,然后对dictionary中的单词进行排序重新编号,并对应更改csc_matric中的特征索引,以便形成一个特征向量词频矩阵,接着计算每个feature的idf权重,其计算公式为 Python3 文章标题关键字提取的例子 其中是所有文档数量,是包含该单词的文档数。最后计算tf*idf并进行正则化,得到关键词权重。

以下面六个文章标题为例进行关键词提取

Python3 文章标题关键字提取的例子

Using jieba on 农业大数据研究与应用进展综述.txt

Using jieba on 基于Hadoop的分布式并行增量爬虫技术研究.txt

Using jieba on 基于RPA的财务共享服务中心账表核对流程优化.txt

Using jieba on 基于大数据的特征趋势统计系统设计.txt

Using jieba on 网络大数据平台异常风险监测系统设计.txt

Using jieba on 面向数据中心的多源异构数据统一访问框架.txt

----------writing all the tf-idf in the 0 file into ./keywords/ 0 .txt----------

农业 0.773262366783

大数据 0.634086202434

----------writing all the tf-idf in the 1 file into ./keywords/ 1 .txt----------

hadoop 0.5

分布式 0.5

并行增量 0.5

爬虫 0.5

----------writing all the tf-idf in the 2 file into ./keywords/ 2 .txt----------

rpa 0.408248290464

优化 0.408248290464

服务中心 0.408248290464

流程 0.408248290464

财务共享 0.408248290464

账表核对 0.408248290464

----------writing all the tf-idf in the 3 file into ./keywords/ 3 .txt----------

特征 0.521823488025

统计 0.521823488025

趋势 0.521823488025

大数据 0.427902724969

----------writing all the tf-idf in the 4 file into ./keywords/ 4 .txt----------

大数据平台 0.4472135955

异常 0.4472135955

监测 0.4472135955

网络 0.4472135955

风险 0.4472135955

----------writing all the tf-idf in the 5 file into ./keywords/ 5 .txt----------

多源异构数据 0.57735026919

数据中心 0.57735026919

统一访问 0.57735026919

以上这篇Python3 文章标题关键字提取的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
基于python socketserver框架全面解析
Sep 21 Python
dataframe设置两个条件取值的实例
Apr 12 Python
使用Flask集成bootstrap的方法
Jul 24 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
Python如何将将模块分割成多个文件
Aug 04 Python
在Windows下安装配置CPU版的PyTorch的方法
Apr 02 Python
python 批量压缩图片的脚本
Jun 02 Python
python机器学习Github已达8.9Kstars模型解释器LIME
Nov 23 Python
Python Flask实现进度条
May 11 Python
python实现的爬取电影下载链接功能示例
Aug 26 #Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 #Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 #Python
Golang GBK转UTF-8的例子
Aug 26 #Python
利用python实现周期财务统计可视化
Aug 25 #Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 #Python
numpy求平均值的维度设定的例子
Aug 24 #Python
You might like
第1次亲密接触PHP5(1)
2006/10/09 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
2011/06/23 PHP
php 保留字列表
2012/10/04 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
Python用SSH连接到网络设备
2021/02/18 Python
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
图书室管理制度
2014/01/19 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
任命书怎么写
2014/06/04 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
解决mysql的int型主键自增问题
2021/07/15 MySQL
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL