其他分享
首页 > 其他分享> > 个人项目 论文查重

个人项目 论文查重

作者:互联网

这个作业属于哪个课程 计科国际班
这个作业要求在哪里 作业要求
这个作业的目标 实现论文查重算法
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