Как получить правильную метку keras model.predict (проблема НЛП) - PullRequest
0 голосов
/ 03 мая 2019

Я реализовал небольшую нейронную сеть LSTM для прогнозирования заметок для фильма. Но у меня есть проблема интерпретации, чтобы преобразовать prob_result, который model.predit отправляет мне обратно к желаемой метке

код:

data = pd.read_csv("data/critics.notes.csv")
data =  data["Comment","Note"]
#Comment is text and Note is numeric 
data["Comment"] = data["Comment"].apply(lambda x: x.lower())

#Tokenizing
max_fatures = 10000
tokenizer = Tokenizer(num_words=max_fatures, split = ' ')
tokenizer.fit_on_texts(data["Comment"].values)
X = tokenizer.texts_to_sequences(data['Comment'].values)
X = pad_sequences(X)

#LSTM Model
embed_dim = 128
lstm_out = 196
labels = data['Note'].unique()
num_classes = len(labels)

model = Sequential()
model.add(Embedding(max_fatures, embed_dim,input_length = X.shape[1]))
model.add(SpatialDropout1D(0.4))
model.add(LSTM(lstm_out, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(num_classes,activation='softmax'))
model.compile(loss = 'categorical_crossentropy', optimizer='adam',metrics = ['accuracy'])
model.summary()


batch_size = 8
model.fit(X_train, Y_train, epochs = 20, batch_size=batch_size, verbose = 2)

test_sentences= ["This movie is really pathetic. This is very disappointing. "]

#vectorizing the tweet by the pre-fitted tokenizer instance
twt = tokenizer.texts_to_sequences(test_sentences)
#padding the tweet to have exactly the same shape as `embedding_2` input
test_sentences= pad_sequences(test_sentences, maxlen=X.shape[1], dtype='int32', value=0)
sentiment = model.predict(test_sentences,batch_size=1,verbose = 2)[0]

#predicted_label = sorted(labels)[sentiment.argmax(axis=-1)]
predicted_label = labels[sentiment.argmax(axis=-1)]
print(predicted_label)

Мой вопрос заключается в том, следует ли мне использовать команду «сортировка» или нет, прежде чем найти метку по argmax? Если да, то почему?

Заранее спасибо

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