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方法进行词嵌入相关推荐

  1. 文本的表示-词嵌入(word embedding)

    文本的理解 文本是常用的序列化数据类型之一.文本数据可以看作是一个字符序列或词的序列.对大多数问题,我们都将文本看作词序列. 深度学习序列模型(如RNN及其变体)能够较好的对序列化数据建模. 深度学习 ...

  2. 词向量表示:word2vec与词嵌入

    在NLP任务中,训练数据一般是一句话(中文或英文),输入序列数据的每一步是一个字母.我们需要对数据进行的预处理是:先对这些字母使用独热编码再把它输入到RNN中,如字母a表示为(1, 0, 0, 0, ...

  3. 【NLP】文献翻译1——基于结构和词嵌入的文本相似性测量方法

    Measuring text similarity based on structure and word embedding 摘要 1. 简介 2. 相关工作 3. 句子相似性 3.1 基于结构的相 ...

  4. Word embeddings in 2017: Trends and future directions (2017年里的词嵌入:趋势和未来方向)

    Word embeddings in 2017: Trends and future directions 原文作者:anonymous 原文地址:http://ruder.io/word-embed ...

  5. 文本特征提取_02:Word2Vec词嵌入矩阵

    王小草SparkML笔记 笔记整理时间:2017年1月10日 笔记整理者:王小草 今日计事: 除开上周五在家工作,2017年的工作日从3号开始今天第5次上班迟到,无论起多早每天都是会迟几分钟.第一次挤 ...

  6. 在 Keras 模型中使用预训练的词嵌入

    原文地址在这里. 什么是词嵌入? "词嵌入"是一系列旨在将语义映射到几何空间的自然语言处理技术.这是通过将数字向量与字典中的每个单词相关联来完成的,这样任何两个向量之间的距离(例如 ...

  7. 基于Keras预训练词向量模型的文本分类方法

    本文语料仍然是上篇所用的搜狗新闻语料,采用中文预训练词向量模型对词进行向量表示.上篇文章将文本分词之后,采用了TF-IDF的特征提取方式对文本进行向量化表示,所产生的文本表示矩阵是一个稀疏矩阵,本篇采 ...

  8. word2vec应用场景_介绍Word2Vec和Glove这两种最流行的词嵌入方法背后的直觉

    NLP 的首要问题就是寻求恰当的文本表示方法. 因为, 良好的文本表示形式, 是后续进一步处理的基础.近年来,词嵌入方法越来越流行,在各种各样的 NLP 任务中 得到了广泛的应用.简单而言,词嵌入是通 ...

  9. 自然语言处理技术之词嵌入方法-2

    词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称,也是实现自然语言处理任务的基础. 目录 传统词向量特征的表示方法 1.one-hot one-hot的缺点 2.TF-IDF TF-IDF ...

最新文章

  1. CUDA error: device-side assert triggered Assertion t 」= 0 t n classes failed
  2. C++宏assert()
  3. Firewalld共享上网及本地yum仓库搭建步骤
  4. 安卓高手之路之 WindowManager
  5. c语言数位递增的数解题思路,【菜鸟求助】21位数的花朵数问题,求解题思路
  6. zabbix items 配置
  7. 《训练指南》——6.9
  8. 使用Nexus2.x为Maven3.x搭建私服构件仓库
  9. s5pv210——定时器理论与操作
  10. Kafka笔记-Spring Boot消费者构造
  11. onenote设置默认新建页面颜色非白色
  12. HALCON:内存管理(Memory Management)
  13. 讯飞输入法粤语语音识别率达95%支持粤转普
  14. 2018-2019-2 20165234 《网络对抗技术》 Exp1 PC平台逆向破解
  15. 小米 samba linux,解决小米路由器升级固件后samba无法访问一例
  16. 鸟哥的Linux私房菜-基础篇(第九章)
  17. python-第三方接口获取验证码
  18. Template /template/pimple/a.ftl not found
  19. RTKLIB专题学习(七)---精密单点定位实现初识(三)
  20. 【Android】 Firebase登录、FCM、Google Play支付、adbrix、ONEStore、Galaxy Store、Google Install Referrer

热门文章

  1. java四行代码实现图片下载
  2. Python看似简单的地方——关于全局变量与局部变量
  3. NET快速开发实践中的IExtenderProvider扩展组件
  4. 使用Denyhost来阻止恶意连接SSH的IP
  5. 在leangoo里怎么复制删除列表?
  6. ***PHP 遍历数组的方法foreach
  7. 怎样定义网页里的关键字关键词
  8. 机器学习笔记(一)绪论
  9. TPC-W 一个实验结果和分析
  10. Linux I2C子系统分析-I2C总线驱动