第一次个人编程作业
目录
参考文件
代码思路
- 余弦相似度
利用余弦算法求出相似度
代码函数
读出文件内容
利用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,但真正运用的时候还是非常不熟 平时代码写太少
- 平时要多敲代码 当面对难题时才不会感觉束手无策