改变世界的七大NLP技术,你了解多少?(上)

e51af19d6bfbd86ff9933426e90374fffc13e5f9

什么是NLP

自然语言处理(NLP 是计算机科学,人工智能和语言学的交叉领域。目标是让计算机处理或“理解”自然语言,以执行语言翻译和问题回答等任务。

随着语音接口和聊天机器人的兴起,NLP正在成为信息时代最重要的技术之一,同时它也是人工智能的关键部分。充分理解和表达语言的含义是一个非常困难的目标。为什么?因为人类的语言很特别。

人类语言有什么特别之处?

1.人类语言是专门为传达说话人的意图而构建的系统。这不仅仅是一个环境信号,更是一个有意识的交流。
2.人类语言大多是离散/符号的/分类的信号系统,大概是因为信号可靠性更高。
3.一种语言的分类符号可以用几种方式编码为通信信号:声音,手势,写作,图像等。人类语言只是其中的一种。
4.人类语言是不明确的(与编程和其他正式语言不同)。 因此,在表达、学习和使用语言/情境/情境/文字/视觉知识对人类语言方面存在高度复杂性。

NLP应用到哪里?

NLP研究领域衍生出了一批快速增长的应用程序。以下是其中几个:

1.拼写检查,关键字搜索,查找同义词;

2.从网站提取信息,例如:产品价格,日期,地点,人员或公司名称;

3.分类:长文档的积极/消极情绪;

4.机器翻译;

5.口语对话系统;

6.复杂的问答系统;

事实上,这些应用程序已经在现实中大量使用,从搜索到在线广告匹配 ; 从自动/辅助翻译到营销或财务/交易的情绪分析 ; 从语音识别到chatbots /对话代理(自动化客户支持,控制设备,订购商品)。

268fe30ccc510f28d7d74cecdec2817e5f41c7bd

深度学习

大部分NLP技术都是由深度学习提供技术支持。近几年,深度学习才开始发挥作用,主要是因为:

·大量的训练数据;

·更快的机器和多核CPU / GPU

·性能高的新模型和算法:有效的端到端联合系统学习、有效的使用上下文和任务间转换的学习方法,以及正则化优化方法。

在深度学习中,表示学习试图自动学习来自原始输入的良好特征或表示。而在机器学习中手动设计的特征通常过多且不完整,需要花费很长时间进行设计和验证。而且深度学习提供了一个非常灵活、通用且可学习的框架,用于呈现视觉和语言信息的世界。最初,它在语音识别和计算机视觉等领域取得突破。最近,深度学习方法在许多不同的NLP任务中表现出了非常高的性能。这些模型通常可以通过单一的端到端模型进行训练,并且不需要传统的,特定于任务的特征工程。

我最近完成了斯坦福大学关于自然语言处理与深度学习CS224n课程。该课程全面介绍了将深度学习应用于NLP的尖端研究。在模型方面,它涵盖了词向量表示、基于窗口的神经网络、递归神经网络、长期短期记忆模型、递归神经网络和卷积神经网络,以及一些涉及存储器组件的最新模型。

在此我想分享我学习的7种主要NLP技术以及使用它们的主要深度学习模型和应用程序。

福利:你可以在GitHub获得相关课程!

技术1:文本嵌入(Text Embeddings

在传统的NLP中,我们将单词视为离散符号,然后可以用one-hot向量表示。向量的维度是整个词汇表中单词的数量。单词作为离散符号的问题在于,对于one-hot向量来说,没有自然的相似性概念。因此,另一种方法是学习在向量本身中编码相似性。核心思想是一个词的含义是由经常出现在其旁边的单词给出的

文本嵌入是字符串的实值向量表示。我们为每个单词建立一个密集的向量,选择它以便类似于类似上下文中出现的单词的向量。对于大多数NLP任务而言,词嵌入被认为是一个很好的起点。它们允许深度学习在较小的数据集上也是有效的,因为它们通常是深度学习体系的第一批输入,也是NLP中最流行的迁移学习方式。在词嵌入中最流行的应该是Word2vec,它是由谷歌(Mikolov)开发的模型,另外一个是由斯坦福大学(彭宁顿,Socher和曼宁)开发的GloVe。接着我们重点介绍这两种模型:

bb4685bac5fca503d1ad3c565d3bf30ffdc3fa18

Word2vec我们有一个庞大的文本语料库,其中固定词汇表中的每个词都由一个向量表示。然后,我们通过文本中的每个位置t,其中有一个中心词c和上下文词o。接下来,我们使用字向量的相似性ÇÒ计算的概率ø给出Ç(或反之亦然)。我们不断调整单词向量来最大化这个概率。为了有效地训练Word2vec,我们可以从数据集中去除无意义的单词。这有助于提高模型的准确性。

Word2vec有两个变体值得一提:

d1809a8961d50380bf031044c712ff7f0afceaa3

1.Skip-Gram我们考虑一个包含k个连续项的上下文窗口。然后,我们跳过其中一个单词,尝试学习一个神经网络,该网络可以获得除跳过的所有术语外的所有术语,并预测跳过的术语。因此,如果两个单词在大语料库中反复共享相似的上下文,那么这些术语的嵌入向量将具有相似的向量。

2.Continuous Bag of Words我们在一个大的语料库中获取大量的句子,每当我们看到一个词,我们就会联想到周围的词。然后,我们将上下文单词输入到神经网络,并预测该上下文中心的单词。当我们有数千个这样的上下文单词和中心单词时,我们就有了一个神经网络数据集的实例。我们训练神经网络,最后编码的隐藏层输出表示一个特定的词嵌入。当我们通过大量的句子进行训练时,类似上下文中的单词会得到相似的向量。

a300e086a0811580d01303c08205f6515e3cc4ba

Skip-GramCBOW的一个吐槽就是它们都是基于窗口的模型,这意味着语料库的共现统计不能被有效使用,导致次优的嵌入(suboptimal embeddings)。

GloVe模型旨在通过捕捉一个字与整个观测语料库的结构嵌入的含义来解决这个问题。为此,该模型训练单词的全局共现次数,并通过最小化最小二乘误差来充分利用统计量,从而产生具有有意义子结构的单词向量空间。这样的做法足以保留单词与向量距离的相似性。

除了这两种文本嵌入外,还有许多最近开发的高级模型,包括FastTextPoincare嵌入sense2vecSkip-ThoughtAdaptive Skip-Gram,我强烈建议你学习一下。

技术2:机器翻译

机器翻译是语言理解的经典测试。它由语言分析和语言生成组成。大型机器翻译系统具有巨大的商业用途,给你一些值得注意的例子:

·       谷歌翻译每天翻译1000亿字;

·       Facebook使用机器翻译自动翻译帖子和评论中的文字,以打破语言障碍,让世界各地的人们相互交流;

·       阿里巴巴使用机器翻译技术来实现跨境贸易,连接世界各地的买家和卖家;

·       微软为Android、iOS和Amazon Fire上的最终用户和开发人员提供基于人工智能的翻译,无论他们是否可以访问互联网。

在传统的机器翻译系统中,我们必须使用平行语料库:一组文本,每个文本都被翻译成一种或多种不同于原文的其他语言。例如,给定源语言f(例如法语)和目标语言e(例如英语),我们需要建立多个统计模型,包括使用贝叶斯规则的概率公式,训练的翻译模型pf | e)平行语料库和语言模型pe)在纯英文语料库上训练。这种方法跳过了数百个重要细节,需要大量的手工特征工程,整体而言它是一个非常复杂的系统。

