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)------神经网络性能优化技术详解

相关推荐
Uzuki4 小时前
AI可解释性 II | Saliency Maps-based 归因方法(Attribution)论文导读(持续更新)
深度学习·机器学习·可解释性
Start_Present7 小时前
Pytorch 第十二回:循环神经网络——LSTM模型
pytorch·rnn·神经网络·数据分析·lstm
snowfoootball9 小时前
基于 Ollama DeepSeek、Dify RAG 和 Fay 框架的高考咨询 AI 交互系统项目方案
前端·人工智能·后端·python·深度学习·高考
odoo中国10 小时前
深度学习 Deep Learning 第15章 表示学习
人工智能·深度学习·学习·表示学习
橙色小博10 小时前
长短期记忆神经网络(LSTM)基础学习与实例:预测序列的未来
人工智能·python·深度学习·神经网络·lstm
船长@Quant10 小时前
PyTorch量化进阶教程:第六章 模型部署与生产化
pytorch·python·深度学习·transformer·量化交易·sklearn·ta-lib
zy_destiny12 小时前
【工业场景】用YOLOv12实现饮料类别识别
人工智能·python·深度学习·yolo·机器学习·计算机视觉·目标跟踪
进取星辰12 小时前
PyTorch 深度学习实战(32):多模态学习与CLIP模型
pytorch·深度学习·学习
带娃的IT创业者14 小时前
《Python实战进阶》No39:模型部署——TensorFlow Serving 与 ONNX
pytorch·python·tensorflow·持续部署