ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

个人项目

2021-09-16 02:06:04  阅读:205  来源: 互联网

标签:查重 10 个人 项目 文档 txt 分词 orig


这个作业属于哪个课程 19网工3软工
这个作业要求在哪里 个人项目
这个作业的目标 设计一个论文查重算法,完成软件设计的个人开发流程

个人项目github

1.PSP表格

PSP是卡耐基梅隆大学(CMU)的专家们针对软件工程师所提出的一套模型:Personal Software Process (PSP, 个人开发流程,或称个体软件过程)。

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

2.计算模块接口的设计与实现过程

程序框架

中文分词--friso.dll

整合项目的头文件--PaperC.h

主程序,负责调用分词和调用checking.c中的比较函数--papercheck.c

比较函数整合--checking.c

分词部分

涉及到了数据库(词库)和mmseg算法,数据库这大类个人不容易实现,调用了github项目中的中文分词工具Friso,Friso带有自身的词库,vendors。使用时需要将词库的所在地址写入设置文件(friso.ini),并采用UTF-8编码(txt的中文是UTF-8编码),配置完成后才可进行下一步。

查重算法

考虑到自身实现不了类似TF-IDF中的逆文档频率(大数据,即按词的逆词频和重要度划分合适的权值)。难以实现类似余弦定理的查重的方案。SimHash考虑的是对相似文档的比对,只存在相似或者不相似,对于得出的百分比不做考虑。

初步选定N-Gram算法,稍作修改(本质是暴力近似匹配)。

N-Gram算法的变种,以词为单位(忽略特殊符号和单个标准字符),对查重文档取连续的xlen长度的词串,在标准文档上查找近似最大匹配(每个词仅一次错误区间,同时全部失配不超过长度的5/9,超过则认为不算重复部分)。为了提高效率,查重文档取xpos的间隔程度进行匹配。最后取重复率的平均值。

具体实现参考checking.c部分

主程序为papercheck.c,完成分词的调用checking。

3.计算模块接口部分的性能改进。

time-cost

按照比较算法,时间复杂度近似为 \(O(xlen*N^2/xpos)\) ,N为文本的词数。鉴于给定的测试文本不超过6k,能在一个比较优的时间内得到较好的结果(xlen=7,xpos=3)

4.计算模块部分单元测试展示

五组对比数据,标准为orig.txt

orig_0.8_add.txt

orig_0.8_del.txt

orig_0.8_dis_1.txt

orig_0.8_dis_10.txt

orig_0.8_dis_15.txt

鉴于空串的比较是无意义的,程序没有设置针对性判断。

5.计算模块部分异常处理说明

暂无

程序运行

papercheck -init friso.ini orig.txt sim.txt report.txt

或者

papercheck orig.txt sim.txt report.txt

friso.ini是Friso的配置文件

orig.txt是标准文档

sim.txt是查重文档

report.txt是额外的查重结果输出文件

log.txt是程序日志,即分词的结果

结语

  • 1.学会了个人项目的完整流程
  • 2.对组件编程有了更深入的理解,了解动态库和链接器的使用
  • 3.学习了git工具上传代码至github以及commit和update。

标签:查重,10,个人,项目,文档,txt,分词,orig
来源: https://www.cnblogs.com/kekxy/p/15291589.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有