神经机器翻译是通过一个称为递归神经网络RNN)的大型人工神经网络对整个过程进行建模的方法。RNN是一个有状态的神经网络,它通过时间连接过去。神经元的信息不仅来自前一层,而且来自更前一层的信息。

2c17a658d8c714d10bdbd94975328c71867ff4a5

标准的神经机器翻译是一种端到端神经网络,其中,源语句由称为编码器RNN 编码,目标词使用另一个称为解码器RNN编码器一次读取一个源语句,然后在最后隐藏状态汇总整个源句子。RNN解码器使用反向传播学习这个汇总并返回翻译后的版本。神经机器翻译从2014年的一项边缘研究领域发展到2016年广泛采用的领先机器翻译方式,那么,使用神经机器翻译的最大成功是什么?

1.端到端训练NMT中的所有参数同时被优化,以最大限度地减少网络输出的损耗性能。

2.分布式表示的优势NMT更好地利用单词和短语的相似性。

3.更好地探索上下文NMT可以使用更多的上下文——源文本和部分目标文本以此进行更准确地翻译。

4.更流利的文本生成:深度学习文本生成质量高于平行语料库。

RNN的一个大问题是梯度消失(或爆炸)问题,其中取决于所使用的激活函数,随着时间的推移信息会迅速丢失。直观地说,这不会成为一个很大问题,因为这些只是权重而不是神经元状态,但是时间的权重实际上是存储过去的信息的地方,如果权重达到01,000,000的值,那么以前的状态将不会提供很多信息。因此,RNNs在记忆序列中的前几个单词时会表现的很困难,并且只能根据最近的单词进行预测。

