《enhancedlstmfornaturallanguageinference》(自然语言推理)(代码片段)

张乐乐章 张乐乐章     2022-11-18     745

关键词:

解决的问题

自然语言推理,判断a是否可以推理出b。简单讲就是判断2个句子ab是否有相同的含义。

方法

我们的自然语言推理网络由以下部分组成:输入编码(Input Encoding ),局部推理模型(Local Inference Modeling ),和推断合成(inference composition)。结构图如下所示:

技术分享图片

垂直来看,上图显示了系统的三个主要组成部分;水平来看,左边代表称为ESIM的序列NLI模型,右边代表包含了句法解析信息的树形LSTM网络。

输入编码

 1     # Based on arXiv:1609.06038
 2     q1 = Input(name=q1, shape=(maxlen,))
 3     q2 = Input(name=q2, shape=(maxlen,))
 4 
 5     # Embedding
 6     embedding = create_pretrained_embedding(
 7         pretrained_embedding, mask_zero=False)
 8     bn = BatchNormalization(axis=2)
 9     q1_embed = bn(embedding(q1))
10     q2_embed = bn(embedding(q2))
11 
12     # Encode
13     encode = Bidirectional(LSTM(lstm_dim, return_sequences=True))
14     q1_encoded = encode(q1_embed)
15     q2_encoded = encode(q2_embed)

有2种lstm:

 

A: sequential model 的做法 
技术分享图片

句子中的每个词都有了包含周围信息的 word representation

B: Tree-LSTM model的做法 
技术分享图片

树中的每个节点(短语或字句)有了向量表示 htt

关于tree-LSTM 的介绍需要看文章: 
[1] Improved semantic representations from tree-structured long short-term memory networks 
[2] Natural Language inference by tree-based convolution and heuristic matching 
[3] Long short-term memory over recursive structures

 

第二部分:Local Inference Modeling 


A: sequential model 
技术分享图片

技术分享图片

两句话相似或相反的对应

B: Tree-LSTM model 
两棵树任意两个节点利用公式(11)计算