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 相关文章推荐
pymongo实现多结果进行多列排序的方法
May 16 Python
python高手之路python处理excel文件(方法汇总)
Jan 07 Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 Python
python线程池threadpool实现篇
Apr 27 Python
python列表使用实现名字管理系统
Jan 30 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
选择python进行数据分析的理由和优势
Jun 25 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
Feb 25 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
Python中全局变量和局部变量的理解与区别
Feb 07 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+phpStorm+xdebug配置方法
2015/09/17 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
理解JavaScript中的事件
2006/09/23 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
python中defaultdict的用法详解
2017/06/07 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
Python列表的切片实例讲解
2019/08/20 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
NET程序员上机面试题
2015/05/23 面试题
美术专业个人自我评价
2014/01/18 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
美容院经理岗位职责
2014/04/03 职场文书
医德医魂心得体会
2014/09/11 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
婚前财产协议书范本
2014/10/19 职场文书
食品质检员岗位职责
2015/04/08 职场文书
爱国主义电影观后感
2015/06/18 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript
Go语言读取txt文档的操作方法
2022/01/22 Golang
Python实现聚类K-means算法详解
2022/07/15 Python