(十九)【AAAI2021】Knowledge-Enhanced Hierarchical Graph Transformer Network for Multi-Behavior Recommend

在这里插入图片描述
题目: Knowledge-Enhanced Hierarchical Graph Transformer Network for Multi-Behavior Recommendation
论文链接:
代码链接:https://github.com/akaxlh/KHGT

论文

  • 时间戳放入到关系中,可以参考这篇《Heterogeneous graph transformer》 WWW 2020
    和《Attention is all you need》

  • 多行为的论文
    《Graph-enhanced multi-task learning of multi-level transition dynamics for session-based recommendation》 2021 AAAI
    《 Graph neural networks for social recommendation》
    《Walkranker: A unified pairwise ranking model with multiple relations for item recommendation》《Knowledge-aware graph neural networks with label smoothness regularization for recommender systems》 KDD 2019
    《Kgat: Knowledge graph attention network for recommendation》KDD 2019
    《Multiplex behavioral relation learning for recommendation via memory augmented transformer
    network》 SIGIR 2020

  • GNN RS:
    《Knowledge-aware coupled graph neural network for social recommendation》AAAI 2021
    《Neural graph collaborative filtering》2017 WWW
    《Inductive representation learning on large graphs》2017 NIPS

  • 其它
    《 Heterogeneous graph transformer》

想法

  • 看题目就可以明白这里的主体是多行为(包括浏览,添加购物车等),所以这种框架就叫做多行为框架; 可是我的想法是,这里我们给它把这些行为也记录下来放到KG中来学习不就可以了吗
  • 还有动态依赖关系? 添加时间模型? 如何处理多种行为的相互依赖关系!
  • 本文是基于多行为图而建立的方法

创新

创新之处就是难点解决的方法!!
(1)time-aware 上下文考虑到了用户交互的动态特征。 方法就是用了正弦函数来计算上下文特征,信息在图上传播时,实体的embedding = 原实体 + 添加了time-aware的实体(4.1)
(2)multi-behavior graph transformer network和多行为相互注意编码器既能获得独特的行为编码又能考虑行为之间的依赖性(4.2);

摘要

难点:
现在都是基于单一类型的user-item交互来计算用户的的偏好(比如交互矩阵中把所有的行为都归纳为1), 然鹅,multi-type 用户交互行为(如浏览、添加购物车等)没有被区别对待! 要解决这个问题,需要考虑三个问题: (1)多种类型的用户交互行为的相互依赖关系 使得提取用户特有的交互方式很困难(2)将KG-aware的item关系纳入多行为推荐框架中(3)multi-typed 用户交互的动态特征。

方法
KHGT框架,用来探索users和items在推荐系统中多种类型的交互模式。该框架建立在基于图的神经网络架构上,具体的该框架有两个任务: (1)捕获每种行为的语义(2)明确区分哪些类型的user-item交互在辅助目标行为的预测任务中更为重要。 除此之外,我们用时空编码策略来整合多模态注意力层,使学习能够反映user-item和item-item的多重合作关系的嵌入,以及潜在的交互动力学。

数据集:三个真实世界的数据集

2. introduction

详解——难点: (1) 多种类型的行为依赖的意思是: 特定类型的行为模式以一种复杂的方式相互交织,并因用户而异,就像购买和添加购物车是相同的或者是用户的负面评价和正面反馈是排斥的; 我们需要编码这种user-item的异构关系! 以分层的方式捕获复杂的内在跨类型行为依赖。 (2)KG有用(3)需要时间模型来更好地处理user-item交互的动态结构依赖关系。

过去的方法: 这些方法都是以相对独立和局部的方式考虑多类型的交互不能捕捉高阶的多重的users和items的关系。 而且怎么充分利用KG和动态的user-item没有被考虑!

