一种电信领域用户呼叫频次排名的方法

文档序号:7613399阅读:637来源:国知局
专利名称:一种电信领域用户呼叫频次排名的方法
技术领域
本发明涉及一种电信领域用户呼叫频次排名的方法,尤其涉及一种在电信领域对用户呼叫行为进行分析,特别适用于对电话号码频次或通话时长的数据特定键值的快速排名方法。
背景技术
电信运营商经常需要对其用户进行一些呼叫行为分析,提供市场部门相关数据,用于维护其客户群,其中忙户排序就是一种常用的呼叫行为分析方式。
目前,对用户呼叫行为的分析一般都采取数据库或数据仓库技术,利用数据库本身的检索、排序功能实现对呼叫频次的统计和排名,即在数据库或数据仓库内建立呼叫记录的数据表,并利用外部工具将数据录入或导入该数据表,或者利用数据仓库的数据抽取、转换、加载手段从其他数据源导入数据,再利用数据库自身的功能对指定键值,如对主叫号码、被叫号码统计其呼叫频次或通话时长,并最终利用数据库的排序功能输出最终结果。
但是,在海量数据处理场合,一般情况下,每天数据条数超过1亿条,每条数据长度超过100字节,使用数据库或数据仓库则会带来严重的执行效率问题,特别是运算速度问题,当连接到数据库的多个终端同时进行分析时,还可能存在数据库资源和网络资源争用的问题,这些问题都会严重地影响分析的执行效率,如果需要提高效率,则必须增加昂贵的设备投资,如升级服务器、增加CPU、扩充内存、提高网络带宽等,从而降低了经济效益。

发明内容
本发明的目的是发明一种提高分析的效率,不增加设备投资的电信领域用户呼叫频次排名的方法。
一种电信领域用户呼叫频次排名的方法,其特征在于,从文件中分析数据提取键值,采用散列算法对键值进行统计,再利用快速排序算法实现对统计结果的排名及输出,其方法为
1)首先对数据文件预分析及键值选择对数据文件格式进行分析,以便区分出不同的字段(键值),并对需要排名的键值进行选择;2)然后进行键值提取、散列统计在完成数据文件预分析及键值选择后,即可按照文件格式对选择的键值进行逐行提取,采用号码值模散列空间的方式进行定位及累加,将每个不同的号码散列到不同的存储位置,并得出每个号码出现的次数,利用取模运算,将模数作为散列表的键进行定位;3)最后进行统计数据读取、排名及输出最后,将散列表中的值导入到数组中,利用快速排序算法在内存完成快速排序,按数据文件出现的频次输出到排名结果文件。
所述的待处理的数据文件格式为主叫号码、被叫号码、呼叫时间、应答时间、挂机时间、应答类型、呼叫结果、通话时长,每行数据对应一条呼叫记录。
本发明利用电话号码的散列值(如模数)直接寻址到链表头,提高统计效率,如果采用顺序查找法,在极端情况需要比较内存中已有的所有号码,而且随着号码的增多,比较次数呈指数级上升。如果采用二分法查找,则要求所有的号码都已经排序,但每次的新号码的插入都将导致再次排序。下表对这三种算法进行比较表一、算法的性能比较

表中n为存储表中元素的个数。
本发明的运算只需要在一台PC机上即可完成,如果排名的号码较多,可适当扩展PC机的内存,最多到2G即可。
本发明的优点是可以极大地提高分析的效率,也不需要昂贵的设备投资。


