(十四)【RecSys 2016】Personalized Recommendations using Knowledge Graphs: A Probabilistic【看不懂】

题目: Personalized Recommendations using Knowledge Graphs: A Probabilistic Logic Programming Approach(一种概率逻辑编程方法)
论文链接:
代码:

想法

(1)推荐系统就是求出user和item的特征表示,最后通过一个公式来解决预测问题!
(2) wikifier or an entity linker
(3)真的很难理解,后面基本都是原地翻译的!看不下去,未来再回来看吧

创新点

  • 元路径的数目首先是不需要定的,超参数优化!
  • 将外部知识用到ProPPR是首次。
  • 这里通过ProPPR根据历史数据来得到seedset! 之后才用于推荐!!!

ABSTRACT

难点

content-based 和 CF结合是趋势,最近已经有工作集中到用外在的KGs来补充content-based推荐系统

我们

我们使用多用途的概率逻辑系统(ProPPR)的三种方法来制作基于KG的推荐系统。 模型最简单EntitySim,仅仅使用了图的连接; 之后扩展该模型到TypeSim,也用了实体的类型来增强它的泛化能力; 之后,开发一个基于潜在因素模型的图表,GraphLF

同时我们也证明了,在解决冷启动和数据稀疏问题时,KG有很大的优势,但是有更多的数据时,KG graph反而变的冗余。

数据集: Yelp、MovieLens-100K

Keywords:基于知识图的推荐; 概率逻辑编程; 基于图的矩阵分解

1. 介绍

社交方法最适合解决用户多而项目相对较少的问题,基于内容的最适合解决冷启动和长尾的设定。 而一个重要的方向就是如何利用外在的知识来提高基于内容的推荐系统。

与基于元路径来推断用户对item的方法不同, 我们的方法将问题表述为一个概率推理和学习任务,提出了三种建议的方法。 而且在其中,许多像特定的元路径或者是元路径的长度的工程问题被消除,这样可以使得系统能够发现元路径方法的更多变体

EntitySim,最简单的方法,方法是学习用户在内容上的偏爱,并利用KG的连接结构来做出预测。

TypeSim,在某些情况下,还可以获得关于内容的类型信息。因此本方法基于EntitySim但是额外的建立了Type流行度和Type相似性模型。 与【27】中相似,【27】也使用类型优化路径选择

GraphLF:最复杂的模型提出,是一个潜在的因子分解模型知识图,和类型无关, 即它不需要键入类型KG

除此之外,本论文中用实验证明,随着密度的变化,图连接结构就足够了,类型图反而是冗余的。 更大的数据密度下,甚至KG本身就是冗余的。 简单的方法反而效果很好。

2. Related Work

HeteRec_p提出了KGs来增强推荐系统,从而实现很好的效果。

HyPER系统:最近另一个使用多种信息源的是HyPER系统,里面作者展示了如何推荐使用概率软逻辑框架。他们创建了规则来模拟CF风格推荐,比如user-based CF中, 梅开三度: 第一度: 使用公式SimilarUsers(u1,u2)∧Rating(ui,i)⇒Rating(u2,i)SimilarUsers(u_1, u_2)\wedge Rating(u_i, i)\Rightarrow Rating(u_2,i)SimilarUsers(u1,u2)Rating(ui,i)Rating(u2,i)来推断,其中$SimilarUsers(u1,u2)SimilarUsers(u_1, u_2)SimilarUsers(u1,u2)表示的是u1u_1u1u2u_2u2kkk-nearest 邻居算法离线计算下两人是相似的; 第二度: 如果朋友网络是可用的,可以利用Friends(u1,u2)∧Rating(ui,i)⇒Rating(u2,i)Friends(u_1, u_2)\wedge Rating(u_i, i)\Rightarrow Rating(u_2,i)Friends(u1,u2)Rating(ui,i)Rating(u2,i);梅开三度:如果其它的评分预测算法比如矩阵分解(MF)可用,然后,他们利用这些规则归纳出一个集成推荐程序RatingMF(u,i)⇒Rating(u,i)Rating_{MF}(u, i)\Rightarrow Rating(u,i)RatingMF(u,i)Rating(u,i)⇁RatingMF(u,i)⇒⇁Rating(u,i)\rightharpoondown Rating_{MF}(u, i)\Rightarrow \rightharpoondown Rating(u,i)RatingMF(u,i)Rating(u,i)。 最后,在训练阶段,他们使用PSL框架学习每个规则的权重,该权重随后用于预测测试集中的评分。

