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批量提取word内信息
Aug 09 Python
django自带的server 让外网主机访问方法
May 14 Python
python爬取网页转换为PDF文件
Jun 07 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
Python3.5字符串常用操作实例详解
May 01 Python
Pytorch实现神经网络的分类方式
Jan 08 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
python Scrapy框架原理解析
Jan 04 Python
对Keras自带Loss Function的深入研究
May 25 Python
使用Django实现商城验证码模块的方法
Jun 01 Python
如何使用pdb进行Python调试
Jun 30 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将两个关联数组合并函数提高函数效率
2014/03/18 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
javascript正则表达式总结
2016/02/29 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
react build 后打包发布总结
2018/08/24 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
js编写简易的计算器
2020/07/29 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
wxPython框架类和面板类的使用实例
2014/09/28 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
Python tkinter三种布局实例详解
2020/01/06 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
《莫泊桑拜师》教学反思
2014/04/23 职场文书
法院信息化建设方案
2014/05/21 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
Python中使用subprocess库创建附加进程
2021/05/11 Python
总结Python使用过程中的bug
2021/06/18 Python
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript