为什么自然语言处理很难?


是很难 。但是比自然语言处理的前二十年的进步已经好很多了 。最近因为要研究人工智能自然语言处理方面的项目 。所以一直在读有关的书籍 。从数学的奥妙 。统计学的理论、概率论等等 。
读了这么多的书 。其实我发现 。很多东西靠的还是你对基础的扎实程度 。自然语言处理的前20年为什么会这么难 。或者说毫无进展 。讲的通俗一点就是人类的惯性思维决定了你的认识事物的方法 。
在前20年 。科学家研究自然语言处理一直停留在或者说局限在人类学习语言的方式上 。简单来说 。就是用电脑去模仿人脑 。当时大多数的科学家都认为要让机器去翻译或者语音识别 。就需要让计算机去理解我们的语言 。而要做到这一点 。就需要计算机具有像人类一样的智慧 。这就是人类认识的普遍规律 。我们也不要去笑话他们 。因为唯有如此的试错 。才造就了今天的成就 。
如今语音识别和翻译已经做得非常的好了 。但是很多不在我们这种机器学习研究领域的人来说 。还错误的认为语音识别和翻译是靠计算机理解了自然语言才实现的 。其实际上是靠数学和统计学去实现的 。
从规则到统计的进步是人类认识事物的一种突破 。统计语言模型的建立 。是当今自然语言处理的基础和关键 。但是很多东西都会存在自己本身固有的缺陷 。这是无法改变的 。
语言模型中设计的数字关系、公式计算 。N元模型的定位 。为什么在马尔科夫假设中N的值会这么小 。里面涉及到的知识太多 。在这里也无法一一回答给你 。我只是想说 。单纯的自然语言处理已经没有像之前那么的毫无头绪了 。现在已经比以前好的太多了 。难 。不是在于它的本身 。而是在于它涉及的知识点实在太多 。。。。
【为什么自然语言处理很难?】其他观点:
首先语言表达意思的多样性 。比如名字纽约 。表达的意思有很多种 。可以是人名 。公司 。地址纽约州 。地址纽约市 。要理解这种多样性 。需要上下文环境 。但一个有限的语言模型很难做到通用性 。其次是很难用机器理解语言中的思想 。比如高中哪些语文阅读题 。我们都很难对付 。何况机器呢?无论统计语言模型还是神经网络语言模型 。归根到底 。都离不开随机性 。随机能否理解思想吗?比如用神经网络训练一个文字生成器 。这个不需要标注 。提供一段文字即可 。如果神经网络拟合得很好 。甚至过拟合 。那么最终文字生成器没什么意思 。因为生成的文字和训练的文字没什么区别 。因此神经网络要保持一定的误差 。也就是训练的时候不能太好 。即留出一点随机性 。这样生成的文字才有可能和训练文字不大一样 。但是生成文字没有思想 。甚至语法不通 。因此 。我特别怀疑市面上的文字生成作品 。是不是单纯的语言模型实现的?背后是否隐藏了大量人为规则和大量文本匹配、组合、替换?
其他观点:
当我在思考这个问题的时候,不禁回想到了我的小时候就觉得非常神奇的IBM机器人沃森,这台机器人拥有当时人类所制造机器的最顶级的智慧,具有高级语言处理能力并且能够初步理解英语的能力.
初步来看,实现这样的一个能够和语言与人类进行交流的机器人,其中包括语音识别和自然语言处理(包括手语,唇语,肢体语言等)来与人类进行沟通,通过自然语言生成和语音合成来和人类进行交际,同时也需要进行信息检索和信息抽取,从而能够进行推理,根据已知的事实来得到结论.
语言处理中的一些困难:
我们把处理口语和书面语的计算技术称为语音和语言处理,合起来就算是自然语言处理,其实这是一个很广泛的定义,这个范围从人人皆知的比如分词计算,自动换行这样的相对简单的技术,直到比如微软小冰这样的自动回答,Google翻译这样的实时口语自动翻译的高级技术.
而自然语言处理相对于计算机视觉这样的其他人工智能的应用来说,自然语言处理需要从业人员有一定的语言知识,就好比我们在刚入门的时候用NLTK包来计算文本文件的词数,句数,以及上下文语句等.当我们如果用nltk上的处理字节数功能时,这就是一个简单的数据处理工具,而我们如果要去计算一篇文章中的词数,句数的时候,就需要让计算机知道什么是词,什么是句子,从哪里断句,从哪里开始的语言知识,这个时候工具就变成了一个自然语言处理系统.但是像是nltk这样的工具毕竟还是一个简单的系统,他的语言知识也比较有限,如果要其拥有跟我们人类有对话的语言能力,我们就必须要求系统拥有更加广泛和更加深刻的语言知识,因此这就需要从业人员拥有处理更加复杂系统所需的语言知识范围和种类的语言能力.

推荐阅读