這個作業屬於哪個課程 | 軟體工程2024 |
---|---|
這個作業要求在哪裡 | 個人專案 |
個人gitte地址 | https://gitee.com/zcan86/zcan86 |
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 60 | 60 |
· Estimate | · 估計這個任務需要多少時間 | 60 | 60 |
Development | 開發 | 1200 | 960 |
· Analysis | · 需求分析 (包括學習新技術) | 300 | 360 |
· Design Spec | · 生成設計文件 | 60 | 60 |
· Design Review | · 設計複審 | 30 | 30 |
· Coding Standard | · 程式碼規範 (為目前的開發制定合適的規範) | 30 | 30 |
· Design | · 具體設計 | 90 | 90 |
· Coding | · 具體編碼 | 360 | 360 |
· Code Review | · 程式碼複審 | 60 | 60 |
· Test | · 測試(自我測試,修改程式碼,提交修改) | 240 | 180 |
Reporting | 報告 | 240 | 240 |
· Test Repor | · 測試報告 | 60 | 70 |
· Size Measurement | · 計算工作量 | 60 | 60 |
· Postmortem & Process Improvement Plan | · 事後總結, 並提出過程改進計劃 | 120 | 120 |
| · 合計 | | 1320 | 1680 |
1.模組介面的設計與實現
設計思路:利用Hamming與SimHash,透過將文字轉換為字串來實現關鍵詞提取與SimHash計算,最後透過Hamming求距離及相似度。
由此可設計4個函式:1,文字的提取與轉換為字串 2,simhash的計算函式 3,海明距離的計算函式 4,特殊文字的處理
2.模組介面部分的效能改進
在進行相似度計算之前,對文字進行預處理,如去除停用詞、標點符號、轉換為小寫等,以減少計算量並提高準確性。
3.模組部分單元測試展示
這是海明距離計算的程式碼
public class HammingUtils {
// 輸入兩個simHash值,計算它們的海明距離
public static int getHammingDistance(String simHash1, String simHash2) {
int distance = 0;
if (simHash1.length() != simHash2.length()) {
// 出錯,返回-1
distance = -1;
} else {
for (int i = 0; i < simHash1.length(); i++) {
// 每一位進行比較
if (simHash1.charAt(i) != simHash2.charAt(i)) {
distance++;
}
}
}
return distance;
}
// 輸入兩個simHash值,輸出相似度
public static double getSimilarity(String simHash1, String simHash2) {
// 透過 simHash1 和 simHash2 獲得它們的海明距離
int distance = getHammingDistance(simHash1, simHash2);
// 透過海明距離計算出相似度,並返回
return 0.01 * (100 - distance * 100 / 128);
}
下圖是覆蓋率
4.異常處理
有一些關鍵字無法提取,透過第四個類實現無障礙執行。