首页> 中国专利> 唯一自然人标识计算的方法、装置、电子设备和存储介质

唯一自然人标识计算的方法、装置、电子设备和存储介质

摘要

本发明提供了一种唯一自然人标识计算的方法、装置、电子设备和存储介质,其中唯一自然人标识计算的方法包括:根据用户和设备的信息生成用户设备宽表,所述用户设备宽表中包括与用户和设备相关的字段和其对应的值:进行第一次迭代计算,用户设备宽表中每一行选择第一个不为空的值,作为UniqueId,形成单独一列,每一行原先的内容作为Context;形成第一次迭代计算表;进行第一次聚合,把第一次迭代计算表中具有相同UniqueId的行合并,去掉UniqueId的列,形成第一次聚合表;循环迭代,把第一次聚合表的每一列字段依次作为UniqueId,重复进行上述迭代计算和聚合,形成最后的聚合表;将最后的聚合表的每一行都标记唯一自然人标识。

著录项

  • 公开/公告号CN114862449A

    专利类型发明专利

  • 公开/公告日2022-08-05

    原文格式PDF

  • 申请/专利权人 上海虎瑾信息技术有限公司;

    申请/专利号CN202210376670.8

  • 发明设计人 宋亚恒;

    申请日2022-04-12

  • 分类号G06Q30/02(2012.01);G06F16/2457(2019.01);G06F16/2458(2019.01);

  • 代理机构北京市盈科律师事务所 11344;

  • 代理人陈晨

  • 地址 200241 上海市闵行区紫星路588号1幢1层050室

  • 入库时间 2023-06-19 16:16:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-23

    实质审查的生效 IPC(主分类):G06Q30/02 专利申请号:2022103766708 申请日:20220412

    实质审查的生效

  • 2022-08-05

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及圈选计算领域。

背景技术

唯一自然人标识算法主要是为人群圈选逻辑提供唯一的维度进行人群包定向输出。

在进行业务精细化运营的过程中,人群圈选计算时可能会通过不同的ID进行(既要、又要、还要),例如:需要圈选出过去30天点过轮胎广告(可能未注册,仅有设备信息)并且性别是男年龄在30岁以内的所有用户,显然这需要从设备ID与用户ID两个维度进行圈选,如果按照这样的逻辑实现,圈选过程会相当复杂,而且性能不高,因此急需把数据关联到某一个维度,在这个维度上进行圈选,那么就会很容易了,这就是唯一自然人标识算法应用场景。

目前业界大部分的做法都是基于GraphX的图计算能力来统一计算的,基于Spark-GraphX的图计算算法仅支持节点是长整型的类型,不支持诸如设备类的(GUID类型),这样如果要使用的话需要多一层映射关系,计算前进行转换一次,计算后还需要转换回来。其缺点主要在于以下几方面:

第一、不支持直接字符串ID计算;

第二、需要维护映射关系;

第三、大批量数据计算因映射关系中间环节导致很慢。

发明内容

下文呈现各种示例性技术方案的概述。在以下概述中可以进行一些简化和省略,其意在突出并介绍各种示例性技术方案的一些方面,但不限制本发明的范围。将在后续部分呈现足以允许本领域的普通技术人员产生并使用本发明概念的示例性技术方案的详细描述。

本发明的技术方案提供一种唯一自然人标识计算的方法,包括:根据用户和设备的信息生成用户设备宽表,所述用户设备宽表中包括与用户和设备相关的字段和其对应的值:进行第一次迭代计算,用户设备宽表中每一行选择第一个不为空的值,作为UniqueId,形成单独一列,每一行原先的内容作为Context;形成第一次迭代计算表;进行第一次聚合,把第一次迭代计算表中具有相同UniqueId的行合并,去掉UniqueId的列,形成第一次聚合表;循环迭代,把第一次聚合表的每一列字段依次作为UniqueId,重复进行上述迭代计算和聚合,形成最后的聚合表;将最后的聚合表的每一行都标记唯一自然人标识。