和HyPER系统类似,提出了一个 Markov Logic Networks,在该网络中,使用贝叶斯网络来创建一个hybrid推荐器。 而我们则是使用了外部知识后通用概率推理系统。

而在基于KG的方法中,都是添加各种特殊目的或者是特定领域的知识图, 或者是添加社交网络,计算最相近的邻居。 使用他人的评级来推荐自己的。

2.1 HeteRec_p

目的是使用metapaths来找到用户对没有评级的items的亲和度。首先定义什么是元路径:
Meta-path:

A是node types,R是关系集合。 之后给定一个meta-path P, 我们使用PathSim的变体—User Preference Diffusion来计算user i和item j在P上的相似度。 所以当给定L条原路径后,可以生成作者定义的L个user-item矩阵R~(1),R~(2)…R~(L)\tilde{R}^{\left ( 1 \right ) } ,\tilde{R}^{\left ( 2 \right ) } \dots \tilde{R}^{\left ( L \right ) }R~(1),R~(2)R~(L)! 每一个R~(q)\tilde{R}^{\left ( q \right ) }R~(q)都可以使用使用低秩矩阵逼近技术被近似分解为U~(q)⋅V~(q)\tilde{U}^{(q)}·\tilde{V}^{(q)}U~(q)V~(q)。 之后整体模型被表示为r(ui,vj)=∑q∈LθqU^i(q)⋅V^j(q)r\left(u_{i}, v_{j}\right)=\sum_{q \in L} \theta_{q} \hat{U}_{i}{ }^{(q)} \cdot \hat{V}_{j}^{(q)}r(ui,vj)=qLθqU^i(q)V^j(q) ,其中前面的参数是path q的学习权重。

为了个性化推荐,他们会根据用户的兴趣对其进行聚类,之后推荐函数会定义为:
在这里插入图片描述在这里插入图片描述
其中,CCC表示用户的聚类,sim(Ck,ui)sim(C_k, u_i)sim(Ck,ui)给出一个相似度评分在user i和kthk^{th}kth聚类之间, 同样的,前面的参数是学习的权重。

虽然很好,但是它需要很多超参数设定,比如元路径的数目、cluster的数量还有一个包含了实体和连接类型的丰富KG。

3. PROPOSED METHOD

3.1 Preliminaries

Entity是一个可以映射到知识库和本体的通用的词来表示句子或者短语。 如果要使用Wikipedia等通用知识库,需要使用wikifiler和entity linker。

HIN是异构信息网络,和KGs的区别是有实体和链接的类型映射函数。
Heterogeneous Information

V和E是实体和链接; 而A和R是实体类型和链接类型
这其中需要注意的是: 有两个函数ϕ\phiϕψ\psiψ可以映射出实体和关系的类型!但是并未在图中展示

本文中使用的是宽松版的HIN,也就是有些点没有类型映射。 如果类型丢失,则只有EntitySim和GraphMF可用。

同样使用binary user feedback。 如果评分矩阵entry Ri,jR_{i,j}Ri,j为1就是有行为,否则无行为。

3.2 Running Example

