ICode9

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

个人项目 论文查重

2021-09-20 19:33:36  阅读:226  来源: 互联网

标签:查重 文件 文本 20 个人 论文 main txt orig


这个作业属于哪个课程 计科国际班
这个作业要求在哪里 作业要求
这个作业的目标 实现论文查重算法
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 20
· Estimate · 估计这个任务需要多少时间 10 10
Development 开发 360 390
· Analysis · 需求分析 (包括学习新技术) 120 180
· Design Spec · 生成设计文档 20 15
· Design Review · 设计复审 20 15
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 30
· Design · 具体设计 120 150
· Coding · 具体编码 300 360
· Code Review · 代码复审 30 20
· Test · 测试(自我测试,修改代码,提交修改) 30 40
Reporting 报告 120 120
· Test Repor · 测试报告 60 60
· Size Measurement · 计算工作量 20 10
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 20
· 合计 1280 1440

github地址

模块接口

jieba.lcut()

中文文本需要通过分词获得单个的词语
利用一个中文词库,确定汉字之间的关联概率
汉字间概率大的组成词组,形成分词结果
用例

import jieba
whatever = jieba.lcut("今天的天气真好", cut_all=False) #全模式
print("Full Mode: " + "/ ".join(whatever))

结果
Full Mode: 今天/ 的/ 天气/ 真/ 好

re.compline()

使用正则表达式过滤掉标点符号和转义字符
用例

import re
re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')
A = re_telephone.match('010-12345').groups()
print(A)

结果
('010', '12345')

gensim.similarities.Similarity()

用来计算余弦相似度

gensim.corpora.Dictionary()

用来生成词典

os.path.exists()

用于判断文件是否存在

实现过程

1.输入两个文件,并判断文件是否存在
2.若存在,则对其文本内容进行过滤处理,仅保留汉字,数字和字母,若不存在,则输出相应内容(文件不存在)
3.对过滤后的文本内容结巴分词
4.对两份处理后的文本内容合体,然后建立词典
5.对两份处理后的文本进行余弦相似度计算,得到文本相似度
6.将文本相似度写入txt文件

性能改进

各函数时间占用

流程图

单元测试

import unittest
from main import main_test


class MyTestCase(unittest.TestCase):
    def test_something(self):
        self.assertEqual(0.99, main_test())


if __name__ == '__main__':
    unittest.main()

测试1
orig.txt和orig_0.8_add.txt比较,预测相似度为0.99

测试成功
测试2
orig.txt和orig_0.8_del.txt比较,预测相似度为0.99

测试成功
测试3
orig.txt和orig_0.8_dis_1.txt比较,预测相似度为0.99

测试失败,预测失败

异常处理

若输入的文件为空或不存在,则会输出“xx文件不存在”

    if not os.path.exists(path1):
        print("论文原文文件不存在")
        exit()
    if not os.path.exists(path2):
        print("抄袭版论文文件不存在")
        exit()

用例,论文原文文件不存在

用例,抄袭版论文文件不存在

代码覆盖度

标签:查重,文件,文本,20,个人,论文,main,txt,orig
来源: https://www.cnblogs.com/srycloud/p/15312633.html

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

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

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

ICode9版权所有