深度循环模型架构与情感分析实践

立即解锁
发布时间: 2025-09-05 01:57:03 阅读量: 3 订阅数: 23 AIGC
### 深度循环模型架构与情感分析实践 #### 1. 深度循环模型架构的演进 循环神经网络(RNN)在处理序列数据方面发挥着重要作用,而长短期记忆网络(LSTM)更是对循环网络进行了革新,它能够高效处理更长的序列。以下是一些LSTM的高级变体: - **扩展和双向LSTM**:1997年最初发明的LSTM只有输入和输出门,2000年开发出了带有遗忘门的扩展LSTM,如今被广泛使用。2005年,双向LSTM诞生,其概念与双向RNN类似。 - **多维RNN(MDRNNs)**:2007年发明,用与数据维度相同数量的连接取代了RNN单元之间的单个循环连接,在视频处理等二维数据处理中很有用。 - **堆叠LSTM**:虽然单层LSTM网络似乎克服了梯度消失和爆炸的问题,但堆叠更多LSTM层在学习复杂模式方面更有帮助,例如在语音识别等任务中。不过,这种模型训练速度较慢,且不可并行化。 - **门控循环单元(GRU)**:2014年发明,旨在学习长期依赖关系,同时有效处理梯度爆炸和消失问题。它只有一个状态和两个门(重置门和更新门)。 - **网格LSTM**:2015年开发,是MDLSTM模型的继任者,将LSTM单元排列成多维网格,单元在数据的时空维度以及网络层之间连接。 - **门控正交循环单元**:2017年设计,结合了GRU和酉RNN的思想,通过使用正交矩阵解决梯度问题。 #### 2. 基于情感分析的RNN训练实践 接下来,我们将使用PyTorch进行一个文本分类任务——情感分析,模型输入一段文本,输出1(积极情感)或0(消极情感)。 ##### 2.1 加载和预处理文本数据集 - **导入依赖库**: ```python import os import time import numpy as np from tqdm import tqdm from string import punctuation from collections import Counter import matplotlib.pyplot as plt import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') torch.use_deterministic_algorithms(True) ``` - **读取数据**:使用IMDb情感分析数据集,包含25000条电影评论(12500条积极,12500条消极)。 ```python review_list = [] label_list = [] for label in ['pos', 'neg']: for fname in tqdm(os.listdir(f'./aclImdb/train/{label}/')): if 'txt' not in fname: continue with open(os.path.join(f'./aclImdb/train/{label}/', fname), encoding="utf8") as f: review_list += [f.read()] label_list += [label] print ('Number of reviews :', len(review_list)) ``` - **预处理文本数据**: - 转换为小写并去除标点符号。 - 统计词频并排序。 ```python review_list = [review.lower() for review in review_list] review_list = [''.join([letter for letter in review if letter not in punctuation]) for review in tqdm(review_list)] reviews_blob = ' '.join(review_list) review_words = reviews_blob.split() count_words = Counter(review_words) total_review_words = len(review_words) sorted_review_words = count_words.most_common(total_review_words) print(sorted_review_words[:10]) ``` - **创建词到整数的映射**: ```python vocab_to_token = {word:idx+1 for idx, (word, count) in enumerate(sorted_review_words)} print(list(vocab_to_token.items())[:10]) ``` - **将评论转换为数字列表**: ```python reviews_tokenized = [] for review in review_list: word_to_token = [vocab_to_token[word] for word in review.split()] reviews_tokenized.append(word_to_token) print(review_list[0]) print() print (reviews_tokenized[0]) ``` - **编码情感标签**: ```python encoded_label_list = [1 if label =='pos' else 0 for label in label_list] reviews_len = [len(review) for review in reviews_tokenized] reviews_tokenized = [reviews_tokenized[i] for i, l in enumerate(reviews_len) if l>0 ] encoded_label_list = np.array([encoded_label_list[i] for i, l in enumerate(reviews_len) if l> 0 ], dtype='float32') ``` - **统一序列长度**:定义序列长度为512,对短序列进行填充,长序列进行截断。 ```python def pad_sequence(reviews_tokenized, sequence_length): padded_reviews = np.zeros((len(reviews_tokenized), sequence_length), dtype = int) for idx, review in enumerate(reviews_tokenized): review_len = len(review) if review_len <= sequence_length: zeroes = list(np.zeros(sequence_length-review_len)) new_sequence = zeroes+review elif review_len > sequence_length: new_sequence = review[0:sequence_length] padded_reviews[idx,:] = np.array(new_sequence) return ```
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

