Classifying Relations via Long Short Term Memory Networks along Shortest Dependency Path

本文提出SDP-LSTM模型,利用最短依赖路径和LSTM进行关系分类,通过多通道处理异构信息,有效防止过拟合,实现高精度分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要贡献:

  1. SDP对于关系分类很有用,它包含了大量对关系分类有用的信息。
  2. 自然语言的歧义性会提高这个任务的难度,因此整合异构语言知识对任务是有益的。
  3. 将SDP按照公共子节点分成两段子路径能够捕捉到关系的有向性。
  4. LSTM单元能够有效的检测到特征并沿着SDP传播。

摘要

这篇文章中,作者提出了SDP-LSTM模型来对一句句子中的两个实体进行关系分类。这种生机网络架构利用了两个实体间的最短依赖路径(shortest dependency path,SDP),而LSTM能够从SDP中选出异构信息。这种模型有一下几个特征:
1. SDP能够消除一句话中无用的单词,保留最有用的信息。
2. 多通道LSTM网络能够将异构信息进行有效的集成。
3. 采用了定制的dropout策略,能够防止神经网络过拟合。

引言

传统的关系分类方法非常依赖特征表示,它们需要大量的特征,并且如果特征集不好的话,很难提升模型的性能。而前几年的方法非常依赖设计的kernel,这是对整体数据信息把控的关键。现在,随着深度学习的兴起,它提供了一种自动提取特征的学习方法,并且表现相当好。

这篇文中,作者提出了一种新的神经网络,使用SDP以及LSTM来进行关系分类,它有一下几个优点:
1. SDP具有大量的信息,它完全能够确定两个实体间的关系。在SDP上面的单词是对原始句子的简略表示,它包含了大量目标关系的信息。
2. 方向很重要。依赖树是一种有向树。并且实体间的关系是有向的, r(a,b) r ( a , b ) r(b,a) r ( b , a ) 是不一样的。因此,作者认为让神经网络有能力处理这种有向性式非常必要的。处于这种考虑,作者将SDP分成两个子路径,每个路径都是从一个实体当公共祖先节点。而沿着这两条路径的提取出来的特征进行拼接之后,再进行分类。
3. 用语言信息来帮助分类。为了获取异构信息,作者设计了一种多通道的循环神经网络,它充分利用了各种各样的信息,包括单词、命名实体识别的tags,上位词以及语法关系。

作者使用LSTM来传播有效信息,还用dropout防止过拟合。这是第一次使用基于LSTM的RNN结合来进行关系分类。

相关工作

在之前的工作中,NLP领域的关系分类主要分为3类:基于特征、基于kernel、基于神经网络。

在基于特征的方法中,需要提取各种各样的特征,然后喂给分类器。一般来说,词法特征(实体属性、标签、相邻实体信息)、句法特征(分块、解析树)以及语义特征是最常用的三类特征。

基于kernel的方法制定了两个数据集上的相似性度量方式。例如zelenko通过两棵树的公共子树来计算它们的相似性;Bunescu and Mooney提出使用SDP kernel来进行关系分类,主要思路是两个实体间的关系会很大程度上依赖SDP。Wang对多种kernel进行了系统性的分析,他得出将卷积核与语义特征结合能够提升关系分类效果的结论。Plank and Moschitti除了考虑了结构信息以外,还将语义信息引如kernel中。kernel方法的一个难点是,它需要将所有的信息都包含进来,因此设计一个有效的kernel非常重要。

深度神经网络能够自动挖掘特征。Socher提出在句子解析树上使用RNN来进行情感分析,这种模型也可以用来进行关系分类。Hashimoto明确了带权短语对提升RNN性能的重要性。Ebrahimi and Dou重构了RNN,用于发现两个实体之间的依赖路径。Zeng在序列化的句子信息中使用卷积神经网络。 dos Santos也使用卷积网络,除此以外,他们还提出了一个ranking loss function用于数据清洗。

SDP-LSTM模型

Overview

首先,使用斯坦福的解析器将句子解析成依赖树,然后从中提取最短依赖路径(SDP)作为网络的输入。对于SDP上的每个单词,作者主要用到了每个单词的word embedding、POS tags、语法关系、上位词。

用两个LSTM网络分别从SDP的两个子路径中提取信息,然后接一个max pooling层将不同通道(每个单词的word embedding、POS tags、语法关系、上位词)的信息拼接起来,之后再链接一个隐藏层。最后用softmax进行分类。

最短依赖路径(SDP)

作者观察到两个实体的公共节点到这两个节点的两条子路径,能够对有向关系的确定提供大量的信息。根据这个发现,作者设计了两个RNN来传播从实体到公共节点的信息。并且这个模型是对方向敏感的。

