python3.8+tensorflow2.4.0+keras-2.4.3: IMDB电影评论情感分析

参考《python深度学习》第六章第一节

背景知识

Embedding

本节关注:在Embedding层,使用预训练和从零开始训练的词嵌入对模型性能的影响。

Embedding层相当于一个字典,负责将词索引映射到固定尺寸的稠密词向量。它接受整数序列作为输入,返回对应的词向量。它只能作为模型的第一层。

输入是二维整数张量,形状是 samples * sequence_length,每个元素是一个整数序列。

输出是三维浮点数张量,形状是 samples * sequence_length * output_dim。

Embedding层的权重描述字典的准确度,就是使近义词映射到相似词向量的能力。

keras.layers.Embedding()的主要参数:

input_dim/batch_size/samples 字典的大小/词索引的数量

output_dim 词向量的维度

input_length/sequence_lenth 输入序列的长度,可选。如果你需要连接 Flatten 和 Dense 层,则这个参数是必须的(没有它,dense 层的输出尺寸就无法计算)。

IMDB数据集

IMDB数据集有5w条评论,其中2w5做训练集,剩下做测试集,每个部分正负评论各占50%。
影评已被预处理为词索引构成的序列。方便起见,单词的索引基于它在数据集中出现的频率,0不映射特定的词,用来表示所有未知单词。


 

模型实现

模型1(自训练词嵌入)

模型1只查看每条评论的前20个单词,embedding层的字典大小是10000,生成8维词向量。在embedding层之后,叠加一个flatten层展开二维张量,最后叠加Dense层进行分类。这里直接展开词嵌入,会导致同一评论中的每个单词被单独处理,丢弃了句子结构和单词组合的信息。更好的做法是embedding层之后训练一个循环层或者一维卷积层。

import keras
from keras.datasets import imdb
max_features = 10000  # 字典的大小
maxlen = 20  # 截取数据的长度

# 加载数据集
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)

# 对齐序列,将整数列表转换为形状为(samples, maxlen)的二维整数张量
x_train = keras.preprocessing.sequence.pad_sequences(x_train, maxlen=maxlen)
x_test = keras.preprocessing.sequence.pad_sequences(x_test, maxlen=maxlen)

# 模型初始化
from keras.layers import Flatten, Dense, Embedding
model = keras.Sequential()  # 堆叠模型:堆叠层来构建网络
model.add(Embedding(10000, 8, input_length=maxlen))  # Embedding层:生成词嵌入
model.add(Flatten())  # Flatten层:二维化输出张量
model.add(Dense(1, activation='sigmoid'))  # Dense层:分类
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['acc'])  # loss对应sigmoid,评估指标是精度
model.summary()  # 输出参数

# 模型训练
history = model.fit(x_train, y_train, epochs=10, batch_size=
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值