Advertisement

【论文阅读】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

模型架构图。

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

复制代码
    state_outputs, final_state = tf.nn.bidirectional_dynamic_rnn(cell_fw,
                                                                 cell_bw,
                                                                 inputs,
                                                                 sequence_length=sequence_length,
                                                                 dtype=tf.float32)
    
    
    AI写代码python
    
    运行

对于输出部分,将其通过两种方式进行拼接,分别作为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)
    
    
    AI写代码python
    
    运行

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

复制代码
    hidden_features = tf.nn.conv2d(hidden_conv, k, [1, 1, 1, 1], "SAME")
    hidden_features = tf.reshape(hidden_features, origin_shape)
    
    
    AI写代码python
    
    运行

接下来是slot-gated的概念

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

实验部分

代码下载:SlotGated-SLU

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

环境配置:

复制代码
 * **安装虚拟环境** :  

安装虚拟环境
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)
    
    
    AI写代码python
    
    运行

替换为:

复制代码
    from tensorflow.contrib.rnn.python.ops.core_rnn_cell import _linear
    y = _linear(slot_inputs, attn_size, True)
    
    
    AI写代码python
    
    运行

全部评论 (0)

还没有任何评论哟~