NLP05:基于CNN-LSTM的情感分类

公众号:数据挖掘与机器学习笔记

使用CNN-LSTM进行情感分类,这里是一个二分类模型。整体上分为以下几个步骤:

  • 环境及参数设置
  • 数据预处理
  • 模型网络结构搭建及训练
  • 模型使用

1. 环境及参数设置

环境主要指需要哪些包,参数设置包括Embedding、CNN、LSTM网络层的参数和一些基本参数设置。

from tensorflow.keras.preprocessing import sequence
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Dropout,Activation,Embedding,LSTM,Conv1D,MaxPooling1D
from tensorflow.keras.datasets import imdb
import re
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
#embedding 参数
maxlen=100 #最大样本长度,不足进行Padding,超过进行截取
embedding_size=200 #词向量维度

#卷积参数
kernel_size=5
filters=128
pool_size=4

#LSTM参数
lstm_output_size=100 #LSTM层的输出维度

#训练参数
batch_size=128
epochs=20

2. 数据预处理及训练数据准备

2.1 数据概览

这里使用的情感分类数据主要是一些购物、酒店住宿等评论。使用Excel的格式提供,每一行表示一个样本。具体形式、内容如下图:

image-20200908164538892

负面评论

image-20200908164816921

正面评论

2.2 数据预处理

这里仅做了比较简单的文本处理:只保留中文字符,去掉所有非中文字符。另外,没有进行分词,使用字符级的模型进行训练。

def textToChars(filePath):
  """
  读取文本文件并进行处理
  :param filePath:文件路径
  :return:
  """
  lines = []
  df=pd.read_excel(filePath,header=None)
  df.columns=['content']
  for index, row in df.iterrows():
    row=row['content']
    row = re.sub(&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值