数据去重的方法及装置与流程

文档序号:14940867发布日期:2018-07-13 20:43阅读:176来源:国知局

本发明涉及数据统计技术领域,具体涉及一种数据去重的方法及装置。



背景技术:

移动应用商店上架的应用可能存在重复的问题,有去重的需求;或者在对不同移动应用商店的应用进行数据分析时,也需要对相同的应用进行去重处理。

同一款应用会存在多个名称的问题。例如,同一款应用,在不同时间段会采用不同的名称,如视频应用软件会将最近热播剧的名字添加到应用名中。又例如,同一款应用,在不同应用商店可能会使用不同的名称,如腾讯qq、qq。当然还有其他情况导致同一款应用的名称不完全相同。

不同应用也会存在名称相似(存在相同字段)的问题。例如,百度与百度地图是两个不同的应用,但存在相同的字段(百度)。

现有的一种去重方式是建立基础表,在基础表中会记录同一款应用的各种不同名称,通过查表来实现去重。这种处理方式需要频繁更新基础表才能保证去重的准确性。

应当指出的是,以上仅是一种典型的应用。对于其他数据去重的应用,也可能会存在类似的问题。



技术实现要素:

针对现有技术中的缺陷,本发明提供的数据去重的方法及装置,不需要频繁更新表中数据,减少了数据存储量,提高了去重过程中数据比对效率。

第一方面,本发明提供的一种数据去重的方法,包括:根据获取的目标数据构建最长公共子串表;提取两个需要进行去重判断的数据的最长公共子串,并将所述最长公共子串与所述最长公共子串表中的子串进行比较;若所述最长公共子串表中不存在与所述最长公共子串相同的子串,则对两个所述数据进行去重处理。

本发明提供的数据去重的方法,在初期建立完最长公共子串表后,对于新产生的数据可根据最长公共子串表实现去重判断,不需要存储每个应用的不同名称,减少了数据存储量,且不需要频繁更新表;由于只需要与最长公共子串表中的数据进行比较,减少了比对的数据量,提高了比对效率。

优选地,所述根据获取的目标数据构建最长公共子串表,包括:根据获取的目标数据形成多个数据集合,每个数据集合对应一个最大公共子串;检测每个数据集合中的目标数据指代的对象是否相同,若不相同,则将该数据集合对应的最大公共子串存入最大公共子串表。

优选地,根据获取的目标数据形成多个数据集合,每个数据集合对应一个最大公共子串,包括:对获取的目标数据进行两两比对,提取最长公共子串;将具有相同最长公共子串的应用放入同一数据集合,所述相同最长公共子串为所述数据集合对应的最大公共子串。

优选地,所述提取两个需要进行去重判断的数据的最长公共子串,包括:逐个比较两个需要进行去重判断的数据中相同位置的字符,若比较的字符相同,则继续比较下一个字符,直到比较的字符不同为止,提取出相同的字符为最长公共子串。

优选地,所述目标数据和所述数据均为应用的应用名称。

第二方面,本发明提供的一种数据去重的装置,包括:最长公共子串表构建模块,用于根据获取的目标数据构建最长公共子串表;去重判断模块,用于提取两个需要进行去重判断的数据的最长公共子串,并将所述最长公共子串与所述最长公共子串表中的子串进行比较,若所述最长公共子串表中不存在与所述最长公共子串相同的子串,则对两个所述数据进行去重处理。

本发明提供的数据去重的装置,在初期建立完最长公共子串表后,对于新产生的数据可根据最长公共子串表实现去重判断,不需要存储每个应用的不同名称,减少了数据存储量,且不需要频繁更新表;由于只需要与最长公共子串表中的数据进行比较,减少了比对的数据量,提高了比对效率。

优选地,所述最长公共子串表构建模块具体用于:根据获取的目标数据形成多个数据集合,每个数据集合对应一个最大公共子串;检测每个数据集合中的目标数据指代的对象是否相同,若不相同,则将该数据集合对应的最大公共子串存入最大公共子串表。

优选地,所述最长公共子串表构建模块中,根据获取的目标数据形成多个数据集合,每个数据集合对应一个最大公共子串,包括:对获取的目标数据进行两两比对,提取最长公共子串;将具有相同最长公共子串的应用放入同一数据集合,所述相同最长公共子串为所述数据集合对应的最大公共子串。

