Распознавание именованных объектов с встраиванием изученных слов, LSTM, Keras - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь построить модель NER, которая поможет мне классифицировать слова. Я застрял в получении несоответствия размеров слоя, так как я новичок в этом пространстве.

Мои входные данные - предложения - 43163 из них длиной 70. Таким образом, каждое предложение состоит из 70 слов (после заполнения / усечения), в общей сложности 43163 из них. Мой X_train, следовательно, имеет форму (43163, 70)

Мой y_train имеет форму (43163, 70, 17) где каждое слово было преобразовано в однократное кодирование длиной 70 (что соответствует тегу NER, которому оно принадлежит)

Слова являются токенизированными, и в общей сложности 35173 токена

Я хочу преобразовать их в вложения, которые будут изучены (я не хочу использовать стандартные вложения word2vec и Glove) Эти вложения теперь должны быть вписаны в LSTM, который затем может быть передан DenseLayer, наконец, давая мне классификацию.

Я пытался просмотреть эти блоги (вы увидите, что мой код выглядит довольно похоже), но безрезультатно -

https://machinelearningmastery.com/predict-sentiment-movie-reviews-using-deep-learning/

https://machinelearningmastery.com/develop-bidirectional-lstm-sequence-classification-python-keras/

#X_tr.shape = (43163, 70)

#y_train.shape = (43163, 70, 17)

#X_te.shape = (4796, 70) 

#y_te.shape = (4796, 70, 17)

The model is - 
total_words = 35173 #this is the unique tokens
embedding_vecor_length = 32
model = Sequential()

model.add(Embedding(total_words, embedding_vecor_length, input_length=70))
model.add(LSTM(100))
model.add(Dense(17, activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()

Это ошибка, которую я получаю -

ValueError: Ошибка при проверке целевого объекта: ожидалось, что плотность_данных имеет 2 измерения, но получен массив с формой (43163, 70, 17)

Пожалуйста, помогите мне понять, где я иду неправильно или как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...