可选地,所述用户设备宽表至少包括以下至少之一:UserId、DeviceId、phone、imei、idfa、openid、Tags。

可选地,所述方法还包括:循环迭代中将迭代计算表或聚合表的数据重新分布,平均分配给不同的机器。

可选地,所述方法还包括:迭代计算中将迭代计算表的数据序列化和反序列化的操作。

可选地,所述聚合表包括Context,判断Context每一列内容是否有重复,有重复则合并。

本发明的另一个技术方案提供了一种唯一自然人标识计算的装置,包括:建表模块,被配置为根据用户和设备的信息生成用户设备宽表,所述用户设备宽表中包括与用户和设备相关的字段和其对应的值:计算模块,被配置为:进行第一次迭代计算,用户设备宽表中每一行选择第一个不为空的值,作为UniqueId,形成单独一列,每一行原先的内容作为Context;形成第一次迭代计算表;进行第一次聚合,把第一次迭代计算表中具有相同UniqueId的行合并,去掉UniqueId的列,形成第一次聚合表;循环迭代,把第一次聚合表的每一列字段依次作为UniqueId,重复进行上述迭代计算和聚合,形成最后的聚合表;将最后的聚合表的每一行都标记唯一自然人标识。

可选地,所述用户设备宽表至少包括以下至少之一:UserId、DeviceId、phone、imei、idfa、openid、Tags。

可选地,计算模块还被配置为在循环迭代中将迭代计算表或聚合表的数据重新分布,平均分配给不同的机器。

可选地,计算模块还被配置为在迭代计算中将迭代计算表的数据序列化和反序列化的操作。

可选地,所述聚合表包括Context,判断Context每一列内容是否有重复,有重复则合并。

本发明的另一个技术方案还提供了一种电子设备,包括:处理器、存储器以及存储在存储器上运行的计算机程序,所述处理器执行计算机程序时实现上述任一个技术方案所述的方法的步骤。

本发明的另一个技术方案还提供了一种计算机可读存储介质,所述计算机程序被处理器执行时实现上述任一个技术方案所述的方法的步骤。

本发明的技术方案主要具有以下几个发面的有益效果:

第一、通过自研的大规模连通图算法,直接基于原生GUID类型计算出连通图,快速的把不同ID维度所有的连通图聚合出来,并赋值唯一ID,相对行业采用Spark-GraphX计算的方案本方法不需要在进行一层ID映射操作,直接对原生数据进行操作即可,所见即所得。

第二、把网站内外所有能够关联上的用户都打上唯一的ID,并且生成的OneId是一种自增的数值类型,方便后续的操作(例如BitMap),可以完美支持基于bitmap进行人群圈选的高效方案

第三、该算法大大降低了OneID生成的时间,提高了效率。

附图说明

为了更好地理解各种示例性实施例,可以参考附图,在附图中:

图1示出了实施例提供的唯一自然人标识计算的方法的流程示意图;

图2示出了实施例提供的唯一自然人标识计算的方法中部分步骤的示意图;

图3示出了实施例提供的唯一自然人标识计算的方法中部分步骤的示意图;

图4示出了实施例提供的唯一自然人标识计算的装置的结构示意图。

为了便于理解,相同的附图标记已用于指代具有基本上相同或类似结构和/或基本上相同或类似功能的元件。

具体实施方式

描述和图式示出了本发明的原理。因此,将了解,本领域的技术人员将能够设计各种布置,尽管本文中未明确地描述或示出所述布置,但所述布置体现本发明的原理且包括在本发明的范围内。此外,本文中所引述的所有例子主要旨在明确地用于教学目的,以帮助读者理解本发明的原理和由发明人提供的用以深化本领域的概念,并且所有例子应视为并不限于此类特定引述的例子和条件。另外,如本文中所使用,除非另有指示(例如,“或另外”或“或在替代方案中”),否则术语“或”是指非排他性的或(即,和/或)。并且,本文中所描述的各种实施例不一定相互排斥,因为一些实施例可以与一个或多个其它实施例组合以形成新的实施例。

术语解释:

图计算:指图计算里边的最大联通图算法。

