Categories: 信息技术

自然语言处理

自然语言处理(NLP)是计算机科学,信息工程和人工智能的子领域,涉及计算机与人类(自然)语言之间的交互,特别是如何对计算机进行编程以处理和分析大量自然语言数据。

自然语言处理中的挑战通常涉及语音识别,自然语言理解和自然语言生成。

历史
自然语言处理的历史通常始于20世纪50年代,尽管可以从早期阶段找到工作。 1950年,艾伦·图灵发表了一篇题为“情报”的文章,该文章提出了现在所谓的图灵测试作为智力的标准。

1954年的乔治城实验涉及将60多个俄语句子全自动翻译成英语。 作者声称,在三到五年内,机器翻译将成为一个解决的问题。 然而,真正的进展要慢得多,并且在1966年ALPAC报告发现十年之久的研究未能满足预期之后,机器翻译的资金大幅减少。 直到20世纪80年代末,当第一个统计机器翻译系统被开发时,机器翻译的进一步研究才进行。

在20世纪60年代开发的一些非常成功的自然语言处理系统是SHRDLU,一种在受限制的词汇世界中工作的自然语言系统,以及由Joseph Weizenbaum在1964年至1966年间编写的ELIZA,一种模仿Rogerian心理治疗师的模拟。没有关于人类思想或情感的信息,ELIZA有时会提供令人吃惊的类似人类的互动。 当“患者”超过了非常小的知识库时,ELIZA可能会提供一般性的回应,例如,回答“我的头疼”,“为什么你说你的头疼?”。

在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。

直到20世纪80年代,大多数自然语言处理系统都基于复杂的手写规则。 然而,从20世纪80年代末开始,随着语言处理的机器学习算法的引入,自然语言处理发生了革命。 这是由于计算能力的稳定增长(参见摩尔定律)和乔姆斯基语言学理论(例如转换语法)的主导地位的逐渐减少,其理论基础阻碍了作为机器学习方法基础的语料库语言学的类型。语言处理。 一些最早使用的机器学习算法,例如决策树,产生了类似于现有手写规则的硬if-then规则系统。 然而,词性标注引入了隐马尔可夫模型在自然语言处理中的应用,并且越来越多的研究集中在统计模型上,统计模型基于将实值权重附加到构成输入的特征上而做出软性概率决策。数据。 许多语音识别系统现在依赖的高速缓存语言模型是这种统计模型的示例。 当给出不熟悉的输入时,这些模型通常更稳健,尤其是包含错误的输入(对于真实世界数据而言非常常见),并且当集成到包括多个子任务的较大系统中时产生更可靠的结果。

许多值得注意的早期成功发生在机器翻译领域,特别是由于IBM Research的工作,后者开发了更复杂的统计模型。 这些系统能够利用加拿大议会和欧洲联盟制定的现有多语言文本语料库,因为法律要求将所有政府诉讼程序翻译成相应政府系统的所有官方语言。 然而,大多数其他系统依赖于专门为这些系统实施的任务开发的语料库,这些系统是(并且通常仍然是)这些系统成功的主要限制因素。 因此,大量研究已经用于更有效地从有限数量的数据中学习的方法。

最近的研究越来越多地关注无监督和半监督学习算法。 这样的算法能够从未用期望答案手工注释的数据中学习,或者使用注释和非注释数据的组合。 通常,该任务比监督学习困难得多,并且对于给定量的输入数据通常产生不太准确的结果。 然而,存在大量可用的非注释数据(包括万维网的整个内容),如果所使用的算法具有足够低的时间复杂度,则通常可以弥补较差的结果。务实。

在2010年代,表征学习和深度神经网络式机器学习方法在自然语言处理中变得普遍,部分原因在于一系列结果表明这些技术可以在许多自然语言任务中实现最先进的结果,例如,在语言建模,解析和许多其他方面。 流行的技术包括使用单词嵌入来捕获单词的语义属性,以及增加更高级别任务(例如,问答)的端到端学习,而不是依赖于单独的中间任务的管道(例如,词性标注和依赖性解析)。 在某些领域,这种转变导致NLP系统的设计方式发生了重大变化,因此基于深度神经网络的方法可被视为一种与统计自然语言处理不同的新范式。 例如,术语神经机器翻译(NMT)强调了这样一个事实,即基于深度学习的机器翻译方法直接学习序列到序列的转换,避免了对统计中使用的词对齐和语言建模等中间步骤的需求。机器翻译(SMT)。

