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的正则表达式re模块的常用方法
Mar 09 Python
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
python获取mp3文件信息的方法
Jun 15 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
Python切片操作去除字符串首尾的空格
Apr 22 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
3行Python代码实现图像照片抠图和换底色的方法
Oct 10 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
详解Java中一维、二维数组在内存中的结构
Feb 11 Python
Python破解极验滑动验证码详细步骤
May 21 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
php函数实现判断是否移动端访问
2015/03/03 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
详解Django通用视图中的函数包装
2015/07/21 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
python基础学习之如何对元组各个元素进行命名详解
2018/07/12 Python
python每天定时运行某程序代码
2019/08/16 Python
python3实现高效的端口扫描
2019/08/31 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
python 如何调用 dubbo 接口
2020/09/24 Python
培训专员岗位职责
2014/02/26 职场文书
一年级班主任感言
2014/03/08 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
法律专业求职信
2014/05/24 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
先进基层党组织材料
2014/12/25 职场文书
离婚协议书范文2015
2015/01/26 职场文书
酒店前台辞职书
2015/02/26 职场文书
英语读书笔记
2015/07/02 职场文书