自然语言处理 Natural language processing


网页自动化在线客服,一个自然语言处理起重要作用的例子。[1]

自然语言处理(Natural language processing)语言学计算机科学信息工程人工智能等领域的分支学科。它涉及到计算机与人类语言(自然语言)之间的交互,特别是如何编写计算机程序来处理和分析大量的自然语言数据。

自然语言处理主要面临着语音识别自然语言理解自然语言生成三大挑战。

历史

尽管相关工作可以追溯到更早,但自然语言处理(NLP)还是通常被认为始于20世纪50年代。

符号型 NLP (1950s - 1990s)

  • 1950年代:1950年,艾伦 · 图灵发表《计算机器与智能》一文,提出图灵测试作为判断机器智能程度的标准。1954年乔治敦大学成功将六十多个俄语句子自动翻译成了英语。作者声称在三到五年内将解决机器翻译问题[2],然而,事实上的进展要缓慢得多,1966年的ALPAC报告认为,长达10年的研究并未达到预期目标。自此之后,投入到机器翻译领域的资金急剧减少。直到20世纪80年代后期,当第一个统计机器翻译系统被开发出来以后,机器翻译的研究才得以进一步推进。
  • 1960年代SHRDLU和ELIZA是于20世纪60年代开发的两款非常成功的自然语言处理系统。其中,SHRDLU是一个工作在词汇有限的“积木世界”的自然语言系统;而ELIZA则是一款由约瑟夫·维森鲍姆在1964年至1966年之间编写的罗杰式模拟心理治疗师。ELIZA几乎没有使用任何有关人类思想或情感的信息,但有时却能做出一些令人吃惊的类似人类之间存在的互动。当“病人”的问题超出了它有限的知识范围时,ELIZA很可能会给出一般性的回复。例如,它可能会用“你为什么说你头疼? ”来回答病人提出的“我的头疼”之类的问题。
  • 1970年代: 20世纪70年代,程序员开始编写概念本体论程序,将真实世界的信息结构化为计算机可理解的数据,如 MARGIE (Schank,1975)、 SAM (Cullingford,1978)、 PAM (Wilensky,1978)、 TaleSpin (Meehan,1976)、 QUALM (Lehnert,1977)、 Politics (Carbonell,1979)和 Plot Units (Lehnert,1981)。与此同时也出现了许多聊天机器人,如 PARRY,Racter 和 Jabberwacky。
  • 1980年代:1980年代和1990年代初标志着NLP中符号方法(symbolic methods)的鼎盛时期。当时的重点领域包括基于规则的解析(例如,HPSG作为生成语法的计算操作化的发展),形态学(例如,二级形态学[3]),语义学(例如,Lesk算法),参考reference(例如,向心理论[4])和其他自然语言理解领域继续进行其他研究,例如与Racter和Jabberwacky合作开发的聊天机器人。一个重要的发展(最终导致1990年代的统计转变)是在此期间定量​​评估的重要性日益提高。[5]

统计自然语言处理(1990s-2010s)

直到20世纪80年代,大多数自然语言处理系统仍依赖于复杂的、人工制定的规则。然而从20世纪80年代末开始,随着语言处理机器学习 Machine Learning算法的引入,自然语言处理领域掀起了一场革命。这是由于计算能力的稳步增长(参见摩尔定律)和乔姆斯基语言学理论主导地位的削弱(如转换语法)。乔姆斯基语言学理论并不认同语料库语言学,而语料库语言学却是语言处理机器学习方法的基础。一些最早被使用的机器学习算法,比如决策树,使用“如果...那么..."(if-then)硬判决系统,类似于之前既有的人工制定的规则。然而,词性标注隐马尔可夫模型 引入到自然语言处理中,并且研究重点被放在了统计模型上。统计模型将输入数据的各个特征都赋上实值权重,从而做出软判决概率决策。许多语音识别系统现所依赖的缓存语言模型就是这种统计模型的例子。这种模型在给定非预期输入,尤其是包含错误的输入(在实际数据中这是非常常见的),并且将多个子任务整合到较大系统中时,结果通常更加可靠。

  • 1990年代:许多早期瞩目的成功出现在机器翻译 Machine Translation领域,特别是IBM研究所的工作,他们先后开发了更复杂的统计模型。这些系统得以利用加拿大议会和欧盟编制的多语言文本语料库,因为法律要求所有行政诉讼必须翻译成相应政府系统官方语言。然而其他大多数系统都必须为所执行的任务专门开发的语料库,这一直是其成功的主要限制因素。因此,大量的研究开始利用有限的数据进行更有效地学习。
  • 2000年代:近期研究更多地集中在无监督学习半监督学习算法上。这些算法可以从无标注但有预期答案的数据或标注和未标注兼有的数据中学习。一般而言,这种任务比监督学习困难,并且在同量数据下,产生的结果通常不精确。然而如果算法具有较低的时间复杂度,且无标注的数据量巨大(包括万维网),可以有效弥补结果不精确的问题。

