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

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介:

近年来,深度学习在人工智能的多个领域取得了显著成绩。微软使用的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个字作为特征。

模型构建

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

本文模型由一层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

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

GPU

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

模型测试

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

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

3.总结和展望

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


本文作者:haiping

来源:51CTO

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
2月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
9月前
|
机器学习/深度学习 自然语言处理 算法
PyTorch PINN实战:用深度学习求解微分方程
物理信息神经网络(PINN)是一种将深度学习与物理定律结合的创新方法,特别适用于微分方程求解。传统神经网络依赖大规模标记数据,而PINN通过将微分方程约束嵌入损失函数,显著提高数据效率。它能在流体动力学、量子力学等领域实现高效建模,弥补了传统数值方法在高维复杂问题上的不足。尽管计算成本较高且对超参数敏感,PINN仍展现出强大的泛化能力和鲁棒性,为科学计算提供了新路径。文章详细介绍了PINN的工作原理、技术优势及局限性,并通过Python代码演示了其在微分方程求解中的应用,验证了其与解析解的高度一致性。
2609 5
PyTorch PINN实战:用深度学习求解微分方程
|
机器学习/深度学习 人工智能 PyTorch
【深度学习】使用PyTorch构建神经网络:深度学习实战指南
PyTorch是一个开源的Python机器学习库,特别专注于深度学习领域。它由Facebook的AI研究团队开发并维护,因其灵活的架构、动态计算图以及在科研和工业界的广泛支持而受到青睐。PyTorch提供了强大的GPU加速能力,使得在处理大规模数据集和复杂模型时效率极高。
401 59
|
机器学习/深度学习 PyTorch 算法框架/工具
揭秘深度学习中的微调难题:如何运用弹性权重巩固(EWC)策略巧妙应对灾难性遗忘,附带实战代码详解助你轻松掌握技巧
【10月更文挑战第1天】深度学习中,模型微调虽能提升性能,但常导致“灾难性遗忘”,即模型在新任务上训练后遗忘旧知识。本文介绍弹性权重巩固(EWC)方法,通过在损失函数中加入正则项来惩罚对重要参数的更改,从而缓解此问题。提供了一个基于PyTorch的实现示例,展示如何在训练过程中引入EWC损失,适用于终身学习和在线学习等场景。
1090 4
揭秘深度学习中的微调难题:如何运用弹性权重巩固(EWC)策略巧妙应对灾难性遗忘,附带实战代码详解助你轻松掌握技巧
|
机器学习/深度学习 人工智能 TensorFlow
基于TensorFlow的深度学习模型训练与优化实战
基于TensorFlow的深度学习模型训练与优化实战
556 3
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
616 2
|
机器学习/深度学习 存储 自然语言处理
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
|
机器学习/深度学习 人工智能 自然语言处理
深入浅出深度学习:从基础到实战
【9月更文挑战第19天】本文将带你走进深度学习的世界,从基础概念入手,逐步深入到实战应用。我们将通过简单易懂的语言和生动的比喻,让你轻松理解深度学习的原理和应用场景。同时,我们还为你准备了一些实用的代码示例,帮助你快速入门深度学习,开启你的AI之旅。
179 10
|
机器学习/深度学习 数据挖掘 大数据
大数据时代的“淘金术”:Python数据分析+深度学习框架实战指南
在大数据时代,数据被视为新财富源泉,而从海量信息中提取价值成为企业竞争的核心。本文通过对比方式探讨如何运用Python数据分析与深度学习框架实现这一目标。Python凭借其强大的数据处理能力及丰富库支持,已成为数据科学家首选工具;而TensorFlow和PyTorch等深度学习框架则为复杂模型构建提供强有力的技术支撑。通过融合Python数据分析与深度学习技术,我们能在各领域中发掘数据的无限潜力。无论是商业分析还是医疗健康,掌握这些技能都将为企业和社会带来巨大价值。
460 6
|
机器学习/深度学习 API TensorFlow
深入解析TensorFlow 2.x中的Keras API:快速搭建深度学习模型的实战指南
【8月更文挑战第31天】本文通过搭建手写数字识别模型的实例,详细介绍了如何利用TensorFlow 2.x中的Keras API简化深度学习模型构建流程。从环境搭建到数据准备,再到模型训练与评估,展示了Keras API的强大功能与易用性,适合初学者快速上手。通过简单的代码,即可完成卷积神经网络的构建与训练,显著降低了深度学习的技术门槛。无论是新手还是专业人士,都能从中受益,高效实现模型开发。
373 1