详解——具体的方法: 提出了multi-behavior graph transformer networks进行递归的嵌入传播(GCN,都知道的,递归传播),以一种attentive aggregation 策略来捕获users和items的高阶行为的异构性; 为了解决行为动态性,我们则引入了time-aware 上下文; 为了编码特定类型行为表示之间的相互依赖关系,提出了一种多行为相互注意编码器,以成对的方式学习不同类型行为的依赖结构。最后,引入门控聚合层来区分特定类型关系嵌入对最终推荐的贡献。

  • 我们提出了一个框架KHGT,该框架在KG-aware多行为协作图中实现高阶关系的学习。
  • 在KHGT的multi-behavior modeling 范式下联合集成user和item之间的协作相似性:第一阶段,求type-specific user-item interactive patterns in a time-aware 环境中,第二阶段,利用注意力融合网络编码cross-type behavior hierarchical dependencies

3. Preliminaries

U ,I个用户和 V,J个items

User-Item Multi-Behavior Interaction Graph.Gu=(U,V,Eu)G_u=(U,V,E_u)Gu=(U,V,Eu): 和原来的知识图相比,边变成了multi-typed的K种异构关系。 在EuE_uEu,每条边ei,jke_{i,j}^kei,jk表明了在类型k下,用户uiu_iui对item vjv_jvj