下面我们根据三个Users来理解知识库的作用。
在这里插入图片描述
(必须得知道这个,后面会用到)从历史记录来看,Alice看过了Saving Private Ryan and The Terminal,两个都使得Steven Spielberg as the Director and Tom Hanks as an Actor。根据知识库的设定 。 而且知识库也提供了国家和发行时间得信息。 同样的,我们也知道Bob和Kumar也看了这两个电影。 除了看之外,我们还可以包括用户的动作,比如“回顾”或“喜欢”,如果有的话。鉴于用户过去的观看历史,我们可能想要知道他们观看新电影Bridge of Spies的可能性。 除此之外,movies之间也是有联系的,比如两者可能是续集关系。

3.3 Recommendation as Personalized PageRank

随机游走策略就是让某点按照一定的概率顺着各条路径行走(包括回到自己),在多次游走稳定后,这种游走会产生许多没有意义信息。 比如我们只想要产生user-movie的,而不想产生movie的director-genre-actors。
在上述方法中,没有控制行走。行走的最终结果仅由链路结构和起始节点决定。然而最近方法在学着如何在图上行走。 通过学习一个权重向量www,这个给了一个特征向量ϕuv\phi_{uv}ϕuv在图u−>vu->vu>v中的一个边,计算边的力量为f(w,ϕuv)f(w,\phi_{uv} )f(w,ϕuv)
在训练阶段,学习www被认为是一个带有约束的优化问题。PageRank正示例节点的计算值大于负示例节点的计算值。而在我们的例子中,积极的例子你用户看过的电影,消极的例子则是用户没看过或者是差评的电影。

3.4 Learning to Recommend using ProPPR

ProPPR代表了Programming with Personalized PageRank,是一个一阶概率逻辑系统,接受一个在结构和语义上与逻辑程序和许多facts相似的program,输出一个entities的排序列表,这些实体根据facts answer program。ProPPR根据查询证明图(下文解释)中的个性化PageRank过程对查询的可能答案进行评分。下面将解释如何进行推荐。

首先我们会根据用户的历史数据得到用户感兴趣的一组,我们把它称为seedset。 接下来我们将会将seedset作为该用户随机游走的种子传入到ProPPR程序中。如上图展示的, ProPPR程序有三条规则。 第一规则表明了如果U已经评价了MM和实体X连接,XE是相关的,那么实体E属于用户U的seedset规则二,如果两个实体是一样的,那么两个实体被定义为相关的; 规则三,如果X和另一个实体Z连接,而Z和E相关,那么X和E也是相关的。 最后一条规则是递归的,也就是说可以无限延长。 **Link**和*Type*(isEntity, isItem and isUser)消息形成了我们实例中的知识图谱。 从知识图谱中取样的ProPPR的格式在图3中。 为了找到属于Alice的seedset,我们将发出查询Q=seedset(Alice,E)Q = seedset(Alice, E)Q=seedset(Alice,E)给ProPPR。 (这里需要注意的是,种子集不是开始的节点,而是经过查询用户历史数据后得到的感兴趣的一组nodes)

找用户的seedset

ProPPR以图搜索的方式执行推理。给定像图2的LP程序和一个查询集Q,ProPPR开始创建图像GGG,叫做proof graph。每个图中的节点代表一个有待验证的条件列表。 根节点v0v_0v0就是QQQ,然后它递归地给GGG添加节点和边: 让uuu成为表单[R1,R2,...,RkR_1, R_2,...,R_kR1,R2,...,Rk]的结点,其中R∗R_*R是它的谓词。 如果ProPPR能在数据库中找到与R1R_1R1匹配的fact,然后相应的变量就有了界限,R1R_1R1就会被从列表中移除。 否则,ProPPR在表单S⟵S1,S2,...,SlS\longleftarrow S_1,S_2,...,S_lSS1,S2,...,Slde LP中寻找规则,其中SSS匹配R1R_1R1,如果它发现了这样一个规则,它将创建一个新节点,其中R1替换为S的主体, v=[S1,S2,...,Sl,R2,...Rk]v=[S_1,S_2,...,S_l,R_2,...R_k]v=[S1,S2,...,Sl,R2,...Rk],并且连接uuuvvv
在这里插入图片描述

