深度学习实战篇-基于RNN的中文分词探索

近年来,深度学习在人工智能的多个领域取得了显著成绩。微软使用的152层深度神经网络在ImageNet的比赛上斩获多项第一,同时在图像识别中超过了人类的识别水平。百度在中文语音识别上取得了97%的准确率,已经超过了人类的识别能力。

随着深度学习在越来越多的领域中取得了突破性进展,自然语言处理这一人工智能的重要领域吸引了大批的研究者的注意力。最近谷歌发布了基于深度学习的机器翻译(GNMT),和基于短语的机器翻译相比,错误率降低了55%-85%以上,从而又引发了深度学习在自然语言处理上的热潮。

自然语言处理是人工智能和语言学的交叉学科,在搜索引擎,问答系统,机器翻译等人工智能领域发挥着重要作用。分词,词性标注,命名实体识别作为自然语言处理的基础领域,同样吸引着大批研究者的注意力,本篇就结合我们近期的一些探索从中文分词角度探索深度学习在自然语言处理中的应用。

中文分词是将自然语言文本划分成词语序列,目前主流方法为序列标注,即用BMES这个四个标签去标注句子中的每一个字(B是词首,M是词中,E是词尾,S是单字词)。

对于 { 京东 搜索 与 大数据 平台 数据挖掘 算法部 }

其标注为{ BE BE S BME BE BMME BME }

使用Keras实现了基于RNN的中文分词,接下来就分别介绍一下Keras和中文分词实战。

1. Keras介绍

Keras 是一个高度模块化的深度学习框架,使用python编写,封装了大量的函数接口,可支持CPU和GPU训练。Keras提供了一系列模块,这样我们在实验模型的时候只需要调用这些模块就可以完成模型搭建,不用自己在去实现各层网络。

主要模块有Optimizers(优化函数模块),常用的有SGD(随机梯度下降)、 Adam;Objectives(目标函数模块),常用的有均方误差,交差熵;Activations(激活函数模块),sigmoid用来做二分类、relu可解决梯度消失问题、softmax常用来做多分类;Layers(网络层模块),提供了CNN(卷积层)、RNN(LSTM、GRU)、embeddings;Initializations(初始化模块),主要用于模型参数的初始化,常用的有均匀分布初始化,高斯分布初始化。

使用Keras进行模型试验,可分为四个步骤(数据准备,模型构建, 模型训练, 模型测试),本文也将基于这四个步骤探索基于RNN的中文分词。

2. 中文分词实战

数据准备

训练数据使用的是bakeoff2005中的北京大学的标注语料,train作为训练样本,test作为测试样本。

统计训练样本中出现的字符并生成字典,同时将训练样本中字符全部映射成对应的字典索引(为了处理未登录词,将出现次数低于2次的字符映射为未登录词)。在序列标注分词中,一个字的标签受到上下文的影响,因而取该字的前后3个字作为特征。

模型构建

36大数据

本文模型由一层Embedding层,2层LSTM,一个Dense输出层构成,目标函数为交叉熵,优化函数选择adam。为了验证方法的有效性,本文未采用外部语料预训练词向量,而是在训练数据上训练词向量。

Embedding层完成从词典索引到词向量的映射过程,即输入一个词典索引,输出该索引对应的词向量,第一层LSTM层输入为词向量序列,输出为隐层输出序列,第二层LSTM层输入为前一层输出序列,输出为隐层个数,Dense输出层输入为第二层LSTM输出,输出为类别数。

在这里embeddingDim设为128,RNN序列长度设为7,LSTM隐层个数设为100,outputDims设为4,batch_size设为128。

模型训练

分别在CPU和GPU(使用单卡)上进行模型训练,使用单卡GPU的速度为CPU的4.7倍,未来还会测试单机多卡和多机多卡的性能。

CPU

36大数据

GPU

36大数据

模型测试

使用北京大学test进行测试,并使用bakeoff2005的测试脚本进行测试,结果如下所示:

36大数据

3.总结和展望

深度学习的优点是可以自动发现特征,大大减少了特征工程的工作量。目前深度学习已经在语音和图像等领域取得重大进展,自然语言与语音、图像不同,是抽象符号,因而如何将深度学习应用于自然语言处理需要进行更多的研究和探索:针对不同任务的不同字词表示、将先验知识和深度学习相结合、Attention机制的运用。同时相对于标注数据,未标注数据量更多,如何运用未标注数据也是目前自然语言处理探索的热点和难点。

转载于:https://www.cnblogs.com/bonelee/p/7079085.html

