首页 > 其他分享 >个人项目

个人项目

时间:2024-09-14 13:35:09浏览次数:1  
标签:匹配 个人 项目 self 相似 time fuzzy match

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229
这个作业的目标 了解PSP,编写代码和测试完成论文查重的个人项目

这次作业的github链接:https://github.com/SSTTwin/3222004598

一、PSP表格

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

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

1. 定义模糊匹配函数:

  • fuzzy_match函数接受一个pattern和一个sentences列表作为输入。
  • 使用difflib.SequenceMatcher计算pattern和每个sentence之间的相似度。
  • 如果相似度大于0.6,将句子和相似度添加到matches列表中。
  • 函数返回匹配的结果和最后一个计算的相似度。

2. 主程序:

  • 读取原文和待检测文章的路径。
  • 读取文件内容并进行预处理,将文本内容转换为字符串。
  • 调用模糊匹配函数,对待检测文章进行匹配,并获取相似度。
  • 输出匹配结果和相似度。

3. 读取文件:

  • 从用户那里获取两个文件的路径。
  • 打开文件并逐行读取,去掉每行的前后空白字符。
  • 将每一行添加到temp和temp_1列表中,直到文件结束。
  • 读取完成后,将所有行合并为一个字符串result和result_1。

4.模糊匹配和结果输出:

  • 将result_1设为要匹配的模式。
  • 调用 fuzzy_match 函数来计算待检测文章 pattern 与 sentences 中每个句子的相似度。matches 存储相似的结果及其相似度,Sim_num 存储相似度的阈值。
  • 打印匹配结果和相似度。
  • 将最后一个计算的相似度写入到Result.txt文件中。

三、结果输出:

image

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

改进思路:

  • 改进 fuzzy_match 函数的返回值:
    fuzzy_match 函数现在返回的相似度是最后一个匹配的相似度,但它应该返回所有匹配的相似度列表。
  • 优化文件处理:
    使用 with 语句来自动管理文件的打开和关闭,避免手动关闭文件带来的潜在问题。
  • 避免重复调用 fuzzy_match:
    不需要多次调用 fuzzy_match,一次调用就可以获得匹配结果和相似度列表。
  • 处理文件读取:
    文件内容的读取逻辑可以优化为一次性读取全部内容,并在内存中处理,避免逐行读取的复杂性。
  • 改进文件写入:
    文件写入应处理结果格式,以便于后续使用。

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

import unittest
import time

class TestFuzzyMatch(unittest.TestCase):
    def setUp(self):
        # 构造测试数据
        self.original_text = "This is a sample original text."
        self.test_text = "This is a sample test text."
        self.pattern = "sample"
        self.similarity_threshold = 0.6

    def test_fuzzy_match(self):
        # 测试模糊匹配函数的正确性
        matches, similarity = fuzzy_match(self.pattern, [self.original_text])
        
        # 检查返回结果是否符合预期
        self.assertEqual(len(matches), 1, "Expected exactly one match.")
        self.assertIn(self.original_text, matches[0][0], "Match should contain the original text.")
        self.assertGreaterEqual(matches[0][1], self.similarity_threshold, "Similarity should be greater than or equal to the threshold.")

    def test_performance(self):
        # 测试性能是否有所改进
        start_time = time.time()
        # 执行模糊匹配
        fuzzy_match(self.pattern, [self.original_text] * 1000)  # 重复1000次以模拟大量数据
        end_time = time.time()

        # 检查执行时间是否合理
        self.assertLess(end_time - start_time, 10, "Performance test failed: Execution time exceeded 10 seconds.")

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

TestFuzzyMatch 是一个继承自 unittest.TestCase 的测试类。test_fuzzy_match 方法验证了函数的正确性,而 test_performance 方法检查了函数的性能

标签:匹配,个人,项目,self,相似,time,fuzzy,match
From: https://www.cnblogs.com/SSTwin/p/18412811

