一、什么是自然语言处理
- 自然语言处理是一门交叉学科,包括计算机科学,人工智能和语言学
- 目标:让计算机去处理或“理解”自然语言, 完成一些有用的任务例如问答系统、机器翻译
- 完全理解或者表示语言的意义(甚至去定义它)都是一个虚幻的目标
- 完美的理解语言是一个“AI-complete”的问题
对NLP的研究通常在5个Level上进行:
- 语音/文本分析:包括语言识别技术、OCR技术、分词技术等
- 词形分析:例如分析一个word的前后缀、词根等
- 语法分析:从语法结构上分析一个句子的构成
- 语义分析:理解一个句子或单词的语义
- 篇章分析:理解一段篇章的含义
自然语言处理的应用:
- 应用范围从简单到复杂
- 拼写检查, 关键词提取&搜索,同义词查找&替换
- 从网页中提取有用的信息例如产品价格,日期,地址,人名或公司名等
- 分类,例如对教科书的文本进行分级,对长文本进行正负情绪判断
- 机器翻译
- 口语对话系统
- 复杂的问答系统
工业届里的NLP应用:
- 搜索引擎
- 在线广告
- 自动的或辅助的翻译技术
- 市场营销或者金融交易领域的情感分析
- 语音识别
二、什么是深度学习
深度学习是机器学习的一个研究子领域。传统机器学习算法面临的一个问题是,模型的优劣往往很大程度上依赖于特征的选取。例如如下图所示,对于一个NER问题(Named Entity Recognition,命名实体识别),传统的机器学习算法(如CRF)通常需要输入目标词的大小写特征,词性特征,以及其上下文环境里的词性分布等特征。
最终这些机器学习问题会变成优化问题:优化这些特征权重以达到最好的预测效果
而深度学习的魅力在于,其将特征的提取变成了一个自动化的学习过程。
深度学习是一类特征学习(Representation Learning)。它可以从原始数据(比如原始的像素点,原始的单词甚至是字符)中自动学习到多个层次上的特征表达,并完成最终的分类或翻译的任务。(这里的“深度”一词可能会带来歧义:例如对于下一节课将要学习到的word2vec模型。它其实是一个非常浅层的网络模型。)
探索深度学习的原因:
- 人工设计的特征常常定义过多,不完整并且需要花费大量的时间去设计和验证
- 自动学习的特征容易自适应,并且可以很快的学习
- 深度学习提供了一个弹性的,通用的学习框架用来表征自然的,视觉的和语言的信息。
- 深度学习可以用来学习非监督的(来自于生文本)和有监督的(带有特别标记的文本,例如正向和负向标记)
- 在2006年深度学习技术开始在一些任务中表现出众,为什么现在才热起来?
- 深度学习技术受益于越来越多的数据
- 更快的机器与更多核CPU/GPU对深度学习的普及起了很大的促进作用
- 新的模型,算法和idea层出不穷
- 通过深度学习技术提升效果首先发生在语音识别和机器视觉领域,然后开始过渡到NLP领域
三、Deep Learning + NLP = Deep NLP
Deep Learning的技术首先是在语音识别和计算机视觉的领域里取得了重大突破,直到近些年才被广泛地应用于NLP领域中。接下来,简单看下深度学习模型是如何帮助解决NLP难题的:
- 语音Phonology:
传统的语音识别模型是通过人工建立一张语音词表,将相似发音的字母划分为一类;并借助一个分类模型实现语音到字母的转译。而深度学习模型将语音表达为一个embedding向量,可以直接从语音的向量特征中预测相应的单词。
词形Morphology:
传统的词形学将一个单词拆分为前缀、词干、后缀的表达,这些前后缀和词干统称为Morpheme。而深度学习将每一个Morpheme都处理成一个向量的表达,并借助于一个Recursive Neural Network将不同的Morpheme向量拼接成一个向量——这个向量代表了相应的Morpheme拼接后得到的单词。这种将word表达成向量的思想在Deep NLP中十分基础。如果我们将这些词向量投影到一个二维平面上,会发现一些有趣的pattern。例如,相似的动词集中出现在平面的同一片区域内。句法分析Syntax
在得到了词的表达后,接下来我们讨论句子的结构。传统的句法分析将一个完整的句子解析成一棵语法树——每一个节点对应着一个特定的语法单元(例如,NP或VP)。而在深度学习中,我们可以对词向量进行计算,得到短语乃至整个句子的向量表达。并基于这些向量完成后续的分类预测等任务。
- 语义分析Semantics
传统的语义分析借助于一种叫做Lambda Calculus的技术。基本思想是在一棵句法树上递归地调用人工事先设定的Lambda函数进行语义的计算。而在深度学习中,同样地,我们对每一个单词,每一个短语,乃至每一个逻辑关系(比如A∈B)都用一个向量去表达。借助于神经网络的计算,我们可以准确地预测两个句子之间的逻辑关系(例如,if "all reptiles walk" then "some turtles move")。有趣的是,在深度学习中,我们并不需要事先定"reptiles"和"turtles","walk"和"move"之间的逻辑关系。
与传统的NLP技术相比,Deep NLP核心思想在于 :everything can be a vector。无论是low level的音频,还是high level的短语。深度神经网络模型将低level的vector组装成更高level的vector,进一步完成分类、翻译等高级任务。
NLP应用:
情感分析
传统的方法:精选的情感词典+词袋模型(忽略词序)+人工设计的特征(很难覆盖所有的信息)
深度学习:和上述词素,句法和语义相似的深度学习模型 --> RNN问答系统
传统的方法:用了非常多的特征工程去获取相关的知识,例如正则表达式,Berant et al. (2014)
深度学习:和上述词素,句法,语义,情感分析相似的深度学习模型机器翻译
传统的机器翻译系统是一个非常大的复杂系统
深度学习:源句子首先映射为向量,然后在输出的时候进行句子生成
可以发现所有NLP层次的表示都涉及到向量(Vectors), 下一讲如何来学习词向量以及这些向量表示了什么?
参考:
- 斯坦福大学深度学习与自然语言处理第一讲:引言
- 公子天的技术博客
- cs224d