目标
自然语言处理的目标是让计算机处理或说“理解”自然语言,以完成有意义的任务。
难点
人类语言是充满歧义的,不像编程语言那样明确。编程语言中有各种变量名,但人类语言中只有少数几个代词可以用,你得思考到底指代的是谁……
人类语言的解读依赖于现实世界、常识以及上下文。由于说话速度书写速度阅读速度的限制,人类语言非常简练,省略了大量背景知识。
接下来是几个英文的歧义例子,对native speaker而言很有趣。为了完整性只看一个:
The Pope’s baby steps on gays
主要歧义发生在baby上面,可以理解为“教皇的孩子踩了基佬”,也可以理解为“教皇在同性恋问题上裹足不前”。
Deep NLP = Deep Learning + NLP
将自然语言处理的思想与表示学习结合起来,用深度学习的手法解决NLP目标。这提高了许多方面的效果:
层次:语音、词汇、语法、语义
工具:词性标注、命名实体识别、句法\语义分析
应用:机器翻译、情感分析、客服系统、问答系统
Word Vector
略
NLP表示层次:形态级别
传统方法在形态级别的表示是词素:
image.png
深度学习中把词素也作为向量:
image.png
多个词素向量构成相同纬度语义更丰富的词向量[这里有个小疑问,合成后的词都是这些词素都是组合的?]
NLP工具:句法分析
image.png
NLP语义层面的表示
传统方法是手写大量的规则函数,叫做Lambda calculus:
image.png
在深度学习中,每个句子、短语和逻辑表述都是向量。神经网络负责它们的合并。
image.png
情感分析
传统方法是请一两百个工人,手工搜集“情感极性词典”在词袋模型上做分类器。
深度学习复用了RNN来解决这个问题,它可以识别“反话”的情感极性:
image.png
注意这只是为了方便理解的示意图,并不是RNN的工作流程。
QA
传统方法是手工编写大量的逻辑规则,比如正则表达式之类:
image.png
深度学习依然使用了类似的学习框架,把事实储存在向量里:
image.png
客服系统
最著名的例子得数GMail的自动回复:
image.png
这是Neural Language Models的又一次成功应用,Neural Language Models是基于RNN的:
image.png
机器翻译
image.png
而Neural Machine Translation将原文映射为向量,由向量构建译文。也许可以说Neural Machine Translation的“国际语”是向量。
结论:所有层级的表示都是向量
image.png
这可能是因为向量是最灵活的形式,它的维度是自由的,它可以组合成矩阵,或者更高阶的Tensor。事实上,在实践的时候向量和矩阵没什么本质区别,经常看到为了效率或单纯的美观而pack成矩阵unroll成向量的操作。