個人項目:論文查重


這個作業屬於哪個課程 https://edu.cnblogs.com/campus/gdgy/Networkengineering1834
這個作業要求在哪里 https://edu.cnblogs.com/campus/gdgy/Networkengineering1834/homework/11146
這個作業的目標 實現論文查重算法,學會使用PSP表格估計,學會 Git commit 規范,學會單元測試

1. Github倉庫

https://github.com/graceon/checkArticle

2. PSP表格

PSP2.1 Personal Software Process Stages 預估耗時(分鍾) 實際耗時(分鍾)
Planning 計划 20 20
· Estimate · 估計這個任務需要多少時間 20 20
Development 開發 465 525
· Analysis · 需求分析 (包括學習新技術) 30 30
· Design Spec · 生成設計文檔 60 60
· Design Review · 設計復審 60 60
· Coding Standard · 代碼規范 (為目前的開發制定合適的規范) 15 15
· Design · 具體設計 30 30
· Coding · 具體編碼 180 240
· Code Review · 代碼復審 60 60
· Test · 測試(自我測試,修改代碼,提交修改) 30 30
Reporting 報告 60 60
· Test Report · 測試報告 30 30
· Size Measurement · 計算工作量 10 10
· Postmortem & Process Improvement Plan · 事后總結, 並提出過程改進計划 20 20
Total · 合計 545 605

3. 計算模塊接口的設計與實現過程。

  • CommandParse創建Article對象加載原始論文和待檢測論文,並使用ArticleCompare.compare進行比較
  • 論文特征在Article構造函數中計算過程
    • 將文章中所有可能存在的雙字詞的hash值作為特征保存到排序集合中
  • ArticleCompare.compare
    • 由於特征是以整數形式從小到大排序存儲到集合中的,采用雙指針法,計算2個整數集合共同元素的個數

4. 計算模塊接口部分的性能改進。


占用時間最多函數展示

      public Article(String pathname) throws IOException, ZeroFeature {
      //省略大部分初始化代碼
            while ((line = reader.readLine()) != null) {
                //使用正則表達式分割這一行,分割這一行的短句
                String[] subSentence=line.split(splitSymbol);
                //逐個短句分析
                for(String word:subSentence){
                    //每2個漢字作為雙字詞
                    for (int i = 0; i < word.length()-1; i++) {
                        //獲取雙字詞的Hash值作為,添加到特征集合sortedHashFeature中
                        int hash = word.substring(i, i + 2).hashCode();
                        sortedHashFeature.add(hash);
                    }
                }
            }
      }

分析可得Article構造函數中計算特征的過程占用時間最多,並且使用正則表達式分割逗號句號和分割雙字詞使用時間較多。
但都是 Java 語言自帶方法優化難度較大。

5. 計算模塊部分單元測試展示。

單元測試的測試覆蓋率截圖

命令行輸入參數不足

測試非抄襲文件查重率

測試正常功能


測試無法提取特征異常

測試輸入文件錯誤

6. 計算模塊部分異常處理說明。

Article.ZeroFeature當Article初始化時不能讀取到雙字詞,無法添加特征時拋出

IOException當讀取文件和寫入文件失敗時拋出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM