【论文阅读】Slot-Gated Modeling for Joint Slot Filling and Intent Prediction

文章目录

    • 论文部分
      • Abstract
      • Introduction
      • Proposed Approach
    • 实验部分

论文部分

Abstract

根据slot和intent之间的关系,提出了一种slot gate来学习intent和slot向量之间的关系,通过全局优化来获得更好地语义信息。

Introduction

由于slot通常高度依赖于intent,因此本工作重点介绍如何通过引入slot gate来建模slot和intent向量之间的显式关系:

  • slot gated模型效果比基于注意力的模型具有更好的性能;
  • 对两个SLU数据集的实验表明了所提出的slot gate的推广和有效性;
  • gating表示有助于我们学习 slot-intent 之间的关系。

Proposed Approach

模型架构图。

【论文阅读】Slot-Gated Modeling for Joint Slot Filling and Intent Prediction_第1张图片

可以看出,该模型主要是将单词序列输入一个双向的LSTM中

state_outputs, final_state = tf.nn.bidirectional_dynamic_rnn(cell_fw,
                                                                 cell_bw,
                                                                 inputs,
                                                                 sequence_length=sequence_length,
                                                                 dtype=tf.float32)

对于输出部分,将其通过两种方式进行拼接,分别作为slot和intent attention层的输入:

# final_state size : [batch_size, 4 * layer_size],作为intent_attention的输入
final_state = tf.concat([final_state[0][0], final_state[0][1],
                             final_state[1][0], final_state[1][1]], 1)
# state_outputs size : [batch_size, sequence_length, 2 * layer_size],作为slot_attention的输入
state_outputs = tf.concat([state_outputs[0], state_outputs[1]], 2)

然后是attention的部分,这里使用了一层卷积来实现注意力机制.

hidden_features = tf.nn.conv2d(hidden_conv, k, [1, 1, 1, 1], "SAME")
hidden_features = tf.reshape(hidden_features, origin_shape)

接下来是slot-gated的概念

intent_gate = _linear(intent_output, attn_size, True)
intent_gate = tf.reshape(intent_gate, [-1, 1, intent_gate.get_shape()[1].value])

实验部分

  1. 代码下载:SlotGated-SLU

  2. 环境要求:
    python3.5 + tensorflow1.4

  3. 环境配置:

    • 安装虚拟环境
      安装虚拟环境
      pip install virtualenv
      在当前目录下,创建虚拟环境目录,并指定python解释器。
      virtualenv -p /usr/bin/python3.5 tensorflow-py3.5
      激活虚拟环境
      source tensorflow-py3.5/bin/activate
      激活之后可以看到:

参考博客:python虚拟环境–virtualenv

  • tensorflow下载安装:可以使用清华大学提供的镜像,选择相应的计算单元、操作系统、python版本、tensorflow版本进行下载安装,会自动生成安装命令。

  • (已弃用的方法)

清华大学tensorflow镜像
我使用的安装命令:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/tensorflow-1.4.0-cp35-cp35m-linux_x86_64.whl
- 安装完毕之后就可以根据readme里的Usage来运行程序了。

  • 使用tensorflow1.14

注意1.4版本的一些函数与1.14版本不兼容,修改后再跑代码,具体如下:

# 源代码
from tensorflow.python.ops import rnn_cell_impl
y = rnn_cell_impl._linear(slot_inputs, attn_size, True)

替换为:

from tensorflow.contrib.rnn.python.ops.core_rnn_cell import _linear
y = _linear(slot_inputs, attn_size, True)

你可能感兴趣的:(论文笔记)