图1为电信领域用户呼叫频次排名技术方案的流程图;图2为电信领域用户呼叫频次排名的方法实施例的程序流程图。
具体实施例方式
以下结合附图和实施例对本发明作进一步说明。
如图1所示,为电信领域用户呼叫频次排名技术方案的流程图,所述的电信领域用户呼叫频次排名的方法是从文件中分析数据提取键值,采用散列算法对键值进行统计,再利用快速排序算法实现对数据文件的排名及输出,其方法为1)首先对数据文件预分析及键值选择对数据文件格式进行分析,以便区分出不同的字段(键值),并对需要排名的键值进行选择;所述的待处理的数据文件格式为主叫号码、被叫号码、呼叫时间、应答时间、挂机时间、应答类型、呼叫结果、通话时长,每行数据对应一条呼叫记录;2)然后进行键值提取、散列统计在完成数据文件预分析及键值选择后,即可按照文件格式对选择的键值进行逐行提取,比如提取每一行的主叫号码,由于主叫号码的数量非常庞大,为了提高统计效率,我们采用号码值模散列空间的方式进行定位及累加,将每个不同的号码散列到不同的存储位置,并得出每个号码出现的次数,因为电话号码一般是数字,所以本排名方法利用取模运算,将模数作为散列表的键进行定位;3)最后进行统计数据读取、排名及输出最后,将散列表中的值导入到数组中,利用快速排序算法在内存完成快速排序,按号码出现的频次输出到排名结果文件。
现以上海市8位固定电话号码、对主叫频次排名为例进行说明,如图2所示,为电信领域用户呼叫频次排名的方法实施例的程序流程图,各步骤的说明如下1)初始化散列表定义散列表的大小(项数),为了尽量将不同的号码散列开来,可定义一个较大值,如1000000(一百万),为方便下面步骤的说明,定义该散列表为HashList[1000000];2)读取文件将呼叫记录文件逐行读出,提取每一行中的主叫号码;3)散列表定位将号码与散列表的项数取模运算,将模数作为散列表的键,即可直接定位到该号码的存储位置。如号码55886688,与1000000取模,得到模数886688(即号码的后6位),该号码的存储位置就是HashList[886688];4)频次统计首先判断该位置的链表是否为空,如果为空,说明还没有存储过统计数据,新建一链表,存储该号码和频次值1;如果链表不为空,在链表中查找该号码,如果找到该号码,则将该号码的频次值加1,如果未找到,则在链表末尾加入该号码和频次值1;5)快速排序将散列表中的所有链表的值(主叫号码+频次)导入到一个一维数组中,利用快速排序方法,如Visual C++的qsort函数,对频次排名,最后,将排序结果写入文件。
本发明的实际运行数据排名算法与传统数据库排名算法对比表

从上表中可以很明显地看出本排名方法比数据库排序要快得多,而且如果将数据库排序的记录集保存到本地文件还将耗时更多。随着排序范围的增大,两者间速度的差异还会更明显。
权利要求
1.一种电信领域用户呼叫频次排名的方法,其特征在于,从文件中分析数据提取键值,采用散列算法对键值进行统计,再利用快速排序算法实现对统计结果的排名及输出,其方法为1)首先对数据文件预分析及键值选择对数据文件格式进行分析,以便区分出不同的字段(键值),并对需要排名的键值进行选择;2)然后进行键值提取、散列统计在完成数据文件预分析及键值选择后,即可按照文件格式对选择的键值进行逐行提取,采用号码值模散列空间的方式进行定位及累加,将每个不同的号码散列到不同的存储位置,并得出每个号码出现的次数;3)最后进行统计数据读取、排名及输出最后,将散列表中的值导入到数组中,利用快速排序算法在内存完成快速排序,按号码出现的频次输出到排名结果文件。
2.根据权利要求1所述的一种电信领域用户呼叫频次排名的方法,其特征在于,所述的待处理的数据文件格式为主叫号码、被叫号码、呼叫时间、应答时间、挂机时间、应答类型、呼叫结果、通话时长,每行数据对应一条呼叫记录。
全文摘要
本发明涉及一种电信领域用户呼叫频次排名的方法,其特征在于,从文件中分析数据提取键值,采用散列算法对键值进行统计,再利用快速排序算法实现对统计结果的排名及输出,本发明的运算只需要在一台PC机上即可完成,如果排名的号码较多,可适当扩展PC机的内存,最多到2G即可。本发明的优点是可以极大地提高分析的效率,也不需要昂贵的设备投资。
文档编号H04M3/36GK1905591SQ200510028099
公开日2007年1月31日 申请日期2005年7月26日 优先权日2005年7月26日
发明者王传法, 蒋乃华 申请人:上海欣泰通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1