自然语言处理是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言,特别是如何编程计算机以成功处理大量的自然语言数据。

NLP的基本任务包括正则表达式、分词、词法分析、语音识别、文本分类、信息检索、问答系统——如对一些问题进行回答或与用户进行交互——机器翻译等。常用的模型则有马科夫模型、朴素贝叶斯、循环神经网络等。

我们把处理口语和书面语(统称为”语言“)的计算机技术称为语音和语言处理,简称自然语言处理,这是一个范围很广泛的定义,这个定义包括了从人人皆知的诸如词数计算、自动换行等简单技术,直到诸如在web上的自动问答、实时的口语自动翻译等高级技术。

自然语言处理的这些应用与其他应用系统的区别是,自然语言处理要使用语言知识。例如,UNIX的wc程序可以用来计算文本文件中的字节数、词数或行数。当我们用它来计算字节数和行数时,wc只用于进行一般的数据处理。但是,当我们用它来计算一个文件中词的数目时,就需要关于”什么事一个词“的语言知识,这样,这个wc也就成为了一个自然语言处理系统。

[描述来源:Jurafsky, D.; Martin, J. H. (2005).自然语言处理综论.冯志伟,孙乐译.电子工业出版社. ]

发展历史

描述

自然语言处理(NLP)大体是从上世纪50年代开始,1950年,图灵发表论文“Computing Machinery and Intelligence”,提出著名的“图灵测试”作为判断智能的条件。1948年Shannon把离散马尔科夫过程的概率模型应用于描述语言的自动机。Chomsky吸取了他的思想,首先把有限状态自动机作为一种工具来刻画语言的语法,并且把有限状态语言定义为由有限状态语法生成的语言。这些早起的研究工作产生了形式语言理论(formal language theory)这样的研究领域,采用代数和集合论把形式语言定义为符号的序列。

这一时期的研究都相当基础,1954年的Georgetown的实验试图将超过60句俄文全部自动翻译成为英文,其研究人员声称三到五年之内即可解决机器翻译的问题。不过这项工作的实际进展远低于预期,1966年的ALPAC报告发现研究未达预期目标,机器翻译的研究经费遭到大幅削减。一直到1980年代末期,统计机器翻译系统被发展出来,机器翻译的研究才得以更上一层楼。

1960年代发展特别成功的NLP系统包括Winograd提出的SHRDLU——一个词汇设限、运作于受限如“积木世界”的一种自然语言系统,以及1964-1966年Joseph Weizenbaum模拟“个人中心治疗”而设计的ELIZA——几乎未运用人类思想和感情的讯息,有时候却能呈现令人讶异地类似人之间的互动。但当“病人”提出的问题超出ELIZA极小的知识范围之时,可能会得到空泛的回答。例如问题是“我的头痛”,回答是“为什么说你头痛?”

这一时期研究者大多着重研究推理和逻辑问题,这些简单的系统把模式匹配和关键词搜索与简单试探的方法结合起来,进行推理和自动问答,它们都只能在某一个领域内使用。但也有一些统计学者和电子学的专业研究人员试图使用统计算法来解决这些问题。比如Bledsoe和Browning于1959年建立了用于文本识别的贝叶斯系统来计算字母系列的似然度,Mosteller和Wallace于1964年用贝叶斯方法来解决在The Federalist文章中的原作者的分布问题。这一期间还出现了第一个联机语料库:Brown美国英语语料库。

一直到1980年代,多数自然语言处理系统是以一套复杂、人工订定的规则为基础的,颇有专家系统(expert system)的味道。不过从1980年代末期开始,语言处理引进了机器学习的算法,NLP产生革新。其成因主要有两个:运算能力稳定增加(参见摩尔定律);以及Chomskyan语言学理论渐渐丧失主导(例如转换-生成文法-transformational grammar)。该理论的架构不倾向于语料库——机器学习处理语言所用方法的基础。有些最早期使用的机器学习算法,例如决策树,是硬性的、“if-then”规则组成的系统,类似当时既有的人工订定的规则。不过词性标记将隐马尔可夫模型(HMM)引入NLP,并且研究日益聚焦于软性的、以概率做决定的统计模型,其基础是将输入资料里每一个特性赋予代表其分量的数值。这种模型通常足以处理非预期的输入数据,尤其是输入有错误时,并且在整合到包含多个子任务的较大系统时,结果比较可靠。

