博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python文本相似度分析tf-idf
阅读量:3910 次
发布时间:2019-05-23

本文共 1180 字,大约阅读时间需要 3 分钟。

首先我们了解几个概念名词

1.词频

2.逆文档频率

3.TF-IDF算法

4.语料库(corpus)

5.余弦相似性

大家参考下面文章查阅这三个名词的意义

下面,步入正题,先看代码

import jiebafrom gensim import corpora,models,similaritiesdoc1 = '/Users/23263/Desktop/doc1.txt'doc2 = '/Users/23263/Desktop/doc2.txt'doc3 = '/Users/23263/Desktop/doc3.txt'list1 = jieba.lcut(open(doc1).read())list2 = jieba.lcut(open(doc2).read())list3=jieba.lcut(open(doc3).read())list1_2 = [list1,list2]#创建词典dictionary = corpora.Dictionary(list1_2)#获取语料库corpus = [dictionary.doc2bow(i) for i in list1_2]tfidf = models.TfidfModel(corpus)#特征数featureNUM = len(dictionary.token2id.keys())#通过TfIdf对整个语料库进行转换并将其编入索引,以准备相似性查询index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=featureNUM)#稀疏向量.dictionary.doc2bow(doc)是把文档doc变成一个稀疏向量,[(0, 1), (1, 1)],表明id为0,1的词汇出现了1次,至于其他词汇,没有出现。new_vec = dictionary.doc2bow(list3)#计算向量相似度sim = index[tfidf[new_vec]]print(sim)

导入jieba和下面三个库

打开三个文件并分别分词,doc1和doc2写入list1_2,doc3写入list3(没有严格要求,这里的示例是三个文档的)

以list1_2创建词典dictionary

获取语料库corpus

创建一个tidif算法框架为tfdif,即初始化一个转换

计算特征数featureNUM(特征数为语料库所有id的个数)

通过TfIdf对整个语料库进行转换并将其编入索引,以准备相似性查询

待比较的稀疏向量new_vec为list3在list1_2中的体现,即在语料库中的体现,可以理解为是一种自然连接或者映射

计算相似度,得到两个值为,list3与list1和list2的相似度

最后大家可以看一下官网文档

 

 

转载地址:http://pykrn.baihongyu.com/

你可能感兴趣的文章
【招聘(深圳)】轻岁 诚聘.NET Core开发
查看>>
await,async 我要把它翻个底朝天,这回你总该明白了吧
查看>>
.NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中
查看>>
使用Jenkins来发布和代理.NetCore项目
查看>>
欢迎来到 C# 9.0(Welcome to C# 9.0)
查看>>
Dapr微服务应用开发系列1:环境配置
查看>>
使用 Visual Studio 2019 批量添加代码文件头
查看>>
【BCVP更新】StackExchange.Redis 的异步开发方式
查看>>
Istio 1.7——进击的追风少年
查看>>
.NET5.0 Preview 8 开箱教程
查看>>
efcore技巧贴-也许有你不知道的使用技巧
查看>>
真・WPF 按钮拖动和调整大小
查看>>
做权限认证,还不了解IdentityServer4?不二话,赶紧拥抱吧,.NET Core官方推荐!...
查看>>
MongoDB最新4.2.7版本三分片集群修改IP实操演练
查看>>
编写第一个 .NET 微服务
查看>>
深入探究.Net Core Configuration读取配置的优先级
查看>>
Blazor带我重玩前端(六)
查看>>
使用 C# 捕获进程输出
查看>>
数据库单表千万行 LIKE 搜索优化手记
查看>>
.NET Core 中生成验证码
查看>>