Keras方法进行词嵌入
Embedding层实例化
from keras.layers import Embeddingembedding_layer = Embedding(1000, 64)
我们将词嵌入的办法用于IMDB电影评论情感预测任务学习。对于电影数据集,我们将评论限制为前10000个最常见的单词,然后将评论限制为只有20个单词。对于这10000个单词,网络对每个单词都学习一个8维词嵌入,然后输入的整数序列(二维整数张量)转换为嵌入序列(三维浮点数张量),然后将这个张量展平为二维,最后在上面训练一个Dense层用于分类。
from keras.datasets import imdb
from keras import preprocessingmax_features = 10000 # 作为特征的单词个数maxlen = 20 # 在这么多单词之后截断文本(这些单词属于前max_features个最常见的单词)(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features) # 将数据加载为整数列表x_train = preprocessing.sequence.pad_sequences(x_train, maxlen=maxlen) #将整数列表转换为形状为(samples, maxlen)的二维整数张量
x_test = preprocessing.sequence.pad_sequences(x_test, maxlen=maxlen)
在IMDB数据集上使用Embedding层和分类器
from keras.models import Sequential
from keras.layers import Flatten, Densemodel = Sequential()model.add(Embedding(10000, 8, input_length=maxlen)) #指定Embedding层的最大输入长度,以便后面将嵌入输入展平,Embedding层激活形状为(samples, maxlen, 8)model.add(Flatten()) #将三维的嵌入张量展平成形状为(samples, maxlen*8)# We add the classifier on top
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])
model.summary()history = model.fit(x_train, y_train,epochs=10,batch_size=32,validation_split=0.2)
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding_2 (Embedding) (None, 20, 8) 80000
_________________________________________________________________
flatten_1 (Flatten) (None, 160) 0
_________________________________________________________________
dense_1 (Dense) (None, 1) 161
=================================================================
Total params: 80,161
Trainable params: 80,161
Non-trainable params: 0
_________________________________________________________________
Train on 20000 samples, validate on 5000 samples
最后得到精度是76%,考虑到仅看每条评论的前20个单词,这个结果还是相当不错的。但请注意,仅仅将嵌入序列展开并在上面训练一个Dense层,会导致模型对输入序列中的每个单词单独处理,而没有考虑单词之间关系句子结构。更好的做法是在嵌入序列中添加循环层和一维卷积层,将每个序列作为整体来学习特征。
更多精彩内容,欢迎关注我的微信公众号:数据瞎分析
Keras方法进行词嵌入相关推荐
- 文本的表示-词嵌入(word embedding)
文本的理解 文本是常用的序列化数据类型之一.文本数据可以看作是一个字符序列或词的序列.对大多数问题,我们都将文本看作词序列. 深度学习序列模型(如RNN及其变体)能够较好的对序列化数据建模. 深度学习 ...
- 词向量表示:word2vec与词嵌入
在NLP任务中,训练数据一般是一句话(中文或英文),输入序列数据的每一步是一个字母.我们需要对数据进行的预处理是:先对这些字母使用独热编码再把它输入到RNN中,如字母a表示为(1, 0, 0, 0, ...
- 【NLP】文献翻译1——基于结构和词嵌入的文本相似性测量方法
Measuring text similarity based on structure and word embedding 摘要 1. 简介 2. 相关工作 3. 句子相似性 3.1 基于结构的相 ...
- Word embeddings in 2017: Trends and future directions (2017年里的词嵌入:趋势和未来方向)
Word embeddings in 2017: Trends and future directions 原文作者:anonymous 原文地址:http://ruder.io/word-embed ...
- 文本特征提取_02:Word2Vec词嵌入矩阵
王小草SparkML笔记 笔记整理时间:2017年1月10日 笔记整理者:王小草 今日计事: 除开上周五在家工作,2017年的工作日从3号开始今天第5次上班迟到,无论起多早每天都是会迟几分钟.第一次挤 ...
- 在 Keras 模型中使用预训练的词嵌入
原文地址在这里. 什么是词嵌入? "词嵌入"是一系列旨在将语义映射到几何空间的自然语言处理技术.这是通过将数字向量与字典中的每个单词相关联来完成的,这样任何两个向量之间的距离(例如 ...
- 基于Keras预训练词向量模型的文本分类方法
本文语料仍然是上篇所用的搜狗新闻语料,采用中文预训练词向量模型对词进行向量表示.上篇文章将文本分词之后,采用了TF-IDF的特征提取方式对文本进行向量化表示,所产生的文本表示矩阵是一个稀疏矩阵,本篇采 ...
- word2vec应用场景_介绍Word2Vec和Glove这两种最流行的词嵌入方法背后的直觉
NLP 的首要问题就是寻求恰当的文本表示方法. 因为, 良好的文本表示形式, 是后续进一步处理的基础.近年来,词嵌入方法越来越流行,在各种各样的 NLP 任务中 得到了广泛的应用.简单而言,词嵌入是通 ...
- 自然语言处理技术之词嵌入方法-2
词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称,也是实现自然语言处理任务的基础. 目录 传统词向量特征的表示方法 1.one-hot one-hot的缺点 2.TF-IDF TF-IDF ...
最新文章
- CUDA error: device-side assert triggered Assertion t 」= 0 t n classes failed
- C++宏assert()
- Firewalld共享上网及本地yum仓库搭建步骤
- 安卓高手之路之 WindowManager
- c语言数位递增的数解题思路,【菜鸟求助】21位数的花朵数问题,求解题思路
- zabbix items 配置
- 《训练指南》——6.9
- 使用Nexus2.x为Maven3.x搭建私服构件仓库
- s5pv210——定时器理论与操作
- Kafka笔记-Spring Boot消费者构造
- onenote设置默认新建页面颜色非白色
- HALCON:内存管理(Memory Management)
- 讯飞输入法粤语语音识别率达95%支持粤转普
- 2018-2019-2 20165234 《网络对抗技术》 Exp1 PC平台逆向破解
- 小米 samba linux,解决小米路由器升级固件后samba无法访问一例
- 鸟哥的Linux私房菜-基础篇(第九章)
- python-第三方接口获取验证码
- Template /template/pimple/a.ftl not found
- RTKLIB专题学习(七)---精密单点定位实现初识(三)
- 【Android】 Firebase登录、FCM、Google Play支付、adbrix、ONEStore、Galaxy Store、Google Install Referrer