买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】用于网络表征学习的方法、装置及电子设备_腾讯科技(深圳)有限公司_201910557086.0 

申请/专利权人:腾讯科技(深圳)有限公司

申请日:2019-06-25

公开(公告)日:2024-04-16

公开(公告)号:CN110377822B

主分类号:G06F16/9535

分类号:G06F16/9535;G06F16/33;G06Q50/00

优先权:

专利状态码:有效-授权

法律状态:2024.04.16#授权;2021.10.26#实质审查的生效;2019.10.25#公开

摘要:本公开的实施例提供了一种用于网络表征学习的方法、装置、计算机可读介质及电子设备。该方法包括:获取网络结构图,所述网络结构图中包括N个节点,每个节点对应一个节点标识,N为大于等于1的正整数;获得所述网络结构图的随机游走路径集合;统计所述随机游走路径集合中的每个节点的出现频率;根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小;根据每个节点的节点编码,获得每条随机游走路径的字符序列。本公开实施例的技术方案通过对随机游走路径进行压缩编码,能够降低网络表征学习算法的时间复杂度,提升计算性能。

主权项:1.一种用于网络表征学习的方法,其特征在于,包括:获取网络结构图,所述网络结构图中包括N个节点,每个节点对应一个节点标识,N为大于等于1的正整数,所述网络结构图为社交网络结构图,所述社交网络结构图中的每一节点表示单个用户,每一边用于表示其连接的两个节点间的相互关系;获得所述网络结构图的随机游走路径集合;统计所述随机游走路径集合中的每个节点的出现频率;根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小,其包括:按照节点的出现频率对节点进行降序排列;对降序排列后的节点进行连续编码,使得每个节点一一映射到[0,N-1]中的一个整数;根据每个节点的节点编码,获得每条随机游走路径的字符序列,其包括:获得m编码字符转换表,m=2n,其中n为大于等于1的正整数;对每个节点的节点编码进行m除法操作和取模操作,并基于所述m编码字符转换表,获得每个节点的编码字符串;根据每个节点的编码字符串,获得每条随机游走路径的字符序列;通过词向量转换模型对所有随机游走路径的字符序列进行处理,获得每个节点的表征学习向量;利用每个节点的表征学习向量训练基于机器学习的推荐模型;获取目标对象的网络结构图;通过所述推荐模型对所述网络结构图进行处理,获得所述目标对象的推荐对象;将所述推荐对象发送至所述目标对象。