唯一自然人标识:在互联网电商里边,一个人的唯一标识可以是用户ID、设备ID、OpenID、手机号等等,分别散落在各个业务领域里边,而在有些场景下需要能够识别到这些ID是是一个人,因此,通过关联这些账号给他赋值一个唯一标识ID就是唯一自然人标识。

第一个实施例提供了一种唯一自然人标识计算的方法,图1示出了实施例提供的唯一自然人标识计算的方法的流程示意图,所述方法包括:

S101,根据用户和设备的信息生成用户设备宽表,所述用户设备宽表中包括与用户和设备相关的字段和其对应的值:

所述与用户和设备相关的字段可以包括:用户ID、设备ID、手机号、手机序列号、广告标识符、数字身份识别框架、用户属性标签和设备行为标签,也可以包括其他与用户、设备相关的信息。

用户、设备存在一对多、多对一的情况。首先通过数仓体系(各维度关系)将用户和设备的信息生成关系宽表。例如,如图2所示,已有三张表记录用户和设备的关系:第一是用户标签表,包括UserId(用户ID)和tag(例如包括属性标签)等;第二是用户设备表,包括UserId、DeviceId(设备ID)、phone(手机号)、imei(手机序列号)、idfa(广告标识符)、openid(数字身份识别框架)等;设备行为表,包括DeviceId和Tags设备行为等(例如点击广告等行为)。通过UserId作为维度把用户标签表和用户设备表关联起来,用DeviceId作为维度把用户设备表和设备行为表关联起来,形成用户设备宽表,该用户设备宽表包括UserId、DeviceId、phone、imei、idfa、openid、Tags(属性)和Tags(设备行为)等。

例如图2的用户设备宽表,第一行是UniqueId=UID,Context:DeviceId,imei,idfa,openid,Tags,第二行是UniqueId=DeviceId,Context:null,idfa,null,T1,T2,第三行是UniqueId=DeviceId,Context:imei,null,null,T1,t3。

S102,进行第一次迭代计算(Map计算,一种分布式算法),用户设备宽表中每一行选择第一个不为空的值,作为UniqueId,形成单独一列,每一行原先的内容作为Context;形成第一次迭代计算表;

即为临时聚合Key;例如图2的用户设备宽表,第一行第一个不为空的是UserId(UID),第二行第一个不为空的是DeviceId,null就是空值,第三行第一个不为空的是DeviceId,分别将他们作为UniqueId。把用户设备宽表数据转换成(UniqueId,Context)类型数据,其中Context类型包含了用户、设备各个维度的综合信息,例如UserId、DeviceId、imei、idfa、openid、Tags和设备行为等等。

其中可以进行格式序列化与反序列化操作(Serialize和DeSerialize)。

S103,进行第一次聚合,把第一次迭代计算表中具有相同UniqueId的行合并,并去掉UniqueId的列,形成第一次聚合表(Context表);

S104,循环迭代,把第一次聚合表的每一列字段依次作为UniqueId,重复进行上述迭代计算和聚合,形成最后的聚合表(Context表);

基于用户设备宽表开始第一次迭代计算,按顺序扫描用户设备宽表的字段,例如UserId、DeviceId、imei、idfa、openid、Tags和设备行为等。将UserId作为UniqueId进行第二次迭代计算和聚合,将DeviceId作为UniqueId进行第三次迭代计算和聚合,依此类推,直到所有的字段都完成迭代计算和聚合。遇到空值可以取随机值。

还可以判断Context每一列是否有重复,对Context进行合并操作,通过其中Key来合并(Reduce By key),相同的Key合并在一起,合并后是一个新的Context(Merged ByField with Serialize)。

循环迭代中可采用FlatMap操作,该过程是基于序列化后的Context信息中的某个维度展开,展开后可能会导致数据爆炸,为了解决爆炸带来的不均衡问题,这里中间加了一个数据重新分布(Repartition)的环节,可将数据平均分布在不同的机器上,可有效的解决数据倾斜问题,为后续Context的再聚合打下了基础,不断的进行迭代直至最后一个维度。

