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

相关推荐
多巴胺与内啡肽.1 小时前
深度学习--自然语言处理统计语言与神经语言模型
深度学习·语言模型·自然语言处理
深度之眼1 小时前
2025时间序列都有哪些创新点可做——总结篇
人工智能·深度学习·机器学习·时间序列
沅_Yuan2 小时前
基于贝叶斯优化的Transformer多输入单输出回归预测模型Bayes-Transformer【MATLAB】
神经网络·matlab·回归·贝叶斯·transformer·回归预测
不吃香菜?4 小时前
PyTorch 实现食物图像分类实战:从数据处理到模型训练
人工智能·深度学习
Light604 小时前
智启未来:深度解析Python Transformers库及其应用场景
开发语言·python·深度学习·自然语言处理·预训练模型·transformers库 |·|应用场景
数据智能老司机4 小时前
构建具备自主性的人工智能系统——在生成式人工智能系统中构建信任
深度学习·llm·aigc
谦行6 小时前
工欲善其事,必先利其器—— PyTorch 深度学习基础操作
pytorch·深度学习·ai编程
xwz小王子6 小时前
Nature Communications 面向形状可编程磁性软材料的数据驱动设计方法—基于随机设计探索与神经网络的协同优化框架
深度学习
生信碱移7 小时前
大语言模型时代,单细胞注释也需要集思广益(mLLMCelltype)
人工智能·经验分享·深度学习·语言模型·自然语言处理·数据挖掘·数据可视化
硅谷秋水8 小时前
通过模仿学习实现机器人灵巧操作:综述(上)
人工智能·深度学习·机器学习·计算机视觉·语言模型·机器人