神经NLP(2010s-至今)

二十一世纪一零年代,表示学习深度神经网络式的机器学习方法在自然语言处理中得到了广泛的应用,部分原因是一系列的结果表明这些技术可以在许多自然语言任务中获得最先进的结果[6][7],比如语言建模、语法分析等[8][9][10]。流行的技术包括使用词嵌入来获取单词的语义属性,以及增加高级任务的端到端学习(如问答) ,而不是依赖于分立的中间任务流程(如词性标记和依赖性分析)。在某些领域,这种转变使得NLP系统的设计发生了重大变化,因此,基于深层神经网络的方法可以被视为一种有别于统计自然语言处理的新范式。例如,神经机器翻译 Neural machine translation NMT 一词强调了这样一个事实:基于深度学习的机器翻译方法直接学习序列到序列变换,从而避免了统计机器翻译 Statistical machine translation SMT 中使用的词对齐和语言建模等中间步骤。

基于规则的NLP vs. 统计NLP(SNLP)

在早期,许多语言处理系统是通过人工编码一组规则来设计的[11][12]: 例如通过编写语法或设计用于词干提取的启发式 Heuristic规则。 .

自20世纪80年代末和90年代中期的“统计革命”[13][14]以来,许多自然语言处理研究都深度依赖机器学习。机器学习的范式要求通过分析大型语料库(corpora,语料库corpus的复数形式,是一组可能带有人或计算机标注的文档)使用统计学推论自动学习这些规则。

许多不同类型的机器学习算法已被应用在自然语言处理任务中。这些算法将输入数据的大量“特性”作为输入。一些最早被使用的算法,比如决策树,使用“如果...那么..."(if-then)硬判决系统,类似于之前既有的人工制定的规则。然而后来人们将研究重点聚焦在统计模型上。统计模型将输入数据的各个特征都赋上实值权重,从而做出软判决概率决策。这种模型的优点是,它们可以表示出许多不同的可能答案的相对确定性,而不仅仅是一个答案。当这种模型作为一个更大系统的模块时,产生的结果更加可靠。

基于机器学习算法的系统比人工制定的规则有许多优点:

  • 机器学习的学习过程自动聚焦于最常见的例子,然而人工制定的规则常常不知道从何下手
  • 自动学习过程中可以利用统计推断算法生成对不常见输入(包含未见过的字词或结构)、错误输入(如拼错或无意遗漏词语)有较好鲁棒性的模型。通常用人工制定的规则或建立一个人工制定规则的软决策系统处理这样的输入是极其困难、易于出错且耗费时间的。

基于自动学习规则的系统可以仅用更多的输出就能得到更精确的结果。然而基于人工制定规则的系统只能通过把规则变得复杂来实现提高结果精确度,而制定更复杂的规则这件事本身就很困难。而且基于人工制定规则的系统有一定的限制,超过限制后系统就会变得不可控。然而制造更多数据供给机器学习系统只需要增加相应的人工标注的时间,而且这个过程的复杂度不会有显著改变。

主要评估及任务

以下列出了自然语言处理中最常被研究的任务。其中一些任务在具有直接的实际应用,而其他任务则通常作为子任务,用于帮助解决更大的任务。

尽管自然语言处理的各种任务紧密交错,但为了方便,它们常被细分为不同的类别。下面给出一个粗略的分类。

语法

语法归纳[15]: 生成描述语言句法结构的规范语法。

词形还原: 只去掉词形变化的词尾,并返回词的基本形式,也称词目

语素切分: 将单词分成独立的语素,并确定语素的类别。这项任务的难度很大程度上取决于所考虑的语言的形态(即句子的结构)的复杂性。英语有相当简单的语素,特别是屈折语素 Inflectional Morphology,因此通常可以完全忽略这个任务,而简单地将一个单词的所有可能形式(例如,"open,opens,opened,opening")作为单独的单词。然而,在诸如土耳其语或曼尼普尔语这样的语言中[16] ,这种方法是不可取的,因为每个词都有成千上万种可能的词形。

