1.10 情感分析

我们用基于IMDb数据集开发的情感分析示例代码来测试Colab。IMDb数据集包括来自Internet Movie Database的50 000条影评。每条评论可能是正面的或负面的(例如,竖起大拇指或不赞成)。数据集分为25 000条训练用评论和25 000条测试用评论。我们的目标是构建一个根据给定文本预测二元判断结果的分类器。可通过tf.keras轻松加载IMDb,并将评论中的单词序列转换为整数序列,其中每个整数代表字典中的一个特定单词。另外,还有一种简便的方式将所有文本语句长度限制为max_len,从而可将所有句子(无论长短)作为采用固定长度输入向量的神经网络的输入(详见第8章):

053-02

现在我们将使用一些将在第8章中详细解释的层类型来创建一个模型。目前,假设Embedding()层能把评论文本中单词的稀疏空间映射为一个稠密空间。这会使得计算更加容易。另外,还将用到GlobalMaxPooling1D()层,该层提取n_words个特征中的每个特征向量的最大值。除此之外,还有两个Dense()层,最后一个Dense()层是由具有sigmoid激活函数的单个神经元组成的,用于最终的二元估计:

054-01

现在需要训练上述模型,这段代码与我们之前使用MNIST数据集时所做的非常类似:

054-02

查看神经网络的结构,然后运行几次迭代,结果如图1-36所示。

055-01

图1-36 若干次迭代后神经网络的结果

如图1-37所示,达到了85%的准确度,这对于一个简单网络来说还不错。

055-02

图1-37 测试简单神经网络的准确度