张_伟_杰

人工智能专家
人工智能和大数据领域有超过10年的工作经验,拥有深厚的技术功底,曾先后就职于多家知名科技公司。职业生涯中,曾担任人工智能工程师和数据科学家,负责开发和优化各种人工智能和大数据应用。在人工智能算法和技术,包括机器学习、深度学习、自然语言处理等领域有一定的研究
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看
立即解锁

专栏目录

最新推荐

微纳流体对流与传热应用研究

### 微纳流体对流与传热应用研究 #### 1. 非线性非稳态对流研究 在大多数工业、科学和工程过程中,对流呈现非线性特征。它具有广泛的应用,如大表面积、电子迁移率和稳定性等方面,并且具备显著的电学、光学、材料、物理和化学性质。 研究聚焦于含Cattaneo - Christov热通量(CCHF)的石墨烯纳米颗粒悬浮的含尘辐射流体中的非线性非稳态对流。首先,借助常用的相似变换将现有的偏微分方程组(PDEs)转化为常微分方程组(ODEs)。随后,运用龙格 - 库塔法和打靶法对高度非线性的ODEs进行数值求解。通过图形展示了无量纲温度和速度分布的计算结果(φ = 0和φ = 0.05的情况)

凸轮与从动件机构的分析与应用

# 凸轮与从动件机构的分析与应用 ## 1. 引言 凸轮与从动件机构在机械领域应用广泛,其运动和力学特性的分析对于机械设计至关重要。本文将详细介绍凸轮与从动件机构的运动学和力学分析方法,包括位置、速度、加速度的计算,以及力的分析,并通过 MATLAB 进行数值计算和模拟。 ## 2. 机构描述 考虑一个平面凸轮机构,如图 1 所示。驱动件为凸轮 1,它是一个圆盘(或板),其轮廓使从动件 2 产生特定运动。从动件在垂直于凸轮轴旋转轴的平面内运动,其接触端有一个半径为 $R_f$ 的半圆形区域,该半圆可用滚子代替。从动件与凸轮保持接触,半圆中心 C 必须沿着凸轮 1 的轮廓运动。在 C 点有两

磁电六铁氧体薄膜的ATLAD沉积及其特性

# 磁电六铁氧体薄膜的ATLAD沉积及其特性 ## 1. 有序铁性材料的基本定义 有序铁性材料具有多种特性,不同特性的材料在结构和性能上存在显著差异。以下为您详细介绍: - **反铁磁性(Antiferromagnetic)**:在一个晶胞内,不同子晶格中的磁矩通过交换相互作用相互耦合,在尼尔温度以下,这些磁矩方向相反,净磁矩为零。例如磁性过渡金属氧化物、氯化物、稀土氯化物、稀土氢氧化物化合物、铬氧化物以及铁锰合金(FeMn)等。 - **亚铁磁性(Ferrimagnetic)**:同样以反铁磁交换耦合为主,但净磁矩不为零。像石榴石、尖晶石和六铁氧体都属于此类。其尼尔温度远高于室温。 - *

自激感应发电机稳态分析与电压控制

### 自激感应发电机稳态分析与电压控制 #### 1. 自激感应发电机基本特性 自激感应发电机(SEIG)在电力系统中有着重要的应用。在不同运行条件下,其频率变化范围和输出功率有着特定的规律。对于三种不同的速度,频率的变化范围大致相同。并且,功率负载必须等于并联运行的 SEIG 输出功率之和。 以 SCM 发电机和 WRM 发电机为例,尽管它们额定功率相同,但 SCM 发电机的输出功率通常大于 WRM 发电机。在固定终端电压 \(V_t\) 和功率负载 \(P_L\) 的情况下,随着速度 \(v\) 的降低,两者输出功率的比值会增大。 | 相关参数 | 说明 | | ---- | --

MATLAB数值技术:拟合、微分与积分

