自然语言处理简述

系列文章,主要想把之前做得一个工作记录下来,减少电脑空间。

自然语言处理

比尔·盖茨曾说过,语言理解是人工智能皇冠上的明珠。在介绍自然语言处理之前,先介绍人工智能。人工智能经过 61 年的发展,起起伏伏,曾经历过两次冬天,随着云计算、大数据、深度学习以及实实在在的应用场景的使用与反馈,使得人工智能又迎来了一个新的春天。

  1. 初识语言理解

人工智能的一个重要部分是认知智能,包括理解、运用语言的能力,掌握知识、运用知识的能力,以及在语言和知识基础上的推理能力。认知智能又主要集中在语言智能(即自然语言处理)。自然语言处理是体现语言智能重要的技术,它可以分析、理解或者生成自然语言,实现人与机器的自然交流,同时也有助于人与人之间的交流。自然语言处理包括三个部分,第一部分是 NLP 的基础技术,例如分词、词性标注、语义分析。第二是 NLP 核心技术,包括词汇、短语、句子、篇章的表示,也包括机器翻译、提问和回答、信息检索、信息抽取、聊天和对话、知识工程、语言生成、推荐系统。最后是“NLP+”,指把自然语言处理技术深入到各个应用系统和垂直领域中。如搜索引擎、智能客服、商业智能和语音助手,还有更多在垂直领域——法律、医疗、教育等各个方面的应用。

自然语言处理技术也经历了从过去的基于规则和统计到如今大范围的使用深度学习,现在词嵌入、机器翻译、问答系统、对话系统等场景使用的主流技术也全部都是用深度学习来体现的。

在机器翻译方面,微软机器翻译在产品和学术界都非常活跃和领先,例如微软在2017年 ACL 的长文《Sequence-to-Dependency Neural Machine Translation》中为机器翻译引入了语言知识。现有的 encoder-decoder 框架没有体会内在的词汇和词汇之间的修饰关系,因此把句法知识引入到神经网络编码、解码之中,得到了更佳的翻译,指标有了很大程度的提升。此外,考虑到在很多领域是有知识图谱的,而在2016年微软在 ACL 上发表的《Knowledge-Based Semantic Embedding for Machine Translation》一文中把知识图谱纳入到传统的神经网络机器翻译当中来规划语言理解的过程。其假设就是虽然大家的语言可能不一样,但是体现在知识图谱的领域上可能是一致的,因此可以用知识图谱增强编码、解码。而在产品的角度,微软还推出了叫做 Microsoft Translator Live Feature 的新的翻译功能,这个功能让演讲者使用自己熟悉的语言演讲,同时让台下的观众用自己的语言接收到演讲者的内容,从而更好的理解和沟通(现场演示效果巨佳)。

 

  1. 自然语言分类

根据NLP的终极目标,大致可以分为自然语言理解(NLU)和自然语言生成(NLG)两种。NLU侧重于如何理解文本,包括文本分类、命名实体识别、指代消歧、句法分析、机器阅读理解等。NLG则侧重于理解文本后如何生成自然文本,包括自动摘要、机器翻译、问答系统、对话机器人等。两者间不存在有明显的界限,如机器阅读理解实际属于问答系统的一个子领域。

    1. NLP可以分为以下几个领域:

文本检索:多用于大规模数据的检索,典型的应用有搜索引擎。

机器翻译:跨语种翻译,该领域目前已较为成熟。目前谷歌翻译已用上机翻技术。

文本分类/情感分析:本质上就是个分类问题。目前也较为成熟,难点在于多标签分类(即一个文本对应多个标签,把这些标签全部找到)以及细粒度分类(二极情感分类精度很高,即好中差三类,而五级情感分类精度仍然较低,即好、较好、中、较差、差)

信息抽取:从不规则文本中抽取想要的信息,包括命名实体识别、关系抽取、事件抽取等。应用极广。

序列标注:给文本中的每一个字/词打上相应的标签。是大多数NLP底层技术的核心,如分词、词性标注、关键词抽取、命名实体识别、语义角色标注等等。曾是HMM、CRF的天下,近年来逐步稳定为BiLSTM-CRF体系。

文本摘要:从给定的文本中,聚焦到最核心的部分,自动生成摘要。

问答系统:接受用户以自然语言表达的问题,并返回以自然语言表达的回答。常见形式为检索式、抽取式和生成式三种。近年来交互式也逐渐受到关注。典型应用有智能客服

对话系统:与问答系统有许多相通之处,区别在于问答系统旨在直接给出精准回答,回答是否口语化不在主要考虑范围内;而对话系统旨在以口语化的自然语言对话的方式解决用户问题。对话系统目前分闲聊式和任务导向型。前者主要应用有siri、小冰等;后者主要应用有车载聊天机器人。(对话系统和问答系统应该是最接近NLP终极目标的领域)

知识图谱:从规则或不规则的文本中提取结构化的信息,并以可视化的形式将实体间以何种方式联系表现出来。图谱本身不具有应用意义,建立在图谱基础上的知识检索、知识推理、知识发现才是知识图谱的研究方向。

