环境描述

Python环境:Python 3.6.1

系统版本:windows7 64bit

文件描述

一共有三个文件,分别是:file_01.txt、file_02.txt、file_03.txt

file_01.txt文件内容:

我吃过糖之后,发现我的牙齿真的很疼

file_02.txt文件内容:

牙疼不是病疼起来要人命.

file_03.txt文件内容:

我的肚子不舒服!与此同时,牙疼也让我接近崩溃

文本相似度分析步骤

  1. 打开并读取文档内容
  2. 对要进行分析的文档分词
  3. 格式化文档
  4. 计算词频(可以过滤词频较小的词)
  5. 通过语料库建立字典
  6. 加载要对比的文档
  7. 将要对比的文档通过doc2bow转化为稀疏向量
  8. 对稀疏向量进行进一步处理,得到新语料库
  9. 将新语料库通过tfidfmodel进行处理,得到tfidf
  10. 通过token2id得到特征数
  11. 稀疏矩阵相似度,从而建立索引
  12. 得到相似度结果

实现代码

#-*- coding:utf-8 -*-

#导入所需的模块
from gensim import corpora,models,similarities
import jieba
from collections import defaultdict #打开并读取文件
f1 = "D:/reptile/file/file_01.txt"
f2 = "D:/reptile/file/file_02.txt" content1 = open(f1,encoding='UTF-8').read()
content2 = open(f2,encoding='UTF-8').read() #对文档进行分词
data1 = jieba.cut(content1)
data2 = jieba.cut(content2) #整理文档格式,格式为:"词语1 词语2 ... 词语n "(词语之间用空格分隔)
str1 = ""
for item in data1:
str1+=item+" "
#print(str1)
str2 = ""
for item in data2:
str2+=item+" "
#print(str2) #split默认分隔符为空格
str_all = [str1,str2]
text = [[word for word in str3.split()]
for str3 in str_all] #计算词语频率
frequency = defaultdict(int)
for i in text:
for token in i:
frequency[token]+=1
#过滤词频为3的
'''
texts=[[word for word in text if frequency[token]>3]
for text in texts]
'''
#通过语料库建立词典
dictionary = corpora.Dictionary(text)
dictionary.save("D:/reptile/file/dict1.txt") #加载要对比的文档
f3 = "D:/reptile/file/file_03.txt"
content3 = open(f3,encoding='UTF-8').read()
data3 = jieba.cut(content3) str3 = ""
for item in data3:
str3+=item+" "
new_data = str3 #doc2bow将文件变成一个稀疏矩阵
new_vec = dictionary.doc2bow(new_data.split()) #对字典进行docbow处理,得到新的语料库
corpus = [dictionary.doc2bow(j) for j in text] #将corpus语料库持久化到磁盘中,词句可以删除
#corpora.MmCorpus.serialize("D:/reptile/file/New_Yuliaoku.mm",corpus) #将新的语料库通过TfidfModel处理,得到tfidf
tfidf = models.TfidfModel(corpus) #求特征数
featureNum = len(dictionary.token2id.keys()) #SparseMatrixSimilarity 稀疏矩阵相似度
index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=featureNum) #得到结果
sim = index[tfidf[new_vec]] #打印结果
print(sim)

运行结果

[ 0.58554006  0.15430336]

该结果说明:file_03文件与file_02的相似度为0.15430336,与file_01的相似度为0.58554006

最新文章

  1. wex5 实战 单页模式下的多页面数据同步
  2. JavaScript的学习--JavaScript设计模式的总结
  3. Titon Toolkit – 非常强大的用户界面组件
  4. NSFileManager(沙盒文件管理)数据持久化 <序列化与反序列化>
  5. confirm确认对话框
  6. 【Win10】UAP/UWP (通用程序) 开发初体验(1) 之 开发准备
  7. mysql下的常用操作
  8. DataTable经典报错{列/行已属于其他表}
  9. Maven3.0.3的环境变量配置
  10. Py3快速下载地址
  11. 浏览器返回按钮不会触发onLoad事件
  12. mysql连接字符集default
  13. 【Netty】(9)---Netty编解码器
  14. Nginx配置选项
  15. oracle RAC 查询告警日志位置
  16. 3 HTTP 协议
  17. HDU 2256 Problem of Precision(矩阵)
  18. ns-3 的下载、编译以及 Eclipse 的相关配置
  19. [2014.5.13][Ubuntu] Ubuntu 14.04STL 出现NTFS分区无法訪问的问题
  20. [py][mx]实现按照课程机构排名,按照学习人数排名

热门文章

  1. 取得指定Schema下的表
  2. Linux基础系列-Day2
  3. 多协议注入工具t50
  4. python 字符串,数学之间的不可描述的关系
  5. [Atcoder Grand Contest 004] Tutorial
  6. 【图论】Self-Assembly(6-19)
  7. mysql数据操作
  8. 【bugku】【ZSCTF】【迷宫RE】Take The Maze WriteUp
  9. Manthan, Codefest 16 A. Ebony and Ivory 水题
  10. mysql备份相关