自然语言处理(NLP)作为语言信息处理技术的一个研究方向,一直是人工智能领域的核心课题之一。日常生活中,我们有时会遇见一些有歧义或者令人费解的语句例子,这些例子让人直觉计算机理解人类语言太难了。本文从自然语言理解的本质、关键,以及自然语言的特点和理解难点四方面,对“NLP到底难在哪里”给出了通俗易懂的介绍。
要搞清楚自然语言理解难在哪儿,先看自然语言理解任务的本质是什么。
作为人工智能关注的三大信息类型(语音、视觉、语言)之一,自然语言文本是典型的无结构数据,由语言符号(如汉字)序列构成。要实现对自然语言的表意的理解,需要建立对该无结构文本背后的语义结构的预测。因此,自然语言理解的众多任务,包括并不限于中文分词、词性标注、命名实体识别、共指消解、句法分析、语义角色标注等,都是在对文本序列背后特定语义结构进行预测。
不过,以上NLP任务都只是在不断“逼近”对文本的理解,是对文本语义的局部表示。要实现对文本的完整理解,需要建立更完备的语义结构表示空间,这种更完备的语义表示经常成为上述NLP任务进行结构预测的依据。在统计学习时代,一般采用符号表示(Symbol-based Representation)方案,即每个词都看做互相独立的符号。
例如,词袋模型(Bag-of-Words,BOW)是最常用的文本表示方案,忽略文本中词的出现顺序信息,广泛用于文本分类、信息检索等任务。N-Gram也是基于符号表示的语言模型,与BOW模型相比,将句子中词的出现顺序考虑了进来,曾在机器翻译、文本生成、信息检索等任务中广泛使用。
到深度学习时代,一般采用分布式表示(Distributed Representation或Embeddings)方案,每个语言单元(包括但不限于字、词、短语、句子、文档)都用一个低维稠密向量来表示它们的语义信息。分布式表示是深度学习和神经网络的关键技术。
分布式表示方案是受到了人脑神经机制的启发,基本思想是:Each entity is represented by a pattern of activity distributed over many computing elements, and each computing element is involved in representing many different entities。
很大程度上,这种表示方案与索绪尔对语言符号的任意性和结构主义的观点不谋而合。从计算角度来看,NLP很多应用任务就是在判定两个语言单元间的语义相似度,如信息检索是在短语(查询词)和文档之间,文档摘要是在句子和文档之间,分布式表示也为在不同语言单元之间计算语义相似度提供了统一的语义表示基础。
正是由于其创造性、递归性、多义性、主观性和社会性等特点,既让人类语言具备强大的表达力和生命力,同时呈现出非常复杂而难以捉摸的图景。单从让计算机理解人类语言的角度来考虑,问题难点也许可以归结为如下几个方面。让计算机理解人类语言,需要建构结构化的语义表示空间,只有这个空间的语义表示能力能够与人类心智相媲美,才有可能将人类通过语言要表达的意义进行完美表示和解读。
同时,这个语义表示空间还要接受客观世界的校正,消除人类认知中存在的偏见和缺陷,让人工智能更好地服务人类社会。
只是对于计算机而言,如何有效理解语言所处的开放复杂语境,从而实现对语言语义的准确理解,仍是挑战性难题。这既与尚未建立有效的结构语义表示空间有关,也与计算机还不能像人那样进行跨模态的高效学习和理解有关。如何有效识别语言理解所需的语境信息,并建立跨模态多通道的建模,依然任重道远。
这里总结了我对自然语言理解到底难在哪儿的看法。自然语言理解作为人工智能的核心问题,正引起越来越多研究者的兴趣,在各类任务上努力探索,自然语言处理最重要的国际学术年会ACL 2020共有3000多篇投稿,受关注程度可见一斑。
让计算机拥有智能地理解、使用人类语言的能力,是自然语言理解的目标。为了实现这一步目标,需在人工智能技术中融合对人类语言的已有探索成果,从而更接近自然语言的本质。有朝一日,人工智能对自然语言能够有充分恰当的理解时,相信这项技术能够很大程度上方便我们的生活。