TensorFlow深度学习实战——情感分析模型

TensorFlow深度学习实战------情感分析模型

    • [0. 前言](#0. 前言)
    • [1. IMDB 数据集](#1. IMDB 数据集)
    • [2. 构建情感分析模型](#2. 构建情感分析模型)
    • [3. 预测输出](#3. 预测输出)
    • 相关链接

0. 前言

情感分析 (Sentiment Analysis) 是一种自然语言处理 (Natural Language Processing, NLP) 技术,旨在分析和识别文本中的情感倾向,情感分析模型能够根据情感倾向对文本进行分类。在本节中,我们将实现基于全连接神经网络的情感分析模型,以进一步熟悉神经网络构建流程

1. IMDB 数据集

使用 IMDB 数据集构建情感分析模型。IMDB 数据集包含了来自互联网电影数据库的 50,000 条电影评论文本,每条评论都标记为正面或负面。数据集中 25,000 条评论用于训练、25,000 条用于测试。

目标是构建一个分类器,能够根据文本预测评论是正面还是负面。可以通过 tf.keras 加载 IMDB 数据集,评论中的单词序列已经转换为整数序列,其中每个整数代表字典中的一个特定单词。此外,我们还需要将句子填充到最大长度 max_len,以便将所有句子(无论短长) 作为输入传递给具有固定大小输入向量的神经网络:

python 复制代码
import tensorflow as tf
from tensorflow.keras import datasets, layers, models, preprocessing

max_len = 200
n_words = 10000
dim_embedding = 256
EPOCHS = 20
BATCH_SIZE =500

def load_data():
    #load data
    (X_train, y_train), (X_test, y_test) = datasets.imdb.load_data(num_words=n_words)
    # Pad sequences with max_len
    X_train = preprocessing.sequence.pad_sequences(X_train, maxlen=max_len)
    X_test = preprocessing.sequence.pad_sequences(X_test, maxlen=max_len)
    return (X_train, y_train), (X_test, y_test)

2. 构建情感分析模型

构建模型。使用 Embedding() 层将评论中的稀疏单词空间映射到更密集的空间中,使计算更容易,使用 GlobalMaxPooling1D() 层从特征向量中提取最大值;另外,还包含两个 Dense() 层,最后一层由一个具有 sigmoid 激活函数的神经元组成,用于进行最终的二元分类:

python 复制代码
def build_model():
    model = models.Sequential()
    #Input - Emedding Layer
    model.add(layers.Embedding(n_words, 
              dim_embedding, input_length=max_len))

    model.add(layers.Dropout(0.3))

    #takes the maximum value of either feature vector from each of the n_words features
    model.add(layers.GlobalMaxPooling1D())
    model.add(layers.Dense(128, activation='relu'))
    model.add(layers.Dropout(0.5))
    model.add(layers.Dense(1, activation='sigmoid'))

    return model

训练模型:

python 复制代码
(X_train, y_train), (X_test, y_test) = load_data()
model=build_model()
model.summary()

model.compile(optimizer = "adam", loss = "binary_crossentropy",
              metrics = ["accuracy"])

score = model.fit(X_train, y_train,
                  epochs = EPOCHS, batch_size = BATCH_SIZE,
                  validation_data = (X_test, y_test),
                  verbose=2)

score = model.evaluate(X_test, y_test, batch_size=BATCH_SIZE)
print("\nTest score:", score[0])
print('Test accuracy:', score[1])

观察网络迭代训练过程:

模型准确率大约为 85%

shell 复制代码
Epoch 20/20
50/50 - 8s - loss: 0.0063 - accuracy: 0.9990 - val_loss: 0.4974 - val_accuracy: 0.8495 - 8s/epoch - 162ms/step

Test score: 0.49739953875541687
Test accuracy: 0.8494799733161926

3. 预测输出

模型训练完成后,就可以将其用于预测。在 TensorFlow 中,可以使用 predict() 方法:

python 复制代码
predictions = model.predict(X)

对于给定的输入,可以计算多种类型的输出,例如使用 model.evaluate() 方法计算损失值,使用 model.predict_classes() 方法计算类别输出,使用 model.predict_proba() 方法计算类别概率。

相关链接

TensorFlow深度学习实战(1)------神经网络与模型训练过程详解
TensorFlow深度学习实战(2)------使用TensorFlow构建神经网络
TensorFlow深度学习实战(3)------深度学习中常用激活函数详解
TensorFlow深度学习实战(4)------正则化技术详解
TensorFlow深度学习实战(5)------神经网络性能优化技术详解

相关推荐
牧歌悠悠7 小时前
【深度学习】Unet的基础介绍
人工智能·深度学习·u-net
Archie_IT8 小时前
DeepSeek R1/V3满血版——在线体验与API调用
人工智能·深度学习·ai·自然语言处理
大数据追光猿8 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Watermelo61711 小时前
从DeepSeek大爆发看AI革命困局:大模型如何突破算力囚笼与信任危机?
人工智能·深度学习·神经网络·机器学习·ai·语言模型·自然语言处理
Donvink11 小时前
【DeepSeek-R1背后的技术】系列九:MLA(Multi-Head Latent Attention,多头潜在注意力)
人工智能·深度学习·语言模型·transformer
计算机软件程序设计11 小时前
深度学习在图像识别中的应用-以花卉分类系统为例
人工智能·深度学习·分类
終不似少年遊*15 小时前
词向量与词嵌入
人工智能·深度学习·nlp·机器翻译·词嵌入
夏莉莉iy17 小时前
[MDM 2024]Spatial-Temporal Large Language Model for Traffic Prediction
人工智能·笔记·深度学习·机器学习·语言模型·自然语言处理·transformer
pchmi17 小时前
CNN常用卷积核
深度学习·神经网络·机器学习·cnn·c#
pzx_00118 小时前
【机器学习】K折交叉验证(K-Fold Cross-Validation)
人工智能·深度学习·算法·机器学习