GitHub連結:https://github.com/mrhuang7/mrhuang7
這個作業屬于哪個課程 | 軟體工程 |
---|---|
這個作業要求在哪裡 | 作業要求 |
這個作業的目标 | 論文查重程式工程設計 |
1. 子產品接口的設計與實作過程
-
算法設計
基于向量夾角餘弦值計算文本相似度
衡量不同文本之間的相似度,其實有多種方法,比如歐式距離法,餘弦距離法等等。對于歐式距離而言,餘弦距離更展現出兩個向量在方向上的差異。當我們的餘弦值接近1時,夾角接近0度,此時兩個向量相似度更高。當夾角等于0時,兩個向量相等。
-
具體思路
在整個文本查重的流程中,我們使用餘弦相似度來判斷。首先我們需要對文本進行分詞,将文本分成一個個單個的詞彙。然後進行列詞,計算詞頻。然後我們建構詞語以及他們的頻率構成的向量。将向量利用餘弦相似度進行比較,得出相似程度的百分比。
-
利用子產品
在本次論文查重中,我們主要有用到jieba包,cosine_similarity包等
2.子產品接口部分的性能改進
-
改進前

-
分析
我們原先使用filter的cut和lcut處理,然後進行比對過濾,但是這樣子做顯得過于臃腫。于是我們查閱相關資料,讨論使用正則過濾html标簽。以及使用html轉義符實體化。采用這種處理方法可以使我們更好地達到目标。
-
改進後
3.子產品部分單元測試展示
- 源文本與測試文本orig_0.8-dis_1.txt進行測試
運作結果顯示兩文本之間相似度為0.89,符合預期
運作結果顯示兩文本之間相似度0.63,符合預期
- 源文本與測試文本orig_0.8-dis_10.txt進行測試
運作結果顯示兩文本之間相似度0.75,符合預期
- 源文本與測試文本orig_0.8-del.txt進行測試
運作結果顯示兩文本之間相似度0.73,符合預期
- 我們利用python的profile子產品,對程式中的每一項時間損耗進行單元測試
分析單元測試情況,我們可以看出運作時間最長的子產品應該是文本的分詞,列詞,計算詞頻,建構詞向量。
4.子產品部分異常處理說明
-
空白文檔情況
當我們對兩個文檔進行測試時,可能會遇到情況是其中一個是空白文檔。從實際來講,此時兩個文檔的相似度應該是0。下面我們進行測試
5. PSP表格
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 120 | 150 |
Estimate | 估計這個任務需要多少時間 | 60 | 50 |
Development | 開發 | 720 | 1440 |
Analysis | 需求分析 (包括學習新技術) | 240 | 480 |
Design Spec | 生成設計文檔 | 200 | |
Design Review | 設計複審 | ||
Coding Standard | 代碼規範 (為目前的開發制定合适的規範) | 180 | 100 |
Design | 具體設計 | 360 | |
Coding | 具體編碼 | 300 | |
Code Review | 代碼複審 | ||
Test | 測試(自我測試,修改代碼,送出修改) | ||
Reporting | 報告 | ||
Test Repor | 測試報告 | ||
Size Measurement | 計算工作量 | ||
Postmortem & Process Improvement Plan | 事後總結, 并提出過程改進計劃 | ||
合計 | 2880 | 3800 |