S105,将最后的聚合表的每一行都标记唯一自然人标识。

当迭代完成后,把Context反解成结构化数据,然后为每行结构化数据赋予自增的唯一自然人标识ID,这就是所谓的OneID,过程可以是ZipWithIndex,最终生成如图2和图3的最下面的表的数据结构(把所有维度能关联上的标识都关联了起来)。

整个过程可以称为分布式连通图算法,最后生成连通图宽表。

第二个实施例还提供了一种唯一自然人标识计算的方法的实例,例如:

用户标签表如表1所示,UserId用户ID分别是U1、U2、U3,Tags(属性)可以包括用户年龄、性别等,可以用T1、T2、T3、T4表示,省略号代表可能还存在其他字段、特征等。

表1

用户设备和设备行为表合并如表2所示,DeviceId是设备ID,phone是电话,Tags(行为)可以包括设备行为,例如点击广告等,Null代表空值。

表2

用户设备宽表就是根据UserId为维度把表1和表2进行融合,得到如表3所示的用户设备宽表:

表3

根据表3进行第一次迭代计算,选择每一行从左到右第一个不为空的字段作为UniqueID,最后一行第一个是空值,第二是D4,所以第一个不为空的就是D4。计算得到如表4所示的包含key和value的表:

表4

然后进行第一次聚合,(因UniqueID没有重复,无需合并,所以聚合结果为原始值),得到表5所示:

表5

第一次迭代、聚合最终得到的Context如表6所示:

表6

然后进行第二次迭代(以表6的Context中的第一列UserId为维度,空值取随机值),得到如表7所示:

表7

第二次聚合:(因为UniqueID无重复的因此还是原来结果),如表8所示:

表8

按照Context的UserId再一次聚合(UserId不重复所以原始值)得到如表9所示:

表9

然后进行第三次迭代(以表9的Context中的第二列DeviceId为维度),得到如表10所示:

表10

第三次聚合:(按照UniqueID为维度进行聚合,把第一行和第三行的D1合并),得到如表11所示:

表11

按照Context的DeviceId再一次聚合得到如下(DeviceId不重复所以原始值),得到如表12所示:

表12

第四次迭代,(按照表12的第三列手机号phone为维度展开),如表13所示:

表13

第四次聚合,(按照手机号phone聚合,把第二行和第四行的手机号166合并),如表14所示:

表14

按照表14的Context的phone再一次聚合(phone这一列作为Key有重复,其中153,166与153,166重复),合并后得到表15所示:

表15

至此,所有字段都参与了迭代计算,迭代计算完成,将Context标记唯一值(Onekey、OneID),得到最终结果,到如表16所示:

表16

第三个实施例提供了一种唯一自然人标识计算的装置,参见图4,所述装置包括建表模块201和计算模块202。

建表模块201,被配置为根据用户和设备的信息生成用户设备宽表,所述用户设备宽表中包括与用户和设备相关的字段和其对应的值:

所述与用户和设备相关的字段可以包括:用户ID、设备ID、手机号、手机序列号、广告标识符、数字身份识别框架、用户属性标签和设备行为标签,也可以包括其他与用户、设备相关的信息。

用户、设备存在一对多、多对一的情况。首先通过数仓体系(各维度关系)将用户和设备的信息生成关系宽表。例如,如图2所示,已有三张表记录用户和设备的关系:第一是用户标签表,包括UserId(用户ID)和tag(例如包括属性标签)等;第二是用户设备表,包括UserId、DeviceId(设备ID)、phone(手机号)、imei(手机序列号)、idfa(广告标识符)、openid(数字身份识别框架)等;设备行为表,包括DeviceId和Tags设备行为等(例如点击广告等行为)。通过UserId作为维度把用户标签表和用户设备表关联起来,用DeviceId作为维度把用户设备表和设备行为表关联起来,形成用户设备宽表,该用户设备宽表包括UserId、DeviceId、phone、imei、idfa、openid、Tags(属性)和Tags(设备行为)等。

