CN111444158A - 长短期用户画像生成方法、装置、设备及可读存储介质 - Google Patents
长短期用户画像生成方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN111444158A CN111444158A CN202010138562.8A CN202010138562A CN111444158A CN 111444158 A CN111444158 A CN 111444158A CN 202010138562 A CN202010138562 A CN 202010138562A CN 111444158 A CN111444158 A CN 111444158A
- Authority
- CN
- China
- Prior art keywords
- user
- long
- term
- short
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0201—Market modelling; Market analysis; Collecting market data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Marketing (AREA)
- Game Theory and Decision Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及大数据技术领域,公开了一种长短期用户画像生成方法,包括以下步骤:从广播变量中获取分布式存储系统Hbase信息;根据用户编号拉取所述Hbase信息中的用户行为数据,计算实时兴趣得分和历史兴趣得分,根据实时兴趣得分与用户兴趣标签之间的预置映射关系,以及历史兴趣得分与用户兴趣标签之间的预置映射关系,得到长短期用户兴趣标签;将长短期用户兴趣标签转为杰森json格式,通过信息摘要算法MD5对用户的敏感信息进行加密,存入预置存储系统;获取长短期用户兴趣标签,并基于长短期用户兴趣标签生成长短期用户画像。本发明还提供了一种长短期用户画像生成装置、设备及可读存储介质,本发明提供的长短期用户画像生成方法提高了用户画像的准确率。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及一种长短期用户画像生成方法、装置、设备及可读存储介质。
背景技术
目前,随着移动互联网的迅猛发展,个性化系统成为众多企业应用大数据挖掘潜在商业价值的重要技术手段。用户兴趣画像作为一种抽象勾画目标用户的方法,具备精准、即时地分析用户行为、兴趣特征、消费行为的能力,因此受到越来越多企业的青睐。而用户画像系统通常是利用专业的用户标签体系来刻画。但现有用户画像系统主要采用离线处理的方式进行,不能保证实时性和即时地反馈。而近年来的实时系统通常采用传统的服务器方式开发部署,扩展性、容错性较差。一些实时的用户画像系统也没有基于目前领先的大数据处理技术,使得其不能高效的处理海量的用户日志数据及做一些复杂的运算以满足多变的市场的需求。实时的用户画像系统只能获取到用户当下、即时的兴趣标签,并不能有效的结合用户的历史行为,形成用户相对完整且准确的用户画像。如何提升用户画像的准确度,是目前本技术领域亟待解决的技术问题。
发明内容
本发明的主要目的在于提供一种长短期用户画像生成方法、装置、设备及可读存储介质,旨在解决现有的用户画像准确率低的技术问题。
从广播变量中获取分布式存储系统Hbase信息,其中,所述分布式存储系统Hbase信息包括:列、列簇信息;
根据用户编号拉取所述Hbase信息中的用户行为数据,并通过预置公式计算实时兴趣得分和历史兴趣得分,其中,所述用户行为数据包括:点击数据和购买数据;根据所述实时兴趣得分与用户兴趣标签之间的预置映射关系,以及历史兴趣得分与用户兴趣标签之间的预置映射关系,得到长短期用户兴趣标签;
将所述长短期用户兴趣标签转为杰森json格式,通过信息摘要算法MD5对用户的敏感信息进行加密,存入预置存储系统,其中,所述预置存储系统包括键-值存储系统Redis和分布式存储系统Hbase;
根据获取到的指令从所述预置存储系统中获取与所述指令相对应的长短期用户兴趣标签,并基于所述长短期用户兴趣标签生成长短期用户画像。
可选地,在所述从广播变量中获取分布式存储系统Hbase信息,其中,所述分布式存储系统Hbase信息包括:列、列簇信息之前,还包括:
通过流计算框架SparkStreaming程序创建SparkConf对象配置实例,以及将变更的数据加载到SparkConf对象,其中,所述SparkConf对象用于管理Spark的配置项,所述SparkStreaming包括驱动Driver端;
在驱动Driver端读取存储在分布式文件系统HDFS上的配置文件,其中,所述配置文件来自于开源流处理平台Kafka、分布式存储系统Hbase、键-值存储系统Redis端口和存储表名;
通过所述流计算框架SparkStreaming接收开源流处理平台卡夫卡Kafka的日志数据,形成Dstream格式的初始数据流,所述初始数据流分布于弹性分布式数据集的不同区域内;
对所述初始数据流进行预处理,得到目标数据流;
将所述目标数据流转化为事件Event类缓存至内存或硬盘,并将所述Event类转化为队列List存入分布式存储系统Hbase中间表。
可选地,所述对所述初始数据流进行预处理,得到目标数据流,包括:
通过重新分区操作repartition中的HashPartitioner函数,对分布于弹性分布式数据集的第一划分区域的初始数据流进行重新划分区域,得到分布于第二划分区域的中间数据流,并记录所述第二划分区域的数量;
判断所述第二划分区域的数量是否大于所述第一划分区域的数量;
若所述第二划分区域的数量大于所述第一划分区域的数量,则得到目标数据流。
可选地,所述通过流计算框架SparkStreaming程序创建SparkConf对象配置实例,以及将变更的数据加载到SparkConf对象,其中,所述SparkConf对象用于管理Spark的配置项,所述SparkStreaming包括驱动Driver端,包括:
通过流计算框架SparkStreaming程序创建SparkConf对象实例,通过广播变量将配置文件广播至各个工作节点,其中,所述工作节点包括:执行executor端的内存和硬盘;
判断所述内存的数据或所述硬盘的数据是否发生变更;
若所述内存的数据或所述硬盘的数据发生变更,则将变更的数据加载到SparkConf对象,其中,所述SparkConf对象用于管理Spark的配置项,所述SparkStreaming包括驱动Driver端。
可选地,在所述通过流计算框架SparkStreaming程序创建SparkConf对象配置实例,以及将变更的数据加载到SparkConf对象,其中,所述SparkConf对象用于管理Spark的配置项,所述SparkStreaming包括驱动Driver端之前,还包括:
判断Driver端是否崩溃重启;
若Driver端崩溃重启,则通过预先部署在SparkStreaming中的内部事件Checkpoint保存配置文件中的配置信息。
可选地,所述根据用户编号拉取所述Hbase信息中的用户行为数据,并通过预置公式计算实时兴趣得分和历史兴趣得分,其中,所述用户行为数据包括:点击数据和购买数据包括:
根据用户编号,按照时间顺序拉取所述Hbase信息中的用户行为数据;
通过以下公式计算实时兴趣得分和历史兴趣得分,其中,所述用户行为数据包括:点击数据和购买数据;
S=∑(Y*W);
H=∑[W-(T)*X)];
其中,Y为实时用户行为数据,W为预置用户行为权重,T为天数差,X为时间衰减系数,S为实时兴趣得分,H为历史兴趣得分。
可选地,在所述根据所述实时兴趣得分与用户兴趣标签之间的预置映射关系,以及历史兴趣得分与用户兴趣标签之间的预置映射关系,得到长短期用户兴趣标签之后,在所述将所述长短期用户兴趣标签转为杰森json格式,通过信息摘要算法MD5对用户的敏感信息进行加密,存入预置存储系统,其中,所述预置存储系统包括键-值存储系统Redis和分布式存储系统Hbase之前,还包括:
计算所述长短期用户兴趣标签的准确率,判断所述长短期用户兴趣标签的所述准确率是否小于或等于预置准确率;
若所述长短期用户兴趣标签的所述准确率小于或等于预置准确率,则执行根据用户编号拉取所述分布式存储系统Hbase信息中的用户行为数据,计算实时兴趣得分和历史兴趣得分,并通过梯度下降算法优化时间衰减系数,直至收敛。
进一步地,为实现上述目的,本发明还提供一种长短期用户画像生成装置,所述长短期用户画像生成装置包括以下模块:
获取模块,用于从广播变量中获取分布式存储系统Hbase信息,其中,所述分布式存储系统Hbase信息包括:列、列簇信息;
兴趣得分计算模块,用于根据用户编号拉取所述Hbase信息中的用户行为数据,并通过以下公式计算实时兴趣得分和历史兴趣得分,其中,所述用户行为数据包括:点击数据和购买数据;
长短期用户兴趣标签获取模块,用于根据所述实时兴趣得分与用户兴趣标签之间的预置映射关系,以及历史兴趣得分与用户兴趣标签之间的预置映射关系,得到长短期用户兴趣标签;
长短期用户兴趣标签存储模块,用于将所述长短期用户兴趣标签转为杰森json格式,通过信息摘要算法MD5对用户的敏感信息进行加密,存入预置存储系统,其中,所述预置存储系统包括键-值存储系统Redis和分布式存储系统Hbase;
长短期用户画像获取模块,用于根据获取到的指令从所述预置存储系统中获取与所述指令相对应的长短期用户兴趣标签,并基于所述长短期用户兴趣标签生成长短期用户画像。
可选地,所述长短期用户画像生成装置包括:
数据加载模块,用于通过流计算框架SparkStreaming程序创建SparkConf对象配置实例,以及将变更的数据加载到SparkConf对象,其中,所述SparkConf对象用于管理Spark的配置项,所述SparkStreaming包括驱动Driver端;
配置文件读取模块,用于在驱动Driver端读取存储在分布式文件系统HDFS上的配置文件,其中,所述配置文件来自于开源流处理平台Kafka、分布式存储系统Hbase、键-值存储系统Redis端口和存储表名;
初始数据流转化模块,用于通过所述流计算框架SparkStreaming接收开源流处理平台卡夫卡Kafka的日志数据,形成Dstream格式的初始数据流,所述初始数据流分布于弹性分布式数据集的不同区域内;
初始数据流预处理模块,用于对所述初始数据流进行预处理,得到目标数据流;
事件转化模块,用于将所述目标数据流转化为事件Event类缓存至内存或硬盘,并将所述Event类转化为队列List存入分布式存储系统Hbase中间表。
可选地,所述初始数据流预处理模块包括:
重新划分区单元,用于通过重新分区操作repartition中的HashPartitioner函数,对分布于弹性分布式数据集的第一划分区域的初始数据流进行重新划分区域,得到分布于第二划分区域的中间数据流,并记录所述第二划分区域的数量;
第一划分区域的数量判断单元,用于判断所述第二划分区域的数量是否大于所述第一划分区域的数量;
目标数据流获取单元,用于若所述第二划分区域的数量大于所述第一划分区域的数量,则得到目标数据流。
可选地,所述数据加载模块包括:
广播变量广播单元,用于通过流计算框架SparkStreaming程序创建SparkConf对象实例,通过广播变量将配置文件广播至各个工作节点,其中,所述工作节点包括:执行executor端的内存和硬盘;
数据变更单元,用于判断所述内存的数据或所述硬盘的数据是否发生变更;
变更数据加载单元,用于若所述内存的数据或所述硬盘的数据发生变更,则将变更的数据加载到SparkConf对象,其中,所述SparkConf对象用于管理Spark的配置项,所述SparkStreaming包括驱动Driver端。
可选地,所述长短期用户画像生成装置包括:
崩溃重启判断模块,用于判断Driver端是否崩溃重启;
配置信息保存模块,用于若Driver端崩溃重启,则通过预先部署在SparkStreaming中的内部事件Checkpoint保存配置文件中的配置信息。
可选地,所述兴趣得分计算模块包括:
用户行为数据拉取单元,用于根据用户编号,按照时间顺序拉取所述Hbase信息中的用户行为数据;
实时计算单元,用于通过以下公式计算实时兴趣得分和历史兴趣得分,其中,所述用户行为数据包括:点击数据和购买数据;
S=∑(Y*W);
H=∑[W-(T)*X)];
其中,Y为实时用户行为数据,W为预置用户行为权重,T为天数差,X为时间衰减系数,S为实时兴趣得分,H为历史兴趣得分;
可选地,长短期用户画像生成装置包括:
准确率计算模块,用于计算所述长短期用户兴趣标签的准确率,判断所述长短期用户兴趣标签的所述准确率是否小于或等于预置准确率;
优化模块,用于若所述长短期用户兴趣标签的所述准确率小于或等于预置准确率,则执行根据用户编号拉取所述分布式存储系统Hbase信息中的用户行为数据,计算实时兴趣得分和历史兴趣得分,并通过梯度下降算法优化时间衰减系数,直至收敛。
进一步地,为实现上述目的,本发明还提供一种长短期用户画像生成设备,所述长短期用户画像生成设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的长短期用户画像生成程序,所述长短期用户画像生成程序被所述处理器执行时实现如上述任一项所述的长短期用户画像生成方法的步骤。
进一步地,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质上存储有长短期用户画像生成程序,所述长短期用户画像生成程序被处理器执行时实现如上述任一项所述的长短期用户画像生成方法的步骤。
本发明提出的基于SparkStreaming的实时用户画像方法能够实时得到用户的兴趣标签,并且考虑到了用户的历史行为,可以形成用户的长短期画像。将数据转化数据流,并将数据流划分的更加均匀,在生成用户画像的时候,增加了历史行为数据与实时行为数据,因此可以生成长短期用户画像,可增加用户画像的准确度。
附图说明
图1为本发明实施例方案涉及的长短期用户画像生成设备运行环境的结构示意图;
图2为本发明长短期用户画像生成方法的第一个实施例的流程示意图;
图3为本发明长短期用户画像生成方法的第二实施例的流程示意图;
图4为图3中步骤S90的细化流程示意图;
图5为图3中步骤S60的细化流程示意图;
图6为本发明长短期用户画像生成方法的第三个实施例的流程示意图;
图7为图2中步骤S20的细化流程示意图;
图8为本发明长短期用户画像生成方法的第四实施例的流程示意图;
图9为本发明长短期用户画像生成装置的一个实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例涉及的长短期用户画像生成方法主要应用于长短期用户画像生成设备,该长短期用户画像生成设备可以是PC、便携计算机、移动终端等具有显示和处理功能的设备。
参照图1,图1为本发明实施例方案中涉及的长短期用户画像生成设备的硬件结构示意图。本发明实施例中,长短期用户画像生成设备可以包括处理器1001(例如CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口);存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的硬件结构并不构成对长短期用户画像生成设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种可读存储介质的存储器1005可以包括操作系统、网络通信模块以及长短期用户画像生成程序。
在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的长短期用户画像生成程序,并执行本发明实施例提供的长短期用户画像生成方法。
本发明实施例提供了一种长短期用户画像生成方法。
参照图2,图2为本发明长短期用户画像生成方法的第一实施例的流程示意图。本实施例中,长短期用户画像生成方法包括以下步骤:
步骤S10,从广播变量中获取分布式存储系统Hbase信息,其中,分布式存储系统Hbase信息包括:列、列簇信息;
本实施例中,如果要在分布式计算里面分发大对象,例如:字典,集合,黑白名单等,这个都会由Driver端进行分发,一般来讲,如果这个变量不是广播变量,那么每个task就会分发一份,这在task数目十分多的情况下Driver的带宽会成为系统的瓶颈,而且会大量消耗task服务器上的资源,如果将这个变量声明为广播变量,那么只是每个executor拥有一份,这个executor启动的task会共享这个变量,节省了通信的成本和服务器的资源。本实施例,从广播变量中获取分布式存储系统Hbase的每一列和每一列簇信息,列在列簇中依照字典进行排序。例如,列簇是水果类,列是基础信息:苹果。
步骤S20,根据用户编号拉取Hbase信息中的用户行为数据,并通过预置公式计算实时兴趣得分和历史兴趣得分,其中,用户行为数据包括:点击数据和购买数据;
本实施例中,为不同的行为标记不同的权重,例如,将“点击”行为记为一份权重,即占1分,将“购买”行为记为3份权重,即占3分,预先配置时间衰减系数,例如,时间衰减系数为0.05,假如用户当前点击的兴趣为1分,则历史兴趣得分=1-(天数差)*0.05=0.5分,即用户的历史行为越近其当前行为,则分数越高,并计算出用户兴趣的总得分。
在拉取用户行为数据时,可优先拉取当前用户在预置最近时间段内的户行为数据,例如,最近一个月内的数据。预先建立“购买”,由于“购买”和“点击”数据之间存在映射关系,因此,可以根据“购买”数据追溯到与其时间最近的“点击”数据,以及预置时间内的“点击”数据,例如,可以得到最近一个月内的数据,同样地,也可以对可拉取的数据量进行限制,例如,拉取用户最近的50条行为记录做用户标签的计算,而不是只考虑用户实时的兴趣。例如,用户实时的购买了口红,口红类别为美容产品,又在10天前点击了手机,手机类别为电器,则根据上述计算方法所得到的用户兴趣标签格式为:{[‘口红’,3分,‘美容产品’],[‘手机’,0.5分,‘电器’]},其中,0.5分的计算方式为:1-0.05*10=0.5。由此可见,在生成用户的兴趣标签时,考虑到了实时行为及历史行为,且根据用户的动作时间、动作方式(购买、点击)给予了不同的得分,这样可更合理地计算出用户兴趣标签。
步骤S30,根据实时兴趣得分与用户兴趣标签之间的预置映射关系,以及历史兴趣得分与用户兴趣标签之间的预置映射关系,得到长短期用户兴趣标签;
本实施例中,用实时兴趣得分与用户兴趣标签之间是存在对应关系的,历史兴趣得分与用户兴趣标签之间也是存在对应关系的,因此可以根据对用关系得到用户兴趣标签,例如,若兴趣得分在0-2分之间,则得到“用户低频行为”这一标签,兴趣得分在3-5分之间,则得到“用户高频行为”这一标签,这样可以为用户推送产品提供依据。
步骤S40,将长短期用户兴趣标签转为json格式,通过信息摘要算法MD5对用户的敏感信息进行加密,并存入键-值存储系统Redis和分布式存储系统Hbase;
本实施例中,为了保证用户隐私信息不被窃取,因此对用户敏感信息进行了加密。
步骤S50,根据获取到的指令从预置存储系统中获取与指令相对应的长短期用户兴趣标签,并基于长短期用户兴趣标签生成长短期用户画像。
本实施例中,在人机交互界面接收到获取用户画像的指令后,会解析用户指令,根据解析过后的结果获取用户兴趣标签,然后将用户兴趣标签转化为用户画像,本实施例中,用户画像为用户兴趣标签的集合。
参照图3,图3为本发明长短期用户画像生成方法的第二实施例的流程示意图。本实施例中,在从广播变量中获取分布式存储系统Hbase信息,其中,分布式存储系统Hbase信息包括:列、列簇信息之前,还包括:
步骤S60,通过流计算框架SparkStreaming程序创建SparkConf对象配置实例,以及将变更的数据加载到SparkConf对象,其中,SparkConf对象用于管理Spark的配置项,SparkStreaming包括驱动Driver端;
本实施例中,StreamingContext会根据设置的批处理的时间间隔将产生的弹性分布式数据集RDD归为一批,例如,每15秒进行一次批处理,DStream由一组时间序列上连续的RDD来表示,因此这一批RDD就是一个DStream,DStream可以通过算子操作转化为另一个DStream。在接收多重数据时,可以创建多个DStream用来接收源数据流的不同分支。
步骤S70,在驱动Driver端读取存储在分布式文件系统HDFS上的配置文件,其中,配置文件来自于开源流处理平台Kafka、分布式存储系统Hbase、键-值存储系统Redis端口和存储表名;
本实施例中,在Driver端读取存储在分布式文件系统HDFS上的配置文件,配置文件来自于开源流处理平台Kafka、分布式存储系统Hbase、键-值存储系统Redis端口和存储表名。
步骤S80,通过流计算框架SparkStreaming接收开源流处理平台卡夫卡Kafka的日志数据,形成Dstream格式的初始数据流,初始数据流分布于弹性分布式数据集的不同区域内;
步骤S90,对初始数据流进行预处理,得到目标数据流;
步骤S100,将目标数据流转化为事件Event类缓存至内存或硬盘,并将Event类转化为队列List存入分布式存储系统Hbase中间表。
参照图4,图4为图3中步骤S90的细化流程示意图。本实施例中,对初始数据流进行预处理,得到目标数据流,包括:
步骤S901,通过重新分区操作repartition中的HashPartitioner函数,对分布于弹性分布式数据集的第一划分区域的初始数据流进行重新划分区域,得到分布于第二划分区域的中间数据流,并记录第二划分区域的数量;
本实施例中,每个任务计算的数据比较小时,计算速度有可能会变慢,因为处理的数据量小,但是任务的所需的调度时间会很多,所以需要对第一数据流设置一个比较合理的分区。将第一数据流进行repartition操作,使其可以充分地在大数据平台进行分布式处理。通过创建更多或更少的分区将数据随机的打散,让数据在不同分区之间相对均匀。这个操作经常是通过网络进行数据打散。
采用重新分区操作repartition是为了对数据进行重新分区,这里使用的HashPartitioner函数。
步骤S902,判断第二划分区域的数量是否大于第一划分区域的数量;
本实施例中,将数据重新分区后,一些区域的数量会存在增多的现象。为了使数据分布得更加均匀,因此希望多个划分区域的数量大于原不同区域的数量。
步骤S903,若第二划分区域的数量大于第一划分区域的数量,则得到目标数据流。
本实施例中,若多个划分区域的数量大于原不同区域的数量,说明数据分别较为均匀,因此得到第二数据流,否则,需要继续分区。
参照图5,图5为图3中步骤S60的细化流程示意图。本实施例中,通过流计算框架SparkStreaming程序创建SparkConf对象配置实例,以及将变更的数据加载到SparkConf对象,其中,SparkConf对象用于管理Spark的配置项,SparkStreaming包括驱动Driver端,包括:
步骤S601,通过流计算框架SparkStreaming程序创建SparkConf对象实例,通过广播变量将配置文件广播至各个工作节点,其中,工作节点包括:执行executor端的内存和硬盘;
本实施例中,通过流计算框架SparkStreaming程序创建SparkConf对象实例,将广播变量广播至各个工作节点。
步骤S602,判断内存的数据或硬盘的数据是否发生变更;
本实施例中,可以通过遍历的方式检查内存和硬盘中的数据是否发生变更。
步骤S603,若内存的数据或硬盘的数据发生变更,则将变更的数据加载到SparkConf对象,其中,SparkConf对象用于管理Spark的配置项SparkStreaming包括驱动Driver端。
本实施例中,将变更的数据加载到Spark应用程序的配置中。
参照图6,图6为本发明长短期用户画像生成方法的第三实施例的流程示意图。本实施例中,通过流计算框架SparkStreaming程序创建SparkConf对象配置实例,以及将变更的数据加载到SparkConf对象,其中,SparkConf对象用于管理Spark的配置项,SparkStreaming包括驱动Driver端之前,还包括:
步骤S110,判断Driver端是否崩溃重启;
步骤S120,若Driver端崩溃重启,则通过预先部署在SparkStreaming中的内部事件Checkpoint保存配置文件中的配置信息。
本实施例,在代码错误时,Driver端会发生崩溃重启,为了在Driver端发生崩溃重启时,避免发生数据丢失现象,因此通过内部事件Checkpoint保存配置文件中的配置信息。内部事件Checkpoint可以应用在SparkStreaming中,使用内部事件Checkpoint可保存配置文件的配置信息,以便在Driver崩溃重启的时候能进行断点处理。
参照图7,图7为图2中步骤S20的细化流程示意图。本实施例中,根据用户编号拉取分布式存储系统Hbase信息中的用户行为数据,并通过以下公式计算实时兴趣得分和历史兴趣得分,其中,用户行为数据包括:点击数据和购买数据,包括:
步骤S201,根据用户编号,按照时间顺序拉取Hbase信息中的用户行为数据;
步骤S202,通过以下公式计算实时兴趣得分和历史兴趣得分,其中,用户行为数据包括:点击数据和购买数据;
S=∑(Y*W);
H=∑[W-(T)*X)];
其中,Y为实时用户行为数据,W为预置用户行为权重,T为天数差,X为时间衰减系数,S为实时兴趣得分,H为历史兴趣得分。
本实施例中,为不同的行为标记不同的权重,例如,将“点击”行为记为一份权重,即占1分,将“购买”行为记为3份权重,即占3分,预先配置时间衰减系数,例如,时间衰减系数为0.05,假如用户当前点击的兴趣为1分,则历史兴趣得分=1-(天数差)*0.05=0.5分,即用户的历史行为越近其当前行为,则分数越高,并计算出用户兴趣的总得分。
拉取用户行为数据,在拉取时,优先拉取当前用户行为的数据,例如,“购买”,由于“购买”和“点击”数据之间存在映射关系,因此,可以根据“购买”数据追溯到与其时间最近的“点击”数据,以及预置时间内的“点击”数据,例如,可以得到最近一个月内的数据,同样地,也可以对可拉取的数据量进行限制,例如,拉取用户最近的50条行为记录做用户标签的计算,而不是只考虑用户实时的兴趣。例如,用户实时的购买了口红,口红类别为美容产品,又在10天前点击了手机,手机类别为电器,则根据上述计算方法所得到的用户兴趣标签格式为:{[‘口红’,3分,‘美容产品’],[‘手机’,0.5分,‘电器’]},其中,0.5分的计算方式为:1-0.05*10=0.5。由此可见,在生成用户的兴趣标签时,考虑到了实时行为及历史行为,且根据用户的动作时间、动作方式(购买、点击)给予了不同的得分,这样可更合理地计算出用户兴趣标签。
参照图8,图8为本发明长短期用户画像生成方法的第四实施例的流程示意图。在根据实时兴趣得分与用户兴趣标签之间的预置映射关系,以及历史兴趣得分与用户兴趣标签之间的预置映射关系,得到长短期用户兴趣标签之后,在将长短期用户兴趣标签转为杰森json格式,通过信息摘要算法MD5对用户的敏感信息进行加密,存入预置存储系统,其中,预置存储系统包括键-值存储系统Redis和分布式存储系统Hbase之前,还包括:
步骤S130,计算长短期用户兴趣标签的准确率,判断长短期用户兴趣标签的准确率是否小于或等于预置准确率;
步骤S140,若长短期用户兴趣标签的准确率小于或等于预置准确率,则执行根据用户编号拉取分布式存储系统Hbase信息中的用户行为数据,计算实时兴趣得分和历史兴趣得分,并通过梯度下降算法优化时间衰减系数,直至收敛。
本实施例中,通过时间衰减系数用来调整不同时间点的用户行为所占的权重,期初时,时间衰减系数的值并不一定满足当前的场景,因此需要以是否低于预置准确率为依据,通过梯度下降算法优化时间衰减系数,直至收敛,即时间衰减系数随时间变化的速率小于预定值。
基于流计算框架SparkStreaming的实时用户画像方法能够实时得到用户的兴趣标签,并且考虑到了用户的历史行为,可以形成用户的长短期画像。将数据转化数据流,并将数据流划分的更加均匀,在生成用户画像的时候,增加了历史行为数据与实时行为数据,因此可以生成长短期用户画像,可增加用户画像的准确度。
参照图9,图9为本发明长短期用户画像生成装置的一个实施例的功能模块示意图。本实施例中,长短期用户画像生成装置包括:
获取模块10,用于从广播变量中获取分布式存储系统Hbase信息,其中,分布式存储系统Hbase信息包括:列、列簇信息;
兴趣得分计算模块20,用于根据用户编号拉取Hbase信息中的用户行为数据,并通过以下公式计算实时兴趣得分和历史兴趣得分,其中,用户行为数据包括:点击数据和购买数据;
长短期用户兴趣标签获取模块30,用于根据实时兴趣得分与用户兴趣标签之间的预置映射关系,以及历史兴趣得分与用户兴趣标签之间的预置映射关系,得到长短期用户兴趣标签;
长短期用户兴趣标签存储模块40,用于将长短期用户兴趣标签转为杰森json格式,通过信息摘要算法MD5对用户的敏感信息进行加密,存入预置存储系统,其中,预置存储系统包括键-值存储系统Redis和分布式存储系统Hbase;
长短期用户画像获取模块50,用于根据获取到的指令从预置存储系统中获取与指令相对应的长短期用户兴趣标签,并基于长短期用户兴趣标签生成长短期用户画像。
本发明还提供一种可读存储介质。
本实施例中,所述可读存储介质上存储有长短期用户画像生成程序,所述长短期用户画像生成程序被处理器执行时实现如上述任一项实施例中所述的长短期用户画像生成方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本发明的保护之内。
Claims (10)
1.一种长短期用户画像生成方法,其特征在于,所述长短期用户画像生成方法包括:
从广播变量中获取分布式存储系统Hbase信息,其中,所述分布式存储系统Hbase信息包括:列、列簇信息;
根据用户编号拉取所述Hbase信息中的用户行为数据,并通过预置公式计算实时兴趣得分和历史兴趣得分,其中,所述用户行为数据包括:点击数据和购买数据;根据所述实时兴趣得分与用户兴趣标签之间的预置映射关系,以及历史兴趣得分与用户兴趣标签之间的预置映射关系,得到长短期用户兴趣标签;
将所述长短期用户兴趣标签转为杰森json格式,通过信息摘要算法MD5对用户的敏感信息进行加密,存入预置存储系统,其中,所述预置存储系统包括键-值存储系统Redis和分布式存储系统Hbase;
根据获取到的指令从所述预置存储系统中获取与所述指令相对应的长短期用户兴趣标签,并基于所述长短期用户兴趣标签生成长短期用户画像。
2.如权利要求1所述的长短期用户画像生成方法,其特征在于,在所述从广播变量中获取分布式存储系统Hbase信息,其中,所述分布式存储系统Hbase信息包括:列、列簇信息之前,还包括:
通过流计算框架SparkStreaming程序创建SparkConf对象配置实例,以及将变更的数据加载到SparkConf对象,其中,所述SparkConf对象用于管理Spark的配置项,所述SparkStreaming包括驱动Driver端;
在驱动Driver端读取存储在分布式文件系统HDFS上的配置文件,其中,所述配置文件来自于开源流处理平台Kafka、分布式存储系统Hbase、键-值存储系统Redis端口和存储表名;
通过所述流计算框架SparkStreaming接收开源流处理平台卡夫卡Kafka的日志数据,形成Dstream格式的初始数据流,所述初始数据流分布于弹性分布式数据集的不同区域内;
对所述初始数据流进行预处理,得到目标数据流;
将所述目标数据流转化为事件Event类缓存至内存或硬盘,并将所述Event类转化为队列List存入分布式存储系统Hbase中间表。
3.如权利要求2所述的长短期用户画像生成方法,其特征在于,所述对所述初始数据流进行预处理,得到目标数据流,包括:
通过重新分区操作repartition中的HashPartitioner函数,对分布于弹性分布式数据集的第一划分区域的初始数据流进行重新划分区域,得到分布于第二划分区域的中间数据流,并记录所述第二划分区域的数量;
判断所述第二划分区域的数量是否大于所述第一划分区域的数量;
若所述第二划分区域的数量大于所述第一划分区域的数量,则得到目标数据流。
4.如权利要求2所述的长短期用户画像生成方法,其特征在于,所述通过流计算框架SparkStreaming程序创建SparkConf对象配置实例,以及将变更的数据加载到SparkConf对象,其中,所述SparkConf对象用于管理Spark的配置项,所述SparkStreaming包括驱动Driver端,包括:
通过流计算框架SparkStreaming程序创建SparkConf对象实例,通过广播变量将配置文件广播至各个工作节点,其中,所述工作节点包括:执行executor端的内存和硬盘;
判断所述内存的数据或所述硬盘的数据是否发生变更;
若所述内存的数据或所述硬盘的数据发生变更,则将变更的数据加载到SparkConf对象,其中,所述SparkConf对象用于管理Spark的配置项,所述SparkStreaming包括驱动Driver端。
5.如权利要求2所述的长短期用户画像生成方法,其特征在于,在所述通过流计算框架SparkStreaming程序创建SparkConf对象配置实例,以及将变更的数据加载到SparkConf对象,其中,所述SparkConf对象用于管理Spark的配置项,所述SparkStreaming包括驱动Driver端之前,还包括:
判断Driver端是否崩溃重启;
若Driver端崩溃重启,则通过预先部署在SparkStreaming中的内部事件Checkpoint保存配置文件中的配置信息。
6.如权利要求1所述的长短期用户画像生成方法,其特征在于,所述根据用户编号拉取所述Hbase信息中的用户行为数据,并通过预置公式计算实时兴趣得分和历史兴趣得分,其中,所述用户行为数据包括:点击数据和购买数据包括:
根据用户编号,按照时间顺序拉取所述Hbase信息中的用户行为数据;
通过以下公式计算实时兴趣得分和历史兴趣得分,其中,所述用户行为数据包括:点击数据和购买数据;
S=∑(Y*W);
H=∑[W-(T)*X)];
其中,Y为实时用户行为数据,W为预置用户行为权重,T为天数差,X为时间衰减系数,S为实时兴趣得分,H为历史兴趣得分。
7.如权利要求1-6中所述的任一项长短期用户画像生成方法,其特征在于,在所述根据所述实时兴趣得分与用户兴趣标签之间的预置映射关系,以及历史兴趣得分与用户兴趣标签之间的预置映射关系,得到长短期用户兴趣标签之后,在所述将所述长短期用户兴趣标签转为杰森json格式,通过信息摘要算法MD5对用户的敏感信息进行加密,存入预置存储系统,其中,所述预置存储系统包括键-值存储系统Redis和分布式存储系统Hbase之前,还包括:
计算所述长短期用户兴趣标签的准确率,判断所述长短期用户兴趣标签的所述准确率是否小于或等于预置准确率;
若所述长短期用户兴趣标签的所述准确率小于或等于预置准确率,则执行根据用户编号拉取所述分布式存储系统Hbase信息中的用户行为数据,计算实时兴趣得分和历史兴趣得分,并通过梯度下降算法优化时间衰减系数,直至收敛。
8.一种长短期用户画像生成装置,其特征在于,所述长短期用户画像生成装置包括以下模块:
获取模块,用于从广播变量中获取分布式存储系统Hbase信息,其中,所述分布式存储系统Hbase信息包括:列、列簇信息;
兴趣得分计算模块,用于根据用户编号拉取所述Hbase信息中的用户行为数据,并通过以下公式计算实时兴趣得分和历史兴趣得分,其中,所述用户行为数据包括:点击数据和购买数据;
长短期用户兴趣标签获取模块,用于根据所述实时兴趣得分与用户兴趣标签之间的预置映射关系,以及历史兴趣得分与用户兴趣标签之间的预置映射关系,得到长短期用户兴趣标签;
长短期用户兴趣标签存储模块,用于将所述长短期用户兴趣标签转为杰森json格式,通过信息摘要算法MD5对用户的敏感信息进行加密,存入预置存储系统,其中,所述预置存储系统包括键-值存储系统Redis和分布式存储系统Hbase;
长短期用户画像获取模块,用于根据获取到的指令从所述预置存储系统中获取与所述指令相对应的长短期用户兴趣标签,并基于所述长短期用户兴趣标签生成长短期用户画像。
9.一种长短期用户画像生成设备,其特征在于,所述长短期用户画像生成设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的长短期用户画像生成程序,所述长短期用户画像生成程序被所述处理器执行时实现如权利要求1-7中任一项所述的长短期用户画像生成方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有长短期用户画像生成程序,所述长短期用户画像生成程序被处理器执行时实现如权利要求1-7中任一项所述的长短期用户画像生成方法的步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010138562.8A CN111444158B (zh) | 2020-03-03 | 2020-03-03 | 长短期用户画像生成方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010138562.8A CN111444158B (zh) | 2020-03-03 | 2020-03-03 | 长短期用户画像生成方法、装置、设备及可读存储介质 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN111444158A true CN111444158A (zh) | 2020-07-24 |
| CN111444158B CN111444158B (zh) | 2024-12-13 |
Family
ID=71652677
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202010138562.8A Active CN111444158B (zh) | 2020-03-03 | 2020-03-03 | 长短期用户画像生成方法、装置、设备及可读存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN111444158B (zh) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112487285A (zh) * | 2020-11-18 | 2021-03-12 | 中国人寿保险股份有限公司 | 一种消息推送方法和装置 |
| CN113297290A (zh) * | 2021-04-28 | 2021-08-24 | 上海淇玥信息技术有限公司 | 实时用户策略配置方法、装置及电子设备 |
| CN113326434A (zh) * | 2021-06-15 | 2021-08-31 | 深圳前海微众银行股份有限公司 | 一种信息推荐方法、设备及存储介质 |
| CN113934928A (zh) * | 2021-09-26 | 2022-01-14 | 北京奇艺世纪科技有限公司 | 用户画像生成方法、装置、电子设备及存储介质 |
| CN115640470A (zh) * | 2022-11-17 | 2023-01-24 | 荣耀终端有限公司 | 一种推荐方法及电子设备 |
| WO2025167643A1 (zh) * | 2024-02-07 | 2025-08-14 | 百果园技术(新加坡)有限公司 | 用户兴趣画像生成方法、装置、设备、存储介质以及产品 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104090886A (zh) * | 2013-12-09 | 2014-10-08 | 深圳市腾讯计算机系统有限公司 | 构建用户实时画像的方法及装置 |
| WO2017157146A1 (zh) * | 2016-03-15 | 2017-09-21 | 平安科技(深圳)有限公司 | 基于用户画像的个性化推荐方法、装置、服务器及存储介质 |
| CN109815381A (zh) * | 2018-12-21 | 2019-05-28 | 平安科技(深圳)有限公司 | 用户画像构建方法、系统、计算机设备及存储介质 |
-
2020
- 2020-03-03 CN CN202010138562.8A patent/CN111444158B/zh active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104090886A (zh) * | 2013-12-09 | 2014-10-08 | 深圳市腾讯计算机系统有限公司 | 构建用户实时画像的方法及装置 |
| WO2017157146A1 (zh) * | 2016-03-15 | 2017-09-21 | 平安科技(深圳)有限公司 | 基于用户画像的个性化推荐方法、装置、服务器及存储介质 |
| CN109815381A (zh) * | 2018-12-21 | 2019-05-28 | 平安科技(深圳)有限公司 | 用户画像构建方法、系统、计算机设备及存储介质 |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112487285A (zh) * | 2020-11-18 | 2021-03-12 | 中国人寿保险股份有限公司 | 一种消息推送方法和装置 |
| CN113297290A (zh) * | 2021-04-28 | 2021-08-24 | 上海淇玥信息技术有限公司 | 实时用户策略配置方法、装置及电子设备 |
| CN113326434A (zh) * | 2021-06-15 | 2021-08-31 | 深圳前海微众银行股份有限公司 | 一种信息推荐方法、设备及存储介质 |
| CN113326434B (zh) * | 2021-06-15 | 2023-03-03 | 深圳前海微众银行股份有限公司 | 一种信息推荐方法、设备及存储介质 |
| CN113934928A (zh) * | 2021-09-26 | 2022-01-14 | 北京奇艺世纪科技有限公司 | 用户画像生成方法、装置、电子设备及存储介质 |
| CN113934928B (zh) * | 2021-09-26 | 2025-07-01 | 北京奇艺世纪科技有限公司 | 用户画像生成方法、装置、电子设备及存储介质 |
| CN115640470A (zh) * | 2022-11-17 | 2023-01-24 | 荣耀终端有限公司 | 一种推荐方法及电子设备 |
| WO2025167643A1 (zh) * | 2024-02-07 | 2025-08-14 | 百果园技术(新加坡)有限公司 | 用户兴趣画像生成方法、装置、设备、存储介质以及产品 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN111444158B (zh) | 2024-12-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11989707B1 (en) | Assigning raw data size of source data to storage consumption of an account | |
| CN111444158A (zh) | 长短期用户画像生成方法、装置、设备及可读存储介质 | |
| US11615082B1 (en) | Using a data store and message queue to ingest data for a data intake and query system | |
| CN109997126B (zh) | 事件驱动提取、变换、加载(etl)处理 | |
| US10534773B2 (en) | Intelligent query parameterization of database workloads | |
| US20250094253A1 (en) | Indexing data at a data intake and query system based on a node capacity threshold | |
| CN113849348B (zh) | 用于处理事件流的事件的系统和方法 | |
| JP5298117B2 (ja) | 分散コンピューティングにおけるデータマージング | |
| US9367601B2 (en) | Cost-based optimization of configuration parameters and cluster sizing for hadoop | |
| US20140156683A1 (en) | Integrating event processing with map-reduce | |
| EP4024228A1 (en) | System and method for batch and real-time feature calculation | |
| US11841827B2 (en) | Facilitating generation of data model summaries | |
| CN111177113A (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
| CN114661571B (zh) | 模型评测方法、装置、电子设备和存储介质 | |
| US10691653B1 (en) | Intelligent data backfill and migration operations utilizing event processing architecture | |
| CN104781814A (zh) | 从单个表到多个表的引用数据分割 | |
| CN117149907A (zh) | 数据同步方法、装置、设备及介质 | |
| CN111767252A (zh) | 日志查询方法、装置、计算机设备和存储介质 | |
| US20250272338A1 (en) | Providing groups of events to a message bus based on size | |
| CN115982049A (zh) | 性能测试中的异常检测方法、装置和计算机设备 | |
| US20240385941A1 (en) | User feedback mechanism for software applications | |
| US9459939B2 (en) | In-memory approach to extend semantic event processing with domain insights | |
| WO2025009381A1 (ja) | 異常検出装置、異常検出システム及び異常検出方法 | |
| US20140089207A1 (en) | System and method for providing high level view tracking of changes in sca artifacts | |
| CN116881551A (zh) | 消息推送方法、装置、计算机设备及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |