实施Luong和Manning的混合模型

时间:2017-10-25 05:51:43

标签: machine-learning tensorflow nlp keras stanford-nlp

hybrid word character model

如上图所示,我需要创建一个混合编码器 - 解码器网络(seq2seq),它将单词和字符嵌入作为输入。 如图所示,考虑一下句子:

  

一只可爱的猫

假设词汇中的单词是:

  

a,cat

和词汇单词是:

  

可爱

我们将 a,cat 这些词作为各自的嵌入词 但由于可爱超出了词汇量,我们通常会通过嵌入通用令牌来提供它。

但是在这种情况下,我需要通过另一个seq2seq图层逐个字符传递那个独特的单词(可爱的,这是词汇外),以生成其嵌入在飞。

两个seq2seq层必须端到端地共同训练。 以下是我的代码片段,其中我尝试了主编码器解码器网络,该网络在 Keras

中采用基于字的输入
model=Sequential()
model.add(Embedding(X_vocab_len+y_vocab_len, 300,weights=[embedding_matrix], input_length=X_max_len, mask_zero=True))
for i in range(num_layers):
    return_sequences = i != num_layers-1
    model.add(LSTM(hidden_size,return_sequences=return_sequences))



model.add(RepeatVector(y_max_len))

# Creating decoder network
for _ in range(num_layers):
    model.add(LSTM(hidden_size, return_sequences=True))
model.add(TimeDistributed(Dense(y_vocab_len)))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',
        optimizer='rmsprop',
        metrics=['accuracy'])

这里X是我的输入句子,y是要生成的句子,词汇量大小是我固定的由频繁的词组成的词汇,根据词汇量大小,词汇量被认为是词汇量不足

这里我在Keras创建了一个顺序模型,我在其中添加了由GloVe生成的预训练矢量的嵌入(embedding_matrix)

如何建模输入来实现这样的服务?

参考文件是: http://aclweb.org/anthology/P/P16/P16-1100.pdf

0 个答案:

没有答案