在实际运行中,v0v_0v0是seedset(Alice, E),然后连接到经过Rule 1得到的v1=[reviewed(Alice,M), link(M,X), related(X,E), isEntity(E)]; 之后,ProPPR将使用训练(历史)数据为 reviewed 创建两个节点v2和v3 [link(Saving Private Ryan,X), related(X,E), isEntity(E)]and[ link(The Terminal,X), related(X,E), isEntity(E)]来代替Saving Private RyanThe Terminal , 并称为 M。 ProPPR将使用规则等等从知识图中替换X和**related(X,E)**直到它到达一个谓词都被替换的节点。这些节点是应答节点,因为它们表示原始查询的完整证明。用于到达这些节点的变量绑定可用于回答查询。例如:
在这里插入图片描述
注意,这样的图构造可能是无限的。因此,ProPPR使用近似接地机制及时构建近似图,在时间O(1α∈)O(\frac{1}{\alpha _ {\in} })O(α1),其中∈\in是一个大约的错误,α\alphaα是重置参数。一旦构建了这样一个图,ProPPR将运行一个个性化的PageRank算法,起始节点为v0v_0v0,并根据其PageRank得分对答案节点进行排序

图2程序的输出是用户U的实体的排序列表,其中前K个将会被存储到U的种子集。 请注意,个性化PageRank评分将那些可以从用户评价了电影出发 ,有多条短路径可以到达的实体排名靠前,相反,相对较远的或者是并没有太多的路径可以到达的实体排名靠后。

在这里插入图片描述

预测

在生成每个user的种子集后,我们下一步骤就是训练模型来预测。 一种方法我们使用图4中的PRoPPR程序, 它表明如果一个实体E属于U的种子集,那么用户U可能喜欢一个电影M,U喜欢E,并且E和另一个实体X相关,这出现在电影M中(Rule 4)。 谓词isApplicable为每个用户控制训练和测试信息。在训练期间,它列出了积极和消极的训练例子,在测试阶段,为每个用户的测试。谓词related的定义与前面一样是递归的。对于谓词likesEntity的定义,请注意术语**{l(U,E)}。这对应于用于标注使用该规则的边的特性。举个例子,如果规则是调用U = AliceE = Tom Hanks**,那么这个特征就是l(Alice, Tom Hanks),在训练阶段,ProPPR从训练数据中学习该特征的权重。在预测阶段,ProPPR使用特征习得的权值作为边缘的权值。注意,每个user-item pair的这些学习权值与从图2的种子集生成程序中获得的排名无关,因为这些权值是特定于预测函数的。

训练阶段,ProPPR使方案的基础类似于前面讨论过的种子集代。EntitySim的一个例子 grounding在图5中描述,其中Bridge Of SpiesCaptain PhillipsAlice的测试例子的集合中,我们可能还有其他测试Alice的例子,但如果它们不能用规则证明(或超过一定的近似误差),它们将不会出现在 grounding。ProPPR遵循类似于Backstrom等人在[3]中提出的程序来训练随机步行者。通过学习一个权重向量www,这个给了一个在图u−>vu->vu>v中的一个边的特征向量ϕuv\phi_{uv}ϕuv,计算边的力量为f(w,ϕuv)f(w,\phi_{uv} )f(w,ϕuv)。权值和特征向量的函数。也就是穿过边的概率 P(v∣u)∝f(w,Φuv)P(v \mid u) \propto f\left(\mathbf{w}, \mathbf{\Phi}_{u v}\right)P(vu)f(w,Φuv). 我们的方法使用f(w,Φuv)=ew⋅Φuvf\left(\mathbf{w}, \mathbf{\Phi}_{u v}\right)=e^{w· \mathbf{\Phi}_{u v}}f(w,Φuv)=ewΦuv.
在训练阶段,学习www被认为是一个带有约束的优化问题。PageRank正示例节点的计算值大于负示例节点的计算值。
在这里插入图片描述
其中,是用w得到的边权计算得到的PageRank向量p。ProPPR所使用的公式6的优化函数是标准的正负对数损失函数,而不是[3]中使用的成对损失函数。为了学习w,我们使用AdaGrad[8]来代替[3]中使用的准牛顿方法和[26]中使用的SGD。将AdaGrad使用的初始学习率和正则化参数µ设为1。关于ProPPR的详细描述,请读者参阅[26]和[25]。

