哪种模型最适合情绪分析?

时间:2020-10-18 21:40:10

标签: python tensorflow keras lstm

我正在尝试使用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

0 个答案:

没有答案