文章提取关键词_jieba(IF-IDF/TextRank)

本文介绍如何使用jieba分词库,结合信息增益(IF-IDF)和TextRank算法,从文章中有效地提取关键词,提升文本分析的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、基于TextRank的提取文章关键词:extract_keyword_textrank.py:

#!usr/bin/env python
#-*- coding:utf-8-*-
import jieba
import jieba.analyse
import codecs
file_path='./data/000000_0'
result_file_path="./data/000000_0_result_textrank"
f=open(file_path,'r')
f_result=codecs.open(result_file_path,'w+','utf-8')
f_result.write('[\n')
texts=f.readlines()
num_text=0
for text in texts:
	text_id=texts.split('\t')[0]
	text_content=texts.split('\t')[3]
	f_result.write('{\"text_id\": %s\n'% text_id)
	
	keywords=jieba.analyse.textrank(text_content,topK=20,withWeight=True,allowPOS=('ns', 'n', 'vn', 'v'),withFlag=True)
	f_result.write('\"keyword\":{')
	num_text+=1
	for keyword in keywords:
		(word,flag)=keyword[0]
		weight=keyword[1]
		f_result.write('\"word\":%s,\"weight\":%s,\"nature\": %s\n'% (word,weight,flag))
	f_result.write('}\n')
	if num_text%100=0:
		print "已经处理%s篇文章" % num_text
f_result.write(']\n')
print "总共处理%s篇文章" num_text
	
f_result.close()
f.close()
好的,我可以为你提供一个完整的Python代码示例来实现这个任务。 首先,你需要安装jieba、nltk和gensim这三个Python库。你可以使用pip命令安装它们: ``` pip install jieba nltk gensim ``` 然后,你需要下载nltk的停用词列表。你可以使用以下代码: ``` import nltk nltk.download('stopwords') ``` 接下来,我们可以开始实现代码了。以下是完整的代码示例: ``` import jieba import jieba.analyse import jieba.posseg as pseg from nltk.corpus import stopwords from gensim import corpora, models # 读取本地语料 with open('corpus.txt', 'r', encoding='utf-8') as f: text = f.read() # 分词并去除停用词 words = jieba.lcut(text) stop_words = set(stopwords.words('chinese')) filtered_words = [word for word in words if word not in stop_words] # 词性标注 words_with_flag = pseg.lcut(text) # 基于TF-IDF关键词提取 dictionary = corpora.Dictionary([filtered_words]) corpus = [dictionary.doc2bow(filtered_words)] tfidf = models.TfidfModel(corpus) tfidf_scores = tfidf[corpus] tfidf_keywords = sorted(tfidf_scores[0], key=lambda x: x[1], reverse=True)[:3] # 基于Text Rank的关键词提取 textrank_keywords = jieba.analyse.textrank(text, topK=3, withWeight=True) # 输出结果 print('分词结果:', filtered_words) print('词性标注结果:', [(word, flag) for word, flag in words_with_flag]) print('TF-IDF关键词提取结果:', [(dictionary[idx], score) for idx, score in tfidf_keywords]) print('Text Rank关键词提取结果:', textrank_keywords) ``` 在这个示例中,我们首先使用`open()`函数读取本地的语料文件,然后使用jieba分词工具对语料进行分词,并使用NLTK工具包中的停用词列表去除停用词。接着,我们使用jieba分词工具中的词性标注功能对分词结果进行词性标注。 然后,我们使用gensim工具包计算TF-IDF值,并基于TF-IDF提取关键词。我们还使用jieba分词工具中的Text Rank算法实现Text Rank方法,并基于Text Rank方法提取关键词。 最后,我们输出分词结果、词性标注结果、TF-IDF关键词提取结果和Text Rank关键词提取结果。 你可以将这个示例代码保存为一个Python文件,然后将本地语料保存为一个文本文件,命名为corpus.txt,放在同一个目录下。然后,你可以运行这个Python文件,在控制台上查看输出结果。 在实验过程中,你可以使用一些标准的评价指标来评估关键词提取的效果,如准确率、召回率、F1值等。你还可以使用一些可视化工具来展示关键词提取结果,如词云等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值