软件工程第一次个人编程作业
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 个人项目作业-论文查重 |
这个作业的目标 | 个人编程实现论文查重算法并进行测试检验 |
目录
一、项目链接
二、PSP表格
三、分包、接口设计与实现
四、性能改进
五、单元测试展示
六、 异常处理说明
七、算法原理
一、项目链接
项目链接
Lxuan_ / 3121005222 · GitCode
仓库:
二、PSP表格
*PSP2.1* | *Personal Software Process Stages* | *预估耗时(分钟)* | *实际耗时(分钟)* |
---|---|---|---|
Planning | 计划 | 20 | 17 |
· Estimate | · 估计这个任务需要多少时间 | 450 | 510 |
Development | 开发 | 150 | 120 |
· Analysis | · 需求分析 (包括学习新技术) | 100 | 110 |
· Design Spec | · 生成设计文档 | 30 | 25 |
· Design Review | · 设计复审 | 20 | 18 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
· Design | · 具体设计 | 30 | 30 |
· Coding | · 具体编码 | 60 | 55 |
· Code Review | · 代码复审 | 30 | 26 |
· Test | · 测试(自我测试,修改代码,提交修改) | 15 | 16 |
Reporting | 报告 | 30 | 30 |
· Test Repor | · 测试报告 | 15 | 15 |
· Size Measurement | · 计算工作量 | 10 | 15 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 15 | 18 |
· 合计 | 530 | 510 |
三、分包、接口设计与实现
TxtUtil包:进行文本的读入读出
main主类进行cmd的运行
test包,里面的测试类
四、性能改进
从各个图我们可以得知,测试良好
比较占用资源的是,获取哈希值,分词过程,由于调用别人写好的包,没什么大的改进。
五、单元测试展示
cmd单独测试
覆盖率
六、 异常处理说明
public static String getSimHash(String str) {// 文本长度太短时HanLp无法取得关键字try {if (str.length() < 200) throw new ShortStringException("文本过短,难以判断!");} catch (ShortStringException e) {e.printStackTrace();return null;}
七、算法原理
具体实现:见仓库代码
1、分词,把需要判断文本分词形成这个文章的特征单词。最后形成去掉噪音词的单词序列并为每个词加上权重,我们假设权重分为5个级别(1~5)。比如:“ 美国“51区”雇员称内部有9架飞碟,曾看见灰色外星人 ” ==> 分词后为 “ 美国(4) 51区(5) 雇员(3) 称(1) 内部(2) 有(1) 9架(3) 飞碟(5) 曾(1) 看见(3) 灰色(4) 外星人(5)”,括号里是代表单词在整个句子里重要程度,数字越大越重要。
2、hash,通过hash算法把每个词变成hash值,比如“美国”通过hash算法计算为 100101,“51区”通过hash算法计算为 101011。这样我们的字符串就变成了一串串数字,还记得文章开头说过的吗,要把文章变为数字计算才能提高相似度计算性能,现在是降维过程进行时。
3、加权,通过 2步骤的hash生成结果,需要按照单词的权重形成加权数字串,比如“美国”的hash值为“100101”,通过加权计算为“4 -4 -4 4 -4 4”;“51区”的hash值为“101011”,通过加权计算为 “ 5 -5 5 -5 5 5”。
4、合并,把上面各个单词算出来的序列值累加,变成只有一个序列串。比如 “美国”的 “4 -4 -4 4 -4 4”,“51区”的 “ 5 -5 5 -5 5 5”, 把每一位进行累加, “4+5 -4+-5 -4+5 4+-5 -4+5 4+5” ==》 “9 -9 1 -1 1 9”。这里作为示例只算了两个单词的,真实计算需要把所有单词的序列串累加。
5、降维,把4步算出来的 “9 -9 1 -1 1 9” 变成 0 1 串,形成我们最终的simhash签名。 如果每一位大于0 记为 1,小于0 记为 0。最后算出结果为:“1 0 1 0 1 1”。
软件工程第一次个人编程作业相关推荐
- 2022秋软件工程第一次结对编程时作业
软件工程 FZUSDN社区 作业要求 2022秋软件工程第一次结对编程作业 作业目标 使用NABCD进行需求分析并进行原型设计 成员学号 032002217 成员学号 072003403 墨刀链接 墨 ...
- 2021秋软工实践第一次结对编程作业
这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践第一次结对编程作业 这个作业的目标 实现博饼软件原型并进行博客写作 学号 031902139 队友学 ...
- 2021软工第一次结对编程作业
这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践第一次结对编程作业 这个作业的目标 结对完成任务并学会原型设计 学号 031902414 队友学号 ...
- 2022秋软工实践 第一次结对编程作业
2022秋软工实践 第一次结对编程作业 需求分析 (1)Need,需求 (2)Approach,做法 (3)Benfit,好处 (4)Competitors,竞争 (5)Delivery,推广 UML ...
- 2022北航敏捷软件工程 第一次博客作业
2022北航敏捷软件工程 第一次博客作业 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程 这个作业的要求在哪里 个人阅读作业-阅读和调研 我在这个课程的目标是 了解软件工程的方法论.在实 ...
- 第一次团队编程作业 团队展示+选题报告+需求分析
作业所属课程 fzusdn 作业要求 第一次团队编程作业 作业目标 确定选题,进行需求分析并设计功能模块.小组成员相互了解并进行组内分工 团队名称 怦然然心栋队 团队成员学号 032002342,03 ...
- 软件工程课程-个人编程作业
评分标准 个人项目总共5个周时,总分数30分 作业期限每一周算一周时 未按时完成作业,但在作业截止后的3天时间内提交作业的,得作业得分x0.6 例如:A同学 个人编程作业0 作业得分3分 , 但由于在 ...
- 软工第一次个人编程作业
这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 https://bbs.csdn.net/topics/600574694 这个作业的目标 实现一个程序功能,它可以对 ...
- 第一次个人编程作业——论文查重
文章目录 0 作业基本信息 1 作业地址:[https://gitcode.net/willwill0915/papercheck](https://gitcode.net/willwill0915/ ...
最新文章
- Transformer 眼中世界 Vs. CNN 眼中世界
- mysql内连接简写_技术分享 | MySQL 的 join_buffer_size 在内连接上的应用
- 宜昌市计算机一级考试真题,2018年上半年湖北省宜昌市计算机等级考试考务通知...
- Spring Cloud Stream 体系及原理介绍
- C++:Static修饰变量 vs Static修饰函数
- vue项目安装less_部署vue项目、安装mongodb
- 下拉选择框 其他_列表框 vs 下拉列表,哪个更好?
- html div 知识点,HTML知识点总结之div、section标签
- java接口可以接两个吗,接口可以在Java中扩展多个接口吗?
- Pytorch解决LSTM前向传播时报错:RuntimeError: input must have 3 dimensions, got 2
- SpringBoot-(1)-IDEA创建SpringBoot项目并运行访问接口
- java web权限设计_java web简单权限管理设计
- 【Android】 修复ijkPlayer进行m3u8 hls流播放时seek进度条拖动不准确的问题
- SQL操作结果集-并集,差集,交集,结果集排序
- 如何不下载百度网盘下载资源
- 2022年电工(初级)考试模拟100题及答案
- android怎么防8门神器,八门神器(GameKiller)怎么用?安卓版使用教程
- 牛客java选择题每日打卡Day2
- 短视频社交应用Socialcam关闭背后,是又一个圈钱阴谋?
- 次坐标从0开始_定位基础-坐标变换