相关文章

  • 个人项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-12这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13220这个作业的目标设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文......
  • github push项目
    新建项目进入项目文件夹,打开gitbash执行ls检查文件目录执行gitinit初始化执行gitadd.把文件都加到缓存区执行gitcommit-m"添加说明(注意代码规范)"gitbranch-Mmain重命名当前分支为miangitremoteaddoriginhttps://github.com/用户没/项目名.git向本地Git仓库......
  • 一个小例子,给你讲透 Go 配置管理,轻松将其融入到项目中
    在软件开发中,配置管理是一个不可或缺的部分。无论是开发环境、测试环境还是生产环境,我们都需要一种方法来存储和读取配置信息。在Golang项目中,Viper是一个非常流行且功能强大的库,用于处理配置文件。下面我会写一些例子,帮助大家快速上手。什么是Viper?不卖关子,直接上GitHub地址......
  • 项目实战 (11)---搜索进度
    目录背景相关技术需要解决的问题查询进度实时展示描述代码python后端htmlJS运行效果查询逻辑结合描述代码运行效果总结与问题背景通过前面1-10,视频搜索系统的前后端及视频录入功能已经可以正常使用。但是我们清楚随着视频量的增加及客户搜索并发数的增加,后......
  • 又一个爆火的AI项目,逼真到恐怖的Flux!【保姆级硬核教程】
    前言最近Flux爆火,人物写真更加逼真、细腻,这些图片你能看出来是AI生成的吗?甚至还能精准控制生成的文字,比如在手上和纸上写:Iamnotreal.无论是单人还是多人,脸部打光、肌肤纹理、毛发,都很难看出破绽。而这样的逼真图片,使用Flux就可以轻松生成:所有的AI设计工......
  • 程序员的 AI 启蒙:ChatGPT+ Copilot开发Vue3 仿简书项目 90%代码AI生成
    在人工智能技术日益成熟的今天,程序员们正在迎来一场全新的编程革命。ChatGPT和Copilot等AI工具的出现,让代码生成不再是遥不可及的梦想。本文将带你体验如何利用这些先进技术,仅用90%的代码量,开发出一个基于Vue3的仿简书项目,感受AI在编程领域的革新力量。一、引言ChatGPT和C......
  • 学习高校课程-系统设计与分析-项目管理和敏捷方法(lec2)
    Index(目录)ProjectManagementFundamentalsProjectinitiation(项目启动)Determiningprojectfeasibility(确定项目可行性)Activityplanningandcontrol(活动规划与控制)ProjectScheduling(项目进度安排)Ganttcharts(甘特图)PERTdiagrams(PERT图)Managingsys......
  • 南大通用GBase数据库在江西移动网管系统的国产化替换项目
    项目概况1、项目背景移动网管业务是为了更好地调配和管理网络资源及信息、对网络运行情况进行实时监测并根据业务情况以及网络流量使用情况进行网络资源的合理调配。随着江西移动业务的不断发展,网管系统处理负荷不断增加,系统使用的国外数据库产品版本老旧,系统运行过程中多次遇到数......
  • 项目中建立表相关的数据字典需要包含哪些信息?——数据字典设计
    文章目录1.表信息2.字段信息3.约束信息4.索引信息5.表关系6.示例数据示例数据字典条目表信息字段信息约束信息索引信息表关系设计数据字典时的注意事项创建一个表信息相关的数据字典是管理和维护数据库结构的重要步骤。一个完善的数据字典可以帮助你清晰地了......
  • 股票api接口程序化报备,程序化交易监管对个人量化交易者有何影响
    炒股自动化:申请官方API接口,散户也可以python炒股自动化(0),申请券商API接口python炒股自动化(1),量化交易接口区别Python炒股自动化(2):获取股票实时数据和历史数据Python炒股自动化(3):分析取回的实时数据和历史数据Python炒股自动化(4):通过接口向交易所发送订单Python炒股自动化(5):......