# MATLAB数值技术:拟合、微分与积分 ## 1. MATLAB交互式拟合工具 ### 1.1 基本拟合工具 MATLAB提供了交互式绘图工具,无需使用命令窗口即可对绘图进行注释,还包含基本曲线拟合、更复杂的曲线拟合和统计工具。 要使用基本拟合工具,可按以下步骤操作: 1. 创建图形: ```matlab x = 0:5; y = [0,20,60,68,77,110]; plot(x,y,'o'); axis([−1,7,−20,120]); ``` 这些命令会生成一个包含示例数据的图形。 2. 激活曲线拟合工具:在图形窗口的菜单栏中选择“Tools” -> “Basic Fitti

克里金插值与图像处理:原理、方法及应用

# 克里金插值与图像处理:原理、方法及应用 ## 克里金插值(Kriging) ### 普通点克里金插值原理 普通点克里金是最常用的克里金方法,用于将观测值插值到规则网格上。它通过对相邻点进行加权平均来估计未观测点的值,公式如下: $\hat{z}_{x_0} = \sum_{i=1}^{N} k_i \cdot z_{x_i}$ 其中,$k_i$ 是需要估计的权重,且满足权重之和等于 1,以保证估计无偏: $\sum_{i=1}^{N} k_i = 1$ 估计的期望(平均)误差必须为零,即: $E(\hat{z}_{x_0} - z_{x_0}) = 0$ 其中,$z_{x_0}$ 是真实

电力系统经济调度与动态经济调度研究

### 电力系统经济调度与动态经济调度研究 在电力系统运行中,经济调度(ED)和动态经济调度(DED)是至关重要的概念。经济调度旨在特定时刻为给定或预估的负荷水平找到最优的发电机输出,以最小化热发电机的总运行成本。而动态经济调度则是经济调度的更高级实时版本,它能使电力系统在规划期内实现经济且安全的运行。 #### 1. 经济调度相关算法及测试系统分析 为了评估结果的相关性,引入了功率平衡指标: \[ \Delta P = P_{G,1} + P_{G,2} + P_{G,3} - P_{load} - \left(0.00003P_{G,1}^2 + 0.00009P_{G,2}^2 +

可再生能源技术中的Simulink建模与应用

### 可再生能源技术中的Simulink建模与应用 #### 1. 电池放电特性模拟 在模拟电池放电特性时,我们可以按照以下步骤进行操作: 1. **定制受控电流源**:通过选择初始参数来定制受控电流源,如图18.79所示。将初始振幅、相位和频率都设为零,源类型选择交流(AC)。 2. **连接常数模块**:将一个常数模块连接到受控电流源的输入端口,并将其值定制为100。 3. **连接串联RLC分支**:并联连接一个串联RLC分支,将其配置为一个RL分支,电阻为10欧姆,电感为1 mH,如图18.80所示。 4. **连接总线选择器**:将总线选择器连接到电池的输出端口。从总线选择器的参

TypeScript高级特性与Cypress测试实践

### TypeScript 高级特性与 Cypress 测试实践 #### 1. TypeScript 枚举与映射类型 在 TypeScript 中,将数值转换为枚举类型不会影响 `TicketStatus` 的其他使用方式。无论底层值的类型如何,像 `TicketStatus.Held` 这样的值引用仍然可以正常工作。虽然可以创建部分值为字符串、部分值为数字的枚举,甚至可以在运行时计算枚举值,但为了充分发挥枚举作为类型守卫的作用,建议所有值都在编译时设置。 TypeScript 允许基于其他类型定义新类型,这种类型被称为映射类型。同时,TypeScript 还提供了一些预定义的映射类型

MATLAB目标对象管理与配置详解

### MATLAB 目标对象管理与配置详解 #### 1. target.get 函数 `target.get` 函数用于从内部数据库中检索目标对象,它有三种不同的语法形式: - `targetObject = target.get(targetType, targetObjectId)`:根据目标类型和对象标识符从内部数据库中检索单个目标对象。 - `tFOList = target.get(targetType)`:返回存储在内部数据库中的指定类型的所有目标对象列表。 - `tFOList = target.get(targetType, Name, Value)`:返回具有与指定名称