python使用tf-idf法判断文本关键词

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

所有源码都在github上(https://github.com/seasonyao/Keyword-extraction-based-on-tf-idf)

论文的关键词有着其特殊的重要使命,首先当然是方便别人浏览,可以一目了然的知道论文论述的主题,从而决定是否要花费时间阅读正文,节约大家的时间;其次也是更重要的一点,能够方便论文的归类和搜索。所以对待任意一段文本,如果我们能快速得到它的关键词,也就能达到和论文一样的效果。本demo用python语言结合jieba分词库+urllib爬虫库+beautifulsoup的html分析工具实现了tf-idf法判断文本关键词的效果,本文计算tf-idf的值主要是结合了百度文库里对应词出现的词条数来计算,有些地方显的略为复杂是因为加入了自己对文章关键词选取的个人理解,接下来和大家分享。

首先你的工作路径下应该是这个样子的
这里写图片描述
2.txt是你要寻找关键词的文本,moreattentionword.txt是你觉得有可能会在你要找的文章的中十分可能出现的一些特殊专业的高频词汇(当然,里面没有内容也可以)。mydictionary.txt是jieba给你的词典+moreattentionword.txt里的内容,result.txt保存下面代码第一部分的分词结果,stopword.txt是停用词表,你也可以加入一些你认为没有的词汇(比如得到的预测关键词有一个很不靠谱的词汇,你就可以加入进以后就再也看不到他了),test.py就是我们的程序文件了

#coding:utf-8
import jieba
jieba.load_userdict("myDictionary.txt")
import jieba.posseg as psg
from collections import Counter
from urllib import request
from urllib.parse import quote
from bs4 import BeautifulSoup
import string
import chardet
import math
import operator; 

开头给出程序的编码和一些import的操作。load的txt文件是自建的词汇字典,是在jieba原始字典的基础上加入一些自己将要查看的文章有一定可能要用到的一些词汇,它们有的是专业词汇,有的是两三个词汇合在一起构成的词汇(但是在你将要涉猎的论文主题经常出现),因为代码是为有关博物馆的文章所写,所以myDictionary.txt的内容基本上如下截图:
这里写图片描述
按照jieba给出的官方说明,一个词一行,可以在词后边加上词频和词性,以空格隔开。接下来初始化了一堆接下来将要用到的变量,这里逐一介绍:

s = u''
f = open('2.txt',encoding='UTF-8')       
line = f.readline()  
while line:  
    s=s+line
    line = f.readline()  
f.close()

S保存了从txt读进的待操作的文本内容,当然2.txt就是你想要操作的文章

importantWord=[]
f = open('moreAttentionWord.txt',encoding='UTF-8')
line = f.readline()
while line:
	importantWord.append(line)
	line = f.readline()
f.close()

importantWord保存着重要的词汇,和mydictionary新加入的一样就是那些你依仗自己的经验感觉有可能会出现的东西(无论长短),只不过上边的dictionary是给jieba用的,这个importantword我是用来给自己后面处理分出来的词汇用的。

stopWord=[]
f = open('stopwords.txt',encoding='UTF-8')
line = f.readline()
while line:
	stopWord.append(line.split('\n')[0])
	line = f.readline()
f.close()

stopword保存着停用词,jieba会根据你的stopwords.txt里的词来对分词出的结果进行筛选,一般保存着如下截图中的这种没有实际意义的词汇。
这里写图片描述

word=[]
cixing=[]
phrasestore=[]
nstore=[]
vstore=[]
sstore=[]

剩下这几个list分别是一会用来保存东西的中间容器,后边再说。

store=[(x.word,x.flag) for x in psg.cut(s)]
for x in store:
	if x in stopWord:
		continue
	word.append(str(x).split(',')[0].split("'")[1])
	cixing.append(str(x).split(',')[1].split("'")[1])

首先利用psg的cut将文本s的内容分词,按照jieba官方给出的格式store链表将会以 词,词性 的形式保存下来(没错,就是这么为所欲为就分好了)。然后对分好的词进行处理,如果在停用词表里就不要这个词,否则把对应的词和词性装入word和cixing链表。

for i in range(1,len(word)):
	if cixing[i]=='n' and cixing[i-1]=='n' and len(word[i])>1 and len(word[i-1])>1:
		phrasestore.append(word[i-1]+word[i])
	if cixing[i]=='v' and cixing[i-1]=='n' and len(word[i])>1 and len(word[i-1])>1:
		phrasestore.append(word[i-1]+word[i])
	if cixing[i]=='n' and cixing[i-1]=='v' and len(word[i])>1 and len(word[i-1])>1:
		phrasestore.append(word[i-1]+word[i])
	if cixing[i]=='a'
关键词提取:TF-IDF和n-gram 一:今日相亲 搭档镇楼。 今天的头版给我漂亮的搭档,啥年芳二六、待字闺中之类的矫情话就不说了,希望看到文章的小伙子,如果对眼,请放下你手中的游戏,我可以牵线搭桥。 好好相爱,就是为民除害。 搭档是重庆妹纸,重庆妹纸长得是很水灵。 搭档给我的感觉是情商比较高,比较会捧哏,说话不会闷。 搭档身高160体重100,学历本科水瓶座,目前在重庆的银行工作。 以下为搭档的自我介绍: 性格慢热,... 阅读详情

相关推荐

TF-IDF原理及其python实现

TF-IDF(Term Frequency-Inverse Document Frequency)算是常用的一种文本关键词或者文本特征的提取方。相比于单单考虑单词的出现频率(TF),TF-IDF引入了逆文档频率(IDF),使得我们提取的关键词更加有代表性,而代表性也是TF-IDF关注的焦点。 其主要思想是:如果在一篇文章中一个词的出现频率高,并且语料库中其他文章包含这个词的概率小,那么这个...

海军上将光之翼的博客 1万+

python TF-IDF实现文本关键词提取

TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词。所以我们需要一个重要性调整系数来衡量一个词是不是常见词。该权重为IDF(Inverse Document Frequency)逆文档频率,它的大小与一个词的常见程度成反比。在我们得到词频(TF)和逆文档频率(IDF)以后,将两个值相乘,即可得到一个词的TF-IDF值,某个词对文章的重要性越高,其TF-IDF值就越大,所以排在最前面的几个词就是文章关键词TF-IDF的优点是简单快速,结果比较符合实际情况,但是单纯以“词频”衡量一个

jieba实现基于tf-idf关键词提取(附完整代码)

@基于itf-idf关键词提取 提出问题 假设我们现在有一篇文章,需要提取这篇文章关键词,要怎样才能通过计算机实现呢? TF-IDF介绍 一篇文章关键词基本都是能体现文章的内容,而且几乎是在文章中频繁出现的词,统计文章中各个词出现的次数,出现最多的则是这篇文章关键词了,那具体是怎么统计呢,这里有一个专业术语叫词频(term frequency),简称TF。计算公式如下: TF(词频) = 某次在文章中出现的次数 / 文章中的总词数 举例子:我正在学习人工智能,并且我一定会成功的。 **通过j

qq_45402214的博客 1万+

使用python实现TF-IDF

python编程语言 预处理 统计词频 计算IT-IDF

Python实现基于TF-IDF抽取文本数据关键词

其实,今天忙到现在这个时间点,很困也比较累了,已经想去休息了,但是还是来写了点东西,说来也奇怪,都说日有所思才能夜有所梦,可我现在白天没有思什么,但是今天早上却做了一个很神奇的梦,一个很多人都是八竿子都打不着的梦,7:10的时候就是被这个梦吓醒了,现在也不想再去想为什么会有这样的想了,正好今天做了点文本数据处理相关的工作,这里就把内容记录下来,也算是给自己的今天做一个时间点,可能未来...

Together_CZ的博客 3927

探索tf-idf提取文本关键词

TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency)。 TF-IDF实际上是:TF * IDFTF词频(Term Frequency),IDF逆向文件频率(Inverse Do...

Python开发工程师 4167

Java读取文件转为字符串

Java读取文件转为字符串 文件上传读取上传的文件转为字符串 /** * 读取文件中的内容 * @param file * @return string */ private String parseFile2String(MultipartFile file){ if(file.isEmpty()){ return ""; } BufferedReader reader = null;

weixin_37558119的博客 1931

word2vec关键词提取 python_中文文本关键词抽取的三种方TF-IDF、TextRank、word2vec)...

1、基于TF-IDF文本关键词抽取方词频(Term Frequency,TF)指某一给定词语在当前文件中出现的频率。由于同一个词语在长文件中可能比短文件有更高的词频,因此根据文件的长度,需要对给定词语进行归一化,即用给定词语的次数除以当前文件的总词数。逆向文件频率(Inverse Document Frequency,IDF)是一个词语普遍重要性的度量。即如果一个词语只在很少的文件中出现,表示...

weixin_39738251的博客 2205

基于python实现TF-IDF

标签:2021.09.27工作内容 参考资料:TF-IDF介绍及实现 声明:本文中大量内容转载至参考资料,仅归纳整理和加入部分个人观点心得,侵删 概念 定义 TF-IDF(term frequency-inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术,常用于挖掘文章中的关键词。 特点:简单高效,用于最开始的文本数据清洗。 TF-IDF (1)TF:词频 可以统计到停用词,并把它们过滤,避免对结果造成影响。 e.g.:“的”、“了”、“是”等等 (2)ID

Daisy_Wang777的博客 1万+

Python实现TF-IDF提取关键词(sklearn库的使用

TF-IDF TFIDF=TF×IDFTF-IDF=TF\times IDFTFIDF=TF×IDF TF=单词w在文档中出现的次数文档总词数TF=\frac{单词w在文档中出现的次数}{文档总词数}TF=文档总词数单词w在文档中出现的次数​ IDF=log文档总数包含单词w的文档数+1IDF=log\frac{文档总数}{包含单词w的文档数}+1IDF=log包含单词w的文档数文档总数​+1 Python实现 TfidfVectorizer是sklearn中的库,可以用来计算TF-IDF值。 fr

杂文集 1万+

基于TF-IDF关键词提取的实现

简单使用TF-IDF提取关键词

qq_37977007的博客 2720

Python TF-IDF 提取文本关键词

      TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词。所以我们需要一个重要性调整系数来衡量一个词是不是常见词。该权重为IDF(Inverse Document Frequency)逆文档频率,它的大小与一个词的常见程度成反比。在我们得到词频(TF)和逆文档频率(IDF)以后,将两个值...

lalalawxt的博客 1万+

文本分析-使用jieba库实现TF-IDF提取关键词

TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。简单来说就是:一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章。这也就是TF-IDF的含义。

m0_64336780的博客 2万+

TF-IDF介绍及实现

目录 1、TF-IDF介绍 (1)TF是词频(Term Frequency) (2) IDF是逆向文件频率(Inverse Document Frequency) (3)TF-IDF实际上是:TF * IDF 2、TF-IDF应用 3、Python3实现TF-IDF 4、NLTK实现TF-IDF 5、Sklearn实现TF-IDF 6、Jieba实现TF-IDF算...

分享实践与思考 35万+

NLP深入学习(三):TF-IDF 详解以及文本分类/聚类用

本文主要介绍nlp相关的tf-idf详细用,包含文本分类、文本聚类等。

日常学习与专研的记录 5700

TF-IDF原理及算实现

一、TF-IDF介绍 TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术. TF-IDF是一种统计方,用以评估字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。 TF-IDF主要思想:如果一个单词在该文章中出现的频率(

萤火之光,照亮前行 8195

jieba-基于 TF-IDF关键词抽取

jieba-基于 TF-IDF关键词抽取 通过上述三篇文章的介绍(详见其他的博客),接下来将对TF-IDF的实现进行介绍。 jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=()) sentence 为待提取的文本 topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20 ...

Atishoo_13的博客 6243

Python中实现TF-IDF提取关键词指南

本文还有配套的精品资源,点击获取 简介:TF-IDF用于评估词在文档集中的重要性,通过Python及其数据处理库实现该算是信息检索和自然语言处理中的常见做。本文将介绍如何使用Python和相关库如scikit-learn、nltk等来提取文本中的关键词。首先讨论TF-IDF的基础概念,然后介绍文本预处理、创建TF-IDF模型、提取关键词的具体步骤,并以示例代码说明如...

weixin_35649491的博客 3129
上一篇: HTTP学习与Web服务器编程
下一篇: 爬取百度对应词汇页面量
codes_first
博客等级 码龄10年 255粉丝 34原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值