词性标注: 给定一个句子,确定每个词的词性(Part of speech, POS)。许多单词,尤其是常见的单词,可以拥有多种词性。例如,“book”可以是名词(书本)(“ the book on the table”)或动词(预订)(“to book a flight”); “set”可以是名词、动词或形容词; “out”至少有五种不同的词性。有些语言比其他语言有更多的这种模糊性。像英语这样几乎没有屈折形态的语言尤其容易出现这种歧义。汉语是一种在动词化过程中会变音调的语言,所以容易出现歧义现象。这样的词形变化不容易通过正字法中使用的实体来传达预期的意思。

语法分析: 确定给定句子的语法树(语法分析)。自然语言的语法是模糊的,典型的句子有多种可能的分析: 也许会让人有些吃惊,一个典型的句子可能有成千上万个潜在的语法分析(其中大多数对于人类来说是毫无意义的)。分析类型主要有两种: 依存分析 Dependency Parsing成分分析 Constituency Parsing。依存句法分析侧重于句子中单词之间的关系(标记主要对象和谓语等) ,而成分分析侧重于使用概率上下文无关文法(PCFG)构建语法树(参见随机语法 Stochastic Grammar)。

断句(也被称为句子边界消歧) : 给定一段文本,找到句子边界。句子的边界通常用句号或其他标点符号来标记,但是这些标点符号也会被用于其他目的(例如,标记缩写)。

词根化: 把词形变化(或者派生出来的)的词缩减到其词根形式的过程。(例如,close 是“ closed”、“ closing”、“ close”、“ closer”等的词根。).

分词: 把一段连续的文本分割成单独的词语。对于像英语之类的语言是相对简单的,因为单词通常由空格分隔。然而,对于汉语、日语和泰语的文字,并没有类似这种方式的词语边界标记,在这些语言中,文本分词是一项重要的任务,要求掌握语言中词汇和词形的知识。有时这个过程也被用于数据挖掘中创建词包(bag of words,BOW)。

术语抽取: 术语抽取的目标是从给定的语料库中自动提取相关术语。

语义

词汇语义学: 每个词在上下文中的计算意义是什么?

分布语义: 我们如何从数据中学习语义表示?

机器翻译: 将文本从一种语言自动翻译成另一种语言。这是最困难的问题之一,也是“人工智能完备”问题的一部分,即需要人类拥有的所有不同类型的知识(语法、语义、对现实世界的事实的认知等)才能妥善解决。

命名实体识别 NER: 给定一个文本流,确定文本中的哪些词能映射到专有名称,如人或地点,以及这些名称的类型(例如:人名、地点名、组织名)。虽然大写有助于识别英语等语言中的命名实体,但这种信息对于确定命名实体的类型无用,而且,在多数情况下,这种信息是不准确、不充分的。比如,一个句子的第一个字母也是大写的,以及命名实体通常跨越几个单词,只有某些是大写的。此外,许多其他非西方文字的语言(如汉语或阿拉伯语)没有大写,甚至有大写的语言也不一定能用它来区分名字。例如,德语中多有名词都大写,法语和西班牙语中作为形容词的名称不大写。

自然语言生成: 将计算机数据库或语义意图中的信息转换为人类可读的语言。

自然语言理解: 将文本块转换成更加正式的表示形式,比如更易于计算机程序处理的一阶逻辑结构。自然语言理解包括从多种可能的语义中识别预期的语义,这些语义可以由有序符号表现的自然语言表达中派生出来。引入和创建语言元模型和本体是有效但经验化的做法。自然语言语义要求清楚明了,而不能是混有隐含的猜测,如封闭世界假设与开放世界假设、主观的是 / 否与客观的真 / 假[17]

光学字符识别 OCR : 给定一幅印有文字的图像,识别相应的文本。

问答: 给出一个用人类语言表述的问题,确定它的答案。典型的问题都有一个明确的正确答案(例如“加拿大的首都是哪里? ”),但有时候也需要考虑开放式的问题(比如“生命的意义是什么? ”)。最近一些工作在研究更复杂的问题.[18]

文本蕴涵识别 : 给定两个文本片段,确定其中一个是否蕴含了另一个,或者是否蕴含了另一个的否定,或者是否允许另一个文本中立[19]

