首页 > 编程 > Python > 正文

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

2019-11-25 11:52:10
字体:
来源:转载
供稿:网友

思路:

1.读取所有文章标题;

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

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

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

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

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

import osimport jiebaimport sysfrom 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权重,其计算公式为 其中是所有文档数量,是包含该单词的文档数。最后计算tf*idf并进行正则化,得到关键词权重。

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

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 文章标题关键字提取的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表