Я работал над набором данных Amazon Sentiment Classification, где я должен предсказать настроение на основе предоставленных отзывов. Однако я экспериментировал с двумя методами, один с обычным слоем Embedding
от Keras, и это моя архитектура:
model = Sequential()
model.add(Embedding(MAX_NB_WORDS, 128))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2,input_shape=(1,)))
model.add(Dense(1, activation='sigmoid'))
А следующий, который я пробовал с Word2Vec
из gensim.models
. Вот мой код:
from gensim.models import Word2Vec
word_model = Word2Vec(df['reviewText'], size=200, min_count = 1, window = 5,sg=0, negative=5)
WV_DIM = 100
nb_words = min(MAX_NB_WORDS, len(word_vectors.vocab))
# we initialize the matrix with random numbers
wv_matrix = (np.random.rand(nb_words, WV_DIM) - 0.5) / 5.0
for word, i in word_index.items():
if i >= MAX_NB_WORDS:
continue
try:
embedding_vector = word_vectors[word]
# words not found in embedding index will be all-zeros.
wv_matrix[i] = embedding_vector
except:
pass
model = Sequential()
model.add(Embedding(nb_words,
WV_DIM,
mask_zero=False,
weights=[wv_matrix],
input_length=MAX_SEQUENCE_LENGTH,
trainable=False))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2,input_shape=(1,)))
model.add(Dense(1, activation='sigmoid'))
Но я не могу понять, в чем разница ч / б, просто используя model.add(Embedding(..))
и word2vec
вместе с Embedding
. Я хочу знать математику, стоящую за работой слоя Embedding
Кераса, и как работает word2vec
+ Embedding
.
Я прочитал этот пост , чтобы понять, как работает слой встраивания Keras, но я хочу понять для него градиентный спуск и обратное распространение, а также комбинацию word2vec
и Embedding
.
P.S. Для обоих кодов, которые я дал, я пропустил части tokenize
и pad_sequence
.