github鏈結
str1:去符號後的原文檔案
str2:去符號後的抄襲版**檔案
alll_words:存放所有的詞
str1_words_code/str2_words_code:記錄str1,str2中每個詞出現的次數
余弦相似度演算法(計算個體間的相似度)
在三角形中,余弦函式的計算公式為:
在直角座標系中,二維空間中余弦函式的計算公式為:
多維空間中余弦函式的計算公式為:
演算法舉例
str1:今天是星期天,天氣晴,今天晚上我要去看電影
str2:今天是周天,天氣晴朗,我晚上要去看電影
使用結巴分詞和停用詞表對兩個句子進行分詞
str1_words=['今天','是','星期天','天氣','晴','今天','晚上','我','要','去','看','電影']
str2_words=['今天','是','周天','天氣','晴朗','晚上','我','要','去','看','電影']
對所有的詞進行編碼
set=
word_dict=
計算每個詞出現的次數
str1_words_code=[1,1,1,0,1,1,0,1,1,1,1,1,1,1]
str2_words_code=[1,1,0,1,1,0,1,0,1,1,1,1,1,1]
計算余弦相似度
\[cos(θ)=\frac*\sqrt}=0.80
\]余弦相似度:相似度越小,距離越大;相似度越大,距離越小。余弦值越接近1,表示兩個向量越相似;余弦值越接近0,表示兩個向量越不相似。
改進計算模組效能上所花費的時間較少,主要是增加了try except語句的使用和對標點符號進行了處理(try:嘗試執行的**;except:出現錯誤的處理)
**比較簡單,沒有包裝成函式,所以沒有展示消耗最大的函式。
測試的函式包括使用結巴分詞進行分詞,計算余弦值。使用結巴分詞進行分詞和計算余弦值是余弦相似度演算法的核心,所以需要構造測試資料來觀察和分析結巴分詞後得到的結果。
先檢查特例,輸入相同文字時得到的重複率會不會是1,輸入原始檔和空白文件時能不能正常執行,結果就發現了會產生分母為0的現象,所以增加了try except語句的使用,之後便使用樣例中的原始檔和增刪改後的抄襲版檔案進行測試。
orig.txt
orig.txt
余弦相似度 = 1.000000
orig.txt
blank.txt
余弦相似度 = 0.000000
orig.txt
orig_0.8_add.txt
余弦相似度 = 0.995000
orig.txt
orig_0.8_del.txt
余弦相似度 = 0.997000
orig.txt
orig_0.8_dis_1.txt
余弦相似度 = 0.999000
orig.txt
orig_0.8_dis_3.txt
余弦相似度 = 0.998000
orig.txt
orig_0.8_dis_7.txt
余弦相似度 = 0.998000
orig.txt
orig_0.8_dis_10.txt
余弦相似度 = 0.997000
orig.txt
orig_0.8_dis_15.txt
余弦相似度 = 0.992000
orig.txt
orig_0.8_mix.txt
余弦相似度 = 0.998000
orig.txt
orig_0.8_rep.txt
余弦相似度 = 0.996000
answer = round(float(sum)/(math.sqrt(item1)*math.sqrt(item2)),3)#返回浮點數四捨五入的值
except zerodivisionerror: #出現異常情況
answer = 0.00
psp2.1personal software process stages預計耗時(分鐘)實際耗時(分鐘)
planning
計畫· estimate
· 估計這個任務需要多少時間
6040
development
開發· analysis
· 需求分析 (包括學習新技術)
1000
1200
· design spec
· 生成設計文件
6030
· design review
· 設計複審
3030
· coding standard
· **規範 (為目前的開發制定合適的規範)
3020
· design
· 具體設計
9060
· coding
· 具體編碼
300720
· code review
· **複審
3060
· test
· 測試(自我測試,修改**,提交修改)
180360
reporting
報告· test repor
· 測試報告
12060
· size measurement
· 計算工作量
3030
· postmortem & process improvement plan
· 事後總結, 並提出過程改進計畫
6030
· 合計
1990
2640
剛開始拿到這個題目的時候搜了乙個下午的資料,毫無頭緒...後面花了好長的時間去學python,儘管最後寫出來的東西不是那麼滿意,但是收穫真的很大,拖延症晚期選手終於開始學python了,希望接下來還能學到更多東西。衝衝衝!
第一次個人程式設計作業
psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫120 estimate 估計這個任務需要多少時間 120development 開發360 analysis 需求分析 包括學習新技術 60 design spec...
第一次個人程式設計作業
github倉庫位址 psp2.1 personal softwareprocess stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫50 60estimate 估計這個任務需要多少時間 3020 development 開發960 1080 analysis 需求分析 包括學習...
第一次個人程式設計作業
倉庫 psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫 estimate 估計這個任務需要多少時間100 development 開發 8802000 analysis 需求分析 包括學習新技術 240420 de...