model=('word2vec_model.pkl')
index_dict,word_vectors,combined=
create_dictionaries(model=model,combined=combined)
returnindex_dict,word_vectors,combined
defget_data(index_dict,word_vectors,combined,y):
#所有单词的索引数,频数小于10的词语索引为0,所以加1
n_symbols=len(index_dict)+1
#索引为0的词语,词向量全为0
embedding_weights=((n_symbols,vocab_dim))
#从索引为1的词语开始循环,每个词语对应到它的词向量
forword,indexinindex_dict.items():
embedding_weights[index,:]=word_vectors[word]
x_train,x_test,y_train,y_test=train_test_split(combined,y,
test_size=0.2)
print(x_train.shape,y_train.shape)
returnn_symbols,embedding_weights,x_train,y_train,x_test,y_test
#定义网络结构
deftrain_lstm(n_symbols,embedding_weights,
x_train,y_train,x_test,y_test):
print("DefiningaSimpleKerasModel...")
model=Sequential()#使用序贯模型
(Embedding(output_dim=vocab_dim,
input_dim=n_symbols,
mask_zero=True,
weights=[embedding_weights],
input_length=input_length))
(LSTM(recurrent_activation="hard_sigmoid",
activation="sigmoid",units=50))
(Dropout(0.5))
(Dense(1))
(Activation('sigmoid'))
print("CompilingtheModel...")
(loss='binary_crossentropy',
optimizer='adam',metrics=['accuracy'])
print("Train...")
(x_train,y_train,batch_size=batch_size,epochs=n_epoch,
verbose=1,validation_data=(x_test,y_test))
#对模型进行评价并打印显示评价结果
print("Evaluate...")
loss,accuracy=(x_test,y_test,batch_size=batch_
