用Python(jieba、gensim、TF-IDF模型)进行简单的文本相似度分析

学习目标:

利用gensim包分析文档相似度
使用jieba进行中文分词
了解TF-IDF模型

环境:

Python 3.6.0 |Anaconda 4.3.1 (64-bit)

工具:

Geany

引言:

任务:从excel中读取文件,保存为列表,然后建立词库,给定一个keyword从词库中检索,计算相似度,当相似度达一定程度后,将内容打印出来。
并不是一片小白文,如需了解基础请参考博文:参考

步骤:

1.文档内容
在这里插入图片描述
2.引入相关库:

import xlrd
import jieba
from gensim import corpora,models,similarities
from jieba import lcut
from gensim.similarities import SparseMatrixSimilarity
from gensim.corpora import Dictionary
from gensim.models import TfidfModel

3.读取文件内容

def read_xlrd(excelFile):   #读取文件内容
	data = xlrd.open_workbook(excelFile,encoding_override='utf-8')
	table = data.sheet_by_index(0)
	return table.col_values(2)

4.分词并制作语料库

def read():
	
	io_baidu = r"D:/python3-网络爬虫开发实战/baidu_hot.xlsx" #原始数据位置
	baidu_data = read_xlrd(io_baidu)  #从excel读取文件内容
	
	del baidu_data[0] #删除列标题
	#print(baidu_data)
	
	keyword ='姚明'  #检索词
	#keyword = input() 
	doc_list = [lcut(word) for word in baidu_data] #分词
	dictionary = Dictionary(doc_list) #生成词典
	num_features = len(dictionary.token2id)
	#print('词典(字典):', dictionary.token2id)
	
	corpus = [dictionary.doc2bow(text) for text in doc_list] #生成词库
	
	kw_vector = dictionary.doc2bow(jieba.lcut(keyword))#将检索词也分词并且生成二元组的向量
	
	tfidf = TfidfModel(corpus)	#使用TF-IDF模型对语料库建模
	tf_texts = tfidf[corpus]  #此处将【语料库】用作【被检索文本】
	tf_kw = tfidf[kw_vector]  
	
	sparse_matrix = SparseMatrixSimilarity(tf_texts, num_features)#相似度计算
	similarities = sparse_matrix.get_similarities(tf_kw)
	
	for e, s in enumerate(similarities, 0):
		if s > 0.5:
			print('kw 与 text%d 相似度为:%.2f' % (e, s))
			print(corpus[e])
			print(baidu_data[e])
	#print('语料库:', corpus)

5.结果
在这里插入图片描述

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值