Knowledge-aware Item-Item Relation GraphGv=(V,Ev)G_v = (V,E_v)Gv=(V,Ev):包含了items的边信息,考虑items的外部知识,描述跨items的多重依赖关系。 在GvG_vGv中,边ej,j′re_{j,j'}^rej,jr,表明两个实体相连以及meta-relation,这里,R\mathrm{R}R表示可以从不同方面产生的一组关系,比如vjv_jvjvj′v_j'vj属于同类别,相同的位置,或在相同的行为类型kkk和与相同的用户交互。

Task Formulation
输入:上面的两个图
输出: 基于kkk的目标行为类型,推断用户uiu_iui和item vjv_jvj的看不见的交互的概率yi,jy_{i,j}yi,j

4. Methodology

自己的强制理解!
请添加图片描述

端对端的KHGT

在这里插入图片描述
下面是每一块的详解:

4.1 Attentive Heterogeneous Message Aggregation

在这个组件中,我们的目标是在一个统一的图结构神经网络中共同捕获 multi-behavior user-item interactive patternsitem-item dependencies
User-Item Multi-behavior Interaction Graph图中,深蓝线表示页面浏览(page viewPV)、深橙色购物车(Cart)、浅橙色最喜欢(Fav)、浅蓝色购买(Buy)。每条边ei,jke_{i,j}^kei,jk表明了在类型k下,用户uiu_iui对item vjv_jvj的交互。 在图中,统一称用户为uiu_iui,物品item为vjv_jvj!中间的一圈表示是和用户i有关的多个items的交互!

4.1.1 Multi-Behavior Interactive Pattern Encoding.

该模块旨在从users和他们交互的items之间的multi-behavior patterns中聚合异构信号。 为此,我们开发了一种增强全局行为上下文消息传递范式下自适应多行为自注意网络,该网络有三个模块: 由时间上下文编码、信息传播和聚合。

Temporal Information Encoding(给联系嵌入时间戳)

为了在时间感知场景中捕捉不同类型的user-item交互之间的影响,我们开发了一个temporal context encoding方案。具体而言,给定user uiu_iui和item vjv_jvjkkk行为下的联系Ti,jkT_{i,j}^kTi,jk,我们将它们相应的交互时间戳ti,jkt_{i,j}^kti,jk映射到时间缝隙为 τ(ti,jk)\tau (t_{i,j}^k)τ(ti,jk),然后利用正弦函数进行嵌入Ti,jk∈R2d\mathrm {T}_{i,j}^k \in \mathbb{R}^{2d}Ti,jkR2d生成(这是上面联系的表示),这是由Transformer中的位置嵌入框架驱动的(可以参考这篇Heterogeneous graph transformer):
在这里插入图片描述
其中时间信息嵌入中的元素索引(偶数和奇数位置索引)分别表示为(2l)和(2l+1),ddd是维数。
之后呢,为了增强时间上下文的encoding的可调能力,我们在关系表示Ti,jk\mathrm {T}_{i,j}^kTi,jk上添加一个映射层,也就是Tˉi,jk=T⋅Wk\bar{\mathrm{T}}_{i,j}^k = \mathrm{T} \cdot \mathrm{W}_kTˉi,jk=TWk Wk∈R2d×d\mathrm{W}_k \in \mathbb{R}^{2d \times d}WkR2d×d,下面的k表示kkk-type的交互。

Information Propagation Phase(也就是用各个source更新每个实体的过程)

在multi-behavior user-item 交互图GuG_uGu上,我们在source nodes(多个)和target node(单个)之间执行time-aware的信息传播,multi-hop跳,共H跳! 用下面的图注意力机制:
在这里插入图片描述
mi⟵jk和mj⟵ikm_{i\longleftarrow j}^k和m_{j\longleftarrow i}^kmijkmjik表明从item vjv_jvj到user uiu_iui和从user uiu_iui 到item vjv_jvj传播消息。 pj\mathrm{p}_jpj表明了item embedding ej\mathrm{e}_jej和相应的时间上下文表示Tˉi,jk\bar{\mathrm{T}}_{i,j}^kTˉi,jk的元素相加,也就是pj=ej⊕Tˉi,jk\mathrm{p}_j = \mathrm{e}_j \oplus \bar{\mathrm{T}}_{i,j}^kpj=ejTˉi,jk。 相同的操作被应用在从user side上得到信息:pi=ei⊕Tˉi,jk\mathrm{p}_i = \mathrm{e}_i \oplus \bar{\mathrm{T}}_{i,j}^kpi=eiTˉi,jkVkh∈RhH×d\mathrm{V}_k^h\in\mathbb{R}^{\frac{h}{H} \times d}VkhRHh×d是关于第kkk种行为类型的hhh-head投影矩阵。wi,j,khw_{i,j,k}^hwi,j,kh, wi,i,khw_{i,i,k}^hwi,i,kh分别表示了在构造信息pj\mathrm{p}_jpjpi\mathrm{p}_ipi上的学习到的注意力传播权重。

  • wi,j,khw_{i,j,k}^hwi,j,kh, wi,i,khw_{i,i,k}^hwi,i,kh
    也就是k中类型下的,i对j的第h跳的权重:

其中维度要根据H跳的不同而变化! 防止内存需求过大! 其中Qkh,Kkh,Vkh\mathrm {Q}_k^h, \mathrm {K}_k^h,\mathrm {V}_k^hQkh,Kkh,Vkh一般是由h跳中所有的实体组成的!这样我们通过Qp和Kp的点击来计算从i到j的相似度,从而确定权重的大小
在这里插入图片描述
其中N是邻居实体的数量,而且是一个超参数。 如果∣Luk∣≥N\left | L_u^k \right | \ge NLukN,那么就该随机从中选N个;相反,则需要全部设置为Null(也就是zero vectors)。
在本文中,N就是M

  • Qkh,Kkh,Vkh\mathrm {Q}_k^h, \mathrm {K}_k^h,\mathrm {V}_k^hQkh,Kkh,Vkh
    方式上同样是添加映射函数! 这里的M是H跳中实体的限制数量。
    要在消息传递过程中跨不同行为类型合并全局上下文,我们就要在多通道参数学习框架中学习基于注意力的变换矩阵Qkh,Kkh,Vkh\mathrm {Q}_k^h, \mathrm {K}_k^h,\mathrm {V}_k^hQkh,Kkh,Vkh,具体来说,我们设计了一个由M个参数通道组成的基本转换范式。 也就是Qˉkh,Kˉkh,Vˉkh(m=1,...M)\bar{\mathrm {Q}}_k^h, \bar{\mathrm {K}}_k^h,\bar{\mathrm {V}}_k^h(m=1,...M)Qˉkh,Kˉkh,Vˉkh(m=1,...M)。他们对应于MMM个潜在的映射子空间(添加权重),这也反应了跨不同类型的通用行为上下文的不同方面。 形式上,type-specific的转换过程是通过gating mechanism执行的:

Information Aggregation Phase(散出去了后再聚过来)

基于构造的传播消息mi⟵jk和mj⟵ikm_{i\longleftarrow j}^k和m_{j\longleftarrow i}^kmijkmjik,我们通过求和操作对相邻信息进行聚合:
在这里插入图片描述
在这里插入图片描述

4.1.2 Information Aggregation for Item-side Relations

在这里插入图片描述

item-item图中也是上面相似的做法!所以 我们通过注意聚合来融合来自item-item相互依赖的异质信号:
在这里插入图片描述
在这里插入图片描述

4.2 Behavior Hierarchical Dependency Modeling(可以理解上面的只是单纯的用GCN初始化,这里才是添加行为类型)

在我们的多行为推荐场景中,不同类型的用户行为以一种复杂和分层的方式相互交互。为了应对这一挑战,出现了两个问题:(一)我们如何有效地保持不同类型行为之间的相互关系;(二)如何促进不同类型特定行为表现之间的协作来增强最终的表示。

4.2.1 Type-wise Behavior Mutual Relation Encoder

我们的相互的关系encoder是基于按比例缩小的dot-product注意力更新的,通过学习成对的type-wise的相关性分数λk,k′i,h\lambda _{k,k'}^{i,h}λk,ki,h,这个可以被表示为:
在这里插入图片描述
在这里插入图片描述

4.2.2 Cross-Type Behavioral Pattern Fusion

接下来,我们建议通过研究个体在预测用户交互的目标类型中的重要性,从而融合学习到的type-specific behavior representations,我们使用gated fusion mechanism来进行结论性的表示Φj\Phi_jΦj:
在这里插入图片描述
上面的ηjk和ξjr\eta _j^k和\xi _j^rηjkξjrkkk-th类型的user-item交互表示q~ik\tilde{q}_i^kq~ik和r类型的item-item 关系表示q~jr\tilde{q}_j^rq~jr的重要性分数。 它们可以通过下面来得到:
在这里插入图片描述
在这里插入图片描述

4.3 High-order Multi-Behavior Pattern Propagation.

基于已定义的信息传播和聚合函数,我们在图神经网络中捕获了多行为上下文(用户-物品交互图GuG_uGu)下的高阶协作关系。从第(l)层到第(l+ 1)层的更新过程为(Φj(l)∈Rd\mathbf{\Phi} _j^{(l)} \in \mathbb{R}^dΦj(l)Rd):
在这里插入图片描述

Propagate(·)是信息传播函数,它从user-item交互(在EuE_uEu)和item-item依赖(在EvE_vEv)中提取有用的特性。Aggregate(·)表示信息融合函数。最后的嵌入经过不同顺序的表示总结为:Φj=Φj(1)⊕...⊕Φj(L)\Phi _j = \Phi _j^{(1)} \oplus ... \oplus \Phi _j^{(L )}Φj=Φj(1)...Φj(L)

4.4 The Learning Phase of KHGT

在为user和item生成结论性表示Φi\Phi _iΦiΦj\Phi _jΦj之后,用户i和item j的在目标行为下交互概率可以被推断为Pri,j=z⊤×(Φi⊙Φj)P_{r_{i,j}} = \mathrm{z}^{\top } \times \left(\mathbf{\Phi}_{i} \odot \mathbf{\Phi}_{j}\right)Pri,j=z×(ΦiΦj)。 为了进行模型优化,我们的目标是最小化以下边际成对损失函数:
在这里插入图片描述
在这里插入图片描述

实际上,我们会为每个用户随机S积极的items vp1,vp2,…,vpsv_{p_{1}}, v_{p_{2}}, \ldots, v_{p_{s}}vp1,vp2,,vps和S个消极的items vn1,vn2,…,vnsv_{n_{1}}, v_{n_{2}}, \ldots, v_{n_{s}}vn1,vn2,,vns,除此之外,Θ\ThetaΘ表示了可训练的参数的集合,λ\lambdaλ是为正则项的权重。

4.5 Sub-graph Sampling for Large-Scale Data

图神经结构的一个关键挑战是在full-batch模式下对整个图进行信息聚合,这将消耗巨大的内存和计算成本。为了使KHGT具有处理大规模数据的能力,我们在graphGuG_uGuGvG_vGv上开发了一种基于随机游走的子图采样算法,并在采样过程中根据GGG的邻接矩阵中提取的节点相关性来维护一个权值向量。

4.6 Model Complexity Analysis.

我们的KHGTKHGTKHGT花费了O(K×(I+J)×d2)O(K× (I+J)×d^2)O(K×(I+J)×d2)来计算Q,K,L\mathbf{Q,K,L}Q,K,L变换,和O(∣E∣×d)O(|E| ×d)O(E×d)用于信息聚合。对于type-wise modeling,最重要的计算来自O(K×(I+J)×d2)O(K×(I+J)×d^2)O(K×(I+J)×d2)转换。总的来说,我们的KHGT可以达到与GNN-based的多行为推荐方法相当的时间复杂度。此外,与最有效的GCN模型相比,KHGT的中间结果需要适度的额外内存。

5. Evaluation

本节回答了以下研究问题:

  • RQ1:与各种最先进的推荐系统相比,KHGT的表现?
  • RQ2:不同设计的模块和捕获的关系结构对模型性能的贡献是什么?
  • RQ3:在我们的异构聚合器中,KHGT如何与不同类型的行为集成工作?
  • RQ4:与具有代表性的竞争对手相比,KHGT在不同的交互稀疏水平上的表现性?
  • RQ5: KHGT如何执行不同的参数设置(例如,潜在维度和GNN深度)?
  • RQ6:我们的KHGT的解释能力在捕获跨类型行为的相互依赖关系?

Experimental Settings

数据集:
在这里插入图片描述

评测指标: Normalized Discounted Cumulative Gain (NDCG@k)and Hit Ratio(HR@k)

Methods for Comparison.

传统的矩阵分解方法:

  • BiasMF

Autoencoder-based协同过滤:

AutoRec
CDAE

神经网络增强协同过滤:
DMF
NCF

神经自回归推荐方法:
NADE
CF-UIcA

图神经网络协同过滤:
ST-GCN
NGCF

多行为模式推荐。
NMTR
DIPN
NGCFMNGCF_MNGCFM
MATN
MBGCN

Knowledge-aware推荐方法。
KGAT

Parameter Settings

在这里插入图片描述

Performance Validation (RQ1)

在这里插入图片描述
这种表现差异可以归因于对多类型行为相互依赖关系的联合探索和潜在的知识感知项目协作信号。

这说明聚合多重行为模式在设计的交互编码功能中具有积极的作用。此外,基于gnn的神经网络方法优于自编码器和自回归CF模型,表明在用户-物品关系中探索高阶协同信号的合理性。

Model Ablation Study (RQ2)

在这里插入图片描述
我们从五个角度考虑KHGT的不同模型变体,并分析其影响(如图3所示):

Type-specific Behavioral Pattern Modeling.KHGT-GA.
Behavior Mutual Dependency Modeling.KHGT-MR
Cross-Type Behavioral Pattern Fusion.
Temporal Context Encoding.KHGT-Ti.
Incorporation of Item-Item Relations.KHGT-KG.

我们可以观察到,我们开发的完整版本的khgt在所有情况下都取得了最好的性能。我们进一步总结了以下结论:(1)以显式关注的方式建模特定类型的user-item交互模式比执行图结构卷积更好。(2)基于相互关系学习的多行为推荐增强效果。(3)显性判别对于类型特异性行为模式贡献的必要性。(4)时间情境信息对行为动态捕捉的积极作用。(5)在我们的图神经网络中加入项目外部知识有助于更准确地编码用户的多维偏好。

Performance v.s. Multi-Behavior Integration (RQ3)

在这里插入图片描述

Influences of Interaction Sparsity Degrees (RQ4)

在这里插入图片描述

Hyperparameter Effect Investigation (RQ5)

在这里插入图片描述

Case Studies ofKHGT’s Explainability (RQ6)

在这里插入图片描述

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

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

相关文章

LeetCode 1295. 统计位数为偶数的数字

1. 题目 给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。 示例 1: 输入:nums [12,345,2,6,7896] 输出:2 解释: 12 是 2 位数字(位数为偶数) 345 是 3 位数字(位数…

pymysql保存数组_pymysql 读取大数据内存卡死的解决方案

背景:目前表中只有5G(后期持续增长),但是其中一个字段(以下称为detail字段)存了2M(不一定2M,部分为0,平均下来就是2M),字段中存的是一个数组,数组中存N个json数据。这个字段如下:[{"A"…

WPF学习笔记-第二周【基本笔刷】

书接上回&#xff0c;这一次&#xff0c;讲的是WPF中的基本笔刷&#xff0c;由于是菜鸟&#xff0c;就不多说了&#xff0c;继续帖示例代码&#xff1a;&#xff09; 第一部份 代码 第二章 基本笔刷 第一个 示例 VaryTheBackgroud P38 1 #regionVaryTheBackgroud P382 3 ///<…

知识图谱论文阅读(二十)【WWW2020】Heterogeneous Graph Transformer

题目&#xff1a; Heterogeneous Graph Transformer 论文链接&#xff1a; https://arxiv.org/abs/2003.01332 代码链接&#xff1a;https://github.com/acbull/pyHGT 论文 异构图研究之一&#xff1a; 使用元路径来建模异构结构 heterogeneous graphs 《Mining Heterogeneous…

LeetCode 1287. 有序数组中出现次数超过25%的元素

1. 题目 给你一个非递减的 有序 整数数组&#xff0c;已知这个数组中恰好有一个整数&#xff0c;它的出现次数超过数组元素总数的 25%。 请你找到并返回这个整数 示例&#xff1a; 输入&#xff1a;arr [1,2,2,6,6,6,6,7,10] 输出&#xff1a;6提示&#xff1a; 1 < arr…

你真的知道一个HTML及资源是如何load的吗(了解各个部分是何时下载和执行的)

你真的知道一个HTML及资源是如何load的吗(了解各个部分是何时下载和执行的)2009-12-03 01:09 by Tower Joo, 3741 visits, 网摘, 收藏, 编辑 你真的知道一个HTML及资源是如何load的吗(了解各个部分是何时下载和执行的) 本博客所有内容采用 Creative Commons Licenses 许可使用.…

vue开发手机页面闪烁_Vue页面加载闪烁问题的解决方法_婳祎_前端开发者

v-if 和 v-show 的区别v-if只会在满足条件时才会编译&#xff0c;而v-show不管是否满足条件始终会编译&#xff0c;v-show的显示与隐藏只是简单的切换也就是说&#xff0c;在使用v-if时&#xff0c;若值为false&#xff0c;那么页面将不会有这个使用场景一般来说&#xff0c;v-…

知识图谱论文阅读(二十一)【SIGIR2019】NGCF: Neural Graph Collaborative Filtering

题目&#xff1a;Neural Graph Collaborative Filtering 代码&#xff1a; https://github.com/xiangwang1223/neural_graph_collaborative_filtering 本文参考了博文 想法 &#xff08;1&#xff09;其实是很有缺点&#xff0c;在消息传播中&#xff0c;只是使用了邻居与目…

[推荐]VMware Workstation 6.5虚拟机(汉化补丁+注册机+原版安装文件)

VMware虚拟机6.5 新版虚拟机过了近一年的开发&#xff0c;VMware Workstation 6.5终于正式发布了。 这个增强版的Vmware Workstation 6.5不仅将3D加速带到了虚拟机平台&#xff0c;而且新增的Unity模式更是改变了虚拟机应用的模式。 VMware Workstation 6.5新特性有&#xff1a…

bootstrap获取弹框数据_Bootstrap模态弹出框的实例教程

前面的话在 Bootstrap 框架中把模态弹出框统一称为 Modal。这种弹出框效果在大多数 Web 网站的交互中都可见。比如点击一个按钮弹出一个框&#xff0c;弹出的框可能是一段文件描述&#xff0c;也可能带有按钮操作&#xff0c;也有可能弹出的是一张图片。本文将详细介绍Bootstra…

知识图谱论文阅读(二十三)【SIGIR2020】Multi-behavior Recommendation with Graph Convolutional Networks

题目&#xff1a; Multi-behavior Recommendation with Graph Convolutional Networks 论文地址&#xff1a; 论文代码&#xff1a; 想法 将相同行为的交互方式进行了聚合来计算user Embedding和item Embedding 创新 模型要做的事情就是user-item传播层学习行为影响力度&am…

LeetCode 1200. 最小绝对差

1. 题目 给你个整数数组 arr&#xff0c;其中每个元素都 不相同。 请你找到所有具有最小绝对差的元素对&#xff0c;并且按升序的顺序返回。 示例 1&#xff1a; 输入&#xff1a;arr [4,2,1,3] 输出&#xff1a;[[1,2],[2,3],[3,4]]示例 2&#xff1a; 输入&#xff1a;ar…

在mojoportal项目中发邮件使用的是dotnetopenmail

[翻译]开源发送邮件组件dotnetopenmail使用介绍 在mojoportal项目中发邮件使用的是dotnetopenmail介绍发邮件是非常简单的,不管用System.web.mail [ASP.NET 1.1]或System.Net.mail [ASP.NET 2.0],但是还是有其他第三方组件可以被使用,比如DotNetOpenMail.他可以使你用最少的代码…

怎么看表_干货 | 剪力墙、柱、板配筋率到底怎么算?

干货 | 剪力墙、柱、板配筋率到底怎么算&#xff1f;正在努力的阿源 北京峰源结构设计 剪力墙&#xff08;纯剪力墙&#xff09;1.一般部位墙厚高规7.2.1条及抗规6.4.1条&#xff0c;对于一般部位&#xff0c;一、二级不应小于160mm且不宜小于层高或无支长度的1/20&#xff0c;…

(二十四)【2021 ACL】OntoED: Low-resource Event Detection with Ontology Embedding

题目&#xff1a; OntoED: Low-resource Event Detection with Ontology Embedding 论文链接&#xff1a; https://arxiv.org/abs/2105.10922 论文代码&#xff1a;https://github.com/231sm/Reasoning_In_EE 论文 什么原型&#xff1f; Prototypical networks for few-shot …

哈尔滨理工C语言程序设计精髓_【注意啦】哈尔滨工业大学2020考研计算机专业课调整,难度提升!...

前言&#xff1a;最近各高校在密集调整计算机相关专业的专业课&#xff0c;从热门985高校、211高校到普通本科&#xff0c;许多学校的专业课都进行了调整。各高校通常会发布专业课调整通知或者直接发布2020研究生招生专业目录&#xff0c;请各位同学多多关注相关信息。哈尔滨工…

数据恢复软件(绝对真实可用)

本软件已经本人测试&#xff0c;这个数据恢复软件是我用过的感觉最好用的一个了。声明&#xff1a;我是在我电脑没有重装系统的前提下进行测试的。小小的这么一个绿色软件&#xff0c;还真的可以找回大部分删除了N久的文件。感觉很爽。现给大家展示几张我测试时的截图&#xff…

LeetCode 1221. 分割平衡字符串

1. 题目 在一个「平衡字符串」中&#xff0c;‘L’ 和 ‘R’ 字符的数量是相同的。 给出一个平衡字符串 s&#xff0c;请你将它分割成尽可能多的平衡字符串。 返回可以通过分割得到的平衡字符串的最大数量。 示例 1&#xff1a; 输入&#xff1a;s "RLRRLLRLRL"…

安装pp框架

第一步&#xff1a; 创建环境 conda create --name pp37 python3.7 第二步&#xff1a; 激活环境 conda activate pp37 第三步&#xff1a; 官方安装 conda install paddlepaddle-gpu2.1.3 cudatoolkit10.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/clou…

基础算法学习(二)_二叉树及应用赫夫曼编码

这次学习的重点在于二叉树的性质、链式存储结构&#xff08;也就是C语言的struct&#xff09;和赫夫曼编码&#xff0c;学习的教材是清华大学出版社出版的C语言版数据结构。 首先是二叉树&#xff1a; 二叉树&#xff08;Binary Tree&#xff09;是另一种树形结构&#xff…