文字情感检测

时间:2018-10-23 19:30:05

标签: python-3.x machine-learning keras deep-learning lstm

我是ML的新手,并且正在尝试对文本进行情感检测。 所以我有一个ISEAR数据集,其中包含带有情感标签的推文。 因此,我目前的准确度是63%,我想至少增加到70%甚至更多。

此处提供代码:

inputs = Input(shape=(MAX_LENGTH, ))

embedding_layer = Embedding(vocab_size,
                            64,
                            input_length=MAX_LENGTH)(inputs)

# x = Flatten()(embedding_layer)
x = LSTM(32, input_shape=(32, 32))(embedding_layer)
x = Dense(10, activation='relu')(x)

predictions = Dense(num_class, activation='softmax')(x)
model = Model(inputs=[inputs], outputs=predictions)
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['acc'])

model.summary()
filepath="weights-simple.hdf5"
checkpointer = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')
history = model.fit([X_train], batch_size=64, y=to_categorical(y_train), verbose=1, validation_split=0.1, 
          shuffle=True, epochs=10, callbacks=[checkpointer])

1 个答案:

答案 0 :(得分:1)

这是一个非常普遍的问题,优化神经网络的性能可能需要调整许多因素。 例如:

  1. 选择的优化器:在NLP任务中,rmsprop也很流行 优化器
  2. 调整学习率
  3. 正则化-例如,辍学,recurrent_dropout,批处理规范。这可能有助于模型更好地概括
  4. LSTM中的更多单位
  5. 嵌入中的更多尺寸

您可以尝试网格搜索,例如使用不同的优化程序并评估验证集。 数据可能还需要一些调整,例如:

  1. 文本规范化-更好地表达推文-删除不必要的标记(@,#)

  2. 在拟合之前对数据进行混洗-keras validate_split使用最后的数据记录创建一个验证集

您的问题没有简单的答案。