我正在尝试使用tensorflow进行情感分析。数据集的结构如下:
----------------
word | category
----------------
smile| friendly
shy | unconfident
...
因此,进行预测时,输入为一个单词,输出为10个类别的最大自变量。例如,微笑一词应表示友好类别。
但是,在绘制精度和损耗图时,可以分析出拟合不足,因此我想知道哪种方法最适合此类问题。由于当前模型是Bidirectional-LSTM,它是针对结构为“句子”的数据集而创建的。 “类别”,而不是“单词” | “类别”。
针对这种类型的问题和数据集,最佳的模型(具有优化器和损失)将是什么?
def build_model(vocab_size, embedding_dim=64, input_length=30):
print('\nbuilding the model...\n')
model = tf.keras.Sequential([
tf.keras.layers.Embedding(input_dim=(vocab_size + 1), output_dim=embedding_dim, input_length=input_length),
tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64, return_sequences=True, dropout=0.1)),
tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64, return_sequences=True, dropout=0.1)),
tf.keras.layers.GlobalMaxPool1D(),
tf.keras.layers.Dropout(0.1),
tf.keras.layers.Dense(64, activation='tanh', kernel_regularizer=tf.keras.regularizers.L2(l2=0.000001)),
# softmax output layer
tf.keras.layers.Dense(10, activation='softmax')
])
# optimizer & loss
opt = tf.optimizers.RMSprop(learning_rate=0.01)
loss = 'categorical_crossentropy'
# Metrics
metrics = ['accuracy', 'AUC','Precision', 'Recall']
# compile model
model.compile(optimizer=opt,
loss=loss,
metrics=metrics)
model.summary()
return model