3.5 Approach 2: TypeSim

EntitySim方法只使用知识图链接来了解用户的偏好,然而,回想一下,我们实际上使用的是一个异构信息网络,除了链接信息之外,我们还知道实体的“类型”。例如,我们知道New
York City的类型是City,Tom Hanksis的类型是Actor。为了利用这些额外的类型信息,我们将EntitySim方法扩展为typesim方法,如图6所示。

TypeSim模型通过使用p(T)来学习实体类型提供的总体可预测性,从而对规则10中每个节点类型的普遍流行程度进行建模。例如,类型actor的节点可能比类型Country的节点更深入地了解用户的偏好。注意,学习权重不是针对用户的,因此它的权重是由所有用户共享的。与规则10类似,在规则9中,模型学习实体本身提供的整体可预测性,独立于使用p(E)的用户。例如,史蒂文·斯皮尔伯格导演的电影可能比其他不太知名的导演的电影更受欢迎。Type-Sim也使用规则11和12建模两种类型之间的一般遍历概率。例如,与country→Movie相比,Actor→Movie在图表上的遍历更具预测性。这些权重被纳入到规则7所示的entitysimas的预测规则中。

3.6 Approach 3: GraphLF

协作过滤(CF)最成功的类型之一是潜在因子(LF)模型[15]。他们试图发现描述每个对象的隐藏维度,从而将用户和项目映射到相同的特性空间,以提高推荐性能。Koren等人在[15]中指出,对于电影来说,潜在因素可能衡量明显的维度,如喜剧与戏剧,动作的数量,或儿童取向,以及定义不太明确的维度,如角色发展的深度,或古怪,甚至无法解释的维度。对于用户来说,每个因素衡量的是用户对在相应因素中得分较高的电影的喜爱程度。奇异值分解(Singular Value Decomposition, SVD)是生成推荐LF模型的常用方法之一。SVD方法在每个隐藏维度上为用户和项目分配值,同时在预测和实际评级矩阵上最小化损失函数。
协同过滤方法的主要吸引力在于,它们不需要任何关于用户或物品的知识,只根据评级矩阵进行预测。类似地,基于潜在因素的CF模型的主要吸引力在于,它们基于评分数据开发用户和项目的一般表示,这些评分数据更一般化,通常在原始数据中无法识别。

在这里插入图片描述
鉴于我们可以访问通过不同实体连接条目的KG,我们在本文中提出的第三种方法,GraphLF,集成了潜在因子分解和基于图的推荐。图7定义了整个规则集。其主要规则是潜因子相似性SIMLF规则(17)和(18)的定义。本质上,两个输入实体X和Y的SIMLF是通过首先选择一个维度,然后测量x和y 伴随着 d的值来测量的。如果两个X和Y的值都很高,那么它们的相似度评分也会很高。一个实体X和维度的值,val(X,D)在训练阶段从数据中学习,如规则(18)中定义的那样。
注意,规则(16)中两个相关实体
related(X,Y)相关性的递归定义现在如何改变,以解释它们之间除了存在联系之外的潜在因素相似性。此外,原来的预测规则在rule(13)中已经更改,以使用用户和实体之间的新关联评分。本质上,规则(14)中related(U,E)的定义用用户和属于其种子集的实体之间的潜在因子相似性simlf (U,E)替换了先前的谓词LikesEntity (U,E)
。因此,模型不再学习每个user-entity对的权重,而是沿着每个维度分别学习用户和实体的权重。
同样需要注意的是,与type sim 和 heterec_p不同,GraphLF是类型无关的。类型并不总是可用的,特别是在像Wikipedia图这样的通用图的情况下。因此,类型不可知是一个理想的属性,可以提高其对广泛数据域的适用性。

