对文件夹中文件进行相似度检测,并生成表格
首先,导入相关模块:
import jieba
import docx
import os
from gensim import corpora, models, similarities
对目标文件集进行处理:
path="C:/Users/尚鑫/Desktop/sx1" #目标文件目录
files=os.listdir(path) #遍历目录下子文件名
print(files)
texts=[]
for file in files:f = docx.Document(path+'/'+ file) #读取文件夹里所有子文件text = ''for para in f.paragraphs:text += para.text #text为每个子文件的文件内容texts.append(text) #将每个子文件的内容作为一个元素组合成列表
将文件内容进行分词处理:
a=[]
for text in texts:b=[word for word in jieba.cut(text)]a.append(b)
同理:对测试文件进行一样的处理:
测试文档与目标文档一样,循环选取目标文档其中之一为测试文档
ff=[]
for i in range(len(a)):test_list=a[i]
将上诉得到的文本集制作语料库,采用字典:
dictionary=corpora.Dictionary(a) #获取词袋
dictionary.keys() #对词袋中所有词进行编号
dictionary.token2id #
corpus=[dictionary.doc2bow(doc) for doc in a] #使用doc2dow制作语料库
语料库是一组向量,每个元素对应的是其中一个目标文档分词后的二元组向量,我们把测试文档也转换成二元组向量:
doc_test_vec = dictionary.doc2bow(test_list)
相似度分析:
tfidf = models.TfidfModel(corpus) #对语料库建模
tfidf[doc_test_vec] #获取测试文档中每个词的tfidf值
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=len(dictionary.keys())) #对目标函数进行相似度分析
sim = index[tfidf[doc_test_vec]]
for i in range(len(sim)):print('第', i+1, '文件的相似度为:', sim[i]) #按遍历顺序输出相似度
print(sorted(enumerate(sim), key=lambda item: -item[1])) #按相似度高低输出相似度排序
然后我们将得到的数据自动生成表格:
xls=xlwt.Workbook()
sht1=xls.add_sheet('sheet1')
file_studentname=[]
for studentname in files:studentnames=re.sub(".docx","",studentname)file_studentname.append(studentnames) #将名字后面的.docx用正则表达式去掉
# for i in range(len(ff)):
for k,filename in zip(np.arange(len(files)),file_studentname):sht1.write(int(k+1),0,filename)sht1.write(0,int(k+1) , filename)
for i in range(len(ff)):for j in range(len(ff[i])):h=ff[i].tolist() #将数组转化成数列的形式sht1.write(j+1,i+1,float(h[j]))
xls.save('C:/Users/尚鑫/Desktop/相似度2.xls')
然后程序结束,附上整体代码:
iimport jieba
import docx
import os
import numpy as np
import re
import xlwt
from gensim import corpora, models, similaritiespath="C:/Users/尚鑫/Desktop/sx1"
files=os.listdir(path)
print(files)
texts=[]
for file in files:f = docx.Document(path+'/'+ file)text = ''for para in f.paragraphs:text += para.texttexts.append(text)
a=[]
for text in texts:b=[word for word in jieba.cut(text)]a.append(b)
ff=[]
for i in range(len(a)):test_list=a[i]dictionary=corpora.Dictionary(a)# dictionary.keys()# dictionary.token2idcorpus=[dictionary.doc2bow(doc) for doc in a]doc_test_vec = dictionary.doc2bow(test_list)tfidf = models.TfidfModel(corpus)tfidf[doc_test_vec]index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=len(dictionary.keys()))sim = index[tfidf[doc_test_vec]]for j in range(len(sim)):print('与第',i,'个文件对比:','第', j, '文件的相似度为:', sim[j])print(sorted(enumerate(sim), key=lambda item: -item[1]))ff.append(sim)
print(len(ff))
xls=xlwt.Workbook()
sht1=xls.add_sheet('sheet1')
file_studentname=[]
for studentname in files:studentnames=re.sub(".docx","",studentname)file_studentname.append(studentnames)
# for i in range(len(ff)):
for k,filename in zip(np.arange(len(files)),file_studentname):sht1.write(int(k+1),0,filename)sht1.write(0,int(k+1) , filename)
for i in range(len(ff)):for j in range(len(ff[i])):h=ff[i].tolist()sht1.write(j+1,i+1,float(h[j]))
xls.save('C:/Users/尚鑫/Desktop/相似度2.xls')
对文件夹中文件进行相似度检测,并生成表格相关推荐
- python读取文件夹-Python按顺序读取文件夹中文件
参考资料: 涉及到文件操作,我们有时候会读取一个文件夹中的所有的文件.这些文件可能是文件名完全混乱的,也可能是完全格式化的(如1.png,2.png...).下面介绍Python中的几种按顺序(假如有 ...
- QListWidget读取本地文件夹中文件并显示名字,双击读取xml数据
文章目录 前言 一.读取本地文件并显示 二.双击读取数据 前言 本文主要是为了解决QListWidget读取本地文件夹中文件,并且显示的问题.然后双击读取其中xml数据 一.读取本地文件并显示 如下的 ...
- 合并文件夹中子目录_01 Linux之统计文件夹中文件个数以及目录个数
案例分析: 今天遇到了一个需要统计路径下目录个数的问题 如果一个一个的去数会很麻烦,找到了一篇文章刚好提到这个,于是我将方法整理了一下. 该方法的链接: Linux统计文件夹中文件个数以及目录个数_S ...
- 使用java对文件夹中文件后缀进行修改
使用java对文件夹中文件后缀进行修改 在网上找到的项目资料,本打算学习下,结果给的资料是ziw格式,需要使用为知笔记才能打开,百度半天没有找到为知笔记的下载方式,但是看到可以转换格式为zip,然后进 ...
- 文件夹中文件名称的获取,并相应的添加或删除对应的文件夹或文佳
1.获取文件夹中文件夹的名称,并添加或删除对应的文件夹 <1> 获取文件夹的名称 fldPath = "相对应的路径名称" dirInfo = New Director ...
- 用bat批量改文件夹中文件的名字
目录 获取需要文件夹中文件的所有文件路径 通过excel按规律改变名字 用ren 连接旧文件名和新文件名 把连接好的命令复制粘贴到txt,后改txt后缀为bat,完成! 获取需要文件夹中文件的所有文件 ...
- python中按照文件夹中文件的排列顺序读取文件内容,python文件显示和windows目录显示一致
原创 python中按照文件夹中文件的排列顺序读取文件内容 2018-12-06 11:49:18 途径北海道 阅读数 3891 更多 分类专栏: python 版权声明:本文为博主原创文章,遵循 C ...
- php获取文件夹中文件名称
php获取文件夹中文件名称 <?php $handler = opendir('upload/ftp');//当前目录中的文件夹下的文件夹 while( ($filename = readdir ...
- 如何正确清理C盘中DriverStore文件夹中文件?
用spacesniffer检测一下,还挺大的,貌似也不能直接删掉里面的文件,该如何清理呢? 参考文章:正确的清理DriverStore文件夹中的驱动程序
- C#实现对指定文件夹中文件按修改时间排序
string path = "~/Document/Introduction/团队管理制度/"; DirectoryInfo dirinfo = new D ...
最新文章
- Netapp存储基础之WAFL, NVRAM, RAID, SnapShot
- Ubuntu安装以太坊客户端
- 操作系统 第五章【虚拟存储器】【MOOC答案】
- 互联网话题: 陈冠希, 张柏芝, 台湾, ASP与雪灾
- SpringCloud Eureka自我保护机制
- Redis运维和开发学习笔记-全书思维导图
- shrio反序列漏洞修复_Apache Shiro Java 反序列化漏洞分析
- pat编程语言_浙江大学在线pat题库集合
- hue集成mysql报错_CDH5.7Hue使用sqoop导出mysql数据报错
- 推荐一款颜值逆天且功能齐全的开源Shell工具
- 正交实验法,软件测试用例的特性,编写方法,软件缺陷的基础知识
- 64位的系统最大可以支持多大内存
- 【小程序按钮控制视频播放暂停】
- iOS开发企业版ipa分发
- yum是干什么的_linux下的yum命令详解
- 如何解决 IDEA 一直卡在 Preparing workspace
- 微软模拟飞行10教程
- 如何 彻底 删除“我的电脑”中 坚果云同步文件夹 图标/快捷方式
- 排序算法 | 快排、冒泡、堆排、归并、基数、递归、希尔、计数
- mysql 性能 比较好_更好的MySQL查询性能
热门文章
- uhd630黑苹hdmi_【黑苹果】升级10.15 驱动UHD630 HDMI(附EFI)
- Let Go by Pat Flynn
- ubuntu 安装g77
- nginx搭建rtmp协议流媒体服务器
- 标准库 - fmt/scan.go 解读
- 蜂巢(蓝桥杯python)
- Intent和Bundle的区别
- 【更新】Parasoft Jtest更新至v10.4.1,实现代码覆盖率目标!
- CentOS7.4中Postfix邮件服务器的搭建(三)-----配置squirrelmail收发邮件,配置磁盘配额
- photoshop人物美白教程:暗沉肤色提亮美白