全文数据:用于网络表征学习的方法、装置及电子设备技术领域本公开涉及自然语言处理领域,具体而言,涉及一种用于网络表征学习的方法、装置、计算机可读介质及电子设备。背景技术随着移动互联网的发展,网络社交、网络游戏等逐渐流行。目前,基于社交网络的网络表征学习旨在将网络中的节点表示成低维、实值、稠密的向量形式,其在网络社交、游戏社交等应用领域具有重要作用。随着复杂网络规模的不断增大,如何通过网络表征学习将原本高维的网络数据在低维向量空间中进行表示是一个值得研究的问题。需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。发明内容本公开实施例提供一种用于网络表征学习的方法、装置、计算机可读介质及电子设备,进而至少在一定程度上提高网络表征学习的计算性能。本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。根据本公开实施例的一个方面,提供了一种用于网络表征学习的方法,包括:获取网络结构图,所述网络结构图中包括N个节点,每个节点对应一个节点标识,N为大于等于1的正整数;获得所述网络结构图的随机游走路径集合;统计所述随机游走路径集合中的每个节点的出现频率;根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小;根据每个节点的节点编码,获得每条随机游走路径的字符序列。根据本公开实施例的一个方面,提供了一种用于网络表征学习的装置,包括:数据获取模块,用于获取网络结构图,所述网络结构图中包括N个节点,每个节点对应一个节点标识,N为大于等于1的正整数;随机游走模块,用于获得所述网络结构图的随机游走路径集合;频率统计模块,用于统计所述随机游走路径集合中的每个节点的出现频率;节点编码模块,用于根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小;字符序列生成模块,用于根据每个节点的节点编码,获得每条随机游走路径的字符序列。根据本公开实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的用于网络表征学习的方法。在本公开的一些实施例所提供的技术方案中,在对网络结构图进行网络表征学习时,通过统计随机游走路径集合中每个节点的出现频率,并根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小,并根据每个节点的节点编码来获得每条随机游走路径的字符序列,从而能够将随机游走路径的字符串形式进行压缩。通过对随机游走路径进行压缩编码,一方面,能够降低随机游走路径的存储空间;另一方面,能够减轻分布式并行计算的通信代价,同时还能够降低网络表征学习的时间复杂度,提升计算性能。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1示出了可以应用本公开实施例的用于网络表征学习的方法或装置的示例性系统架构100的示意图;图2示意性示出了根据本公开的一个实施例的用于网络表征学习的方法的流程图;图3是基于图2的步骤S240在一个示例性实施例中的流程图;图4是基于图2的步骤S250在一个示例性实施例中的流程图;图5是基于图4的步骤S251在一个示例性实施例中的流程图;图6示意性示出了根据本公开的另一个实施例的用于网络表征学习的方法的流程图;图7示意性示出了根据本公开的又一个实施例的用于网络表征学习的方法的流程图;图8示意性示出了根据本公开的再一个实施例的用于网络表征学习的方法的流程图;图9示意性示出了根据本公开的再一个实施例的用于网络表征学习的方法的流程图;图10是基于图9的步骤S910在一个示例性实施例中的流程图;图11是基于图9的步骤S920在一个示例性实施例中的流程图;图12是基于图9的步骤S940在一个示例性实施例中的流程图;图13是基于图9的步骤S950在一个示例性实施例中的流程图;图14是基于图9的步骤S960在一个示例性实施例中的流程图;图15示意性示出了图8中推荐模型的应用场景的示意图;图16示意性示出了根据本公开的再一实施例的用于网络表征学习的方法的流程图;图17示出了根据本公开实施例的压缩比例的示意图;图18示意性示出了本公开的用于网络表征学习的方法的应用在游戏场景时的点击率对比示意图;图19示意性示出了根据本公开的一实施例的用于网络表征学习的装置的框图;图20示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。具体实施方式现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和或处理器装置和或微控制器装置中实现这些功能实体。附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作步骤,也不是必须按所描述的顺序执行。例如,有的操作步骤还可以分解,而有的操作步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。相关技术中,网络表征学习首先在网络结构中进行随机游走获得大量随机游走路径,并将所有随机游走路径作为一篇文档输入词向量模型,以获取网络结构图中每一节点的特征向量。然而,上述相关技术中的方案,在执行过程中将产生大量的随机游走路径,在网络结构图的规模较大时,随机游走路径的数量级更甚。大量的随机游走路径将占用大量的内存资源,或者增加分布式并行计算的通信代价,导致计算性能下降。因此,需要一种新的应用于网络表征学习的方法、装置、计算机可读介质及电子设备。图1示出了可以应用本公开实施例的用于网络表征学习的方法或装置的示例性系统架构100的示意图。如图1所示,系统架构100可以包括终端设备101、102、103中的一种或多种,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机和台式计算机等等。服务器105可以是提供各种服务的服务器。例如终端设备103也可以是终端设备101或102向服务器105上传网络结构图。服务器105可以基于该网络结构图获得所述网络结构图的随机游走路径集合;统计所述随机游走路径集合中的每个节点的出现频率;根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小;根据每个节点的节点编码,获得每条随机游走路径的字符序列。并将字符序列反馈给终端设备103,进而终端设备103可以通过词向量转换模型对随机游走路径的字符序列进行处理,从而以较低的时间复杂度实现网络表征学习算法,提高算法性能。又例如,服务器105可以根据随机游走路径的字符序列进行词向量转换,以获得每个节点的词向量;根据每一节点的词向量训练基于机器学习的推荐模型,并通过训练后的推荐模型进行好友推荐,并将推荐结果反馈给终端设备101也可以是终端设备102或103,进而用于可以基于终端设备101上显示的内容浏览为其推荐的好友信息。图2示意性示出了根据本公开的一个实施例的用于网络表征学习的方法的流程图。本公开实施例所提供的方法可以由任意具备计算处理能力的电子设备处理,例如上述图1实施例中的服务器105和或终端设备102、103,在下面的实施例中,以服务器105为执行主体为例进行举例说明,但本公开并不限定于此。如图2所示,本公开实施例提供的用于网络表征学习的方法可以包括以下步骤。在步骤S210中,获取网络结构图,所述网络结构图中包括N个节点,每个节点对应一个节点标识,N为大于等于1的正整数。本公开实施例中,所述网络结构图可例如为社交网络结构图,网络结构图中的每一节点表示单个用户,可例如为一个社交用户,还可例如为组织、网络IDindentification,标识等不同含义的实体或虚拟个体。在网络结构图中还可包括多个边,用于连接任意两个节点。每一边用于表示其连接的两个节点间的相互关系。相互关系可以是亲友、动作行为、收发消息等多种关系。每一节点的节点标识可例如为十进制数或二进制数等表示的字符串,本公开对节点标识的具体表示形式并不作特殊限定。在步骤S220中,获得所述网络结构图的随机游走路径集合。其中,随机游走也称随机漫步,其是指在网络结构图中,以某个节点做起点,然后以一定的概率随机移动到其邻居位置,再从邻居位置随机移动,直到走t步t是预先设定好的参数,t为大于等于1的正整数,从而得到一个由t个“词”节点组成的“句子”序列。每一“序列”即为一条随机游走路径。随机游走路径可通过“词”节点进行表示,例如,每条随机游走路径中为一序列,该序列中依次包括其游走经过的节点标识,相邻的节点标识直接通过空格隔开。多次随机游走可获得多个随机游走路径,最终整合为随机游走路径集合。在一个实施例中,可以网络结构图中的每一节点为起点作随机游走,且每个节点可做r次随机游走r为预先设定好的参数,r为大于等于1的正整数,那么获得的随机游走路径集合中可包含N*r个随机游走路径,每一条随机游走路径由t个“词”节点组成。在一个实施例中,随机游走的停止条件可为长度限制,如上述举例,当随机游走的步长等于t时,该次随机游走执行完毕。在步骤S230中,统计所述随机游走路径集合中的每个节点的出现频率。在一个实施例中,可为每个节点设置一计数器,每一计数器的初始值为0。并逐个扫描随机游走路径集合中的每一路径的每一节点,当扫描到某一节点时,将该节点对应的计数器执行加1操作。本实施例的扫描结束后,每一节点对应的计数器的数值即为该节点的出现频率。在另一实施例中,当本公开实施例提供的技术方案应用于分布式计算时,在NN为大于等于1的正整数个节点中,对于第nn=1,2…N个节点可输出的键值key-value二元组;并按关键字key进行求和聚合,以获得每个节点的出现频率。其中,key-value中key为关键字,value为属性值,每一关键字对应的属性值具有唯一性。其中,计数器的数据结构可采用哈希表Hashtable的形式,哈希表也叫散列表,其是根据关键码值keyvalue而直接进行访问的数据结构。哈希表通过把关键码值映射到表中一个位置来访问记录,其读写只需O1的时间复杂度,能够加快查找的速度。在步骤S240中,根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小。其中,编码方式可为顺序编码。例如,可根据节点的出现频率对节点进行降序排序,出现频率最高的节点排在第一位,出现频率最低的节点排在最后一位;并根据排序结果为每一节点进行顺序编码,例如,将出现频率最高的节点编码为1,将出现频率最低的节点编码为N。再例如,将出现频率最高的节点编码为0,将出现频率最低的节点编码为N-1。又例如,每一节点的节点编码可为二进制形式,即,将出现频率最高的节点编码000000,出现频率第二高的节点编码为000001,出现频率第三高的节点编码为000010,以此类推。应该理解,本公开对编码的具体数值与数据形式并不作特殊限定。在步骤S250中,根据每个节点的节点编码,获得每条随机游走路径的字符序列。在上述步骤S220中,随机游走路径可以通过节点标识表示。例如,一条随机游走路径p包括3个节点,表示为p=,其中,节点v1的节点标识假设为1234,节点v2的节点标识假设为237,节点v3的节点标识假设为64832,则步骤S220中该随机游走路径用节点标识表示的字符序列为“123423764832”。若在上述步骤S230-S240中,节点v1的节点编码为1,节点v2的节点编码为2,节点v3的节点编码为3,则该随机游走路径用节点编码表示的字符序列可表示为“123”。字符序列中相邻的两个节点编码之间可以通过空格隔开,由此可见,本公开实施例中利用节点编码表示随机游走路径的字符序列,相比于用节点标识表示能够压缩其随机游走路径的字符序列。本公开实施方式提供的用于网络表征学习的方法,在对网络结构图进行网络表征学习时,通过统计随机游走路径集合中每一个节点的出现频率,并根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小,并根据每个节点的节点编码来获得每条随机游走路径的字符序列,从而能够将随机游走路径的字符串形式进行压缩。通过对随机游走路径进行压缩编码,一方面,能够降低随机游走路径的存储空间;另一方面,能够减轻分布式并行计算的通信代价,同时还能够降低网络表征学习算法的时间复杂度,显著提升计算性能。图3是基于图2的步骤S240在一个示例性实施例中的流程图。如图3所示,上述图2实施例中的步骤S240可以进一步包括以下步骤。在步骤S241中,按照节点的出现频率对节点进行降序排列。本公开实施例中,可根据排列结果将节点标识与节点编码以表格的形式表示。例如,表格中每列分别表示节点标识与节点编码,并且出现频率最高的节点位于第一行,出现频率最低的节点位于最后一行。在步骤S242中,对降序排列后的节点进行连续编码,使得每个节点一一映射到[0,N-1]中的一个整数。本公开实施例中,可对表格中的数据进行连续编码。例如在表格中增加“节点编码”的列,从第一行依次对每行对应的节点进行连续编码,第一行的节点编码为0,最后一行的节点编码为N-1。当网络结构规模较大,网络结构图中的节点数量庞大时,可对节点编码进行进一步压缩编码。本公开实施方式提供的用于网络表征学习的方法在获取每条随机游走路径的字符序列时,例如,可通过64编码或128编码等对所有节点的节点编码进行进一步压缩编码,从而能够进一步减少内存占用,并降低通信代价,进一步提高网络表征学习的计算性能。图4是基于图2的步骤S250在一个示例性实施例中的流程图。如图4所示,上述图2实施例中的步骤S250可以进一步包括以下步骤。在步骤S251中,对每个节点的节点编码进行m编码,获得每个节点的编码字符串,m=2n,其中n为大于等于1的正整数。m编码为通过m位的编码表将信息从一种形式或格式转换为另一种形式的过程。本公开实施例中,可通过m位的编码表对节点编码进行进一步的压缩编码,以获得每个节点的编码字符串。m编码可例如为64编码或者256编码等,本公开的技术方案对此并不作特殊限定。本公开实施例中,当节点编码通过二进制形式表示时,可首先对节点编码进行右移n位的操作以及与n位二进制数11..1做与操作,并将位移操作以及与操作获得的数在m位的编码表中进行查找获得对应编码字符,进而生成该节点编码对应的编码字符串。在步骤S252中,根据每个节点的编码字符串,获得每条随机游走路径的字符序列。其中,通过将随机游走路径中每一节点的表示方式更改为编码字符串,可以获得每条随机游走路径的字符序列。本公开实施例中,对每条随机游走路径中的节点进行遍历,以根据每个节点的编码字符串生成该随机游走路径的字符序列,其中,所述字符序列中的相邻编码字符串间通过空格进行间隔。例如,可建立节点标识-编码字符串的key-value格式,以在遍历操作时快速查找获得当前节点的编码字符串,最终获得当前随机游走路径的字符序列。图5是基于图4的步骤S251在一个示例性实施例中的流程图。如图5所示,上述图2实施例中的步骤S251可以进一步包括以下步骤。在本实施例中,步骤S251中的m=64。在步骤S2511中,获得64编码字符转换表。本公开实施例中,64编码字符转换表如表1所示,在表1中0到63的数字可分别映射为[0,9]、[a,z]、[A,Z]、+、-中的字符。表1.64编码字符转换表在步骤S2512中,对每个节点的节点编码进行64除法操作和取模操作,并基于所述64编码字符转换表,获得每个节点的编码字符串。本公开实施例中,可首先对节点编码进行64取模操作,例如,节点编码为67,64取模后为3,并基于64编码字符转换表如表1所示得到取模值的对应编码为“3”;再对节点编码进行64除法操作,如上例所示,67除以64商为1,并基于64编码字符转换表如表1所示得到商的对应编码为“1”,节点编码为67的节点对应的编码字符串为13。图6示意性示出了根据本公开的另一个实施例的用于网络表征学习的方法的流程图。如图6所示,基于上述实施例的用于网络表征学习的方法还包括以下步骤。在步骤S610中,解码每个节点的编码字符串,获得每个节点对应的节点编码。其中,在图4示出的实施例的步骤S251中,通过对每一节点的节点编码进行m编码可获得该节点的编码字符串。在本步骤中,对每个节点的编码字符串执行基于m编码的解码操作,可获得该节点的节点编码。在示例性实施例中,在图4示出的实施例的步骤S251中,当将编码获得的编码字符串记录在节点标识与节点编码的表格中时,可以每个节点的编码字符串为索引,在表格中查找获得该节点对应的节点编码。在步骤S620中,解码每个节点的节点编码,获得每个节点对应的节点标识。本公开实施例中,当节点标识与节点编码以表格的形式表示时,可以每个节点的节点编码为索引,在表格中查找获得该节点对应的节点标识。图7示意性示出了根据本公开的又一个实施例的用于网络表征学习的方法的流程图。如图7所示,基于上述实施例的用于网络表征学习的方法还包括以下步骤。在步骤S710中,通过词向量转换模型对所有随机游走路径的字符序列进行处理,获得每个节点的表征学习向量。其中,词向量转换模型是用来将语言中的词进行数学化的一种方式,词向量转换模型用于将实际对象抽象为词向量,以便机器学习能够对其进行识别。在本公开实施例中,通过词向量转换模型能够将每一节点对象转换为该节点能够被机器所识别的表征学习向量。在步骤S720中,利用每个节点的表征学习向量训练基于机器学习的推荐模型。其中,表征学习向量是机器学习输入的主要方式。例如将表征学习向量作为输入,训练预测模型,以获得可预测关系链,获得推荐列表的推荐模型。推荐模型可以是任意的神经网络模型等,本公开的技术方案对此并不作特殊限定。图8示意性示出了根据本公开的再一个实施例的用于网络表征学习的方法的流程图。如图8所示,基于上述实施例的用于网络表征学习的方法还包括以下步骤。在步骤S810中,获取目标对象的网络结构图。在步骤S820中,通过所述推荐模型对所述网络结构图进行处理,获得所述目标对象的推荐对象。其中,可通过图7中步骤S720中生成的推荐模型对所述网络结构图进行处理,以生成得到网络结构图中每一节点的推荐列表。推荐列表中包括至少一个推荐对象。在步骤S830中,将所述推荐对象发送至所述目标对象。其中,目标对象可为网络结构图中每一节点表示的用户的客户端。例如,可通过节点标识确定客户端地址,并向该客户端地址发送推荐对象。图9示意性示出了根据本公开的再一个实施例的用于网络表征学习的方法的流程图。如图9所示,本实施例提供的用于网络表征学习的方法包括以下步骤。在步骤S910中,对网络结构图进行随机游走获得随机游走路径集合,并统计随机游走路径集合中的每一节点的出现频率。在步骤S920中,根据节点的出现频率,对节点进行排序。在步骤S930中,基于排序结果,对节点进行连续编号,获得每一节点的节点编码,其中出现频率越高的节点拥有越小的节点编码。在步骤S940中,对每个节点的节点编码做64编码,获得每个节点的编码字符串。本公开实施例通过64编码对节点编码进行压缩的方式仅为示例,还可使用其他的编码方式对节点编码进行压缩,例如128编码、256编码等,本公开的技术方案对此并不作特殊限定。在步骤S950中,根据每个节点的编码字符串,将随机游走路径集合中的每条路径转化为字符序列。图10是基于图9的步骤S910在一个示例性实施例中的流程图。如图10所示,上述图9所示实施例中的步骤S910中,通过随机游走获得的随机游走路径集合P中,每条路径表示为p,p∈P,p=,也就是p有k个节点,其中k≥1。在统计随机游走路径集合P里每条路径上节点的出现频率时,可为每个节点v维护一个计数器,表示为cv。并执行如下步骤。在步骤S911中,初始化每个节点v的计数器cv=0,并初始化路径访问下标i=1。在步骤S912中,判断是否满足i≤|p|,若是,执行步骤S914,否则执行步骤S913。在步骤S913中,停止并返回所有节点的计数器。在步骤S914中,将p=作为随机路径集合的第i条路径。在步骤S915中,初始化路径访问下标j=1。在步骤S916中,判断是否满足j≤k?若是,执行步骤S920,否则执行步骤S919。在步骤S919中,i=i+1,并返回执行步骤S912。在步骤S920中,cvj=cvj+1。在步骤S919中,j=j+1,并返回执行步骤S916。图11是基于图9的步骤S920在一个示例性实施例中的流程图。如图11所示,图9所示实施例中的步骤S920和步骤S930可以进一步包括如下步骤。在步骤S921中,把节点按出现频率从大到小进行排序。在步骤S922中,初始化路径访问下标i=1。在步骤S923中,判断是否满足i≤|v|?若是,执行步骤S925,否则执行步骤S924。在步骤S924中,停止,并返回所有节点的节点编码。在步骤S925中,基于排序结果将其中第i个节点v编号为si=i-1。在步骤S926中,i=i+1,并返回执行步骤S923。本公开实施例中,通过,对节点进行一遍扫描进行连续编号,使得1每个节点v一一映射到[0,|V|-1]里一个整数sv,并且2频率cv越高,编号sv越小。比如,频率最大的那个节点的编号是0,而频率最小的那个节点的编号是|V|-1。本公开实施例中的用于网络表征学习的方法中,节点按频率进行排序时,其最差情况下的算法复杂度为Onlogn,其中n=|V|是节点数量。本公开还可使用桶排序算法对节点进行排序,其算法复杂度为On。另一方面,连续编号只需对节点依照排序顺序进行一遍扫描,运行时间复杂度也为On。图12是基于图9的步骤S940在一个示例性实施例中的流程图。如图12所示,图9所示实施例中的步骤940可以进一步包括如下步骤。在步骤S941中,初始化变量t=sv,以及节点v的编码字符串rv为空字符串。在步骤S942中,让x为t取模64。例如,当t=67时,则x=3。在步骤S943中,把x的64编码添加到rv前面,也就是rv=concatBx,rv。例如,x=3,rv=“a”,则Bx=“3”,那么rv更新为“3a”。在步骤S944中,让y为t除以64的整数。例如,当t=67时,则y=1。在步骤S945中,判断是否满足y0?若是,执行步骤S947,否则执行步骤S946。在步骤S946中,停止流程,并且返回节点v的编码字符串rv。在步骤S947中,让t=y,并返回执行步骤S942。本公开实施例中,对64的除法操作和取模操作,可以使用二进制位移操作实现和与操作。例如,67的二进制表示为1000011。那么除以64,则是将1000011向右位移6位,得到1。取模64,则是将1000011和63的二进制数111111做与操作,得到一个二进制数11,也就是3。图13是基于图9的步骤S950在一个示例性实施例中的流程图。如图13所示,图9所示实施例中的步骤950可以进一步包括如下步骤。在步骤S951中,初始化路径p=的字符序列为rp,且rp为空字符串;初始化路径访问下标i=1。在步骤S952中,判断是否满足i≤k。若是,执行步骤S954,否则执行步骤S953。在步骤S953中,停止流程,并返回路径p的字符序列rp。在步骤S954中,判断是否满足i1。若是,执行步骤S955,否则执行步骤S956。在步骤S955中,在rp后面添加一个空格。在步骤S956中,将节点vi的编码字符串rvi添加到rp的末端。在步骤S957中,i=i+1,并返回执行步骤S952。本公开实施例中,例如一条路径p=,其内节点的编码字符串分别为r61=“Z”和r1584=“oM”,因此rp=“ZoM”。相较于字符串“611584”需要7个字符,rp只需4个字符,本公开的用于网络表征学习的方法能够将数据压缩在50%左右,具有较高的压缩比例,进而提升网络表征学习算法的计算性能。本公开实施例中,节点v的64编码rv可以通过哈希表进行存储。基于哈希表的存储方式,读取rv的时间复杂度是O1。那么对路径p进行64编码的复杂度为Ok,其中k是p的路径长度。图14是基于图9的步骤S960在一个示例性实施例中的流程图。如图14所示,图9所示实施例中的用于网络表征学习的方法可以进一步包括以下步骤。图14中的实施例用于对给定的一个编码字符串s进行解码操作,用lens表示字符串s里的字符个数,s[i]表示第i个字符。比如,s=“oM”,那么lens=2,s[1]=‘o’。在步骤S961中,初始化变量i=0,id=0。在步骤S962中,判断是否满足ilens,若是,执行步骤S963,否则执行步骤S964。在步骤S963中,返回id为解码后的节点编码,并结束流程。在步骤S964中,令j为s[i]字符的编码值。在步骤S965中,令id更新为id*64+j。在步骤S966中,令i更新为i+1,并返回执行步骤S962。图15示意性示出了图8中推荐模型的应用场景的示意图。如图8所示,本公开的推荐模型可用于游戏中的好友推荐和师徒推荐,但本公开对推荐模型的具体应用场景并不作特殊限定,例如音乐推荐、视频推荐、物品推荐、文学作品推荐等。如图15所示,在游戏的好友推荐场景中,可首先游戏社交的网络结构图,对其进行随机游走后获得随机游走路径集合,基于随机游走路径集合统计每个节点的出现频率,并根据出现频率进行编码,进而获得编码后的随机游走路径的字符序列;通过词向量转换模型对字符序列进行处理以获得每个节点的表征学习向量,然后基于表征学习向量训练预测模型,以预测关系链,得到推荐好友如图a所示或推荐师父如图b所示的列表。图16示意性示出了根据本公开的再一实施例的用于网络表征学习的方法的流程图。如图16所示,本公开实施例的用于网络表征学习的方法可以包括以下步骤。在步骤S1610中,对网络结构图进行随机游走,获得若干定长的随机游走路径。在步骤S1620中,根据随机游走路径对网络结构图中的每一节点进行连续编码,以获得节点编码。在步骤S1630中,将及节点编码压缩为字符串。在步骤S1640中,将每一随机游走路径看作一个文档输入词向量转换模型,获得每个节点的d维特征向量。其中,d为大于等于1的正整数。表2示出了根据本公开的用于网络表征学习的方法的实验数据集。表2试验数据集数据集节点数量边数量平均好友数量ca-GrQc5241289685.527189ca-CondMat231331868788.078416Enron3669236766210.02022dblp31708010498665.551498webStanford28190323124978.208174webGoogle87571351050396.903795skitter16964151109529811.47723cit-Patents3774768165189477.90628pokec16328033062256421.37413LiveJournal48466096847539115.94553orkut30724411.17E+0843.0296通过将本公开实施例提供的用于网络表征学习的方法应用在表2中每个数据集中,能够获得本公开技术方案的压缩技术的压缩比例。其中,通过在表2中每个数据集上对每个节点进行10次长度为10的随机游走,以获得随机游走路径集合。然后对随机游走路径集合中的节点进行编码,最终获得每条随机游走路径的字符序列。压缩比例的计算方式为:字符序列的数据大小D1,除以直接用节点标识转为字符串得到的数据大小D0,也就是D1D0。图17示出了根据本公开实施例的压缩比例的示意图。如图17所示,分别展示了用排序得到的节点编码得到的数据的排序压缩比例,和使用64编码对节点编码进一步压缩的方案得到的最终压缩比例。如图可知,排序压缩比例为90%左右,而64编码得到的最终压缩比例在50%左右。由此可知本方案的用于网络表征学习的方法具有比较高的压缩比例,可以显著地提升网络表征学习的计算性能。图18示意性示出了本公开的用于网络表征学习的方法的应用在游戏场景时的点击率对比示意图。如图18所示,在游戏场景的师徒推荐业务中采用本公开的用于网络表征学习的方法时,其线上点击率与业务侧的常用方法随机在点击率上相对提升了4.48%。本公开实施例提供的用于网络表征学习的方法应用在游戏场景时,能够提升游戏社交网络分析的业务能力,以便师徒推荐或其他物品推荐、好友推荐业务的计算可以在较少资源和较短时间内完成。以下介绍本公开的装置实施例,可以用于执行本公开上述的用于网络表征学习的方法。对于本公开装置实施例中未披露的细节,请参照本公开上述的用于网络表征学习的方法的实施例。图19示意性示出了根据本公开的一实施例的用于网络表征学习的装置的框图。参照图19所示,根据本公开的一个实施例的用于网络表征学习的装置1900,可以包括:数据获取模块1910、随机游走模块1920、频率统计模块1930、节点编码模块1940以及字符序列生成模块1950。数据获取模块1910可以配置为获取网络结构图,所述网络结构图中包括N个节点,每个节点对应一个节点标识,N为大于等于1的正整数。随机游走模块1920可以配置为获得所述网络结构图的随机游走路径集合。频率统计模块1930可以配置为统计所述随机游走路径集合中的每个节点的出现频率。节点编码模块1940可以配置为根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小。在示例性实施例中,节点编码模块1940可以进一步包括排序单元和编码单元。其中,所述排序单元可以配置为按照节点的出现频率对节点进行降序排列。所述编码单元可以配置为对降序排列后的节点进行连续编码,使得每个节点一一映射到[0,N-1]中的一个整数。字符序列生成模块1950可以配置为根据每个节点的节点编码,获得每条随机游走路径的字符序列。在示例性实施例中,字符序列生成模块1950可以进一步包括编码单元和字符序列输出单元。其中,所述编码单元可以配置为对每个节点的节点编码进行m编码,获得每个节点的编码字符串,m=2n,其中n为大于等于1的正整数;所述字符序列输出单元可以配置为根据每个节点的编码字符串,获得每条随机游走路径的字符序列。在示例性实施例中,m=64,所述编码单元可以进一步包括编码表获取单元和编码子单元。其中,所述编码表获取单元可以配置为获得64编码字符转换表。所述编码子单元可以配置为对每个节点的节点编码进行64除法操作和取模操作,并基于所述64编码字符转换表,获得每个节点的编码字符串。在示例性实施例中,所述字符序列输出单元还可以配置为对每条随机游走路径中的节点进行遍历,以根据每个节点的编码字符串生成该随机游走路径的字符序列,其中,所述字符序列中的相邻编码字符串间通过空格进行间隔。在示例性实施例中,用于网络表征学习的装置1900还可以进一步包括解码模块。所述解码模块可以进一步包括编码字符串解码单元和节点编码解码单元。其中,所述编码字符串解码单元可以配置为解码每个节点的编码字符串,获得每个节点对应的节点编码;所述节点编码解码单元可以配置为解码每个节点的节点编码,获得每个节点对应的节点标识。在示例性实施例中,用于网络表征学习的装置1900还可以进一步包括推荐模型训练模块。所述推荐模型训练模块可以进一步包括向量生成单元和模型训练单元。其中,所述向量生成单元可以配置为通过词向量转换模型对所有随机游走路径的字符序列进行处理,获得每个节点的表征学习向量。所述模型训练单元可以配置为利用每个节点的表征学习向量训练基于机器学习的推荐模型。在示例性实施例,用于网络表征学习的装置1900还可以进一步包括对象推荐模块。所述对象推荐模块可以进一步包括网络结构图获取模块、模型运算模块以及推荐对象发送模块。其中,所述网络结构图获取模块可以配置为获取目标对象的网络结构图。所述模型运算模块可以配置为通过所述推荐模型对所述网络结构图进行处理,获得所述目标对象的推荐对象。所述推荐对象发送模块可以配置为将所述推荐对象发送至所述目标对象。图20示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。需要说明的是,图20示出的电子设备的计算机系统2000仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。如图20所示,计算机系统2000包括中央处理单元CPU2001,其可以根据存储在只读存储器ROM2002中的程序或者从存储部分2008加载到随机访问存储器RAM2003中的程序而执行各种适当的动作和处理。在RAM2003中,还存储有系统操作所需的各种程序和数据。CPU2001、ROM2002以及RAM2003通过总线2004彼此相连。输入输出IO接口2005也连接至总线2004。以下部件连接至IO接口2005:包括键盘、鼠标等的输入部分2006;包括诸如阴极射线管CRT、液晶显示器LCD等以及扬声器等的输出部分2007;包括硬盘等的存储部分2008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分2009。通信部分2009经由诸如因特网的网络执行通信处理。驱动器2010也根据需要连接至IO接口2005。可拆卸介质2011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器2010上,以便于从其上读出的计算机程序根据需要被安装入存储部分2008。特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分2009从网络上被下载和安装,和或从可拆卸介质2011被安装。在该计算机程序被中央处理单元CPU2001执行时,执行本申请的系统中限定的各种功能。需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器RAM、只读存储器ROM、可擦式可编程只读存储器EPROM或闪存、光纤、便携式紧凑磁盘只读存储器CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本公开实施例中所涉及到的模块和或单元和或子单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的模块和或单元和或子单元也可以设置在处理器中。其中,这些模块和或单元和或子单元的名称在某种情况下并不构成对该模块和或单元和或子单元本身的限定。作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图2或图3或图4或图5或图6或图7或图8或图9或图10或图11或图12或图13或图14或图16所示的各个步骤。应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元或者子单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元或者子单元的特征和功能可以在一个模块或者单元或者子单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元或者子单元来具体化。通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质可以是CD-ROM,U盘,移动硬盘等中或网络上,包括若干指令以使得一台计算设备可以是个人计算机、服务器、触控终端、或者网络设备等执行根据本公开实施方式的方法。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