3.7 Model Complexity

让n是用户的数量和m是items的。即不同实体的数量和类型。那么,本文提出的每种方法所学习的参数个数表征的模型复杂性如下所示:

  • EntitySim-O(n):在这种方法中,我们每个用户-实体对学习一个参数。然而,通过这些规则,我们限制从该用户的种子集中选择实体,该种子集的大小是常数。
  • TypeSim-O(n+e+t2t^2t2):除了学习EntitySim的这些参数外,它还学习每个实体和类型的+t权重。此外,它还学习导致附加参数的类型对之间的类型关联。
  • GraphLF-O(n+m+e):对于每个用户、实体和项目,我们学习与潜在维度相对应的固定数量的权重
    在典型领域中,我们期望t≪mt\ll mtm,因此,从参数的数量来看,EntitySimis本文提出的模型中最简单的,graphlfi是本文提出的模型中较为复杂的

4. EXPERIMENTS AND RESULTS

4.1 Datasets

在这里插入图片描述

4.3 Performance Comparison on Yelp and IM100K

在这里插入图片描述

4.5 Effect of Dataset Density on Performance

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flash 杂志《summer tree》 第六期发布

经过几天的排版,Summer Tree 第六期出来了,在这里感谢Anson和Star的帮助。 封面拿了一张底贴上去,基本上无点ps ,实在无什么美感可言。暂时忍耐一下。 Anson的博客:http://blog.csdn.net/kongweian 下载地址&#xff1…

利用瑞利里兹方法计算固有频率的程序_不可不知的电机磁致伸缩计算方法

磁致伸缩是指电机硅钢片铁芯在交变磁场的作用下,发生微小的尺寸变化的现象,磁致伸缩使铁心随励磁频率的变化做周期性振动。本文主要研究磁致伸缩力和麦克斯韦力对电机振动噪声的贡献,从而对电机的振动噪声控制提供依据。分析必要性电机的振动…

LeetCode 917. 仅仅反转字母

1. 题目 给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。 示例 1: 输入:"ab-cd" 输出:"dc-ba"示例 2: 输入&…

oracle table 函数使用