关系抽取: 给定一个文本块,识别命名实体之间的关系(例如:谁嫁给了谁)。

情感分析(参见多模态情感分析): 从一组文档中提取主观信息,通常使用在线评论来确定特定对象的“极性”。情感分析在识别社会媒体中的舆论趋势和市场营销中尤其有效。

话题分割和识别: 给定一个文本块,将其分成几个部分,每个部分都有一个主题,并确定各个部分的主题。

词义消歧: 从词语的多个意思中选出最符合上下文的一个意思。为了解决这个问题,我们通常会从字典或如WordNet的在线资源中取一系列的单词和相关的词义。

话语

自动摘要:自动生成一个可读的文本摘要。常用于提供已知类型如研究论文、报纸财经版的文章等文本的摘要。

共指消解: 给定一个句子或更大的文本块,确定哪些单词(“指称”)指的是相同的对象(“实体”)。指代消解就是这项任务的一个具体实例,它专门研究代词与所指名词或名称的匹配问题。共指消解的一般任务还包括识别指称之间的“桥接关系”。例如,在“他从前门进入了约翰的房子”这句话中,“前门”是一种指称,需要确定的桥接关系是:所指的门是约翰的房子的前门(而不是其他一些也可以指称的结构)。

话语分析:这个部分包括几个相关任务。一个是识别相连文本的语篇结构,即句子之间的话语关系(例如:详述、解释、对比)。还有识别和分类文本块中的言语行为(例如:是-否问题,内容问题,陈述,断言等)

语音

语音识别: 给定一个或多个人说话的声音片段,确定语音的文本内容。这是文本转语音的反过程,是一个极其困难被称为“人工智能完备”(见上文)的问题。自然语音中连续的单词之间几乎没有停顿,因此语音分割是语音识别的一个必要的子任务(见下文)。在大多数口语中,连续字母的声音在“协同发音”中相互融合,因此将模拟信号转换为离散字符会是一个非常困难的过程。此外,由于说同一个词时不同人的口音不同,所以语音识别软件必须能够识别文本相同的不同输入。

语音分割: 给一个人或人说话的声音片段,将其分成单词。这是语音识别的一个子任务,通常两者一起出现。

语音合成: 给定一个文本,把这些文字转换为口语表达。语音合成可以用来帮助视力受损的人[20]

对话

第一部由人工智能创作的作品于2018年出版,名为《路》(1 the Road) ,以小说的形式发售,包含6000万字。

参见

