天天看點

Ospaf項目-commits詞頻統計子產品1.背景2.算法與代碼

         最近在搞得ospaf項目(可以移步ospaf中期報告來了解),對于commits資料進行特征提取的時候發現,因為開源項目的commits的特點有以下兩個主要放面:1.動詞往往出現在第一個字,例如add、revert之類的。2.動詞相對固定,主要也就是那幾種,add、revert、update、merge、remove之類的。

         是以要做的工作就比較清晰了。

          步驟1.首先是提取每個commit第一個字母

          步驟2.因為每個項目有很多contributor,是以大家習慣的寫法也不一樣,如add,有的人會寫成Add、added、Added之類的。

                   針對與上述的步驟2,也就是同形單詞的識别問題。我想到了一個算法(大家有更好的請留言指教),比如單詞A和B。首先将A和B都轉換成小寫a、b,然後找到a和b中較短的單詞,這個較短的單詞長k=min(len(a,b)),如果k是偶數取distance=k/2,如果k是奇數distance=k/2+1。接着将a和b按字母分割,如果a和b的前distance個字母相同,說明A和B同型。這個算法雖然不夠精準,但是在ospaf項目是夠用了。代碼如下,如果a=b,傳回1。否則傳回0

                    首先有一個單詞庫KeyWords負責統計需要記錄的單詞,commit是樣例:

結果如下:

Ospaf項目-commits詞頻統計子產品1.背景2.算法與代碼

/********************************

* 本文來自部落格  “李博Garvin“

******************************************/

繼續閱讀