权利要求:1.一种用于网络表征学习的方法,其特征在于,包括:获取网络结构图,所述网络结构图中包括N个节点,每个节点对应一个节点标识,N为大于等于1的正整数;获得所述网络结构图的随机游走路径集合;统计所述随机游走路径集合中的每个节点的出现频率;根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小;根据每个节点的节点编码,获得每条随机游走路径的字符序列。2.如权利要求1所述的方法,其特征在于,根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,包括:按照节点的出现频率对节点进行降序排列;对降序排列后的节点进行连续编码,使得每个节点一一映射到[0,N-1]中的一个整数。3.如权利要求1所述的方法,其特征在于,根据每个节点的节点编码,获得每条随机游走路径的字符序列,包括:对每个节点的节点编码进行m编码,获得每个节点的编码字符串,m=2n,其中n为大于等于1的正整数;根据每个节点的编码字符串,获得每条随机游走路径的字符序列。4.如权利要求3所述的方法,其特征在于,m=64;其中,对每个节点的节点编码进行m编码,获得每个节点的编码字符串,包括:获得64编码字符转换表;对每个节点的节点编码进行64除法操作和取模操作,并基于所述64编码字符转换表,获得每个节点的编码字符串。5.如权利要求3所述的方法,其特征在于,还包括:解码每个节点的编码字符串,获得每个节点对应的节点编码;解码每个节点的节点编码,获得每个节点对应的节点标识。6.如权利要求4所述的方法,其特征在于,根据每个节点的编码字符串,获得每条随机游走路径的字符序列,包括:对每条随机游走路径中的节点进行遍历,以根据每个节点的编码字符串生成该随机游走路径的字符序列,其中,所述字符序列中的相邻编码字符串间通过空格进行间隔。7.如权利要求1所述的方法,其特征在于,还包括:通过词向量转换模型对所有随机游走路径的字符序列进行处理,获得每个节点的表征学习向量;利用每个节点的表征学习向量训练基于机器学习的推荐模型。8.如权利要求7所述的方法,其特征在于,还包括:获取目标对象的网络结构图;通过所述推荐模型对所述网络结构图进行处理,获得所述目标对象的推荐对象;将所述推荐对象发送至所述目标对象。9.一种用于网络表征学习的装置,其特征在于,包括:数据获取模块,用于获取网络结构图,所述网络结构图中包括N个节点,每个节点对应一个节点标识,N为大于等于1的正整数;随机游走模块,用于获得所述网络结构图的随机游走路径集合;频率统计模块,用于统计所述随机游走路径集合中的每个节点的出现频率;节点编码模块,用于根据每个节点的出现频率对每个节点进行编码,使得每个节点对应一个节点编码,其中出现频率越高的节点对应的节点编码越小;字符序列生成模块,用于根据每个节点的节点编码,获得每条随机游走路径的字符序列。10.一种电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一项所述的方法。

百度查询: 腾讯科技(深圳)有限公司 用于网络表征学习的方法、装置及电子设备

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。