文本聚类:一个古老的领域,但现在仍未研究透彻。从大规模文本数据中自动发现规律。核心在于如何表示文本以及如何度量文本之间的距离。

 

    1. 基本技术

分词:基本算是所有NLP任务中最底层的技术。不论解决什么问题,分词永远是第一步。

词性标注:判断文本中的词的词性(名词、动词、形容词等等),一般作为额外特征使用。

句法分析:分为句法结构分析和依存句法分析两种。

词干提取:从单词各种前缀后缀变化、时态变化等变化中还原词干,常见于英文文本处理。

命名实体识别:识别并抽取文本中的实体,一般采用BIO形式。

指代消歧:文本中的代词,如“他”“这个”等,还原成其所指实体。

关键词抽取:提取文本中的关键词,用以表征文本或下游应用。

词向量与词嵌入:把单词映射到低维空间中,并保持单词间相互关系不变。是NLP深度学习技术的基础。

文本生成:给定特定的文本输入,生成所需要的文本,主要应用于文本摘要、对话系统、机器翻译、问答系统等领域。

  1. 自然语言发展现状

近几年,自然语言处理算法发展迅速,从时间线的角度主要有:

在2013年,word2vec提出,NLP的里程碑式技术。

2013年,CNNs/RNNs/Recursive NN,随着算力的发展,神经网络可以越做越深,之前受限的神经网络不再停留在理论阶段。在图像领域证明过实力后,Text CNN问世;同时,RNNs也开始崛起。在如今的NLP技术上,一般都能看见CNN/LSTM的影子。因为本世纪算力的提升,使神经网络的计算不再受限。有了深度神经网络,加上嵌入技术,人们发现虽然神经网络是个黑盒子,但能省去好多设计特征的精力。至此,NLP深度学习时代开启。

2014年,seq2seq提出,在机器翻译领域,神经网络碾压基于统计的SMT模型。

2015年,attention的提出可以说是NLP另一里程碑式的存在。带有attention的seq2seq,碾压上一年的原始seq2seq。记得好像17年年初看过一张图,调侃当时学术界都是attention的现象,也证明了attention神一般的效果。而2017年末,Transformer的提出似乎是为了应对Facebook纯用CNN来做seq2seq的“挑衅”,google就纯用attention,并发表著名的《Attention is All You Need》。初看时以为其工程意义大于学术意义,直到BERT的提出才知道自己还是too young。

2018年末,BERT提出,横扫11项NLP任务,奠定了预训练模型方法的地位,NLP又一里程碑诞生。光就SQuAD2.0上前6名都用了BERT技术就知道BERT的可怕。

 

  1. 目前研究难点

仍有很多制约NLP发展的因素,这些因素构成了NLP的难点。而且要命的是,大多数是基础技术的难点。

中文分词:这条是专门针对中文说的。众所周知汉语博大精深,老外学汉语尚且虐心,更别提计算机了。同一个任务,同一个模型在英文语料的表现上一般要比中文语料好。无论是基于统计的还是基于深度学习的NLP方法,分词都是第一步。分词表现不好的话,后面的模型最多也只能尽力纠偏

词义消歧:很多单词不只有一个意思,但这个在今年BERT推出后应该不成问题,可以通过上下文学到不同的意思。另一个较难的是指代消歧,即句子中的指代词还原,如“小明受到了老师的表扬,他很高兴”,这个“他”是指“小明”还是指“老师”。

二义性:有些句子,往往有多种理解方式,其中以两种理解方式的最为常见,称二义性。

OOV问题:随着词嵌入技术大热后,使用预训练的词向量似乎成为了一个主流。但有个问题就是,数据中的词很可能不在预训练好的词表里面,此即OOV(out of vocabulary)。主流方法是要么当做UNK处理,要么生成随机向量或零向量处理,当然都存在一定的弊端。

文本相似度计算:是的你没有看错。文本相似度计算依旧算是难点之一。不过与其说难点,主要是至今没有一种方法能够从理论证明。主流认可的是用余弦相似度。但看论文就会发现,除了余弦相似度外,有人用欧式距离,有人用曼哈顿距离,有人直接向量內积,且效果还都不错。

文本生成的评价指标:文本生成的评价指标多用BLEU或者ROUGE,但尴尬的是,这两个指标都是基于n-gram的,也就是说会判断生成的句子与标签句子词粒度上的相似度。然而由于自然语言的特性(同一个意思可以有多种不同的表达),会出现生成的句子尽管被人为判定有意义,在BLEU或ROUGE上仍可能会得到很低的分数的情况。这两个指标用在机翻领域倒是没多大问题(本身就是机翻的评价指标),但用在文本摘要和对话生成就明显不合适了。

 

 

参考文献

Hutchins, J. (2005). "The history of machine translation in a nutshell"

Goldberg, Yoav (2016). "A Primer on Neural Network Models for Natural Language Processing". Journal of Artificial Intelligence Research57: 345–420.

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值