『深度应用』NLP机器翻译深度学习实战课程·零(基础概念)
0.前言
深度学习用的有一年多了,最近开始NLP自然处理方面的研发。刚好趁着这个机会写一系列NLP机器翻译深度学习实战课程。
本系列课程将从原理讲解与数据处理深入到如何动手实践与应用部署,将包括以下内容:(更新ing)
- NLP机器翻译深度学习实战课程·零(基础概念)
- NLP机器翻译深度学习实战课程·壹(RNN base)
- NLP机器翻译深度学习实战课程·贰(RNN+Attention base)
- NLP机器翻译深度学习实战课程·叁(CNN base)
- NLP机器翻译深度学习实战课程·肆(Self-Attention base)
- NLP机器翻译深度学习实战课程·伍(应用部署)
本系列教程参考博客:https://me.csdn.net/chinatelecom08
1.NLP机器翻译发展现状
1.1 机器翻译现状
1.1.1 什么是机器翻译?
什么是机器翻译?
说白了就是通过计算机将一种语言转化成其他语言,就是机器翻译。
这对我们同学们而言都很熟悉了,那么机器翻译背后的理论支持到底是什么呢?而且几十年前的机器翻译和现在我们天天口中说的神经网络到底有什么区别呢?
首先我们从机器翻译历史发展的角度来对它进行大致的讲述一下,机器翻译的历史大致经历了三个阶段:
- 基于规则的机器翻译(70年代)
- 基于统计的机器翻译(1990年)
- 基于神经网络的机器翻译(2014年)
基于规则的机器翻译(70年代)
基于规则的机器翻译的想法第一次出现是在70年代。科学家根据对翻译者工作的观察,试图驱使计算机同样进行翻译行为。这些翻译系统的组成部分包括:
双语词典(俄语->英文)
针对每种语言制定一套语言规则(例如,名词以特定的后缀-heit、-keit、-ung等结尾)
如此而已。如果有必要,系统还可以补充各种技巧性的规则,如名字、拼写纠正、以及音译词等。
感兴趣的同学可以去网上仔细查看一下相关的资料,这里就贴上一个大致的流程图,来表示基于规则的机器翻译的实现流程。
根据规则调整句子结构,然后去字典中查找对应的词片段的意思,重新组成新的句子,最后利用一些方法来对生成的句子进行语法调整。
基于统计的机器翻译(1990年)
在1990年早期,IBM研究中心的一台机器翻译系统首次问世。它并不了解整体的规则和语言学,而是分析两种语言中的相似文本,并试图理解其中的模式。
统计模型的思路是把翻译当成机率问题。原则上是需要利用平行语料,然后逐字进行统计。例如,机器虽然不知道“知识”的英文是什么,但是在大多数的语料统计后,会发现只要有知识出现的句子,对应的英文例句就会出现“Knowledge”这个字。如此一来,即使不用人工维护词典与文法规则,也能让机器理解单词的意思。
这个概念并不新,因为最早Warren Weave就提出过类似的概念,只不过那时并没有足够的平行语料以及限于当时计算机的能力太弱,因此没有付诸实行。现代的统计机器翻译要从哪里去找来“现代的罗赛塔石碑”呢?最主要的来源其实是联合国,因为联合国的决议以及公告都会有各个会员国的语言版本,但除此之外,要自己制作平行语料,以现在人工翻译的成本换算一下就会知道这成本高到惊人。
现在我们自己的系统使用的2000万语料有一大部分是来自联合国的平行语料。
https://cms.unov.org/UNCorpus/zh#format
在14年之前,大家所熟悉的Google翻译都是基于统计机器翻译。听到这,应该大家就清楚统计翻译模型是无法成就通天塔大业的。在各位的印像中,机器翻译还只停留在“堪用”而非是“有用”的程度。
基于神经网络的机器翻译(2014年)
神经网络并不是新东西,事实上神经网络发明已经距今80多年了,但是自从2006年Geoffrey Hinton(深度学习三尊大神之首)改善了神经网络优化过于缓慢的致命缺点后,深度学习就不断地伴随各种奇迹似的成果频繁出现在我们的生活中。在2015年,机器首次实现图像识别超越人类;2016年,Alpha Go战胜世界棋王;2017年,语音识别超过人类速记员;2018年,机器英文阅读理解首次超越人类。当然机器翻译这个领域也因为有了深度学习这个超级肥料而开始枝繁叶茂。
Yoshua Bengio在2014年的论文中,首次奠定了深度学习技术用于机器翻译的基本架构。他主要是使用基于序列的递归神经网络(RNN),让机器可以自动捕捉句子间的单词特征,进而能够自动书写为另一种语言的翻译结果。此文一出,Google如获至宝。很快地,在Google供应充足火药以及大神的加持之下,Google于2016年正式宣布将所有统计机器翻译下架,神经网络机器翻译上位,成为现代机器翻译的绝对主流。
简单介绍一下基于神经网络的机器翻译的通用框架:编码器-解码器结构。
用通俗的话来讲,编码器是将信息压缩的过程,解码器就是将信息解码回人能够理解的过程,这种过程信息的损失越少越好。
结构如下图所示:
图1 gnmt机器翻译框架
这个是16年谷歌发表的gnmt框架的结构,使用lstm+attention的机制实现,感兴趣的同学可以去查看论文或者百度相关的博客。
图2 transformer机器翻译框架
Transformer是谷歌在17年的一篇论文https://arxiv.org/pdf/1706.03762.pdf提出的具有开创性的架构,这个结构不同于之前所有的机器翻译网络结构,仅仅依靠模型的优势,就取得了state of the art的结果,优于以往任何方法的机器翻译结果。
1.1.2 相关论文
如果想更深入的了解其中的原理,还是需要阅读一些理论性的文章。如果仅仅想搭建这样一个系统,按照下一篇实践的内容,一步步的进行操作,你就可以拥有搭建基于世界上最先进模型的机器翻译系统的能力了。
这里整理了一些机器翻译中做需要的理论性介绍,包括以下一些内容:
词嵌入向量简单介绍:https://blog.csdn.net/u012052268/article/details/77170517
机器翻译相关论文:
Sequence to Sequence Learning with Neural Networks(2014)
Attention机制的提出(2016)
谷歌基于attention的gnmt(2016)
自注意力机制:transformer(2017)
1.1.3 相关会议
机器翻译最著名的顶级会议也是比赛就是WMT,世界上所有著名的具有机器翻译引擎技术的巨头公司都在该比赛中取得过名次,该比赛从17年开始,所有取得前几名的队伍都是通过搭建transformer模型来进行优化迭代的。
其中一些队伍提出的方法和技巧,也被各个具有机器翻译技术的公司搜集整理,尝试在自己的翻译引擎中去。
除此之外,国内外一些重要比赛解决方案,也是我们要需要参考的一些点。
http://www.statmt.org/wmt18/
『深度应用』NLP机器翻译深度学习实战课程·零(基础概念)的更多相关文章
- 『深度应用』NLP机器翻译深度学习实战课程·壹(RNN base)
深度学习用的有一年多了,最近开始NLP自然处理方面的研发.刚好趁着这个机会写一系列NLP机器翻译深度学习实战课程. 本系列课程将从原理讲解与数据处理深入到如何动手实践与应用部署,将包括以下内容:(更新 ...
- Python学习课程零基础学Python
python学习课程,零基础Python初学者应该怎么去学习Python语言编程?python学习路线这里了解一下吧.想python学习课程?学习路线网免费下载海量python教程,上班族也能在家自学 ...
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...
- 『深度应用』NLP命名实体识别(NER)开源实战教程
近几年来,基于神经网络的深度学习方法在计算机视觉.语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展.在NLP的关键性基础任务—命名实体识别(Named Entity Recogni ...
- HTML、CSS、JS、PHP 的学习顺序~(零基础初学者)
如果你有耐心坚持一年以上的话, 我会推荐HTML->CSS->JS->PHP的顺序来学习. 1. HTML学习:首先学习HTML,HTML作为标记语言是非常容易学的,把w3schoo ...
- Spring学习笔记一:基础概念
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6774310.html 一:Spring是什么 Spring的主要作用是作为对象的容器. 传统编程中,我们 ...
- nginx学习(二)——基础概念之异步非阻塞
上面讲了很多关于nginx的进程模型,接下来,我们来看看nginx是如何处理事件的. 有人可能要问了,nginx采用多worker的方式来处理请求,每个worker里面只有一个主线程,那能够处理的并发 ...
- HTML学习笔记:1.基础概念
①HTML:Hypertext Markup Language,即超文本标记语言,文件由标记组成 ②HTML发展史 (几个重要节点): 1993(IETF):HTML 1.0 1995(W3C): ...
- java学习(二)基础概念、语法
对象 类的实例(通俗点讲,new出来的玩意好像都是对象?初学者的感觉,不造对错啊,有大神给我解释下可以啊) 类 class嘛,模板嘛,可以给对象实例的嘛 方法 行为,学编程的,方法,这玩意心里都懂吧, ...
随机推荐
- Spring 核心技术(2)
接上篇:Spring 核心技术(1) version 5.1.8.RELEASE 1.3 Bean概述 Spring IoC 容器管理一个或多个bean,他们都是根据提供的配置元数据(例如 XML 中 ...
- Java学习笔记之---比较接口与抽象类
Java学习笔记之---比较接口与抽象类 抽象类是描述事物的本质,接口是描述事物的功能 接口与抽象类的异同 1.一个类只能继承一个父类,但是可以有多个接口 2.抽象类中的抽象方法没有方法体,但是可以有 ...
- MyBatis从入门到精通(十一):MyBatis高级结果映射之一对多映射
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中如何使 ...
- C语言指针专题——指针怎么就很灵活?
最近在研读 C Primer pkus(第五版)中文版,老外写的还是很经典的,推荐给朋友们,购买地址:C primer plus 5版中文版购买 另外再推荐两本书: 1. 2017年9月全国计算机二级 ...
- Java的Hook线程及捕获线程执行异常
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.f ...
- 【题解】跳房子-C++
Description奶牛按不太传统的方式玩起小朋友玩的跳房子游戏,现给出一个5*%的由数字组成的网格.它们在格子中向前前跳,向后跳,向左跳,向右跳,跳到网格中另一个数字后,又这样继续跳(可能跳到某个 ...
- Spring 注解编程之 AnnotationMetadata
在上篇文章 Spring 注解编程之模式注解 中我们讲到 Spring 模式注解底层原理,依靠 AnnotationMetadata 接口判断是否存在指定元注解. 这篇文章我们主要深入 Annotat ...
- SQL Server 保存特殊字符时乱码
场景:协同完成的项目,数据库是同事创建,我们共同使用的表. 客户反应有一些字符查看的时候出现乱码.第一反应是否编码规则的问题.后来去数据库查发现数据库里就是乱码,百度了一下发现说特殊字符要保存在NVA ...
- 转载——Asp.Net MVC+EF+三层架构的完整搭建过程
转载http://www.cnblogs.com/zzqvq/p/5816091.html Asp.Net MVC+EF+三层架构的完整搭建过程 架构图: 使用的数据库: 一张公司的员工信息表,测试数 ...
- 分布式锁----Redis实现
分布式锁 为什么需要有分布式锁呢,在单点的时候synchronized 就能解决,但是服务拆分之后,每个服务都是单独的机器,无法解决,所以出现了分布式锁,其实也就是用各种手段,实现获取唯一锁,别人无法 ...