软件工程作业

软件工程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/homework/13324
github地址 https://github.com/LinFFF5/Paper-plagiarism-check

PSP表格

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

计算模块接口的设计与实现

1.代码结构

  • 文本预处理函数
    用cppjieba进行分词,进行词频统计。
  • cosineSimilarityTFIDF
    计算 TF-IDF 权重向量,基于TF-IDF权重计算余弦相似度。
  • main函数
    处理命令行参数,读取文件,计算相似度,输出结果。
  • textio
    读取文档,异常处理。

2.关键算法分析

  • 核心思想: 基于 TF-IDF 向量和余弦相似度的文本相似度计算,来判断原文与抄袭版的相似度。
    • 分词,使得中文文本可以拆分成可分析的词。
    • IDF计算,反映个词在整个语料库中出现的频率。
    • TF-IDF,是结合了词频(TF)和逆文档频率(IDF)的权重计算方法,用来衡量词在文本中的重要性。
    • 余弦相似度,计算出两个文本之间的相似度.
  • 优点
    • 使用了 cppjieba 分词工具,适用于中文文本分析。
    • TF-IDF 是一种有效的文本向量化方式,能够突显重要词汇,忽略常见词汇,提高准确度。
  • 限制
    • 文本预处理和分词质量会直接影响最终相似度计算的准确性。
    • 对于长文本的相似度计算可能存在性能瓶颈,尤其是计算大量词的 TF-IDF 和相似度时。

3.流程图

  • cosineSimilarity流程

性能分析


cppjieba::Jieba::KeywordExtractor 占用较多 CPU,分词和关键词提取的计算速度较慢。可以预加载 IDF 词典,避免重复计算。

异常处理

`// 读取文件内容
string readFile(const string& filePath) {
ifstream file(filePath);
if (!file) {
throw runtime_error("无法打开文件: " + filePath);
}
stringstream buffer;
buffer << file.rdbuf();
return buffer.str();
}

// 写入文件(输出相似度)
void writeFile(const string& filePath, double similarity) {
ofstream file(filePath);
if (!file) {
throw runtime_error("无法打开输出文件: " + filePath);
}
file.precision(2);
file << fixed << similarity << endl;
}`
当文件路径不正确或是文件不存在时,会抛出异常。

使用方法

  1. 下载Source code(zip)
  2. 在命令行输入 cd .\x64\Debug
    & ".\Paper plagiarism check.exe" "论文原文的文件的绝对路径" "抄袭版论文的文件的绝对路径" "输出的答案文件的绝对路径"
posted @ 2025-03-10 05:15  一天赚一个亿  阅读(35)  评论(0)    收藏  举报