近来的研究更加聚焦于非监督式学习和半监督学习的算法。这种算法,能够从没有人工注解理想答案的资料里学习。大体而言,这种学习比监督学习困难,并且在同量的数据下,通常产生的结果较不准确。不过没有注解的数据量极巨,弥补了较不准确的缺点。

近年来, 随着深度学习的快速发展,用于自然语言处理的模型也大幅演化,2013年Tomas Mikolov及其团队提出了word2vec,为一群用来产生词向量的相关模型,在业界产生了巨大的影响。2016年Jozefowicz等学者在当前模型在语料库、词汇量以及复杂的长期语言结构方面进行了扩展,他们在十亿字基准上对诸如字符卷积神经网络( character Convolutional Neural Networks )或长期短期记忆( Long-Short Term Memory)等技术进行了详尽的研究。

主要事件1948Shannon把离散马尔科夫过程的概率模型应用于描述语言的自动机Shannon, C. E. (1948).A Mathematical Theory of Communication.Bell system technical journal.

1956Chomsky首先把有限状态自动机作为一种工具来刻画语言的语法,并且把有限状态语言定义为由有限状态语法生成的语言Chomsky, N. (1956). Three models for the description of language.IRE Transactions on Information Theory.2(3): 113-124.

1959Bledsoe和Browning建立了用于文本识别的贝叶斯系统来计算字母系列的似然度Bledsoe, W. W.; Browning, I. (1959).Pattern recognition and reading by machine.IRE-AIEE-ACM '59. pp225-232.

1964Mosteller和Wallace用贝叶斯方法来解决在The Federalist文章中的原作者的分布问题Mosteller, F.; Wallace, D. (1964).Inference and Disputed Authorship: The Federalist. Springer.

1966Joseph Weizenbaum模拟“个人中心治疗”而提出了ELIZAWeizenbaum, J. (1966). ELIZA—a computer program for the study of natural language communication between man and machine. Communications of the ACM. 9: 36–45.

1972Winograd提出SHRDLUWinograd, T. (1972).Procedures as a Representation for Data in a Computer Program for Understanding Natural Language.Cognitive Psychology.3(1).1-191.

1976Jelinek提出了用统计模型进行自动实时的语音识别,他及IBM实验室的其他学者也是将HMM引入自然语言处理的作者Jelinek, F. (1976). Continuous speech recognition by statistical methods.Proceedings of the IEEE.64(4): 532-556.

2013Tomas Mikolov及其团队提出了word2vecMikolov, T. et al. Efficient Estimation of Word Representations in Vector Space.arXiv: 1301.3781.

2016Jozefowicz等学者在当前模型在语料库、词汇量以及复杂的长期语言结构方面进行了扩展Jozefowicz, R.; Vinyals, O.; Schuster, M.; Shazeer, N. and Wu, Y. (2016). Exploring the Limits of Language Modeling.arXiv:1602.02410.

发展分析

瓶颈

目前分词的技术仍然是一个难点,特别是对于汉语这样缺乏明显词汇边界的语言,如何正确划分不同词语十分重要;

词义消岐是NLP的另一个难点,由于在某些情况下语境复杂,会给模型的训练带来困难;

另外就是由于语言的模糊性,缺乏能够解释语言形成的原理,也给我们模拟语言造成困难;

最后,能够通用于多种语言的模型的数量仍然十分不足。

未来发展方向

目前NLP领域仍需要大量研究,十分有潜力的方向有:独立于任务的NLP数据增强

用于NLP的Few-shot learning

用于NLP的迁移学习

多任务学习

跨语言学习

独立于任务的架构提升

Contributor: Yuanyuan Li

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