個人項目


這個作業屬於哪個課程 19網工3軟工
這個作業要求在哪里 個人項目
這個作業的目標 設計一個論文查重算法,完成軟件設計的個人開發流程

個人項目github

1.PSP表格

PSP是卡耐基梅隆大學(CMU)的專家們針對軟件工程師所提出的一套模型:Personal Software Process (PSP, 個人開發流程,或稱個體軟件過程)。

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

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

程序框架

中文分詞--friso.dll

整合項目的頭文件--PaperC.h

主程序,負責調用分詞和調用checking.c中的比較函數--papercheck.c

比較函數整合--checking.c

分詞部分

涉及到了數據庫(詞庫)和mmseg算法,數據庫這大類個人不容易實現,調用了github項目中的中文分詞工具Friso,Friso帶有自身的詞庫,vendors。使用時需要將詞庫的所在地址寫入設置文件(friso.ini),並采用UTF-8編碼(txt的中文是UTF-8編碼),配置完成后才可進行下一步。

查重算法

考慮到自身實現不了類似TF-IDF中的逆文檔頻率(大數據,即按詞的逆詞頻和重要度划分合適的權重)。難以實現類似余弦定理的查重的方案。SimHash(局部敏感哈希)考慮的是對相似文檔的比對,只存在相似或者不相似,且需要用到詞權重,暫不考慮。

初步選定N-Gram算法,稍作修改(本質是暴力近似匹配)。

N-Gram算法的變種,以詞為單位(忽略特殊符號和單個標准字符),對查重文檔取連續的xlen長度的詞串,在標准文檔上查找近似最大匹配(每個詞僅一次錯誤區間,同時全部失配不超過長度的5/9,超過則認為不算重復部分)。為了提高效率,查重文檔取xpos的間隔程度進行匹配。最后取重復率的平均值。

具體實現參考checking.c部分

主程序為papercheck.c,完成分詞的調用checking。

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

time-cost

按照比較算法,時間復雜度近似為 \(O(xlen*N^2/xpos)\) ,N為文本的詞數。鑒於給定的測試文本不超過6k,能在一個比較優的時間內得到較好的結果(xlen=7,xpos=3)

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

五組對比數據,標准為orig.txt

orig_0.8_add.txt,orig_0.8_del.txt,orig_0.8_dis_1.txt,orig_0.8_dis_10.txt,orig_0.8_dis_15.txt

測試使用.bat的批處理文件

批處理cmd運行中...

得出的查重結果:

鑒於空串的比較是無意義的,程序沒有設置針對性判斷。

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

暫無

程序運行

papercheck -init friso.ini orig.txt sim.txt report.txt

或者

papercheck orig.txt sim.txt report.txt

friso.ini是Friso的配置文件

orig.txt是標准文檔

sim.txt是查重文檔

report.txt是額外的查重結果輸出文件

log.txt是程序日志,即分詞的結果

結語

  • 1.學會了個人項目的完整流程
  • 2.對組件編程有了更深入的理解,了解動態庫和鏈接器的使用
  • 3.學習了git工具上傳代碼至github以及commit和update。


免責聲明!

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



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