PL/SQL表---table()函数用法 /*PL/SQL表---table()函数用法:利用table()函数,我们可以将PL/SQL返回的结果集代替table。oracle内存表在查询和报表的时候用的比较多,它的速度相对物理表要快几十倍。simple example:1、table()结合数…

64位进程隐藏不蓝屏_浅析Linux 64位系统虚拟地址和物理地址的映射及验证方法...

前言有好久没更新了,这段时间发生了挺多大喜事哈。但是也还是有挺久没更新了,不得不意识到自己是个小菜鸡,就算是小菜鸡也要做一只快乐小菜鸡。就算更新慢但是我依然会持续更新,因为更文使我快乐。虚拟内存先简单介绍一下操作系统…

知识图谱论文阅读(十五)【arxiv】A Survey on Knowledge Graph-Based Recommender Systems

论文题目: A Survey on Knowledge Graph-Based Recommender Systems 论文链接: 论文代码: 想法 出现Refine就是用某些方法更好的优化特征表示embed的意思就是变成低维向量! 论文 摘要 难点: 当今推荐系统的难点 &…

LeetCode 921. 使括号有效的最少添加(栈)

1. 题目 给定一个由 ( 和 ) 括号组成的字符串 S,我们需要添加最少的括号( ( 或是 ),可以在任何位置),以使得到的括号字符串有效。 从形式上讲,只有满足下面几点之一,括号字符串才是有效的&…

Shlwapi介绍

Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用。有一部分函数,也…

java权限框架_Java高级工程师必备技术栈-由浅入深掌握Shiro权限框架

权限系统在任何一个系统中都存在,随着分布式系统的大行其道,权限系统也趋向服务化,对于一个高级工程师来说,权限系统的设计是必不可少需要掌握的技术栈Apache Shiro™是一个功能强大且易于使用的Java安全框架,用于执行…

【RippleNet】(一)preprocessor.py【未完】

首先读入的文件有movie和book和news三种,肯定会选择一种进行解析! 下面我们以movies作为样例分析: 本论文中使用的数据集是movie-1m ratings.dat: 分别是用户::电影::评分&#xff…

LeetCode 961. 重复 N 次的元素

1. 题目 在大小为 2N 的数组 A 中有 N1 个不同的元素,其中有一个元素重复了 N 次。 返回重复了 N 次的那个元素。 示例 1: 输入:[1,2,3,3] 输出:3示例 2: 输入:[2,1,2,5,3,2] 输出:2示例 3&a…

日照华软游戏开发价格_开发区将是未来刚需人群的首选!

开发区真的只是备胎吗?想必在日照人的心目中一定有一张区域排行榜,而排在榜首的一定是东城片区,这是无可厚非的,毕竟东城片区的各项资源是全市其他区域无法抗衡的,然后西城片区、山海天片区、石臼片区……紧随其后,而…

知识图谱论文阅读(十六)【WWW2019】Knowledge Graph Convolutional Networks for Recommender

题目: KGCN 论文链接: 代码链接:https://github.com/hwwang55/KGCN 想法 高阶的意思就是multi-hop的意思注意是从外向里聚合的,第h-1跳是外侧,第h跳是里侧! 所以才有聚合邻居和本身之说 创新 摘要 为了…

LeetCode 925. 长按键入(双指针)

1. 题目 你的朋友正在使用键盘输入他的名字 name。 偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。 如果它对应的可能是你的朋友的名字(其中一些字符可能被长按&#…

java 拉取收件箱邮件源码_邮件提醒系统:新邮件识别

最近在做邮件提醒抄送企业微信消息系统,就目前而言,无论是pop3还是imap都没有一个好的方法只接收新邮件,基本只能依靠收件箱列表message自行判断,下面给出几种思路并作对比。//收件箱 folder store.getFolder("INBOX")…

Jquery 操作select总结

//遍历option和添加、移除optionfunction changeShipMethod(shipping){var len $("select[nameISHIPTYPE] option").lengthif(shipping.value ! "CA"){$("select[nameISHIPTYPE] option").each(function(){if($(this).val() 111){$(this).remo…

知识图谱论文阅读(十七)【WWW2021】DGCN: Diversified Recommendation with Graph Convolutional Networks

本论文是很明显是基于KGCN的! 如果不懂KGCN,可以看我上一篇博文 论文题目: DGCN: Diversified Recommendation with Graph Convolutional Networks 论文链接: 论文代码: https://github.com/tsinghua-fib-lab/DGCN 想…

PKU-3624

代码 //0-1背包问题 如果不使用循环数组&#xff0c;空间越界。#include <stdio.h>intmain(){ intn, v, i, j; intw[3403], p[3403]; intf[12881]; scanf("%d %d", &n, &v); for(i 1; i <n; i) scanf("%d %d", &a…

LeetCode 1309. 解码字母到整数映射

1. 题目 给你一个字符串 s&#xff0c;它由数字&#xff08;‘0’ - ‘9’&#xff09;和 ‘#’ 组成。 我们希望按下述规则将 s 映射为一些小写英文字符&#xff1a; 字符&#xff08;a - i&#xff09;分别用&#xff08;1 - 9&#xff09;表示。 字符&#xff08;j - z&am…

redis如何设置定时过期_redis补充6之Redis 设置过期时间

一般情况下&#xff0c;我们设置保存的缓存数据的时候都会设置一个过期时间。Redis 中有个设置时间过期的功能&#xff0c;即对存储在 Redis 数据库中的值可以设置一个过期时间。作为一个缓存数据库&#xff0c;这是非常实用的。如我们一般项目中的 token 或者一些登录信息&…