Как использовать изученный word2vec в keras/tensorflow?

Я хочу классифицировать 2 типа предложений: утверждения и вопросы. Для этого мне нужно уже выучить word2vec NN, чтобы передавать предложения, бросать его и получать 2d-массив для каждого предложения, например:

[[~300 элементов], [~300 элементов], [~300 элементов], ...]

"300" - приблизительная длина вектора слова.

как это сделать керас? какую библиотеку лучше использовать?


person Dmytro Nalyvaiko    schedule 12.03.2017    source источник


Ответы (1)


Я советую вам использовать слой Embedding и установить его веса:

input = Input(shape=(seq_len,))
embedding = Embedding(input_dim=vocabulary_size, 
    output_dim=300, weights=[your_w2v_matrix])(input)
...

Здесь вы можете найти действительно похожий вопрос.

person Marcin Możejko    schedule 12.03.2017
comment
ответ на этот вопрос относится к сообщению ben.bolte.cc/blog/2016/ keras-gensim-embeddings.html . но этот пост непонятен - person Dmytro Nalyvaiko; 12.03.2017
comment
Слой Embedding, показанный в моем ответе, также должен решить вашу проблему. - person Marcin Możejko; 12.03.2017
comment
можете ли вы показать часть кода, который преобразует предложения в массивы векторов word2vec? - person Dmytro Nalyvaiko; 12.03.2017
comment
Конечно, если вы укажете формат ваших предложений и матрицу w2v. - person Marcin Możejko; 12.03.2017
comment
У меня нет никакого формата. просто есть 2 массива. первый массив содержит утверждения, второй - вопросы. У меня пока нет даже образца поезда. так что это абстрактные предложения, и на самом деле неважно, в каком формате они должны быть, я думаю. и про w2v матрицу. Я на самом деле не знаю, что это такое. для меня преобразование w2v - это преобразование черного ящика. Итак, вы можете помочь мне в этом случае? - person Dmytro Nalyvaiko; 12.03.2017
comment
В каком формате эти вопросы и заявления? Они numpy.array? Или списки строк? - person Marcin Możejko; 12.03.2017
comment
это не важно, но предположим, что это списки строк, например: statements = [some st 1, some st 2, some st 3, ...] questions = [some qw 1, some qw 2, some qw 3 , ...] - person Dmytro Nalyvaiko; 12.03.2017
comment
У меня сложилось впечатление, что формат keras.layers.Embedding с weights устарел, если вы проверите это (keras.io/layers/embeddings) и это (github.com/tensorflow/tensorflow/issues/14392) - person Outcast; 04.10.2018