【QLBD】LSTM情感分析实验复现(二)分词&one-hot

本文是关于LSTM在情感分析应用的实验复现,作者采用结巴分词处理语料,以词为基本语义单元。实验在Python3.5和Keras2.0.9环境下进行,使用Geforce 940MX GPU,由于内存限制,通过降低batch_size来减少内存占用。经过30轮训练,训练集准确率达到0.9758,测试集准确率为0.8875。
摘要由CSDN通过智能技术生成

注1:参考学习  科学空间论坛   苏剑林 的博文

注2:记录实验复现细节,并根据版本更新对代码作出修正。

注3:python3.5;keras2.0.9

【QLBD】LSTM情感分析实验复现(一)one-hot encoding

【QLBD】LSTM情感分析实验复现(二)分词&one-hot

【QLBD】LSTM情感分析实验复现(三)one embedding

【QLBD】LSTM情感分析实验复现(四)word embdding

实验一中以字为基本语义单元,实际上我们知道中文一般两字成词,甚至多字成词,相比于单字,词语表达的信息更为准确。因此我们可以考虑用词为基本的语义单元,处理语料的时候要首先对语料进行分词,这里我用的是结巴分词工具。

一、模块调用

import numpy as np
import pandas as pd
import jieba
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout
from keras.layers import LSTM
import sys
sys.setrecursionlimit(10000) #增大堆栈最大深度(递归深度),据说默认为1000,报错
二、语料

pos = pd.read_excel('E:/Coding/yuliao/pos.xls',header=None,index=None)#10677篇
pos['label'] = 1
neg = pd.read_excel('E:/Coding/yuliao/neg.xls',header=None,index=None)#10428篇
neg['label'] = 0
all_ = pos.append(neg, ignore_index=True)
all_['word'] = all_[0].apply(lambda s: list(jieba.cut(s))) ###语料分词
三、部分数值设定

maxlen = 100 #截断词数
min_count = 5 #去除低频词,单句切成词数要比切成字数少的多,相应的要去掉的低频词频率也要比低频字低一些
四、语料预处理一

content = [] #词表  
for i in all_['word']:
    content.extend(i)
abc = pd.Series(list(content)).value_counts() #统计词频 
abc = abc[abc >= min_count] #去掉低频词,简单降维  
abc[:] = range(len(abc)) #len(abc)=14322 用0-14322间的整数对每个字按顺序重新赋值,一个整数代表一个字  
abc[''] = 0 #添加空字符串用来补全
word_set = set(abc.index)#词典  
五、语料预处理二

def doc2num(s, maxlen):  #构建将文本转化为数字向量的函数,maxlen=100
 
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值