深度学习实战篇-基于RNN的中文分词探索相关推荐

  1. [深度学习-实战篇]情感分析之卷积神经网络-TextCNN,包含代码

    0. 前言 在"卷积神经网络"中我们探究了如何使用二维卷积神经网络来处理二维图像数据.在之前的语言模型和文本分类任务中,我们将文本数据看作是只有一个维度的时间序列,并很自然地使用循 ...

  2. python发音机器人_Python深度学习实战:基于TensorFlow和Keras的聊天机器人以及人脸、物体和语音识别...

    序 第1章 TensorFlow基础 1 1.1 张量 2 1.2 计算图与会话 2 1.3 常量.占位符与变量 4 1.4 占位符 6 1.5 创建张量 8 1.5.1 固定张量 9 1.5.2 序 ...

  3. 深度学习实战:基于bilstm或者dialated convolutions做NER

    文章目录 Before You Start: 什么是dialated convolutions? 什么是NER? 为什么文本处理可以使用CNN? 整体框架 input data embedding l ...

  4. 【深度学习 内力篇】Chap.1 单变量线性回归问题+梯度下降算法+Python建模实战

    [深度学习 内力篇]Chap.1 单变量线性回归问题+梯度下降算法+Python建模实战 摘要 2.1 单变量线性回归问题 理论篇 2.2.1 深度学习在单变量线性回归问题的应用 2.1.2 函数模型 ...

  5. Keras深度学习实战(32)——基于LSTM预测股价

    Keras深度学习实战(32)--基于LSTM预测股价 0. 前言 1. 模型与数据集分析 1.1 数据集分析 1.2 模型分析 2. 基于长短时记忆网络LSTM预测股价 2.1 根据最近五天的股价预 ...

  6. 深度学习实战—基于TensorFlow 2.0的人工智能开发应用

    作者:辛大奇 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-10-01 深度学习实战-基于TensorFlow 2.0的人工智能开发应用

  7. 第 09 章 基于特征匹配的英文印刷字符识别 MATLAB深度学习实战案例

    基于特征匹配的英文印刷字符识别 MATLAB深度学习实战 话不多讲,直接开撸代码 MainForm函数 function MainForm global bw; global bl; global b ...

  8. 【NodeJs-5天学习】第三天实战篇③ ——基于MQTT的环境温度检测

    [NodeJs-5天学习]第三天实战篇③ --基于MQTT的环境温度检测 1. 前言 2.实现思路 2.1 NodeJs服务器代码 2.2.1 本地部署MQTT服务器,端口1883 2.2.1.1 用 ...

  9. 【物联网服务NodeJs-5天学习】第三天实战篇③ ——基于MQTT的环境温度检测

    [NodeJs-5天学习]第三天实战篇③ --基于MQTT的环境温度检测 1. 前言 2.实现思路 2.1 NodeJs服务器代码 2.2.1 本地部署MQTT服务器,端口1883 2.2.1.1 用 ...

最新文章

  1. cv2.putText
  2. python只能对列表进行切片_Python3:类型错误:列表索引必须是整数或切片,而不是s...
  3. 为了找到你,CTO 和你唠唠研发都做啥?
  4. mysql sql select_mysql SQL Select 语句 简单应用
  5. ctypes python_Python ctypes 使用总结
  6. VMware文件共享
  7. python矩阵乘法_鱼书——第一章 Python入门
  8. 用计算机探索规律的ppt,用计算机探索规律.ppt
  9. CentOS系统缺少库文件解决办法
  10. 编译liblinear
  11. HDOJ-1002 A + B Problem II C语言
  12. java 代码走查_代码走查如何保证软件质量
  13. 【AD封装】插件电阻贴片电阻排阻分装(带3D)
  14. linux修改时间和日期,linux修改时间和日期的方法
  15. 电脑知识:台式电脑应该选择品牌和组装,值得收藏
  16. 聊天窗口怎么用计算机,在电脑上用键盘快速打开聊天窗口的快速键是什么键?...
  17. C编译器剖析_5.3.2 中间代码生成及优化_switch语句的翻译
  18. 最简单的平面制图用什么软件_新手用什么软件学习视频剪辑?简单又好学?
  19. 酒店管理与计算机未来的结合,智慧酒店:未来酒店发展新方向
  20. .Net Core通过NPOI在CentOS 7(Docker)环境中导出Excel报错The type initializer for ‘Gdip‘ 的问题

热门文章

  1. fiddler自动响应AutoResponder之正则匹配Rule Editor
  2. mysql自动挂载存储_Linux开机自动挂载存储
  3. python生成数据库指令_Python学习—数据库操作
  4. 循环训练_力量循环训练
  5. 计算机原理基础知识pdf,计算机原理第一章.pdf
  6. mysql providername_c#访问各数据库的providerName各驱动-阿里云开发者社区
  7. 阿里对象存储OSS在laravel框架中的使用
  8. python【数据结构与算法】最小生成树之Kruskal算法
  9. 【django轻量级框架】HTML上传文件拦截到本地
  10. 【Network Security!】认识进程与端口