基于规则与统计的NLP
在早期,许多语言处理系统是通过手工编写一组规则来设计的,例如通过编写语法或设计用于词干的启发式规则。 然而,这对于自然语言变化通常不稳健。

自从20世纪80年代末和90年代中期所谓的“统计革命”以来,许多自然语言处理研究在很大程度上依赖于机器学习。

机器学习范式代替使用统计推断通过分析大量典型的现实世界的例子来自动学习这些规则(语料库(复数,“语料库”)是一组文档,可能带有人或计算机注释)。

许多不同类型的机器学习算法已应用于自然语言处理任务。 这些算法将从输入数据生成的大量“特征”作为输入。 一些最早使用的算法,例如决策树,产生了类似于当时常见的手写规则系统的硬if-then规则系统。 然而,越来越多的研究集中在统计模型上,统计模型基于将实值权重附加到每个输入特征来做出软性概率决策。 这样的模型具有这样的优点:它们可以表达许多不同可能答案的相对确定性而不是仅一个,当这种模型被包括作为较大系统的组件时,产生更可靠的结果。

基于机器学习算法的系统与手工制作的规则相比具有许多优势:

机器学习过程中使用的学习过程自动关注最常见的情况,而在手工编写规则时,通常根本不明确应该指导的工作。
自动学习过程可以利用统计推断算法来产生对不熟悉的输入(例如包含之前未曾见过的单词或结构)和错误输入(例如,错误输入的单词或单词)的模型。 通常,使用手写规则优雅地处理此类输入 – 或者更一般地,创建做出软判决的手写规则系统 – 非常困难,容易出错且耗时。
通过提供更多输入数据,可以使基于自动学习规则的系统更加准确。 但是,基于手写规则的系统只能通过增加规则的复杂性来使其更加准确,这是一项更加困难的任务。 特别是,基于手工制作的规则的系统的复杂性是有限的,超过该系统,系统变得越来越难以管理。 然而,创建更多数据以输入到机器学习系统仅需要相应增加工作量,通常不会显着增加注释过程的复杂性。

主要评估和任务
以下是自然语言处理中一些最常研究的任务的列表。 请注意,其中一些任务具有直接的实际应用程序,而其他任务通常用作用于帮助解决更大任务的子任务。

虽然自然语言处理任务紧密相连,但为方便起见,它们通常被细分为类别。 下面给出粗略划分。

句法

语法归纳
生成描述语言语法的正式语法。

词形还原

形态分割
将单词分成单独的语素并识别语素的类别。 这项任务的难度在很大程度上取决于所考虑的语言的形态(即词的结构)的复杂性。 英语具有相当简单的形态,尤其是屈折形态,因此通常可以完全忽略该任务,并简单地将单词的所有可能形式(例如“打开,打开,打开,打开”)建模为单独的单词。 然而,在诸如土耳其语或Meitei之类的语言中,高度凝聚的印度语言是不可能的,因为每个词典条目具有数千种可能的单词形式。

词性标注
给定一个句子,确定每个单词的词性。 许多单词,尤其是常用单词,可以作为多个词性。 例如,“book”可以是名词(“桌上的书”)或动词(“预订航班”); “set”可以是名词,动词或形容词; “out”可以是至少五个不同词性中的任何一个。 有些语言比其他语言有更多的歧义。[可疑 – 讨论]语言几乎没有屈折形态,如英语,特别容易出现歧义。 中文很容易产生歧义,因为在语言表达过程中它是一种音调语言。 这种变形不容易通过拼写法中使用的实体传达以传达预期的含义。

解析
确定给定句子的解析树(语法分析)。 自然语言的语法是模糊的,典型的句子有多种可能的分析。 事实上,也许令人惊讶的是,对于一个典型的句子,可能有成千上万的潜在解析(其中大多数对人类来说似乎完全没有意义)。 有两种主要类型的解析,依赖性解析和选区解析。 依赖性解析侧重于句子中单词之间的关系(标记主要对象和谓词),而选区解析则侧重于使用概率无上下文语法(PCFG)构建解析树。

Related Post

句子破坏(也称为句子边界消歧)
给定一大块文本,找到句子边界。 句子边界通常用句点或其他标点符号标记,但这些相同的字符可用于其他目的(例如标记缩写)。

词干
分词
将一大块连续文本分成单独的单词。 对于像英语这样的语言,这是相当微不足道的,因为单词通常用空格分隔。 然而,一些书面语言如中文,日文和泰文不会以这种方式标记单词边界,并且在这些语言中,文本分割是一项重要任务,需要知道语言中单词的词汇和形态。 有时,此过程也用于数据挖掘中的Bag of Words(BOW)创建等情况。

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

