自然语言处理的目标是让计算机处理或者“理解”自然语言,以完成有意义的任务,如QA等。
输入有两个来源:语音和文本,所以第一级是语音识别,OCR或者分词
形态学(Morphological analysis)或称词法或者词汇形态学。其研究词的内部结构,包括屈折变化和构词法两个部分。
句法分析(Syntactic analysis)和语义分析(Semantic Interpretation)
对话分析(Discourse Processing),根据上文语境理解下文
其中,CS223n关注画圈部分的三个部分(语音,句法分析和语义分析)
从易到难大致有:
拼写检查,关键词检索...
文本挖掘(产品价格,日期,时间,地点,人名...)
文本分类
机器翻译
客服系统
复杂对话系统
人类语言是离散的,明确的符号系统,但允许出现各种变种。符号传输到大脑的过程是通过连续的声光学信号,大脑编码似乎是连续的模式。另外,巨大的词表也导致了数据稀疏,不利于机器学习。因此,是否应该使用连续的信号而非离散的符号处理语言?
机器学习的子集,实际上是将特征工程+学习算法合二为一。深度学习是表示学习的一部分,用来学习原始输入的多层特征表示:
传统的机器学习手工特征耗时耗力,不易扩展,而深度学习自有编解码器,自动特征学习快,方便扩展。传统的机器学习示意如下:
人类语言充满歧义,解读依赖现实世界常识以及上下文。
将自然语言处理的思想和表示学习结合,用深度学习的手法解决NLP目标,这推进了不少方面的发展,如词性标注
,命名实体识别
,句法/语义分析
传统方法在形态级别的表示是词素
,如将uninterested拆分成前缀,词根,后缀三个部分:
深度学习中把词素也作为向量:
多个词素向量构成相同维度语义更丰富的词向量。
传统方法是手写大量的规则函数,也就是λ演算(Lambda calculus):
在深度学习中,每个句子,短语和逻辑表达都是向量
。神经网络负责将它们合并。
传统方法是请人手工搜集“情感极性词典”,在词袋模型上做分类器。
深度学习使用了RNN
来解决该问题,它可以识别“反话”的情感极性:
传统方法是手工编写大量的规则逻辑,比如正则表达式之类:
深度学习依旧使用了类似的学习框架,将事实存储在向量中:
Neural Language Models是基于RNN的:
传统方法在众多层面做了尝试,如词语,语法,语法。这类方法试图找到一种世界通用的“国际语”作为原文和译文的桥梁。
?
而Neural Machine Translation将原文映射为向量,由向量构建原文,所有层级的表示都是向量:
这也许是因为向量是最灵活的形式,它的维度是自由的,还可以组成矩阵或者更高维度的Tensor,事实上,在实践时,向量和矩阵没有本质区别。
原文:https://www.cnblogs.com/mengnan/p/9307590.html