自然语言处理中的语言学

作者: 坂本龙一 | 来源:发表于2017-10-24 08:05 被阅读142次

    自然语言处理的难题

    自然语言处理(Natural Language Processing NLP)是一门涉及到对学习,理解以及生成人类语言相关计算机技术进行探索的技术。 NLP技术可以协助人与人之间的沟通(如机器翻译)和人机之间的沟通(如智能助手),并可以对网上大量的文本资料进行分析并学习。

    然而,这个等待人们进行深度开发的领域却存在着几个难题。

    第一个难题是,我们作为人类并不能够有意识地去理解语言

    第二个难题是,人类语言的歧义性

    语法与概念

    计算机在处理语法(syntax)方面任务的能力非常强,比如说,计算一个单词在一份120页文档中出现的次数。但它在处理概念方面的能力就非常弱了,事实上,计算机进程几乎意识不到概念。而另一方面,人类的自然语言却主要是关于概念的传递,我们只是用语法作为概念的暂时载体。这就使得计算机难以处理自然语言。

    所以如果能使计算机更了解概念维度的东西,那么就可以减小这方面的制约了。

    到这基本上就已经是个哲学问题了。在自然语言中,语法是一种方法或途径,而传递的概念是目的

    如果以运输为例的话,从A点运到B点是目的,而之间的路则是途径。如果人类灭亡很多年后,外星文明来到地球,当他们看到遍地的道路时,是否能只通过分析这些道路,而对当时的运输有所了解呢?答案应该是否定的!你不能够只通过分析途径还有方法,而完全理解传输的到底是什么。

    语言的模糊性

    当你想到一个语言概念,如单词或句子,那些看起来像是简单且很有道理的想法,实际上却有很多边界情况是难以搞清楚的

    例如,英文里“won't”是一个词,还是两个词(大多系统视其为两个词)?还有在中文或(特别是)泰语中,母语使用者会对词语的边界有各种不同的看法。而与文本的意义相比,词和句子都还算非常简单的了。

    事实上,英文中很多词语如此。如“ground”就有很多意思,可以作动词,更多时候可能又是名词。要理解一句话,你得先明白各个词的含义,这又不是件简单的任务。

    事实上,自然语言处理更多是解决自然语言文本分析与生成等工程问题的学科。成功标准不在于是否设计了更好的科学理论,或是证明了X和Y语言在历史上是相关的。相反,衡量标准是你是否在工程问题上获得了良好的解决方案

    例如,你不会根据谷歌翻译有没有用“真正正确的翻译”,或者能够说明译者们是如何完成他们的工作这样的标准来判断谷歌翻译的好坏。

    而是根据在实践应用中是否产生了足够准确以及流畅的翻译来进行判断。机器翻译领域里就有办法来衡量这一点(如BLEU),他们主要专注于如何提高这些分数就行了。

    什么时候使用NLP

    NLP除了主要用于帮助人们查找和理解以文本形式存在着的大量信息。它还可以用于制作更好的用户界面,以便人类更好地与计算机以及其他人进行交流。

    说NLP是工程学,并不意味着它就始终专注于开发商业应用。 NLP也可用于政治学(博客),经济学(金融新闻报道),医学(医学笔记),数字人文学科(文学作品,历史资料)等其他学科的科学研究。

    NLP专业人士经常会摆脱相对表层的语言学,而研究当前系统所犯的错误,并只学习他们需要了解和修复最突出的错误类型的语言学。毕竟,他们的目标不是一个完整的理论,而是完成工作的最简单,最有效的方法

    语言学知识对于NLP (最近趋势)

    那么语言学的知识是不是就真的对自然语言处理,毫无帮助呢。就像多年以前贾里尼克说的:“每当我开除一个语言学家,语音识别系统的性能就会改善一些。”

    答案当然又是否定的,因为对于目前的NLP系统来说,还并没有强大到能够自己学习出足够有用的特征,所以语言学的知识在很大程度上还是能够对系统的性能提升有很大的帮组的。

    一个典型的例子就是, 前两年当序列到序列模型(seq2seq)被提出来,并且广泛得到应用后,大家不由在某种程度上达成一些共识,语言不过就是一段字符串序列,即使没有语言学知识,也能够让系统通过数据自己学习出很好的结果。

    然后最近就有很多学者对这个提出了质疑,包括个人比较喜欢的Yoav Goldberg。

    其实看最近今年自然语言处理的顶级会议ACL上的论文也可以发现,人们也都普遍接受了要使用语言学结构的观点,并且对这方面进行了研究,想法设法如何将其利用进NLP系统中去,以提高系统的性能。

    姑且可以称这个潮流为“语言学架构的回归”。

    语言学架构的回归的原因

    第一,降低了搜寻空间。

    首先对于如神经网络这样的机器学习算法来说,就是根据训练数据来对函数空间进行搜索,最后获得较好的函数。而对于一些比较复杂的任务来说,搜索空间是无比巨大的,有时候很难获得一个好的解。通过结合语言学知识,可以一定程度上缩小搜索空间,从而使得更加快速地获得好的结果。

    拿计算机视觉里面一个例子打个比方的话,如果我们要对某物体,如吴教授最喜欢的猫,进行分类。但是我们只有很少的图片,一两百来张。如果从零开始让网络来自己搜寻函数空间的话,是很难用这么点数据获得好的结果的。

    Smith教授尤其提到了,最近很火的话题多任务学习 (Multi-task Learning)对语言层级结构的利用,通过联合多个NLP任务一起训练,从低级的词性标注到高级一点的依存句法分析,再到更高级的如情感分析这样的主任务。不光能够对主任务的性能起到一定的提升,有时也能对低级任务的性能进行提高。

    第三,句法新近性>序列新近性

    目前深度学习在自然语言处理方面的应用,主要是RNN (递归神经网络)的应用,然而RNN的最大的问题就是它的归纳性偏好是序列新近性,也就是说序列中离得越近越记得住,而语言并不光是序列新近性的,有时候开头第一个词和结尾最后一个词就可能会有很强的关联。但是RNN对于这样遥远的关系就很难捕捉到,即使使用LSTM这样的长短时序记忆RNN,也并不能解决这个问题。

    反而通过自己探索,在无尽的可能中找到了自己的路,探索出了自己的下法。而用这些来反过来映观人类围棋的演化过程,就变得很有意思了。

    同样,如果将来有能力打开深度学习网路黑盒的话,观察网络捕捉到的到底是什么样的层级特征,之后反过来利用这些特征来改进语言学知识。

    到那时候,说不定我们离探明人类语言本能隐藏的真相那一天,也就已经不远了。

    推荐读书 《Linguistic Fundamentals for Natural Language Processing》

    了解用于自然语言处理方面语言学的一些知识。

    相关文章

      网友评论

        本文标题:自然语言处理中的语言学

        本文链接:https://www.haomeiwen.com/subject/nbszuxtx.html