优选地,所述去重判断模块中,提取两个需要进行去重判断的数据的最长公共子串,包括:逐个比较两个需要进行去重判断的数据中相同位置的字符,若比较的字符相同,则继续比较下一个字符,直到比较的字符不同为止,提取出相同的字符为最长公共子串。

优选地,所述目标数据和所述数据均为应用的应用名称。

附图说明

图1为本发明实施例所提供的数据去重的方法的流程图;

图2为本发明实施例所提供的数据去重的装置的结构框图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

如图1所示,本实施例提供了一种数据去重的方法,包括:

步骤s1,根据获取的目标数据构建最长公共子串表。

其中,目标数据为字符串格式,每个目标数据指代一个对象。例如,对象为应用,则目标数据可以是应用的名称。最长公共子串是指不同的目标数据中长度最长的相同字段,该字段在目标数据中应为连续不间断的。以应用的名称为例,“百度”与“百度地图”之间的最长公共子串是“百度”,“百度地图”与“百度地图导航”之间的最长公共子串是“百度地图”。

其中,最长公共子串表用于存储最长公共子串,存入最长公共子串表中的最长公共子串至少对应了两个不同的对象。例如,“百度地图”与“百度地图导航”之间的最长公共子串是“百度地图”,因为“百度地图”与“百度地图导航”为两个不同的应用,所以最长公共子串“百度地图”存入最长公共子串表中;“百度视频鬼吹灯”与“百度视频甄嬛传”之间的最长公共子串是“百度视频”,但是“百度视频鬼吹灯”与“百度视频甄嬛传”实际上是一个应用,因此,最长公共子串“百度视频”不会被存入最长公共子串表。

步骤s2,提取两个需要进行去重判断的数据的最长公共子串,并将该最长公共子串与最长公共子串表中的子串进行比较;若最长公共子串表中不存在与该最长公共子串相同的子串,则对这两个数据进行去重处理,否则不需要去重。

其中,存入最长公共子串表中的最长公共子串至少对应了两个不同的对象。以应用为例,例如两个应用的名称为“百度视频”和“百度视频热门电视剧潜伏”,其最长公共子串为“百度视频”,而“百度视频”在最长公共子串表中不存在,表明“百度视频”和“百度视频热门电视剧潜伏”为同一应用。例如两个应用的名称为“百度外卖”和“百度文库”,其最长公共子串为“百度”,在最长公共子串表中存在,所以“百度外卖”和“百度文库”为不同的应用。

现有的去重方式是建立基础表,在基础表中会记录同一对象的各种不同名称,通过查表来实现去重。现有的处理方式需要频繁更新基础表才能保证去重的准确性。而本实施例提供的数据去重的方法,在初期建立完最长公共子串表后,对于新产生的数据可根据最长公共子串表实现去重判断,不需要存储每个应用的不同名称,减少了数据存储量,且不需要频繁更新表;由于只需要与最长公共子串表中的数据进行比较,减少了比对的数据量,提高了比对效率。尤其对同一款应用因不同时期的宣传需要,对名称进行修改的情况,本实施例提供的数据去重的方法尤为有效。

其中,在步骤s1前,还需要对于目标数据进行筛选。以应用为例,如果去重关注的重点是热门应用,则先进行热门应用的筛选,具体是从库中查找下载量超过设定阈值的应用。应当指出的是,如果是其他类型的数据,筛选的指标可能是下载量、访问量等等。当然,这一步并不是必须的。

步骤s1中,根据获取的目标数据构建最长公共子串表的方法具体包括:

步骤s11,根据获取的目标数据形成多个数据集合,每个数据集合对应一个最大公共子串。

其中,数据集合是根据目标数据间的公共子串进行划分的。

例如:数据集合一{百度地图、百度地图导航、百度地图hd},最大公共子串为“百度地图”。

数据集合二{百度手机助手、百度手机卫士},最大公共子串为“百度手机”。

数据集合三{百度视频、百度视频热门电视剧潜伏、百度视频鬼吹灯}最大公共子串为“百度视频”。

数据集合四{百度外卖、百度视频、百度文库、百度音乐、百度新闻、百度贴吧},最大公共子串为“百度”。

