天天看點

第一次個人作業

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

6.總結與反思

繼續閱讀