首先,导入相关模块:

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')

对文件夹中文件进行相似度检测,并生成表格相关推荐

  1. python读取文件夹-Python按顺序读取文件夹中文件

    参考资料: 涉及到文件操作,我们有时候会读取一个文件夹中的所有的文件.这些文件可能是文件名完全混乱的,也可能是完全格式化的(如1.png,2.png...).下面介绍Python中的几种按顺序(假如有 ...

  2. QListWidget读取本地文件夹中文件并显示名字,双击读取xml数据

    文章目录 前言 一.读取本地文件并显示 二.双击读取数据 前言 本文主要是为了解决QListWidget读取本地文件夹中文件,并且显示的问题.然后双击读取其中xml数据 一.读取本地文件并显示 如下的 ...

  3. 合并文件夹中子目录_01 Linux之统计文件夹中文件个数以及目录个数

    案例分析: 今天遇到了一个需要统计路径下目录个数的问题 如果一个一个的去数会很麻烦,找到了一篇文章刚好提到这个,于是我将方法整理了一下. 该方法的链接: Linux统计文件夹中文件个数以及目录个数_S ...

  4. 使用java对文件夹中文件后缀进行修改

    使用java对文件夹中文件后缀进行修改 在网上找到的项目资料,本打算学习下,结果给的资料是ziw格式,需要使用为知笔记才能打开,百度半天没有找到为知笔记的下载方式,但是看到可以转换格式为zip,然后进 ...

  5. 文件夹中文件名称的获取,并相应的添加或删除对应的文件夹或文佳

    1.获取文件夹中文件夹的名称,并添加或删除对应的文件夹 <1> 获取文件夹的名称 fldPath = "相对应的路径名称" dirInfo = New Director ...

  6. 用bat批量改文件夹中文件的名字

    目录 获取需要文件夹中文件的所有文件路径 通过excel按规律改变名字 用ren 连接旧文件名和新文件名 把连接好的命令复制粘贴到txt,后改txt后缀为bat,完成! 获取需要文件夹中文件的所有文件 ...

  7. python中按照文件夹中文件的排列顺序读取文件内容,python文件显示和windows目录显示一致

    原创 python中按照文件夹中文件的排列顺序读取文件内容 2018-12-06 11:49:18 途径北海道 阅读数 3891 更多 分类专栏: python 版权声明:本文为博主原创文章,遵循 C ...

  8. php获取文件夹中文件名称

    php获取文件夹中文件名称 <?php $handler = opendir('upload/ftp');//当前目录中的文件夹下的文件夹 while( ($filename = readdir ...

  9. 如何正确清理C盘中DriverStore文件夹中文件?

    用spacesniffer检测一下,还挺大的,貌似也不能直接删掉里面的文件,该如何清理呢? 参考文章:正确的清理DriverStore文件夹中的驱动程序

  10. C#实现对指定文件夹中文件按修改时间排序

    string path = "~/Document/Introduction/团队管理制度/";             DirectoryInfo dirinfo = new D ...

最新文章

  1. Netapp存储基础之WAFL, NVRAM, RAID, SnapShot
  2. Ubuntu安装以太坊客户端
  3. 操作系统 第五章【虚拟存储器】【MOOC答案】
  4. 互联网话题: 陈冠希, 张柏芝, 台湾, ASP与雪灾
  5. SpringCloud Eureka自我保护机制
  6. Redis运维和开发学习笔记-全书思维导图
  7. shrio反序列漏洞修复_Apache Shiro Java 反序列化漏洞分析
  8. pat编程语言_浙江大学在线pat题库集合
  9. hue集成mysql报错_CDH5.7Hue使用sqoop导出mysql数据报错
  10. 推荐一款颜值逆天且功能齐全的开源Shell工具
  11. 正交实验法,软件测试用例的特性,编写方法,软件缺陷的基础知识
  12. 64位的系统最大可以支持多大内存
  13. 【小程序按钮控制视频播放暂停】
  14. iOS开发企业版ipa分发
  15. yum是干什么的_linux下的yum命令详解
  16. 如何解决 IDEA 一直卡在 Preparing workspace
  17. 微软模拟飞行10教程
  18. 如何 彻底 删除“我的电脑”中 坚果云同步文件夹 图标/快捷方式
  19. 排序算法 | 快排、冒泡、堆排、归并、基数、递归、希尔、计数
  20. mysql 性能 比较好_更好的MySQL查询性能

热门文章

  1. uhd630黑苹hdmi_【黑苹果】升级10.15 驱动UHD630 HDMI(附EFI)
  2. Let Go by Pat Flynn
  3. ubuntu 安装g77
  4. nginx搭建rtmp协议流媒体服务器
  5. 标准库 - fmt/scan.go 解读
  6. 蜂巢(蓝桥杯python)
  7. Intent和Bundle的区别
  8. 【更新】Parasoft Jtest更新至v10.4.1,实现代码覆盖率目标!
  9. CentOS7.4中Postfix邮件服务器的搭建(三)-----配置squirrelmail收发邮件,配置磁盘配额
  10. photoshop人物美白教程:暗沉肤色提亮美白