语义

词汇语义
上下文中单个词的计算含义是什么?

机器翻译
自动将文本从一种人类语言翻译成另一种语言。 这是最困难的问题之一,并且是一类通俗地称为“AI-complete”的问题的成员,即需要人类拥有的所有不同类型的知识(语法,语义,关于现实世界的事实等)。 。)为了妥善解决。

命名实体识别(NER)
给定文本流,确定文本映射中的哪些项目为正确的名称,例如人或地点,以及每个这样的名称的类型(例如,人,位置,组织)。 请注意,虽然大写可以帮助识别诸如英语之类的语言中的命名实体,但是这些信息无助于确定命名实体的类型,并且在任何情况下通常都是不准确或不充分的。 例如,句子的第一个单词也是大写的,命名实体通常跨越几个单词,其中只有一些是大写的。 此外,非西方文字(例如中文或阿拉伯文)中的许多其他语言根本没有任何大写字母,即使是大写的语言也可能不会始终使用它来区分名称。 例如,德语将所有名词大写,无论它们是否是名称,而法语和西班牙语不会将作为形容词的名称大写。

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

自然语言理解
将文本块转换为更正式的表示形式,例如易于计算机程序操作的一阶逻辑结构。 自然语言理解涉及从多个可能的语义中识别预期的语义,这些语义可以从自然语言表达中导出,该自然语言表达通常采用自然语言概念的有组织符号的形式。 语言元模型和本体的引入和创建是有效的,但是经验解决方案。 自然语言语义的显式形式化与隐式假设没有混淆,例如封闭世界假设(CWA)与开放世界假设,或主观是/否与客观真/假相比,预期构建语义形式化的基础。

光学字符识别(OCR)
给定表示打印文本的图像,确定相应的文本。

问题回答
给定一个人类语言问题,确定其答案。 典型的问题有一个特定的正确答案(例如“加拿大的资本是什么?”),但有时也会考虑开放式问题(例如“生命的意义是什么?”)。 最近的作品研究了更复杂的问题。

认识到文本蕴涵
给定两个文本片段,确定一个是真的是否需要另一个,需要另一个否定,或者允许另一个是真或假。

关系提取
给定一大块文本,确定命名实体之间的关系(例如谁与谁结婚)。

情绪分析(另见多模态情绪分析)
通常从一组文档中提取主观信息,通常使用在线评论来确定特定对象的“极性”。 对于营销目的,它对于识别社交媒体中的公众舆论趋势特别有用。

主题分割和识别
给定一大块文本,将其分成多个段,每个段专门用于主题,并标识段的主题。

词义消歧
许多词语都有不止一个含义; 我们必须选择在上下文中最有意义的含义。 对于这个问题,我们通常给出一个单词和相关单词意义的列表,例如来自字典或来自诸如WordNet的在线资源。

演讲

自动摘要
生成一大块文本的可读摘要。 通常用于提供已知类型的文本摘要,例如报纸财务部分中的文章。
共同决议

给定一个句子或更大的文本块,确定哪些词(“提及”)引用相同的对象(“实体”)。 回指解决是这项任务的一个具体例子,特别关注的是将代词与他们所指的名词或名称相匹配。 共同解决的更一般任务还包括识别涉及引用表达的所谓“桥接关系”。 例如,在诸如“他通过前门进入约翰的房子”这样的句子中,“前门”是一个引用的表达,并且要识别的桥接关系是被称为约翰的前门的事实。房子(而不是可能也被称为的其他一些结构)。

话语分析
该量规包括许多相关任务。 一个任务是识别连接文本的话语结构,即句子之间话语关系的本质(例如,阐述,解释,对比)。 另一个可能的任务是识别和分类一大块文本中的语音行为(例如,是 – 无问题,内容问题,陈述,断言等)。

言语

语音识别
给定人或人说话的声音片段,确定语音的文本表示。 这是文本到语音的对立面,并且是通俗地称为“AI-complete”的极其困难的问题之一(见上文)。 在自然语音中,连续单词之间几乎没有任何暂停,因此语音分词是语音识别的必要子任务(见下文)。 还要注意,在大多数口语中,表示连续字母的声音在称为共衔的过程中相互融合,因此将模拟信号转换为离散字符可能是一个非常困难的过程。

语音分割
给出一个人或人说话的声音片段,将其分成单词。 语音识别的子任务,通常与其组合。

文字转语音
给定文本,转换这些单位并产生口头表达。 文字转语音可用于帮助视障人士。

Share