這個作業屬於哪個課程 | 計科22級1班 |
---|---|
這個作業要求在哪裡 | 要求 |
這個作業的目標 | 設計軟體 |
GitHub連結
PSP表格
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 30 | 30 |
Estimate | 估計這個任務需要多少時間 | 200 | 200 |
Development | 開發 | 500 | 600 |
Analysis | 需求分析 (包括學習新技術) | 200 | 100 |
Design Spec | 生成設計文件 | 50 | 60 |
Design Review | 設計複審 | 50 | 60 |
Coding Standard | 程式碼規範 (為目前的開發制定合適的規範) | 50 | 20 |
Design | 具體設計 | 30 | 30 |
Coding | 具體編碼 | 100 | 120 |
Code Review | 程式碼複審 | 10 | 20 |
Test | 測試(自我測試,修改程式碼,提交修改) | 30 | 20 |
Reporting | 報告 | 30 | 30 |
Test Repor | 測試報告 | 20 | 10 |
Size Measurement | 計算工作量 | 10 | 5 |
Postmortem & Process Improvement Plan | 事後總結, 並提出過程改進計劃 | 20 | 30 |
合計 | 1330 | 1335 |
模組的設計
專案結構如下圖
基本思路是海明演算法,透過hanlp模組將檔案分詞,透過MD5演算法來得到雜湊值,然後for計算得到詞頻進行加權,最後合併再降維得到海明距離
效能改進
開始想做餘弦演算法,但是這個知識點沒有現成的資料來進行研究,,於是選擇了更加尋常的simhash演算法,其實感覺使用兩個演算法一起進行的會使得程式的效能更強大
對應效能分析圖
其中消耗最大的演算法是得到雜湊值的getsimhash演算法
單元測試
對應程式碼覆蓋率
測試程式碼
主程式測試程式碼
對提供的文字內容進行查重處理
結果如下圖
產生海明距離的程式碼測試
透過simhash演算法進行海明距離的運算
異常處理
對文字內容文字數量的異常
對文字型別的異常