Как использовать предварительно обученную модель ELMo (5.5B), обученную в Википедии и новом корпусе с использованием каркаса keras - PullRequest
0 голосов
/ 01 мая 2019

Как получить доступ к встраиваниям ELMo, обученным в Википедии + Новый корпус (5.5B) в рамках Keras для классификации текста?

Я не могу определить, как получить доступ к модели ELMo, обученной в Википедии + Новый корпус (5.5B)

Я написал этот код для использования Elmo model(trained on 1 Billion Word Corpus) for text classification using tensorflow hub and Keras

from keras.layers import Input, Lambda, LSTM,Embedding,concatenate,BatchNormalization,Dense
from keras.models import Model
import keras.backend as K
import tensorflow as tf
import tensorflow_hub as tf_hub

sess = tf.Session()
K.set_session(sess)

def ELMoEmbedding(x):
    return elmo_model(tf.squeeze(tf.cast(x, tf.string)), signature="default", as_dict=True) ["elmo"]

#elmo vectors
elmo_input_layer = Input(shape=(1, ), dtype=tf.string)

embed_elmo = Lambda(ELMoEmbedding, output_shape=(max_sentence_length,1024,))(elmo_input_layer)

lstm = LSTM(256, dropout=0.2, recurrent_dropout=0.2)(embed_elmo)

output_layer = Dense(4, activation='sigmoid')(lstm)

model = Model(inputs=elmo_input_layer, outputs=output_layer)

model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

print(model.summary())

Я видел приведенный ниже код в ссылке для доступа к модели ELMo, обученной на 5,5 В корпусе (https://github.com/allenai/allennlp/blob/master/tutorials/how_to/elmo.md)


from allennlp.modules.elmo import Elmo, batch_to_ids

options_file = "https://s3-us-west-2.amazonaws.com/allennlp/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_options.json"

weight_file = "https://s3-us-west-2.amazonaws.com/allennlp/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_weights.hdf5"

# Compute two different representation for each token.
# Each representation is a linear weighted combination for the
# 3 layers in ELMo (i.e., charcnn, the outputs of the two BiLSTM))
elmo = Elmo(options_file, weight_file, 2, dropout=0)

# use batch_to_ids to convert sentences to character ids
sentences = [['First', 'sentence', '.'], ['Another', '.']]
character_ids = batch_to_ids(sentences)

embeddings = elmo(character_ids)

Однако я не могу понять, как использовать этот код в приведенной выше модели классификации текста Keras.

...