个人项目

这个作业属于哪个课程 软工4班
这个给作业要求在哪里 作业的要求
这个作业的目标 实现论文查重

一、GitHub链接

https://github.com/weilong181/weilong181

二、PSP表格

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

三、接口设计及实现过程

SimhashDuplicateDetector 类:

  • 功能:这个类是一个用于检测文本重复的工具。它使用 Simhash 算法来生成文本的 Simhash 值,并计算两个文本之间的相似度。它还提供了方法来读取文件内容、计算文本相似度,并将结果写入文件。

  • 方法和属性:tokenizer: 一个分词器对象,用于将文本分词。

  • calculateSimhash(String text): 计算给定文本的 Simhash 值。

  • hammingDistance(long hash1, long hash2): 计算两个 Simhash 值之间的 Hamming 距离。

  • calculateDuplicateRate(String text1, String text2): 计算两个文本之间的重复率。

  • main(String[] args): 主方法,用于执行重复检测并将结果输出到文件。

  • readFileContent(String filePath): 从文件中读取文本内容。

  • writeToFile(String filePath, String content): 将内容写入文件。

Tokenizer 类:

  • 功能:这个类是一个简单的分词器,用于将文本分成单词或者词语。在示例中,它只是简单地根据空格进行分词,但在实际应用中,可能会使用更复杂的分词算法。
  • 方法和属性:tokenize(String text): 将给定的文本按照空格进行分词,并返回分词后的结果数组。

MurmurHash类

  • 用于计算字符串的 hash 值。

四、性能图

五、单元测试

test1~test5依次为orig文件与add,del,del_1,del_10,del_15进行

  • test1

  • test2

  • test3

  • test4

  • test5

六、异常说明

输入文件不存在时:

posted @ 2024-03-14 12:45  浓农侬脓  阅读(7)  评论(0编辑  收藏  举报