例如图2的用户设备宽表,第一行是UniqueId=UID,Context:DeviceId,imei,idfa,openid,Tags,第二行是UniqueId=DeviceId,Context:null,idfa,null,T1,T2,第三行是UniqueId=DeviceId,Context:imei,null,null,T1,t3。

计算模块202,被配置为进行第一次迭代计算(Map计算,一种分布式算法),用户设备宽表中每一行选择第一个不为空的值,作为UniqueId,形成单独一列,每一行原先的内容作为Context;形成第一次迭代计算表;

即为临时聚合Key;例如图2的用户设备宽表,第一行第一个不为空的是UserId(UID),第二行第一个不为空的是DeviceId,null就是空值,第三行第一个不为空的是DeviceId,分别将他们作为UniqueId。把用户设备宽表数据转换成(UniqueId,Context)类型数据,其中Context类型包含了用户、设备各个维度的综合信息,例如UserId、DeviceId、imei、idfa、openid、Tags和设备行为等等。

其中可以进行格式序列化与反序列化操作(Serialize和DeSerialize)。

计算模块202,还被配置为进行第一次聚合,把第一次迭代计算表中具有相同UniqueId的行合并,并去掉UniqueId的列,形成第一次聚合表(Context表);

计算模块202,还被配置为循环迭代,把第一次聚合表的每一列字段依次作为UniqueId,重复进行上述迭代计算和聚合,形成最后的聚合表(Context表);

基于用户设备宽表开始第一次迭代计算,按顺序扫描用户设备宽表的字段,例如UserId、DeviceId、imei、idfa、openid、Tags和设备行为等。将UserId作为UniqueId进行第二次迭代计算和聚合,将DeviceId作为UniqueId进行第三次迭代计算和聚合,依此类推,直到所有的字段都完成迭代计算和聚合。遇到空值可以取随机值。

还可以判断Context每一列是否有重复,对Context进行合并操作,通过其中Key来合并(Reduce By key),相同的Key合并在一起,合并后是一个新的Context(Merged ByField with Serialize)。

循环迭代中可采用FlatMap操作,该过程是基于序列化后的Context信息中的某个维度展开,展开后可能会导致数据爆炸,为了解决爆炸带来的不均衡问题,这里中间加了一个数据重新分布(Repartition)的环节,可将数据平均分布在不同的机器上,可有效的解决数据倾斜问题,为后续Context的再聚合打下了基础,不断的进行迭代直至最后一个维度。

计算模块202,还被配置为将最后的聚合表的每一行都标记唯一自然人标识。

当迭代完成后,把Context反解成结构化数据,然后为每行结构化数据赋予自增的唯一自然人标识ID,这就是所谓的OneID,过程可以是ZipWithIndex,最终生成如图2和图3的最下面的表的数据结构(把所有维度能关联上的标识都关联了起来)。

整个过程可以称为分布式连通图算法,最后生成连通图宽表。

第四个实施例还提供了一种电子设备,包括:处理器、存储器以及存储在存储器上运行的计算机程序,所述处理器执行计算机程序时实现上述任一实施例方法的步骤,例如步骤S101至S103,或者所述处理器执行所述计算机程序时实现上述各实施例中各模块/单元的功能,例如单元201至203的功能。所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述电子设备中的执行过程。

所述电子设备可以是智能手机等移动终端,或者是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述电子设备可包括,但不仅限于,处理器、存储器,可以包括更多或更少的部件,或者组合某些部件,例如所述电子设备还可以包括输入输出设备、网络接入设备、总线等。所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字消息队列的管理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。所述存储器可以是所述电子设备的内部存储单元,例如电子设备的硬盘或内存。所述存储器也可以是所述电子设备的外部存储设备,例如所述电子设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。进一步地,所述存储器还可以既包括所述电子设备的内部存储单元也包括外部存储设备。

第五个实施例还提供了一种计算机可读存储介质,所述计算机程序被处理器执行时实现上述任一实施例方法的步骤。

在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的系统、电子设备和方法,可以通过其它的方式实现。例如,以上所描述的系统、电子设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,系统或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号