第一次编程作业
论文查重
一、GitHub的链接
- 我的GitHub
二、计算模块接口的设计与实现过程
-
首先,说明我使用的算法:
-
然后,说明我的设计思路:
我的思路就是非常常见的: 先读入文本-->文本分词-->建立模型-->利用稀疏矩阵进行文本相似度计算-->格式化输出
-
现在,来看看我各个模块的代码:
-
最开始的输入,我用的是sys库的自定义参数输入sys.argv[],然后,建立停用词,为常用的中文符号,最后进行分词,先对原文本进行分词,分词后存为list,代码如下:
str1_list=[] for line in str1: str1_words=' '.join(jieba.cut(line)).split(' ') doc_txt=[] for word in str1_words: if word not in stop_words: #查看有没有停用词 doc_txt.append(word) str1_list.append(doc_txt)
-
然后是用tf-idf模型的代码部分:
#对原文进行处理,形成词袋 dictionary=corpora.Dictionary(str1_list) #对词袋中的词进行编号 dictionary.keys() #使用doc2bow制作语料库 corpus=[dictionary.doc2bow(word) for word in str1_list] #对测试文档也进行制作语料库 test_words_vec=dictionary.doc2bow(str2_list) #利用tfidf模型对语料库建模 tfidf=models.TfidfModel(corpus) #对每个目标文档,分析测试文档的相似度 index=similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=len(dictionary.keys())) sim=index[tfidf[test_words_vec]]
-
整个代码具体也没有独到之处,基本上都是Python用来做自然语言处理常用的几个库
-
三、运行结果
我的测试代码如下:
#输入原文本
str0=call_input(sys.argv[1])
#依次输入sim_0.8里的其他待测文本
str1=call_input(sys.argv[2])
creat_main(str0,str1)
str2=call_input(sys.argv[3])
creat_main(str0,str2)
str3=call_input(sys.argv[4])
creat_main(str0,str3)
str4=call_input(sys.argv[5])
creat_main(str0,str4)
str5=call_input(sys.argv[6])
creat_main(str0,str5)
str6=call_input(sys.argv[7])
creat_main(str0,str6)
str7=call_input(sys.argv[8])
creat_main(str0,str7)
str8=call_input(sys.argv[9])
creat_main(str0,str8)
str9=call_input(sys.argv[10])
creat_main(str0,str9)
测试结果:
四、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 25 |
·Estimate | · 估计这个任务需要多少时间 | 40 | 30 |
Development | 开发 | 700 | 1000 |
· Analysis | · 需求分析 (包括学习新技术) | 320 | 700 |
· Design Spec | · 生成设计文档 | 90 | 75 |
· Design Review | · 设计复审 | 30 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 70 |
· Design | · 具体设计 | 120 | 100 |
· Coding | · 具体编码 | 420 | 500 |
· Code Review | · 代码复审 | 45 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 320 | 500 |
Reporting | 报告 | 90 | 60 |
· Test Repor | · 测试报告 | 80 | 90 |
· Size Measurement | · 计算工作量 | 30 | 25 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 30 |
· 合计 | 2435 | 3285 |
五、反思与总结
- 虽然说之前有学过Python,但是因为已经很久没用了,对Python还是比较生疏了,所以还是要多练练。
- 在学算法的时候花的时间太多了,一直拖到ddl才搞好,学习效率不够高