长期/短期记忆LSTM网络试图通过引入门和明确定义的存储器单元来对抗梯度消失/爆炸问题。每个神经元都有一个存储单元和三个门:输入、输出和忘记。这些门的功能是通过停止或允许信息流来保护信息。

·输入门决定了来自上一层的多少信息存储在单元中;

·输出层在另一端获取任务,并确定下一层有多少单元知道该单元的状态。

·忘记门的作用起初看起来很奇怪,但有时候忘记门是个不错的设计:如果它正在学习一本书并开始新的一章,那么网络可能需要忘记前一章中的一些字符。

已经证明LSTM能够学习复杂的序列,例如像莎士比亚的写作或者创作原始音乐。请注意,这些门中的每一个都对前一个神经元中的一个单元具有权重,因此它们通常需要更多资源才能运行。LSTM目前非常流行,并且在机器翻译中被广泛使用。除此之外,它是大多数序列标签任务的默认模型,其中有大量的数据。

05b16b6bb566445f934dd3c07809944137423ce9

门控重复单元GRU)是在LSTM的基础上变形得来的,也是神经机器翻译的扩展。它拥有更少的门,并且连接方式略有不同:它不是输入、输出和忘记门组成的,而是具有更新门。这个更新门决定了从最后一个状态开始保留多少信息以及从上一个层开始输入多少信息。

复位(reset)门的功能与LSTM的忘记(forget)门非常相似,但位置稍有不同。他们总是发出它们完整的状态因为他们没有输出门。在大多数情况下,它们的功能与LSTM非常相似,最大的不同之处在于GRUs稍快并且更容易运行(但表现力稍差)。在实践中,这些往往会互相抵消,因为你需要一个更大的网络来重新获得一些表示能力,这反过来又抵消了性能的优势。在一些情况下,GRU可以胜过LSTM

a69565f6b94ccb846947f01079c4f6504a3c8cda

除了这三大体系结构之外,过去几年神经​​机器翻译系统还有进一步的改进。以下是最显着的发展:

·       用神经网络进行序列学习的序列证明了LSTM在神经机器翻译中的有效性。它提出了序列学习的一种通用的端到端方法,对序列结构进行了最少的假设。该方法使用多层Long Short Term Memory(LSTM)将输入序列映射为固定维度的向量,然后使用另一个深度LSTM从向量解码目标序列。

·       通过联合学习对齐和翻译的神经机器翻译引入了NLP中的注意机制(将在下一篇文章中介绍)。认识到使用固定长度矢量是提高NMT性能的瓶颈,作者建议通过允许模型自动(软)搜索与预测目标相关的源句子部分来扩展,而不必将这些部分明确地形成为一个固定的长度。

·       用于神经机器翻译的循环编码器上的卷积利用附加的卷积层增强NMT中的标准RNN编码器,以在编码器输出中捕捉更广泛的上下文。

·       谷歌的神经机器翻译,它解决了准确性和部署方便性的问题。该模型由一个深度LSTM网络组成,该网络包含8个编码器和8个解码器层,使用残余连接以及从解码器网络到编码器的注意力连接。

·       Facebook AI研究人员不使用递归神经网络,而是使用卷积神经网络序列对NMT中的学习任务进行排序。

技巧3DialogueConversations

关于会话AI的文章很多,其中大部分着重于垂直聊天机器人,商业趋势和创业机会(比如Amazon AlexaApple SiriFacebook MGoogle AssistantMicrosoft Cortana)。人工智能理解自然语言的能力仍然有限。因此,创建全自动的对话助理仍然是一个巨大的挑战。尽管如此,下面将要介绍的内容对于想要在对话AI中寻求下一个突破的人们来说是一个很好的起点。

6763891df3eb6a8f33fc8591e34163003aad0c23