步骤s12,检测每个数据集合中的目标数据指代的对象是否相同,若不相同,则将该数据集合对应的最大公共子串存入最大公共子串表。

例如:数据集合一中,百度地图、百度地图导航、百度地图hd为不同的应用,则将“百度地图”存入最大公共子串表。

数据集合二中,百度手机助手、百度手机卫士为不同的应用,则将“百度手机”存入最大公共子串表。

数据集合三中,百度视频、百度视频热门电视剧潜伏、百度视频鬼吹灯为相同的应用,则“百度视频”不放入最大公共子串表。

数据集合四中,百度外卖、百度视频、百度文库、百度音乐、百度新闻、百度贴吧为不同的应用,则将“百度”放入最大公共子串表。

步骤s1可以由人工辅助实现,也可以完全由程序实现。

如果是人工辅助实现,具体实现方式可以是:将筛选出来的目标数据导入表格中(例如excel表格),然后人工对表格中的数据进行筛选,根据筛选出来的数据得到若干数据集合,每个数据集合由具有公共子串但不是相同应用的应用构成,对应一个最大公共子串,将这些最大公共子串保存为最大公共子串表。在数据筛选时,使用excel中的排序功能,根据目标数据中的前几个字符进行排序,可以提高筛选的效率。

如果采用程序实现步骤s1,其具体实现方式为:对获取的目标数据进行两两比对,提取最长公共子串;将具有相同最长公共子串的应用放入同一数据集合,该相同最长公共子串即为数据集合对应的最大公共子串;检测每个数据集合中的目标数据指代的对象是否相同,若不相同,则将该数据集合对应的最大公共子串存入最大公共子串表。

其中,提取两个数据的最长公共子串的方法包括:逐个比较两个需要进行去重判断的数据中相同位置的字符,若比较的字符相同,则继续比较下一个字符,直到比较的字符不同为止,提取出相同的字符为最长公共子串。

由于中文语法的原因,应用的前几个字符不会随意变动。因此,在提取两个数据的最长公共子串时,是从两个数据的第一个字符开始判断的。这样判断的优点是数据数个月之内不会发生变化,不用每月进行重新判断,可以半年更新一次不同开发者的表,大大降低更新表的频率,也不会影响判断的准确率。

其中,检测每个数据集合中的目标数据指代的对象是否相同的方法有很多种。以应用为例,利用爬虫技术从应用商店爬取应用信息,根据应用信息判断是否是相同的应用。

基于与上述数据去重的方法相同的发明构思,本实施例还提供了一种数据去重的装置,如图2所示,包括:最长公共子串表构建模块,用于根据获取的目标数据构建最长公共子串表;去重判断模块,用于提取两个需要进行去重判断的数据的最长公共子串,并将最长公共子串与最长公共子串表中的子串进行比较,若最长公共子串表中不存在与最长公共子串相同的子串,则对两个数据进行去重处理。

本实施例提供的数据去重的装置,在初期建立完最长公共子串表后,对于新产生的数据可根据最长公共子串表实现去重判断,不需要存储每个应用的不同名称,减少了数据存储量,且不需要频繁更新表;由于只需要与最长公共子串表中的数据进行比较,减少了比对的数据量,提高了比对效率。尤其对同一款应用因不同时期的宣传需要,对名称进行修改的情况,本实施例提供的数据去重的方法尤为有效。

其中,最长公共子串表构建模块具体用于:根据获取的目标数据形成多个数据集合,每个数据集合对应一个最大公共子串;检测每个数据集合中的目标数据指代的对象是否相同,若不相同,则将该数据集合对应的最大公共子串存入最大公共子串表。

其中,最长公共子串表构建模块中,根据获取的目标数据形成多个数据集合,每个数据集合对应一个最大公共子串,包括:对获取的目标数据进行两两比对,提取最长公共子串;将具有相同最长公共子串的应用放入同一数据集合,相同最长公共子串为数据集合对应的最大公共子串。

其中,去重判断模块中,提取两个需要进行去重判断的数据的最长公共子串,包括:逐个比较两个需要进行去重判断的数据中相同位置的字符,若比较的字符相同,则继续比较下一个字符,直到比较的字符不同为止,提取出相同的字符为最长公共子串。

其中,目标数据和数据均为应用的应用名称。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1