首页 > 其他分享 >文本相似度计算

文本相似度计算

时间:2024-09-14 22:13:22浏览次数:10  
标签:相似 词语 类为 list 60 计算 文本 分词

一、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 35
· Estimate · 估计这个任务需要多少时间 30 35
Development 开发 400 450
· Analysis · 需求分析 (包括学习新技术) 60 70
· Design Spec · 生成设计文档 60 60
· Design Review · 设计复审 30 25
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 50 60
· Design · 具体设计 60 70
· Coding · 具体编码 120 140
· Code Review · 代码复审 40 45
· Test · 测试(自我测试,修改代码,提交修改) 60 60
Reporting 报告 80 70
· Test Repor · 测试报告 40 30
· Size Measurement · 计算工作量 10 5
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 25
·合计 830 790

github仓库链接:https://github.com/moyuer147/3122004517/tree/master

二、模块接口的设计和实现


  • COS类功能为计算余弦相似度
  • Getwordcount类功能为计算每个词语出现的次数
  • IK_analyzer类为引入maven依赖使用ikanalyzer进行句子的分词
  • IO类为读取文件并返回字符串
  • JavaBreakIterator类为文档断句,分成句子装入list里面
  • Main类为实现函数
  • origtxt类为原文档的数据,使用static修饰减少代码运行次数
  • Union类为两个文档出现过的词语的并集
    类之间的关系
    先使用IO读取文档内容转化成字符串形式,;然后通过JavaBreakIterator将字符串断句,分成一个个句子装入list集合中;IK_analyzer负责将list中的每个句子进行分词,装入list集合中记录所有词语;Getwordcount创建一个map集合将list集合中所有分词的出现次数进行统计,键是词语,值是词语的出现次数;Union把两个文档出现过的分词进行并集计算,存储在list中;COS将map集合中的值通过与Union产生的并集进行向量化储存在一维数组中,把两个一维数组进行余弦计算,再乘两个文本字数的占比,即可得出两个文本的余弦相似度,即是文本的重复率;最后由main实现。
    算法的关键
    在COS类中,参数为两个文本分词后的list集合和Union的并集(两个文本出现过的词语的集合),先通过Getwordcount把list转化为map,遇到重复的词语值+1,这样就得到了每个词语和其出现的次数,通过for循环遍历Union的集合,for(i = 0; i < union.size(); i++)arr[i] = map.getOrDefault(union.get(i), 0);,生成一个向量化的数组,然后把两个数组的成员分别进行余弦运算。
    独到之处
    由于原文本每次查重都会使用到,所以把原文本的所有数据用static修饰,使得原文本的数据在程序运行过程中只需运行一次,减少计算量;引入了maven依赖的中文分词法,减少工作量;使用TreeSet集合记录文本的分词,将分词按一定规律的顺序排序,在后续遍历查找对比的时候减少代码的复杂度。

性能改进

因为使用了FileReader的带参构造,用byte数组接收字符串,再转化成string,所以占用内存高。


单元测试





异常处理说明

找不到文件或者文件不可读取:


未按指定格式输入:

参数丢失:

标签:相似,词语,类为,list,60,计算,文本,分词
From: https://www.cnblogs.com/moyuer/p/18414448

相关文章

  • python+flask计算机毕业设计基于数据加密的高校奖学金评定系统的设计与实现(程序+开题+
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高校规模的不断扩大和学生数量的激增,奖学金评定工作逐渐成为一项复杂而繁重的任务。传统的奖学金评定方式往往依赖于人工收集、整理和......
  • python+flask计算机毕业设计基于物联网的湖区水质监测系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着工业化进程的加快和人口密度的增加,湖泊作为重要的自然资源,其水质状况日益受到关注。水质污染不仅威胁着水生生物的生存,还直接影响到人......
  • python+flask计算机毕业设计民宿管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展和消费者对个性化住宿体验需求的日益增长,民宿作为一种新兴的住宿方式,在全球范围内迅速崛起。传统酒店已难以满足旅行......
  • Windows10解决“远程计算机或设备将不接受连接检测到该设备或资源(Web 代理)未设置为
    问题表述:远程计算机或设备将不接受连接检测到检测到 该设备或资源(Web代理)未设置为接受端口“7897”上的连接。 在教室上课,因为各种原因改了网络设置,以致无法Web联网。但是微信和钉钉收发消息自如。网络诊断后报错这是我遇到的报错。解决方法:左下角“开始”“设置”......
  • java计算机毕业设计剧本杀桌游收银系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着桌游文化的兴起与剧本杀游戏的迅速普及,线下剧本杀体验馆成为年轻人休闲娱乐的新宠。这类场所不仅提供了独特的社交场景,还融合了角色扮演、逻辑推......
  • java计算机毕业设计教学质量测评系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今教育信息化的浪潮中,教学质量的提升已成为教育改革的核心议题。随着高校规模的不断扩大和学生数量的激增,传统的教学管理模式面临着效率低下、信......
  • java计算机毕业设计简历系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着信息技术的飞速发展,人才市场的竞争日益激烈,求职者与招聘方之间的信息匹配效率成为影响就业市场活力的关键因素。传统纸质简历的提交方式不仅效率......
  • java+vue计算机毕设短期租车平台【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和共享经济理念的深入人心,人们对出行方式的需求日益多样化与便捷化。传统租车行业虽已存在多年,但往往受限于手续繁琐、租车周期......
  • java+vue计算机毕设多媒体素材管理系统【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,多媒体内容已成为信息传播与交流的核心载体。从新闻报道到教育培训,从娱乐休闲到企业宣传,多媒体素材如视频、音频、图像等的应......
  • java+vue计算机毕设懂球之家网站【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和体育产业的蓬勃兴起,足球作为全球最受欢迎的运动之一,其相关信息与数据需求日益增长。球迷们渴望通过便捷、全面的平台获取......