專利名稱:一種電信領域用戶呼叫頻次排名的方法
技術領域:
本發(fā)明涉及一種電信領域用戶呼叫頻次排名的方法,尤其涉及一種在電信領域對用戶呼叫行為進行分析,特別適用于對電話號碼頻次或通話時長的數據特定鍵值的快速排名方法。
背景技術:
電信運營商經常需要對其用戶進行一些呼叫行為分析,提供市場部門相關數據,用于維護其客戶群,其中忙戶排序就是一種常用的呼叫行為分析方式。
目前,對用戶呼叫行為的分析一般都采取數據庫或數據倉庫技術,利用數據庫本身的檢索、排序功能實現(xiàn)對呼叫頻次的統(tǒng)計和排名,即在數據庫或數據倉庫內建立呼叫記錄的數據表,并利用外部工具將數據錄入或導入該數據表,或者利用數據倉庫的數據抽取、轉換、加載手段從其他數據源導入數據,再利用數據庫自身的功能對指定鍵值,如對主叫號碼、被叫號碼統(tǒng)計其呼叫頻次或通話時長,并最終利用數據庫的排序功能輸出最終結果。
但是,在海量數據處理場合,一般情況下,每天數據條數超過1億條,每條數據長度超過100字節(jié),使用數據庫或數據倉庫則會帶來嚴重的執(zhí)行效率問題,特別是運算速度問題,當連接到數據庫的多個終端同時進行分析時,還可能存在數據庫資源和網絡資源爭用的問題,這些問題都會嚴重地影響分析的執(zhí)行效率,如果需要提高效率,則必須增加昂貴的設備投資,如升級服務器、增加CPU、擴充內存、提高網絡帶寬等,從而降低了經濟效益。
發(fā)明內容
本發(fā)明的目的是發(fā)明一種提高分析的效率,不增加設備投資的電信領域用戶呼叫頻次排名的方法。
一種電信領域用戶呼叫頻次排名的方法,其特征在于,從文件中分析數據提取鍵值,采用散列算法對鍵值進行統(tǒng)計,再利用快速排序算法實現(xiàn)對統(tǒng)計結果的排名及輸出,其方法為
1)首先對數據文件預分析及鍵值選擇對數據文件格式進行分析,以便區(qū)分出不同的字段(鍵值),并對需要排名的鍵值進行選擇;2)然后進行鍵值提取、散列統(tǒng)計在完成數據文件預分析及鍵值選擇后,即可按照文件格式對選擇的鍵值進行逐行提取,采用號碼值模散列空間的方式進行定位及累加,將每個不同的號碼散列到不同的存儲位置,并得出每個號碼出現(xiàn)的次數,利用取模運算,將模數作為散列表的鍵進行定位;3)最后進行統(tǒng)計數據讀取、排名及輸出最后,將散列表中的值導入到數組中,利用快速排序算法在內存完成快速排序,按數據文件出現(xiàn)的頻次輸出到排名結果文件。
所述的待處理的數據文件格式為主叫號碼、被叫號碼、呼叫時間、應答時間、掛機時間、應答類型、呼叫結果、通話時長,每行數據對應一條呼叫記錄。
本發(fā)明利用電話號碼的散列值(如模數)直接尋址到鏈表頭,提高統(tǒng)計效率,如果采用順序查找法,在極端情況需要比較內存中已有的所有號碼,而且隨著號碼的增多,比較次數呈指數級上升。如果采用二分法查找,則要求所有的號碼都已經排序,但每次的新號碼的插入都將導致再次排序。下表對這三種算法進行比較表一、算法的性能比較
表中n為存儲表中元素的個數。
本發(fā)明的運算只需要在一臺PC機上即可完成,如果排名的號碼較多,可適當擴展PC機的內存,最多到2G即可。
本發(fā)明的優(yōu)點是可以極大地提高分析的效率,也不需要昂貴的設備投資。
圖1為電信領域用戶呼叫頻次排名技術方案的流程圖;圖2為電信領域用戶呼叫頻次排名的方法實施例的程序流程圖。
具體實施例方式
以下結合附圖和實施例對本發(fā)明作進一步說明。
如圖1所示,為電信領域用戶呼叫頻次排名技術方案的流程圖,所述的電信領域用戶呼叫頻次排名的方法是從文件中分析數據提取鍵值,采用散列算法對鍵值進行統(tǒng)計,再利用快速排序算法實現(xiàn)對數據文件的排名及輸出,其方法為1)首先對數據文件預分析及鍵值選擇對數據文件格式進行分析,以便區(qū)分出不同的字段(鍵值),并對需要排名的鍵值進行選擇;所述的待處理的數據文件格式為主叫號碼、被叫號碼、呼叫時間、應答時間、掛機時間、應答類型、呼叫結果、通話時長,每行數據對應一條呼叫記錄;2)然后進行鍵值提取、散列統(tǒng)計在完成數據文件預分析及鍵值選擇后,即可按照文件格式對選擇的鍵值進行逐行提取,比如提取每一行的主叫號碼,由于主叫號碼的數量非常龐大,為了提高統(tǒng)計效率,我們采用號碼值模散列空間的方式進行定位及累加,將每個不同的號碼散列到不同的存儲位置,并得出每個號碼出現(xiàn)的次數,因為電話號碼一般是數字,所以本排名方法利用取模運算,將模數作為散列表的鍵進行定位;3)最后進行統(tǒng)計數據讀取、排名及輸出最后,將散列表中的值導入到數組中,利用快速排序算法在內存完成快速排序,按號碼出現(xiàn)的頻次輸出到排名結果文件。
現(xiàn)以上海市8位固定電話號碼、對主叫頻次排名為例進行說明,如圖2所示,為電信領域用戶呼叫頻次排名的方法實施例的程序流程圖,各步驟的說明如下1)初始化散列表定義散列表的大小(項數),為了盡量將不同的號碼散列開來,可定義一個較大值,如1000000(一百萬),為方便下面步驟的說明,定義該散列表為HashList[1000000];2)讀取文件將呼叫記錄文件逐行讀出,提取每一行中的主叫號碼;3)散列表定位將號碼與散列表的項數取模運算,將模數作為散列表的鍵,即可直接定位到該號碼的存儲位置。如號碼55886688,與1000000取模,得到模數886688(即號碼的后6位),該號碼的存儲位置就是HashList[886688];4)頻次統(tǒng)計首先判斷該位置的鏈表是否為空,如果為空,說明還沒有存儲過統(tǒng)計數據,新建一鏈表,存儲該號碼和頻次值1;如果鏈表不為空,在鏈表中查找該號碼,如果找到該號碼,則將該號碼的頻次值加1,如果未找到,則在鏈表末尾加入該號碼和頻次值1;5)快速排序將散列表中的所有鏈表的值(主叫號碼+頻次)導入到一個一維數組中,利用快速排序方法,如Visual C++的qsort函數,對頻次排名,最后,將排序結果寫入文件。
本發(fā)明的實際運行數據排名算法與傳統(tǒng)數據庫排名算法對比表
從上表中可以很明顯地看出本排名方法比數據庫排序要快得多,而且如果將數據庫排序的記錄集保存到本地文件還將耗時更多。隨著排序范圍的增大,兩者間速度的差異還會更明顯。
權利要求
1.一種電信領域用戶呼叫頻次排名的方法,其特征在于,從文件中分析數據提取鍵值,采用散列算法對鍵值進行統(tǒng)計,再利用快速排序算法實現(xiàn)對統(tǒng)計結果的排名及輸出,其方法為1)首先對數據文件預分析及鍵值選擇對數據文件格式進行分析,以便區(qū)分出不同的字段(鍵值),并對需要排名的鍵值進行選擇;2)然后進行鍵值提取、散列統(tǒng)計在完成數據文件預分析及鍵值選擇后,即可按照文件格式對選擇的鍵值進行逐行提取,采用號碼值模散列空間的方式進行定位及累加,將每個不同的號碼散列到不同的存儲位置,并得出每個號碼出現(xiàn)的次數;3)最后進行統(tǒng)計數據讀取、排名及輸出最后,將散列表中的值導入到數組中,利用快速排序算法在內存完成快速排序,按號碼出現(xiàn)的頻次輸出到排名結果文件。
2.根據權利要求1所述的一種電信領域用戶呼叫頻次排名的方法,其特征在于,所述的待處理的數據文件格式為主叫號碼、被叫號碼、呼叫時間、應答時間、掛機時間、應答類型、呼叫結果、通話時長,每行數據對應一條呼叫記錄。
全文摘要
本發(fā)明涉及一種電信領域用戶呼叫頻次排名的方法,其特征在于,從文件中分析數據提取鍵值,采用散列算法對鍵值進行統(tǒng)計,再利用快速排序算法實現(xiàn)對統(tǒng)計結果的排名及輸出,本發(fā)明的運算只需要在一臺PC機上即可完成,如果排名的號碼較多,可適當擴展PC機的內存,最多到2G即可。本發(fā)明的優(yōu)點是可以極大地提高分析的效率,也不需要昂貴的設備投資。
文檔編號H04M3/36GK1905591SQ200510028099
公開日2007年1月31日 申請日期2005年7月26日 優(yōu)先權日2005年7月26日
發(fā)明者王傳法, 蔣乃華 申請人:上海欣泰通信技術有限公司