从代码学AI ——情感分类(LSTM on TFlearn)

前言

本篇文章会从代码的角度说明如何基于TFlearn使用LSTM进行文本的情感分类。如果对于TFlearn和LSTM都不熟悉,没有关系,先硬着头皮将代码看下(使用LSTM对IMDB数据集进行情感分类)。从代码的角度看都是很简洁的,所以即使不熟悉,多看看代码,当代码已经熟练于心了,后面如果有一天你漠然回首理解了其中的不解后,你的记忆更加深刻。所以不懂、不熟悉没关系,坚持下去就回明白的。

由于实例代码使用的是IMDB数据集,所以这里会优先介绍 一下这个数据集。

IMDB数据集

该数据集包含了电影的评论以及评论对应的情感分类的标签(0,1分类)。作者的初衷是希望该数据集会成为情绪分类的一个基准。这里介绍该数据集如何生成的以及如何使用提供的文件。

核心数据集包含了5万条评论数据,这些数据被均分成训练集和测试集(训练和测试集各2.5万)。标签也是均衡分布的(正负样本各2.5万)。也提供了5万条无标签数据,以用于无监督学习。

在数据集中,每个电影最多收集30条评论,因为同一个电影的评论往往具有相关性。同时训练集和测试集采集的是不同的电影,所以尝试去记住和电影强相关的词汇以及相关的标签是不会取得显著的提升效果的。

在训练和测试集中,负面结果的分值<=4,正面结果的分值>=10.中性的评论没有包含在测试和训练集合中。在无监督的数据集中包含任意评分的评论。

对于下载下来的数据集的文件结构大致如下:

有两个顶级文件夹[train/, test/],对应训练集和测试集。每个都包含了[pos/, neg/]目录,在这些文件夹中,评论数据以如下方式存储:[[id]_[rating].txt]。这里id表示唯一性ID,rating表示评分,例如[test/pos/200_8.txt]表示正面评论,id是200,评分是8分。
无监督数据集中[train/unsup/]所有的评分都是0,因为所有的评分都被省略了。

数据集中也包含了每个评论对应电影的评论页面的URL,由于电影的评论数据是动态变化的,所以不能指定评论的URL,只能指定电影评论页面的URL。评论文件在如下文件中:
[urls_[pos, neg, unsup].txt]

对于评论的数据文件,数据集中已经包含了训练好的词袋模型(BoW).这些数据存储在.feat文件中。

每个.feat文件都是LIBSVM格式,一种用于标记数据的ascii的稀疏向量格式。
这些文件中的特征索引从0开始,且特征索引对应的词汇对应着[imdb.vocab]中相应的词汇。所以一个在.feat文件中以0:7的形式表示[imdb.vocab]中的第一个单词,在该评论中出现7次

LIBSVM相关资料参见:LIBSVM

数据集中也包含了一个[imdbEr.txt]文件,这里存储了[imdb.vocab]中每个词的情感评分。预期评级是了解数据集中单词的平均极性的好方法。

数据集介绍就到这里,下面开始代码解读。

代码解读

# -*- coding: utf-8 -*-
"""

https://www.tensorfl
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LSTM(Long Short-Term Memory)是一种循环神经网络(RNN)架构,可以在处理序列数据时保留长期的信息。LSTM情感分类是利用LSTM模型对文本进行分类,将文本分为积极、消极或情感类别。 下面是一个简单的LSTM情感分类代码示例: 1. 数据预处理: 在进行LSTM情感分类之前,需要对数据进行预处理。将原始文本转换为数字序列,将每个单词转换为一个唯一的整数标识。 2. 构建LSTM模型: 构建LSTM模型包括以下几个步骤: - 嵌入层:将数字序列转换为词向量。 - LSTM层:包括多个LSTM单元。 - 全连接层:将LSTM输出的向量连接到输出层。 下面是一个简单的LSTM模型代码示例: ``` model = Sequential() model.add(Embedding(vocab_size, 128, input_length=max_len)) model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2)) model.add(Dense(3, activation='softmax')) ``` 3. 训练模型: 将数据集分成训练集和测试集,然后使用训练集对模型进行训练,调整模型参数以提高准确性。 下面是一个简单的训练代码示例: ``` model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X_train, y_train, epochs=5, batch_size=32) ``` 4. 模型评估: 使用测试集对模型进行评估,计算准确性和损失等指标。 下面是一个简单的评估代码示例: ``` scores = model.evaluate(X_test, y_test, verbose=0) print("Accuracy: %.2f%%" % (scores*100)) ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值