通道(Channels)
  1. Word representation. 这里作者使用无监督的word embedding来提取单词的词法信息。
  2. 词性标注(POS). 作者使用了一个粗粒度的词性类别,其中包含15种不同的词性。
  3. 语法关系. 一对相同的单词可能会有不同的依赖关系,这种依赖关系也非常重要。作者将这些关系分为19类
  4. 上位词. 作者使用了别人的工具来对每个单词生成上位词,上位词共有41个。
LSTM

对于子路径中的 t t -th个单词,它会有hidden state h t 由, ht h t ht1 h t − 1 与当前单词 xt x t 构成。其公式如下:

ht=f(Winxt+Wrecht1+bh) h t = f ( W i n x t + W r e
### 基于类原型对比学习在多标签和细粒度教育视频分类中的应用 #### 类原型对比学习的核心概念 类原型对比学习是一种通过构建类别级别的代表性向量(即类原型),并利用这些原型之间的关系来进行特征学习的方法。这种方法能够有效捕捉类间差异以及类内一致性,从而提升模型的泛化能力[^1]。 具体而言,在多标签场景下,每个类别的原型可以通过该类别下的所有样本嵌入向量计算得到。通常采用均值池化的方式生成类原型 \( C_k \),其中 \( k \) 表示第 \( k \) 个类别: \[ C_k = \frac{1}{N_k} \sum_{i=1}^{N_k} f(x_i), \] 这里 \( N_k \) 是属于类别 \( k \) 的样本数量,\( f(x_i) \) 则是输入样本 \( x_i \) 经过编码器提取后的特征向量[^2]。 #### 对比损失函数的设计 为了实现更有效的特征表示学习,对比学习框架引入了一种特殊的损失函数——InfoNCE Loss (Information Noise Contrastive Estimation)。这种损失函数旨在最大化正样本对之间的相似性,同时最小化负样本对之间的相似性。对于给定查询样本 \( q \),其对应的正样本集合记作 \( P(q) \),而负样本集合则为 \( N(q) \),那么 InfoNCE Loss 可定义如下: \[ L_{contrastive}(q) = -\log \left( \frac{\exp(\text{sim}(q, p)/\tau)}{\sum_{n \in N(q)} \exp(\text{sim}(q,n)/\tau)+\sum_{p' \in P(q)} \exp(\text{sim}(q,p')/\tau)} \right). \] 这里的 \( \text{sim}() \) 函数通常是余弦相似度或者欧氏距离,参数 \( \tau \) 称为温度超参,控制分布的锐利程度。 #### 多标签与细粒度教育视频分类的应用挑战 当应用于多标签和细粒度教育视频分类时,主要面临以下几个方面的挑战: - **标签不平衡**:某些细粒度类别可能拥有远少于其他类别的标注数据,这会使得训练过程中难以形成可靠的类原型。 - **语义重叠**:不同类别之间可能存在较高的语义关联性,增加了区分难度。 - **时间依赖特性**:相比于静态图片,动态视频还包含了帧间的时间序列信息,这对建模提出了更高要求。 针对上述问题,可以考虑以下改进措施: 1. 引入自适应权重机制调整各类别的重要性; 2. 设计专门的模块捕获跨帧间的长期依赖关系,比如使用 LSTM 或 Transformer 结构; 3. 融合外部知识源辅助优化决策边界。 #### 实验验证与效果分析 实验表明,在多个公开基准数据集上,基于类原型对比学习的方法显著优于传统监督方法以及其他无监督预训练方案。特别是在低资源环境下,由于充分利用了有限样例内部的信息结构,性能优势更加明显。 ```python import torch.nn.functional as F def info_nce_loss(query_embeddings, positive_embeddings, negative_embeddings, temperature=0.5): """ Compute the contrastive loss using InfoNCE formulation. Args: query_embeddings (Tensor): Query embeddings of shape [batch_size, embedding_dim]. positive_embeddings (Tensor): Positive sample embeddings of same shape. negative_embeddings (Tensor): Negative samples with shape [num_negatives * batch_size, embedding_dim]. temperature (float): Temperature parameter controlling sharpness. Returns: Tensor: Scalar value representing computed loss. """ # Normalize all vectors to unit length queries_norm = F.normalize(query_embeddings, dim=-1) positives_norm = F.normalize(positive_embeddings, dim=-1) negatives_norm = F.normalize(negative_embeddings, dim=-1) logits_pos = torch.sum(queries_norm * positives_norm, dim=-1).unsqueeze(-1) / temperature logits_neg = torch.matmul(queries_norm.unsqueeze(1), negatives_norm.T.permute(0, 2, 1)) / temperature full_logits = torch.cat([logits_pos, logits_neg], dim=-1) labels = torch.zeros(full_logits.shape[:2]).to(logits_pos.device).long() return F.cross_entropy(full_logits.view(-1, full_logits.size(-1)), labels.view(-1)) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值