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

本文复现LSTM情感分析实验的第四部分,重点在于使用词向量(word embedding)。通过分词得到词,以100词长度截断句子,构建词向量矩阵输入LSTM模型进行学习分类。实验在GPU Geforce 940MX上进行,30轮训练后,训练集准确率0.9978,测试集准确率0.9064701067434775。
摘要由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

本文将以词作为最小语义单元,生产词向量。文本处理的第一步是分词,相比于字,分词的到的既包括特定的词,也包括单字成词的字,这样避免了通过字向量对两个字关系衡量不准确的问题,同时词相比于字表述的语义更加准确,通过词向量可以更好的挖掘出词与词之间的关系。

本文测试word embdding的表示方法:以词为单位,分词,将每个句子截断为100词(不够则补空字符串),然后将句子以词向量矩阵的形式输入到LSTM模型中进行学习分类。

一、程序模块调用

import numpy as np
import pandas as pd
import jieba #结巴分词
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout, Embedding
from keras.layers import LSTM
二、语料

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_['words'] = all_[0].apply(lambda s: list(jieba.cut(s))) #分词
三、部分数值设置

maxlen = 100 #截断字数
min_count = 5 #出现次数少于该值的字扔掉。这是最简单的降维方法
四、语料处理一

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值