来自蒙特利尔、乔治亚理工学院、微软和Facebook的研究人员构建了一个能够产生上下文敏感的会话响应神经网络。这种新颖的响应生成系统是在大量的非结构化Twitter对话上进行端对端训练。循环神经网络架构用于解决将上下文信息集成到经典统计模型时出现的稀疏性问题,使系统能够考虑以前的对话话语。该模型显示了对上下文敏感和非上下文敏感的机器翻译和信息检索的所有优势。

香港开发的神经反应机器NRM)是一种基于神经网络的短文对话生成器。它采用通用的编码器-解码器框架。首先,它将响应的生成的形式化为基于输入文本的潜在表示的解码过程,而编码和解码都是用递归神经网络实现的。NRM通过从微博服务收集的大量谈话数据进行训练。实验表明,NRM可以对超过75%的输入文本产生语法正确当反应,在同样的环境中表现优于现有技术。

eb1acf4c7963829f05be4c04f219a5b21a82abbb

最后,Google神经会话模型是一种简单的会话建模方法,它使用序列到序列框架。该模型通过预测对话中前一个句子的下一个句子进行对话。该模型的优势在于它可以进行端对端训练,因此需要的手动规则更少。

该模型可以根据一个大型的会话训练数据集,生成简单的会话。它能够从领域特定的数据集以及电影字幕、嘈杂的、通用的数据集中提取知识。在特定于域的IT数据集上,该模型可以通过对话找到技术问题的解决方案。在嘈杂的开放的电影副本数据集上,该模型可以执行简单形式的常识推理。

  数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

以上为译文。

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《the-7-nlp-techniques-that-will-change-how-you-communicate-in-the-future-part-i》,

作者:james le 译者:虎说八道,审校:。

文章为简译,更为详细的内容,请查看原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MINI类-结构体

文章目录结构体的定义和使用实例类和结构体的关系博主写作不容易,孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 结构体与类相似,通常用来封装小型的相关变量组,例如,学生的学号、姓名、性别、年龄等。结构是一种值类型&am…

暴风影音硬件加速播放高清影片

近年来,高清视频因为画面清晰、视觉效果好,越来越受到众多电脑用户的厚爱。暴风影音3.6版本在高清的支持上,笔者必须得说,是暴风影音在高清方面的一个大跨越,在这个技术上,暴风把KMP等播放器都远远的抛在后…

SSL双向认证的实现

2019独角兽企业重金招聘Python工程师标准>>> 环境 系统:archlinux/centOS nginx:nginx/1.12.2 浏览器:火狐firefox 前提:1.安装nginx。    2.安装openssl。 生成证书 新建工作目录 首先建立一个工作目录&#x…

NKU 专题一 题解

A - Flip Game 总的情况数只有2^16次方种&#xff0c;显然直接bfs就可以了 1 #include<iostream>2 #include<queue>3 #include<cstring>4 using namespace std;5 int W,B,start;6 bool have[1000000];7 struct plot{8 int n,step;9 }; 10 void input(int…

子承父业-C#继承

文章目录继承的定义和使用实例继承的特性继承的可传递性继承的单一性继承中的访问修饰符base和this关键字basethis实例博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 继承是软件复用的一种形式。使用继承可以复用现在类的数据和行为&#xff…

MAVEN创建并打包web项目

maven项目是由一个maven project和多个maven module组成的&#xff0c;以下简介一下maven webapp的创建和打包&#xff0c;前提是你已经安装配置好maven了。打开eclipse。依照例如以下操作&#xff1a; 我们首先当然要先创建一个project。如上图选择。 如今maven project已经创…

学界 | CVPR 2018颁布五大奖项,何恺明获年轻学者奖

年度计算机视觉和模式识别盛会CVPR&#xff08;Conference on Computer Vision and Pattern Recognition&#xff09;在美国盐湖城开幕啦&#xff01; 据统计&#xff0c;本届大会有超过3309篇大会论文投稿&#xff0c;接收979篇论文。 面对如此多的论文评审任务&#xff0c;CV…

[BZOJ2458][BeiJing2011]最小三角形

题目描述 Description Xaviera现在遇到了一个有趣的问题。平面上有N个点&#xff0c;Xaviera想找出周长最小的三角形。由于点非常多&#xff0c;分布也非常乱&#xff0c;所以Xaviera想请你来解决这个问题。为了减小问题的难度&#xff0c;这里的三角形也包括共线的三点。 输…

