时间:2021-05-22
思路:
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 文章标题关键字提取的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
文章标题撰写公式计算:文章标题=产品关键关键字商品属性关键字(能够使用价值关键字)1.特性关键字:产品分类、名字、型号规格、作用、特点的关键字。比如长袖连衣裙有
一、文章标题和关键字中间拥有密切相关排行视角:关键字是文章标题当然自然排名的最少模块控制模块。检索总流量:无数当然检索小总流量关键字造就了大流量文章标题,以点带
一个好的标题提升能够让商品的排行靠前,那样对提升流量很有协助,而优化关键词取决于关键字,那麼淘宝宝贝文章标题优化怎么做?如何提取高品质关键字?一起来看下。大家都
淘宝直通车文章标题和商品文章标题关键字如何设置排行会更靠前?针对淘宝商家们而言关键字是其一定要会的,一个好的关键字能够为店面产生大流量。 淘宝直通车文章标题和商
都了解当然检索与文章标题有关,但文章标题确是油好几个如何去选择关键字的,那高品质关键字挑选出去后应当如何去组成?在文章标题组成中大家应当注意什么?文章标题的组成