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

本文介绍LSTM情感分析中采用one embedding的方法,作为one-hot编码的改进,探讨字向量如何捕获中文单字间的联系。实验基于keras的embedding层,以字为单位构建输入矩阵,结果显示相比one-hot,one embedding提升了测试集的准确率。
摘要由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

上一篇实验一使用one-hot的方法表示 单个字,本篇将采用字向量的方法表示字,也就是原博所说的one embdding。Word2vec 的思想是用训练得到的高维词向量来表示一个英文单词,并且单词之间的某些关系在词向量的运算上可以体现出来。但是英文与中文又有不同,英文的每一个单词单独成词,而中文的单字成词的情况并不多。one-hot的方法缺陷在与字与字之间的关系完全相同,事实上并非如此。如果以字为基本单元训练词向量,则可以捕捉到字之间的某些联系。

这里说一下原博在博文中提到的“只有one hot和word embedding才是理论上说得过去的,而one embedding则看上去变得不伦不类了,因为字似乎不能说具有比较确定的意思。”我觉得这里还要说到词向量的发展上,词向量首先是以英文作为研究对象的,英文的最小单位是24个英文字母,这些字母是不带任何含义的(不包括部分冠词),而再上一级的是各个英文单词,每一个都单独成词,且都包含意思,显然以每个字母为最小语义单位生成词向量并没有任何意义,但是以每个单词为单位生成词向量是有意义的。而对应到中文,中文最小的语义单元是字,很多字都有具体的含义,一种或者多种含义;字与字组合成词,其表述的意义相对于单个字的含义会减少,但是含义更准确。一个英文单词可能对应一个词,也可能对应一个字,这样以字为最小语义单位和以词为语义单位都是有意义的。其实我们可以将one embdding 看做是解决one-hot无法衡量两个字之间联系问题的一种方法,当然字向量挖掘出来的字与字之间的关系是否靠谱有待验证商榷。以上仅为个人理解,不当之处欢迎指出讨论

字向量的训练将直接使用keras中的embdding层。

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

一、程序模块调用

import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout, Embedding
from keras.layers import LSTM

二、语料

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值