【论文泛读】基于扩展的S-LSTM 的文本蕴含识别

摘要

文本蕴含识别旨在自动判断给定的前提和假设(通常为2个句子)之间是否存在蕴含关系,是自然语言处理领域一项基础但富有挑战的任务.当前,主流的基于深度学习的模型通常分别建模前提和假设的语义表示,而没有把它们看作一个整体;另外,在捕获它们之间的语义关系时,大都没有同时利用句子级别的全局信息和短语级别的局部信息.最近提出的S-LSTM 能够同时学习句子和短语的语义表示,在文本分类等任务上取得了较好的效果.基于上述情况,提出了一种基于扩展的S-LSTM 的文本蕴含识别模型.一方面,把前提和假设看作一个整体,扩展S-LSTM 以同时学习它们的语义表示;另一方面,在建模语义关系时,既利用句子级别的信息又利用短语级别的信息,以此获得更好的语义表示.在 英 文SNLI数据集和中文CNLI数据集上的实验结果表明:提出的模型取得了比基准模型更好的识别性能.

模型

在这里插入图片描述

总结

本文提出了一种基于扩展 的 S-LSTM 的 文 本蕴含识别模型.具体地,从编码层中前提和假设的信息交换的建模、交互层中句子级别的全局语义的利用这2个方面对前人的工作进行改进.所 提 模 型 在文 SNLI和 中 文 CNLI数 据 集 上,都 取 得 了 同 类方法中较好的识别性能.在未来的工作中,我们将探索把扩展的S-LSTM 用于其他句子对相关的任务,如隐式篇章关系识别、复述识别等.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Keras实现SLSTM的示例代码: ```python from keras.layers import Layer, LSTM, Multiply, Add class SLSTM(Layer): def __init__(self, units, **kwargs): self.units = units super(SLSTM, self).__init__(**kwargs) def build(self, input_shape): self.lstm = LSTM(self.units, return_sequences=True) self.wf = self.add_weight(name='forget_weight', shape=(self.units,), initializer='uniform', trainable=True) self.wi = self.add_weight(name='input_weight', shape=(self.units,), initializer='uniform', trainable=True) self.wo = self.add_weight(name='output_weight', shape=(self.units,), initializer='uniform', trainable=True) self.wc = self.add_weight(name='candidate_weight', shape=(self.units,), initializer='uniform', trainable=True) super(SLSTM, self).build(input_shape) def call(self, inputs): x, h, c = inputs lstm_out = self.lstm(x) f = Multiply()([lstm_out, self.wf]) i = Multiply()([lstm_out, self.wi]) o = Multiply()([lstm_out, self.wo]) c = Add()([Multiply()([c, self.wf]), Multiply()([i, self.wc])]) h = Multiply()([o, c]) return [h, c] def compute_output_shape(self, input_shape): return [(input_shape[0][0], input_shape[0][1], self.units), (input_shape[0][0], self.units)] def get_config(self): config = super(SLSTM, self).get_config() config.update({'units': self.units}) return config ``` 在该代码中,我们首先定义一个`SLSTM`类,它继承了Keras的`Layer`类。在`__init__`方法中,我们传入`units`参数来指定SLSTM层中LSTM层的输出维度。在`build`方法中,我们首先创建一个LSTM层,并初始化了一些权重。其中,`wf`、`wi`、`wo`和`wc`分别代表了遗忘门、输入门、输出门和候选记忆单元的权重。在`call`方法中,我们首先将输入`x`通过LSTM层进行处理,然后分别使用上述4个权重计算出遗忘门、输入门、输出门和候选记忆单元。接着,我们使用这些门和候选记忆单元更新当前时刻的记忆单元`c`和隐藏状态`h`。最后,在`compute_output_shape`方法中,我们指定了输出的形状。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值