自然语言处理
自然语言处理(英语:Natural Language Processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。
自然语言认知和理解是让电脑把输入的语言变成有意思的符号和关系,然后根据目的再处理。自然语言生成系统则是把计算机数据转化为自然语言。
自然语言处理要研制表示语言能力和语言应用的模型, 建立计算框架来实现并完善语言模型,并根据语言模型设计各种实用系统及探讨这些系统的评测技术[1]。
历史
编辑自然语言处理大体是从1950年代开始,虽然更早期也有作为。1950年,图灵发表论文“计算机器与智能”,提出现在所谓的“图灵测试”作为判断智能的条件。
1954年的乔治城-IBM实验涉及全部自动翻译超过60句俄文成为英文。研究人员声称三到五年之内即可解决机器翻译的问题。[2]不过实际进展远低于预期,1966年的ALPAC报告发现十年研究未达预期目标,机器翻译的研究经费遭到大幅削减。一直到1980年代末期,统计机器翻译系统发展出来,机器翻译的研究才得以更上一层楼。
1960年代发展特别成功的NLP系统包括SHRDLU——一个词汇设限、运作于受限如“积木世界”的一种自然语言系统,以及1964-1966年约瑟夫·维森鲍姆模拟“个人中心治疗”而设计的ELIZA——几乎未运用人类思想和感情的消息,有时候却能呈现令人讶异地类似人之间的交互。“病人”提出的问题超出ELIZA 极小的知识范围之时,可能会得到空泛的回答。例如问题是“我的头痛”,回答是“为什么说你头痛?”
1970年代,程序员开始设计“概念本体论”(conceptual ontologies)的程序,将现实世界的信息,架构成电脑能够理解的资料。实例有MARGIE、SAM、PAM、TaleSpin、QUALM、Politics以及Plot Unit。许多聊天机器人在这一时期写成,包括PARRY 、Racter 以及Jabberwacky 。
一直到1980年代,多数自然语言处理系统是以一套复杂、人工订定的规则为基础。不过从1980年代末期开始,语言处理引进了机器学习的算法,NLP产生革新。成因有两个:运算能力稳定增加(参见摩尔定律);以及乔姆斯基 语言学理论渐渐丧失主导(例如转换-生成文法)。该理论的架构不倾向于语料库——机器学习处理语言所用方法的基础。有些最早期使用的机器学习算法,例如决策树,是硬性的、“如果-则”规则组成的系统,类似当时既有的人工订定的规则。不过词性标记将隐马尔可夫模型引入NLP,并且研究日益聚焦于软性的、以几率做决定的统计模型,基础是将输入资料里每一个特性赋予代表其分量的数值。许多语音识别现今依赖的缓存语言模型即是一种统计模型的例子。这种模型通常足以处理非预期的输入数据,尤其是输入有错误(真实世界的数据总免不了),并且在集成到包含多个子任务的较大系统时,结果比较可靠。
许多早期的成功属于机器翻译领域,尤其归功IBM的研究,渐次发展出更复杂的统计模型。这些系统得以利用加拿大和欧盟现有的语料库,因为其法律规定政府的会议必须翻译成所有的官方语言。不过,其他大部分系统必须特别打造自己的语料库,一直到现在这都是限制其成功的一个主要因素,于是大量的研究致力于从有限的数据更有效地学习。
近来的研究更加聚焦于非监督式学习和半监督学习的算法。这种算法,能够从没有人工注解理想答案的资料里学习。大体而言,这种学习比监督学习困难,并且在同量的数据下,通常产生的结果较不准确。不过没有注解的数据量极巨(包含了万维网),弥补了较不准确的缺点。
2011年以来,深度学习技巧纷纷出炉[3][4] 在自然语言处理方面获得最尖端的成果,例如语言模型[5]、语法分析[6][7]等等。2016年,AlphaGo打败李世石[8];2017年Transformer模型诞生[9];2018年BERT模型推出,提出了预训练的方法[10]。
用途
编辑在许多情况下,学者们需要通过许多不同的数据库来确定新的研究方向,以识别研究差距并确定迄今为止尚未研究的领域。检查所有电子数据库很麻烦,而且经常会遗漏重要的部分。通过使用网络抓取和自然语言处理来缩短识别研究差距所需的时间。在Google学术搜索上索引的出版物的标题, 自然语言处理标记化(Tokenization)从最高频率到最低频率对搭配进行排序。因此,自然语言处理标记化(Tokenization)确定了标题中未提及的关键字集,并将最初的想法确定为研究空白 [11]。
任务和限制
编辑理论上,NLP是一种很吸引人的人机交互方式。早期的语言处理系统如SHRDLU,当它们处于一个有限的“积木世界”,运用有限的词汇表会话时,工作得相当好。这使得研究员们对此系统相当乐观,然而,当把这个系统拓展到充满了现实世界的含糊与不确定性的环境中时,他们很快丧失了信心。
由于理解(understanding)自然语言,需要关于外在世界的广泛知识以及运用操作这些知识的能力,自然语言认知,同时也被视为一个人工智能完备(AI-complete)的问题。同时,在自然语言处理中,“理解”的定义也变成一个主要的问题。
实际问题
编辑一些NLP面临的问题实例:
- 句子“我们把香蕉给猴子,因为(牠们)饿了”和“我们把香蕉给猴子,因为(它们)熟透了”有同样的结构。但是代词“它们”在第一句中指的是“猴子”,在第二句中指的是“香蕉”。如果不了解猴子和香蕉的属性,无法区分。(简体中文和英文的它/it没有区分,但在繁体中文里「牠」和「它」是有区别的,只是代词在中文里常常被省略,因此需区别属性并且标示出来)
不少的中文相关笑话即是利用类似结构的中文造句而成,此类笑话通常带有“中文博大精深”之类的词汇,叙述多以老外参加考试为背景。例子如下:
“ | 某老外苦学汉语10年,到东方参加汉语考试。试题为“请解释下列句子”: 阿呆给长官送红包时,两个人的对话颇有意思。 长官:“你这是什么意思?” 阿呆:“没什么意思,意思意思。” 长官:“你这就不够意思了。” 阿呆:“小意思,小意思。” 长官:“你这人真有意思。” 阿呆:“其实也没有别的意思。” 长官:“那我就不好意思了。” 阿呆:“是我不好意思。”
老外泪流满面,交白卷回国了。 |
” |
自然语言处理研究的难点
编辑单词的边界界定
编辑在口语中,词与词之间通常是连贯的,而界定字词边界通常使用的办法是取用能让给定的上下文最为通顺且在文法上无误的一种最佳组合。在书写上,汉语也没有词与词之间的边界。
词义的消歧
编辑许多字词不单只有一个意思,因而我们必须选出使句意最为通顺的解释。
句法的模糊性
编辑自然语言的文法通常是模棱两可的,针对一个句子通常可能会剖析(Parse)出多棵分析树(Parse Tree),而我们必须要仰赖语义及前后文的信息才能在其中选择一棵最为适合的剖析树。
有瑕疵的或不规范的输入
编辑例如语音处理时遇到外国口音或地方口音,或者在文本的处理中处理拼写,语法或者光学字符识别(OCR)的错误。
语言行为与计划
编辑句子常常并不只是字面上的意思;例如,“你能把盐递过来吗”,一个好的回答应当是动手把盐递过去;在大多数上下文环境中,“能”将是糟糕的回答,虽说回答“不”或者“太远了我拿不到”也是可以接受的。再者,如果一门课程去年没开设,对于提问“这门课程去年有多少学生没通过?”回答“去年没开这门课”要比回答“没人没通过”好。
当前自然语言处理研究的发展趋势
编辑第一,传统的基于句法-语义规则的理性主义方法过于复杂,随着语料库建设和语料库语言学的崛起,大规模真实文本的机器学习处理成为自然语言处理的主要选择。
第二,统计数学方法越来越受到重视,自然语言处理中越来越多地使用机器自动学习的方法来获取语言知识。
第三,浅层处理与深层处理并重,统计与规则方法并重,形成混合式的系统。
第四,自然语言处理中越来越重视词汇的作用,出现了强烈的“词汇主义”的倾向。词汇知识库的建造成为了普遍关注的问题。[12]
统计自然语言处理
编辑统计自然语言处理运用了推测学、几率、统计的方法来解决上述,尤其是针对容易高度模糊的长串句子,当套用实际文法进行分析产生出成千上万笔可能性时所引发之难题。处理这些高度模糊句子所采用消歧的方法通常运用到语料库(Corpus)以及马可夫模型(Markov models)。统计自然语言处理的技术主要由同样自人工智能下与学习行为相关的子领域:机器学习及资料采掘所演进而成。
主要范畴
编辑- 文本朗读(Text to speech)
- 语音合成(Speech synthesis)
- 语音识别(Speech recognition)
- 断词/分词(Text segmentation/Word tokenization)
- 中文自动分词(Chinese word segmentation)
- 语法分析/剖析(Syntactic analysis/Parsing)
- 汉语自动句法分析
- 词汇标示框架(Lexical Markup Framework)
- n元语法(n-gram)
- 词嵌入(Word2vec)
- 词性标注(Part-of-speech tagging)
- 文档分类(Document classification)
- 自然语言生成(Natural language generation)
- 文本分类(Text categorization)
- 信息检索(Information retrieval)
- 信息抽取(Information extraction)
- 文字校对(Text-proofing)
- 问答系统(Question answering)
- 给一句人类语言的问句,决定其答案。 典型问题有特定答案(像是加拿大的首都叫什么?),但也考虑些开放式问句(像是人生的意义是是什么?)
- 将某种人类语言自动翻译至另一种语言
- 自动摘要(Automatic summarization)
- 产生一段文字的大意,通常用于提供已知领域的文章摘要,例如产生报纸上某篇文章之摘要
参见
编辑参考文献
编辑- ^ Manaris, Bill. Natural Language Processing: A Human-Computer Interaction Perspective. Advances in Computers. 1998, 47: 1–66. doi:10.1016/S0065-2458(08)60665-8.
- ^ Hutchins, J. The history of machine translation in a nutshell. 2005 [2017-11-13]. (原始内容存档于2018-06-14).[自述来源]
- ^ Goldberg, Yoav (2016). https://www.jair.org/media/4992/live-4992-9623-jair.pdf (页面存档备份,存于互联网档案馆) A Primer on Neural Network Models for Natural Language Processing. Journal of Artificial Intelligence Research 57 (2016) 345–420
- ^ Ian Goodfellow, Yoshua Bengio and Aaron Courville. http://www.deeplearningbook.org/ (页面存档备份,存于互联网档案馆) Deep Learning]. MIT Press.
- ^ Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, and Yonghui Wu (2016). https://arxiv.org/abs/1602.02410 (页面存档备份,存于互联网档案馆) Exploring the Limits of Language Modeling
- ^ Do Kook Choe and Eugene Charniak (EMNLP 2016). http://www.aclweb.org/website/old_anthology/D/D16/D16-1257.pdf (页面存档备份,存于互联网档案馆) Parsing as Language Modeling
- ^ Vinyals, Oriol, et al. (NIPS2015). https://papers.nips.cc/paper/5635-grammar-as-a-foreign-language.pdf (页面存档备份,存于互联网档案馆)
- ^ DeepMind, Match 1 - Google DeepMind Challenge Match: Lee Sedol vs AlphaGo, 2016-03-08 [2017-03-09], (原始内容存档于2017-03-29)
- ^ Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N.; Kaiser, Lukasz; Polosukhin, Illia. Attention Is All You Need. 2017. doi:10.48550/arXiv.1706.03762.
- ^ Devlin, Jacob; Chang, Ming-Wei; Lee, Kenton; Toutanova, Kristina. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. 2018. doi:10.48550/arXiv.1810.04805.
- ^ Li(2021)Building Updated Research Agenda by Investigating Papers Indexed on Google Scholar: A Natural Language Processing Approach, Advances in Intelligent Systems and Computing book series, volume 1213, pp 298-305
- ^ 存档副本 (PDF). [2016-01-03]. (原始内容 (PDF)存档于2021-05-04).
延伸阅读
编辑- Bates, M. Models of natural language understanding. Proceedings of the National Academy of Sciences of the United States of America. 1995, 92 (22): 9977–9982. doi:10.1073/pnas.92.22.9977.
- Steven Bird, Ewan Klein, and Edward Loper (2009). Natural Language Processing with Python. O'Reilly Media. ISBN 978-0-596-51649-9.
- Daniel Jurafsky and James H. Martin (2008). Speech and Language Processing, 2nd edition. Pearson Prentice Hall. ISBN 978-0-13-187321-6.
- Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schütze (2008). Introduction to Information Retrieval. Cambridge University Press. ISBN 978-0-521-86571-5. Official html and pdf versions available without charge. (页面存档备份,存于互联网档案馆)
- Christopher D. Manning and Hinrich Schütze (1999). Foundations of Statistical Natural Language Processing. The MIT Press. ISBN 978-0-262-13360-9.
- David M. W. Powers and Christopher C. R. Turk (1989). Machine Learning of Natural Language. Springer-Verlag. ISBN 978-0-387-19557-5.
外部链接
编辑- 人类语言技术当前发展情况概览
- 哥伦比亚大学自然语言处理研究组 (页面存档备份,存于互联网档案馆)
- 卡内基梅隆大学语言技术研究院 (页面存档备份,存于互联网档案馆)
- 斯坦福大学自然语言处理研究小组 (页面存档备份,存于互联网档案馆)
- 中文自然语言处理开放平台 (页面存档备份,存于互联网档案馆)
- ACL(美国电脑语言学协会)提供的相关杂志以及研讨会的论文
- GATE: a Java Library for Text Engineering (页面存档备份,存于互联网档案馆)
- LTP:语言技术平台(简体中文)
- Python编程语言的自然语言处理工具包教程 (页面存档备份,存于互联网档案馆)
- fastNLP (页面存档备份,存于互联网档案馆)