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缩进区别分析
Feb 15 Python
C#返回当前系统所有可用驱动器符号的方法
Apr 18 Python
使用pdb模块调试Python程序实例
Jun 02 Python
Python中第三方库Requests库的高级用法详解
Mar 12 Python
Python简单读取json文件功能示例
Nov 30 Python
Django实现登录随机验证码的示例代码
Jun 20 Python
python3.6的venv模块使用详解
Aug 01 Python
python实现矩阵打印
Mar 02 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
python求加权平均值的实例(附纯python写法)
Aug 22 Python
python二进制读写及特殊码同步实现详解
Oct 11 Python
python matplotlib折线图样式实现过程
Nov 04 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
Javascript的&&和||的另类用法
2014/07/23 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
JS常用函数使用指南
2014/11/23 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
js实现小星星游戏
2020/03/23 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
大学班级干部的自我评价分享
2014/02/10 职场文书
致共产党员倡议书
2014/04/16 职场文书
活动总结模板
2014/05/09 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
小学老师对学生的评语
2014/12/29 职场文书
综合测评自我评价
2015/03/06 职场文书
党委工作总结2015
2015/04/27 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
高中政治教师教学反思
2016/02/23 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
浅谈Node的内存泄露问题
2022/05/06 NodeJs