第一次个人编程作业

第一次个人编程作业

github

目录

参考文件

代码思路

  • 余弦相似度

    利用余弦算法求出相似度

代码函数

读出文件内容

利用jieba.analyse.extract_tags将文本分割完并且得出tfidf值

将两个文本的分词对齐 如{‘第一’:1,“第二”;2,“第三”:3}
{“第二”;2,“第三”:3,“第四”;4}
对齐为{‘第一’:1,“第二”;2,“第三”:3,“第四”;0}和
{第一’:0,“第二”;2,“第三”:3,“第四”;4}
并且获得两个字典的权重列表vec_a和vac_b

计算余弦相似度
把答案写入文件

性能分析

用pycharm自带的性能分析工具分析


放大看

单元测试


import os

import main


def test():
    copy_paths = './sim_0.8'
    origin_path = './orig.txt'
    ans_path='./answer.TXT'
    for path in os.listdir(copy_paths):
        print(f'{path}:', main.get_similar(f'{copy_paths}/{path}', origin_path))
        # res = os.system(f'python main.py {origin_path} {copy_paths}/{path} {ans_path}')
        # print(f'{path}:',res)
        # print(f'{path}一样:', main.get_similar(origin_path, origin_path))
    # # 参数缺失
    res = os.system(f'python main.py {origin_path}')
    print(res)
    #
    # # 无效文本
    res = os.system(f'python main.py {origin_path} ./empty.txt ./answer.TXT')
    print(res)
    #
    # # 文件不存在
    res = os.system(f'python main.py ./0000.txt ./empty.txt ./answer.TXT')
    print(res)

#文章一样

if __name__ == '__main__':
    test()

测试结果 基本符合预期

也找到一些错误


psp表格

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

个人总结

  • 这次整个项目的完成十分艰难 ,从一开始学tfidf到最后用jieba.analyse 中间消耗了非常多时间,舍友提供了很多帮助。这次也是第一次完成一个算是完整的项目,真正让我感觉难的反而是单元测试,测试代码请教了舍友非常多,所以感觉测试代码都是“舍友的样子”
  • 虽然学过python,但真正运用的时候还是非常不熟 平时代码写太少
  • 平时要多敲代码 当面对难题时才不会感觉束手无策
原文地址:https://www.cnblogs.com/shenshuai/p/13684641.html