如何使用CNN Tensorflow对电影评论中的情感和流派进行分类

时间:2017-07-10 05:46:06

标签: python-3.x tensorflow neural-network deep-learning data-science

我正在尝试对电影评论中的情绪进行分类,并根据评论本身预测该电影的类型。现在情绪是一个二元分类问题,因为类型可以是多标签分类问题。

澄清问题的另一个例子是对句子的情感进行分类,并预测句子的语气是否快乐,讽刺,悲伤,可怜,愤怒或恐惧。

更多的是,我想使用Tensorflow CNN执行此分类。我的问题在于构造y_label并训练数据,以便输出帮助我检索Sentiment以及类型。 例如数据Y标签:[[0,1],[0,1,0,1,0]]的情绪为负面和心情如讽刺和愤怒

你怎么建议我解决这个问题?

2 个答案:

答案 0 :(得分:1)

基本上在CNN的最后一层,因为您已将CNN输出调整为1x1xN的形式,添加两个前馈神经网络。因此,如果您有一个简单的分类问题,您将CNN的输出馈送到前馈神经网络,现在在这种情况下,您将拥有其中两个网络。因此,为了实现这一目标,您将拥有以下内容:

  • CNN输出---馈送--->分类器#1
  • CNN输出---馈送--->分类器#2

因此,您必须将分类分开但是您仍然需要反向传播它们,所以它看起来像这样:

loss1 = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction1, labels_1))
loss2 = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction2, labels_2))

loss = loss1 + loss2 

所以你最小化"最小化"带有优化器的loss

答案 1 :(得分:0)

您可以将此视为multi-label问题,并将sentimenttone标签附加在一起。

现在,由于网络必须预测多个输出(在本例中为2),因此您需要使用sigmoid而非softmax等激活功能。您可以使用tf.round(logits)进行预测。