第一次个人编程作业

Gitcode链接

https://gitcode.net/qq_63808826/3121005011

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

程序最主要的函数为计算文本重复率的函数,其执行流程大概如下
在这里插入图片描述

PSP表格

Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
计划3010
估计这个任务需要多少时间3020
开发6060
需求分析 (包括学习新技术)3030
生成设计文档3010
设计复审3010
代码规范 (为目前的开发制定合适的规范)3030
具体设计3060
具体编码6090
代码复审3020
测试(自我测试,修改代码,提交修改)60100
报告3060
测试报告3060
计算工作量3040
事后总结, 并提出过程改进计划3030
合计510630

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

改进思路

由于文本中的标点符号有可能对重复率的计算准确性造成影响,且会占用额外的计算资源,故对文本进行降噪清洗可提高程序的性能及准确性

程序运行的时间消费如图

在这里插入图片描述
可见程序加载数据时间就占程序运行时间1/3左右,且程序主要依靠调用库函数来计算哈希值故暂时没有性能改进方案

消耗最大的函数为

def get_similarity(original_text, copy_text):
    # 清洗文本(去除标点符号)
    pattern = re.compile(r'[\u4e00-\u9fa5]+')
    cl_test1 = re.findall(pattern, original_text)
    cl_test2 = re.findall(pattern, copy_text)
    # 将清洗后的文本列表合并为字符串
    original_text = ''.join(cl_test1)
    copy_text = ''.join(cl_test2)
    # 对字符串进行分词
    original_words = list(jieba.cut(original_text))
    copy_words = list(jieba.cut(copy_text))
    # 生成simhash值
    original_simhash = Simhash(original_words)
    copy_simhash = Simhash(copy_words)
    # 计算海明距离
    distance = original_simhash.distance(copy_simhash)
    # 计算重复率
    similarity = 1 - distance / 64
    return similarity

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

对传入文本进行降噪清洗以及合并后分词的测试代码如下

# 清洗文本(去除标点符号)
    pattern = re.compile(r'[\u4e00-\u9fa5]+')
    cl_test1 = re.findall(pattern, original_text)
    cl_test2 = re.findall(pattern, copy_text)
    print(cl_test1)
    print(cl_test2)
    # 将清洗后的文本列表合并为字符串
    original_text = ''.join(cl_test1)
    copy_text = ''.join(cl_test2)
    print(original_text)
    print(copy_text)
    # 对字符串进行分词
    original_words = list(jieba.cut(original_text))
    copy_words = list(jieba.cut(copy_text))
    print(original_words)
    print(copy_words)

输出结果如下

['今天是星期天', '天气晴', '今天晚上我要去看电影']
['今天是周天', '天气晴朗', '我晚上要去看电影']
今天是星期天天气晴今天晚上我要去看电影
今天是周天天气晴朗我晚上要去看电影
['今天', '是', '星期天', '天气', '晴', '今天', '晚上', '我要', '去', '看', '电影']
['今天', '是', '周天', '天气晴朗', '我', '晚上', '要', '去', '看', '电影']

对计算重复率函数进行测试

主要通过保持一个文本不必,修改抄袭文本看重复率的变化,结果如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试代码覆盖率如图
在这里插入图片描述

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

代码在执行过程中有能会发生乱码报错,这是因为文件编码问题造成可在代码开头加上如下代码

# -*- coding: gbk -*-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值