Ospaf專案-commits詞頻統計模組
1.背景
最近在搞得ospaf專案(可以移步ospaf中期報告來了解),對於commits資料進行特徵提取的時候發現,因為開源專案的commits的特點有以下兩個主要放面:1.動詞往往出現在第一個字,例如add、revert之類的。2.動詞相對固定,主要也就是那幾種,add、revert、update、merge、remove之類的。
所以要做的工作就比較清晰了。
步驟1.首先是提取每個commit第一個字母
步驟2.因為每個專案有很多contributor,所以大家習慣的寫法也不一樣,如add,有的人會寫成Add、added、Added之類的。
2.演算法與程式碼
1.同型單詞的識別
針對與上述的步驟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
def WordCompare(a,b):
a_low=a.lower()
b_low=b.lower()
a_length=len(a_low)
b_length=len(b_low)
distance=min(a_length,b_length)
if distance%2 ==0:
distance_cop=distance/2
else:
distance_cop=distance/2+1
for i in range(0,distance_cop):
if a_low[i]==b_low[i]:
continue
else:
return 0
break
return 1
2.記錄詞頻
首先有一個單詞庫KeyWords負責統計需要記錄的單詞,commit是樣例:
'''
compare the different word
@author: Garvin
'''
KeyWords=['add','remove','update']
commite=['Added testh ','removed fae gew','update cewf','add cek','get tawge']
def WordCompare(a,b):
a_low=a.lower()
b_low=b.lower()
a_length=len(a_low)
b_length=len(b_low)
distance=min(a_length,b_length)
if distance%2 ==0:
distance_cop=distance/2
else:
distance_cop=distance/2+1
for i in range(0,distance_cop):
if a_low[i]==b_low[i]:
continue
else:
return 0
break
return 1
def GetKeyWordFreq(KeyWords,commits):
WordFreqDic={}
for i in KeyWords:
WordFreqDic[i]=0
for j in commite:
# j.split()[0]
for key in WordFreqDic.keys():
if WordCompare(j.split()[0],key)==1:
WordFreqDic[key]=WordFreqDic[key]+1
return WordFreqDic
if __name__=='__main__':
print GetKeyWordFreq(KeyWords,commite)
# print WordCompare('commited','commit')
結果如下:
/********************************
* 本文來自部落格 “李博Garvin“
* 轉載請標明出處:http://blog.csdn.net/buptgshengod
******************************************/
相關文章
- 分析“詞頻統計“專案程式
- 個人專案----詞頻統計WEB(部分功能)Web
- 個人專案----詞頻統計(補全功能)
- 個人專案----詞頻統計----單元測試
- 詞頻統計
- 詞頻統計mapreduce
- 詞頻統計-------------web版本Web
- python如何統計詞頻Python
- 【python技能】詞頻統計Python
- python實現詞頻統計Python
- PostgreSQL全文檢索-詞頻統計SQL
- spark下統計單詞頻次Spark
- 文字挖掘之語料庫、分詞、詞頻統計分詞
- 【week2】 詞頻統計效能分析
- Hadoop MapReduce之wordcount(詞頻統計)Hadoop
- 詞頻統計任務程式設計實踐程式設計
- ospaf-開源專案成熟度分析工具
- 對文字檔案中的單詞統計出現的次數(即詞頻)並按詞頻的從高到低排序排序
- Python統計四六級考試的詞頻Python
- 在Java中使用Lambda表示式統計詞頻Java
- Java簡單實現漢語詞頻統計Java
- 用Python如何統計文字檔案中的詞頻?(Python練習)Python
- Java、Scala、Python ☞ 本地WordCount詞頻統計對比JavaPython
- 統計知識:頻數表(百度名詞)
- 基於RDD的Spark應用程式開發案列講解(詞頻統計)Spark
- python TK庫 統計word文件單詞詞頻程式 UI選擇文件PythonUI
- Javafx-【直方圖】文字頻次統計工具 中文/英文單詞統計Java直方圖
- 《Cracking the Coding Interview程式設計師面試金典》----詞頻統計View程式設計師面試
- python 計算txt文字詞頻率Python
- 統計檔案中單詞個數
- 專案sql統計SQL
- Java 多執行緒讀取檔案並統計詞頻 例項 出神入化的《ThreadPoolExecutor》Java執行緒thread
- 小專案模組外包
- 統計檔案中出現的單詞次數
- 兩個coca略有不同詞頻檔案 比較
- LGWR group commits(原)MIT
- 專案管理名詞解釋專案管理
- 熱詞統計分析