参考文献

  1. Kongthon, Alisa; Sangkeettrakarn, Chatchawal; Kongyoung, Sarawoot; Haruechaiyasak, Choochart (October 27–30, 2009). Implementing an online help desk system based on conversational agent. MEDES '09: The International Conference on Management of Emergent Digital EcoSystems. France: ACM. doi:10.1145/1643823.1643908.
  2. Hutchins, J. (2005). "The history of machine translation in a nutshell" (PDF).[self-published source]
  3. Koskenniemi, Kimmo (1983), Two-level morphology: A general computational model of word-form recognition and production (PDF), Department of General Linguistics, University of Helsinki
  4. Joshi, A. K., & Weinstein, S. (1981, August). Control of Inference: Role of Some Aspects of Discourse Structure-Centering. In IJCAI (pp. 385-387).
  5. Guida, G.; Mauri, G. (July 1986). "Evaluation of natural language processing systems: Issues and approaches". Proceedings of the IEEE. 74 (7): 1026–1035. doi:10.1109/PROC.1986.13580. ISSN 1558-2256.
  6. Goldberg, Yoav (2016). "A Primer on Neural Network Models for Natural Language Processing". Journal of Artificial Intelligence Research. 57: 345–420. arXiv:1807.10854. doi:10.1613/jair.4992.
  7. Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). Deep Learning. MIT Press. http://www.deeplearningbook.org/. 
  8. Jozefowicz, Rafal; Vinyals, Oriol; Schuster, Mike; Shazeer, Noam; Wu, Yonghui (2016). Exploring the Limits of Language Modeling. arXiv:1602.02410. Bibcode 2016arXiv160202410J. 
  9. Choe, Do Kook; Charniak, Eugene. "Parsing as Language Modeling". Emnlp 2016.
  10. Vinyals, Oriol; Kaiser, Lukasz (2014). "Grammar as a Foreign Language" (PDF). Nips2015. arXiv:1412.7449. Bibcode:2014arXiv1412.7449V. {{cite journal}}: Unknown parameter |displayauthors= ignored (help)
  11. Winograd, Terry (1971). Procedures as a Representation for Data in a Computer Program for Understanding Natural Language (Thesis).
  12. Schank, Roger C.; Abelson, Robert P. (1977). Scripts, Plans, Goals, and Understanding: An Inquiry Into Human Knowledge Structures. Hillsdale: Erlbaum. ISBN 0-470-99033-3. 
  13. Mark Johnson. How the statistical revolution changes (computational) linguistics. Proceedings of the EACL 2009 Workshop on the Interaction between Linguistics and Computational Linguistics.
  14. Philip Resnik. Four revolutions. Language Log, February 5, 2011.
  15. Klein, Dan; Manning, Christopher D. (2002). "Natural language grammar induction using a constituent-context model" (PDF). Advances in Neural Information Processing Systems.
  16. Kishorjit, N.; Vidya, Raj RK.; Nirmal, Y.; Sivaji, B. (2012). "Manipuri Morpheme Identification" (PDF). Proceedings of the 3rd Workshop on South and Southeast Asian Natural Language Processing (SANLP). COLING 2012, Mumbai, December 2012: 95–108.{{cite journal}}: CS1 maint: location (link)
  17. Duan, Yucong; Cruz, Christophe (2011). "Formalizing Semantic of Natural Language through Conceptualization from Existence". International Journal of Innovation, Management and Technology. 2 (1): 37–42. Archived from the original on 2011-10-09.
  18. Mittal (2011). "Versatile question answering systems: seeing in synthesis" (PDF). International Journal of Intelligent Information and Database Systems. 5 (2): 119–142. doi:10.1504/IJIIDS.2011.038968.
  19. PASCAL Recognizing Textual Entailment Challenge (RTE-7) https://tac.nist.gov//2011/RTE/
  20. Yi, Chucai; Tian, Yingli (2012), "Assistive Text Reading from Complex Background for Blind Persons", Camera-Based Document Analysis and Recognition (in English), Springer Berlin Heidelberg, pp. 15–28, CiteSeerX 10.1.1.668.869, doi:10.1007/978-3-642-29364-1_2, ISBN 9783642293634

扩展阅读

  • Steven Bird, Ewan Klein, and Edward Loper (2009). Natural Language Processing with Python. O'Reilly Media.
  • Daniel Jurafsky and James H. Martin (2008). Speech and Language Processing, 2nd edition. Pearson Prentice Hall.
  • Mohamed Zakaria Kurdi (2016). Natural Language Processing and Computational Linguistics: speech, morphology, and syntax, Volume 1. ISTE-Wiley.
  • Mohamed Zakaria Kurdi (2017). Natural Language Processing and Computational Linguistics: semantics, discourse, and applications, Volume 2. ISTE-Wiley.
  • Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schütze (2008). Introduction to Information Retrieval. Cambridge University Press.
  • Christopher D. Manning and Hinrich Schütze (1999). Foundations of Statistical Natural Language Processing. The MIT Press.
  • David M. W. Powers and Christopher C. R. Turk (1989). Machine Learning of Natural Language. Springer-Verlag.

编者推荐

集智相关文章

讲座笔记分享:深度学习在自然语言处理中的应用

AI界著名学者兼实践者、深度好奇公司CTO吕正东博士「深度学习与自然语言(NLP)处理」所做报告。报告深入浅出,很适合快速系统了解这一领域的基础框架和最新动态。报告涉及的自然语言处理是AI领域热门而前沿的问题,其中众多术语从一线实践中产生,很多还没有恰切的中文翻译,需要结合语境理解。


深度学习在自然语言处理中的应用

AI界大神吕博士与我们简要讨论了一下深度学习在自然语言处理中的最近研究状况,还将分享他对语言智能几个重要问题的想法,包括:

  • 人工智能中联结主义与符号主义的融合
  • 语言学习的新范式

集智相关课程

自然语言处理入门

课程对基本的自然语言处理进行了学习规划于介绍,并带你入门自然语言处理。


产学结合:自然语言处理及其应用

本课程中,讲解自然语言处理的最新学术理论与业界实践,涉及语言模型、机器翻译、情感分析、文本理解、文本生成五大主题。



本中文词条由煜行编辑,VickyThingamabob审校,打豆豆编辑,欢迎在讨论页面留言。

本词条内容源自wikipedia及公开资料,遵守 CC3.0协议。