小技巧集锦

2019独角兽企业重金招聘Python工程师标准>>> jackson JsonDeserialize 使用方法&#xff1a; 实现方法注解写在set方法上。 public class CustomJsonDateDeserializer extends JsonDeserializer<Date> {private SimpleDateFormat datetimeFormat new SimpleD…

interface-C#接口-统一的标准

文章目录接口的定义接口的实现实例1实例2接口的继承博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 接口是面向对象编程的一个重要技术&#xff0c;在C#中负责实现多重继承。一个接口定义一个协定&#xff0c;实现接口类或结构体必须遵守其协定…

JMeter入门(1):JMeter总体介绍及组件介绍

一、JMeter概述 JMeter就是一个测试工具&#xff0c;相比于LoadRunner等测试工具&#xff0c;此工具免费&#xff0c;且比较好用&#xff0c;但是前提当然是安装Java环境&#xff1b;JMeter可以做(1)压力测试及性能测试&#xff1b;(2)数据库测试&#xff1b;(3)Java程序的测试…

根据HTML5 获取当前位置的经纬度【百度地图】【高德地图】

是想让地图的定位用户位置更准确一些。 查看了介绍&#xff1a; http://www.w3school.com.cn/html5/html_5_geolocation.asp 看介绍中拿数据挺简单。 <!DOCTYPE html> <html> <body> <p id"demo">点击这个按钮&#xff0c;获得您的坐标&…

C# delegate与event,委托与事件

文章目录委托示例事件实例博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 委托和事件是C#中两个比较复杂的概念&#xff0c;这篇文章介绍两个概念与基本用法&#xff0c;让大家理解C#中的事件处理机制。 委托 委托也叫代理&#xff0c;就是把…

Java的四种引用,强弱软虚,用到的场景(转+补充)

Q1&#xff1a;引用队列是什么&#xff1f;如何使用&#xff1f;使用的场景有哪些&#xff1f; A1:oracle的api文档的描述&#xff1a; https://docs.oracle.com/javase/7/docs/api/java/lang/ref/ReferenceQueue.htmlReference queues, to which registered reference objects…

C# lambda表达式与匿名方法

文章目录匿名方法Lambda表达式实例实例博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 C#中的匿名方法是在C#2.0引入的&#xff0c;它终结了声明委托的唯一方法是使用命名方法的时代。在C#更高版本中&#xff0c;Lambda表达式取代了匿名方法&a…

常用的相似度计算

在数据分析和数据挖掘的过程中&#xff0c;我们经常需要知道个体间差异的大小&#xff0c;进而评价个体的相似性和类别。最常见的是数据分析中的相关分析&#xff0c;数据挖掘中的分 类和聚类算法&#xff0c;如K最近邻&#xff08;KNN&#xff09;和K均值&#xff08;K-Means&…

玩转C#窗体-属性、方法和事件详细说明

文章目录简介Windows窗体的基本属性一、布局属性1、StartPosition属性2、Location属性3、尺寸属性4、WindowsState属性5、Autoscroll属性6、AutoSize属性二、样式属性1、ControlBox属性2、MaximizeBox属性3、MinimizeBox属性4、HelpButton属性5、ShowIcon属性6、Icon属性7、Sho…

for循环和数组练习

//公鸡2文&#xff0c;母鸡1文&#xff0c;小鸡半文&#xff0c;每种至少一只&#xff0c;100文买100只鸡有多少种可能var ci 0; for(var g1;g<50;g){for(var m1;m<100;m){for(var x1;x<100;x){if(g*2m*1x*(0.5)100&&gmx100){ci1;console.log("买公鸡&qu…

c# automapper 使用

一、最简单的用法 有两个类User和UserDto 1 public class User2 {3 public int Id { get; set; }4 public string Name { get; set; }5 public int Age { get; set; }6 }7 8 public class UserDto9 { 10 public string Na…

API设计原则 - Qt官网的设计实践总结

原文链接&#xff1a;API Design Principles - Qt Wiki 基于Gary的影响力上 Gary Gao 的译文稿&#xff1a;C的API设计指导 译文发在酷壳 - CoolShell&#xff1a;API设计原则&#xff0c; 2017-07-25 API设计原则 - Qt官网的设计实践总结 &#x1f34e; 译序 Qt的设计水准在业…