计算机能否真正理解人类语言？目前还无法理解语言的原因是什么？
语言是人类交流的重要方式。通过语言，我们可以向他人传达信息，表达自己的想法 ，或者让别人做些什么。正因为语言，我们才拥有抽象思考和推理的能力。因此，自然语言与我们的认知和情感过程密切相关。 对于某些任务，计算机表面上可以完成的和人类一样好。但事实上，它们处理信息的方式，和我们截然不同。对计算机而言，理解人类语言是一个需要额外学习才能处理的任务，而不是计算矩阵这种，它们天生就擅长的东西。整个自然语言处理领域在做的事情，就是用算法结构(或近几年来开始流行的机器学习)的角度，解析语句结构、分析句子的情绪，或翻译为其他语言等。 计算机理解自然语言最大的一个障碍，就是自然语言缺乏“精确定义的结构”。当然， 每种语言都有自己的语法规范，但人类的日常对话非常复杂，难以严格定义。我们有数不清的方式，来表达同一件事情。用计算机可以理解的严格规则，将所有这些方式都记录下来，几乎是不可能的任务。 更具体地说，要理解人类语言，需要事先储备很多背景信息，并且经常需要用到常识。举个例子，这句话: “The sofa didn't fit through the door because it was too narrow.” “这个沙发过不去这扇门，因为它太窄了。” 这里，我们知道“it”(它)指的是门，是门太窄了。但如果我们稍稍改变一下说法，只替换一个词: “The sofa didn't fit through the door because it was too wide.” “这个沙发过不去这扇门，因为它太宽了。” 在这句话中，“it”(它)则指的是沙发，而不是门。哪怕是这样一个简单的句子，要理解它，我们也用到了有关物体大小的物理知识:也就是更宽的东西不能穿过更窄的东西。要让计算机理解这一点，我们需要把这个常识编码到它的“脑袋”里，而且它能在恰当的时候使用。但我们还没有很好的办法。因此，要让计算机正确理解任意一个句子，是非常困难的。 既然理解人类语言这么难，那么计算机可以做些什么?首先，我们需要回过头去想想 ，“理解一个句子的含义”，到底是指什么?我们常常会把“含义”这个词，理解成一个有 标准答案的东西。但实际上，一句话对于我们的含义，与我们的自身经历，以及我们 如何把新概念与自己已知的概念相类比密切相关。例如，我们会把“derivative(导数)”想成一个函数在某一点的斜率;或者把“Atom”(原子)想成一个圆形的粒子，很多更小的粒子绕着它运动。有些类比较为准确，有些则不那么准确，但说到底，它们都是模型。所以，理解一句话的含义的过程，也可以被认为是构建模型的过程。 这个模型不需要很完美，只需要对眼前的使用场景足够精确就可以了。我们可以把自然语言处理的过程，仍然看成一个普通的计算任务，只需要定义一个模型，然后用机器学习算法，迭代地训练计算机来执行该任务。例如，识别垃圾邮件就可以被当作一 个分类任务。其中，邮件是输入，“是垃圾邮件”或“不是垃圾邮件”的标签是输出;再例如，机器翻译可以被当作一个序列到序列预测任务;而语言的情绪分析，则需要同时用到分类和回归。 但使用这种方式有一个缺点，就是我们无法知道计算机得到最终结果的具体步骤，也就无法知道它是否真地理解了句子。大多数情况下，人们更在乎结果的准确率，不在乎计算机是否真地理解。但一些研究者也开始设计一些工具，可以更好地分析机器学习（入门）系统，分析算法在训练/学习过程中是如何构建结构和模型的。