主持人:
杨 磊 天津市第五中学
嘉 宾:
刘宗凡 广东省四会市四会中学
邱元阳 河南省安阳县职业中专
金 琦 浙江师范大学附属中学
倪俊杰 浙江省桐乡市凤鸣高级中学
高手论技
编者按:深度学习是新一代机器学习技术,深度学习技术的不断发展对自然语言处理技术产生了深远的影响。本期我们将讨论传统自然语言处理技术和以深度学习为基础的新一代自然语言处理技术基本方法,以及利用深度学习技术实现自然语言处理应用案例。
计算机如何理解自然语言?
杨磊:人类的语言是交流的有效工具,语言交流也是一种交流方式。人们彼此间的交流离不开语言,尽管可以通过动作和表情传递人们的思想,但是语言是其中最重要的,尽管世界各地的人们所用的语言各不相同,但都遵循共同采用的沟通符号、表达方式与处理规则,符号会以视觉、声音或者触觉方式来传递。那么,和人与人的沟通相比,计算机是如何理解人类语言的呢?
倪俊杰:“教”计算机理解人类的自然语言,就是将自然语言转化为计算机可读的结构化数据,使计算机能够理解自然语言在特定领域里所代表的语义、意图,从用户输入中提取出所需的信息理解人类意图,我们把这个称作自然语言理解(NLU)。它是自然语言处理(NLP)的一部分,以语言为对象,在计算机的支持下对语言信息进行定量化的研究,并提供可以让人与计算机共同使用的语言描写。就像人类拥有可以收集有关我们周围世界的信息的眼睛和耳朵等传感器一样,计算机系统可以配备传感器来收集数据并提供程序,使它们能够处理并将这些信息转换为它们可以理解的东西。NLP的两个主要阶段是数据预处理和模型开发。数据预处理是准备数据的阶段,便于计算机处理数据。这可以通过多个过程实现,包括:①标记化——文本被分成更小的部分;②停用词去除——从数据样本中去除一些词,只留下传达最多信息的词;③词形还原和词干化——词被简化为它们的词根形式;④词性标注——词被标注为名词、动词、形容词等。模型开发阶段是计算机理解自然语言的核心。模型是基于数据,在算法的控制下,经由训练得到的。两种最广泛使用的自然语言处理算法类型是:①基于规则的系统——这种类型的算法在NLP的早期阶段就使用过,并且仍在使用中,它基于精心设计的语言规则;②基于机器学习的系统——这类算法依赖于统计方法,并通过训练数据进行改进。这些算法在使用机器学习、神经网络和深度学习的组合处理新数据集时改进自己的规则。
邱元阳:计算机理解人类语言还是极具挑战性的。当前的NLP技术基于深度学习,这是人工智能的一个子集,可以在数据中发现模式并使用这些模式来提高其理解能力。深度学习算法需要大量的标记数据来训练和发现与目标的相关性。收集合适的数据集是NLP中最大的挑战之一。在自然语言处理的早期,基本的机器学习算法被赋予了要搜索的单词和短语列表,以及对这些单词和短语的精确响应。深度学习提供了更大的灵活性。算法学习从大量样本中识别说话者的意图,类似于儿童学习人类语言的方式。计算机系统可以通过结合句法和语义技术来更好地理解语言。使用句法分析根据正式的语法规则来解析自然语言的有效性,并且语义分析允许计算机系统破译其含义,这就是计算机学习理解自然语言的方式,但这并不容易。人类花了数千年的时间来发展自己的语言系统,使得人类通过语言进行交流而不必考虑太多,因为人类从小就在训练大脑如何使用语言。作为一个物种在进化过程中,人类的大脑也已经适应了几代人的学习。通过语言相互交流涉及复杂的多感官努力,大脑中的语言中心一直在工作。这就是为什么教计算机系统如何理解和使用人类语言是一项如此艰巨的任务。单词可以根据上下文改变含义,并且可以以无限的方式组合它们。通常,所传达信息的含义还取决于文化背景,为计算机系统导航增加了另一层模糊性。计算机系统通常需要人们通过一种明确且高度组织化的编程语言与它们进行通信。语言——以及人们如何使用它——不断变化的事实使这一过程更加复杂。语言有规则,但它们不是一成不变的,可以随着时间的推移而发展。如果现实世界的语言随着时间而改变,那么现在有效的计算规则可能会过时。众所周知,计算机难以解释抽象语言的使用。例如,讽刺很难用NLP技术检测出来。另外,句子的含义可能会根据说话者强调的任何单词或音节而改变。在执行语音识别时,NLP算法可能会忽略一个人声音中微小但重要的音调变化。此外,语音的语气和语调会根据一個人的口音而变化,从而使计算机系统难以解析。
自然语言处理的表示学习
金琦:自然语言是典型的非结构化信息,表示学习旨在学习原始数据的表征,作为进一步分类或预测的有用信息。自然语言的表示可从多个角度加以定义。从认知科学角度来说,语言表示是语言在人脑中的表现形式,关系到人类如何理解和产生语言;从人工智能角度来说,语言表示是语言的形式化或数学描述,以便在计算机中表示语言,并能让计算机程序进行自动处理。一个好的文本表示,首先要具备很强的表示能力,如模型具有一定的深度;其次要使后续的学习任务变得简单,能够带来下游任务性能的提升;最后应具有一般性,是任务或领域独立的。早期的语言表示方法主要采用符号化的离散表示。词表示为One-Hot向量(一维为1、其余维为0的向量),句子或篇章通过词袋模型、TF-IDF模型、N元模型等方法进行转换。离散表示的缺点在于词与词之间没有距离的概念,如“电脑”和“计算机”被看成是两个不同的词,这显然是不合理的。当前,主流的语言表示采用更加精确的数学表示,通常通过基于深度学习的表示模型获得。目前,比较成熟的应用是词向量表示,即将每一个词语用不同的向量表示。其中,向量就是一种有大小、有方向的度量值,如果一个词具有了一定的向量,如果一大批文档信息不再是由简简单单的词组成,而是由一组组向量组成,那么计算机就很容易对要处理的文档进行加工处理,这就是要将词转化为向量的目的。在计算机上看到的形形色色的多媒体文件都只是电脑二进制的表示,如何将大自然中的语言、图形、声音转化为计算机能够识别的二进制机器语言是一个问题。解决该问题就是要找出一种将符号转化为数字的方法。
杨磊:2013年,Google开发出了基于神经网络的word2vec工具,其主要思想是一个词的上下文可以很好地表达出词的语义,它是一种通过无监督的学习文本来产生词向量的方式。它成功训练出了包含词间语义信息的词向量,以便精确度量不同词语之间的联系或关系,如词语“电脑”和“计算机”是两个相似词,经常出现的语义环境(上下文语境)是相似的。两个词语本身具有很高的相似性,词语向量化后“电脑”和“计算机”在向量空间中表示为两个点,则可以通过度量兩点之间的cosine距离定量表示两个词语的语义相似性。不同的词语在向量空间中的距离越近,相似性越高。此外,word2vec还表现出一个有趣的现象:向量(“King”)-向量(“Man”)+向量(“Woman”)=向量(“Queen”)。可以看出,word2vec在文本语义表示上拥有很好的效果。word2vec模型根本原理其实是采用了一个三层的神经网络,它们分别为输入层、隐含层和输出层。通过训练大规模的语料数据,将训练文本中的词映射到一个n维空间,并使用一个低维的、稠密的词向量来表示词语,使用向量距离来计算词之间相似度,该模型可以很好地提取词语的语义信息,语义接近的词在向量空间具有相似的向量表达。word2vec有CBOW和Skip-Gram两种训练模型,从图1可以看到,两种模型的网络结构都由输入层、投影层和输出层组成。但是,CBOW模型是利用词语Wt的前后各c个词语预测当前词语Wt,而skip-gram模型与之相反,是利用当前词语Wt去预测前后各c个词语。预测方法是,大规模语料经过预处理,输入词语通过投影操作利用softmax进行分类预测,CBOW要求中心词的softmax值最高,Skip-gram希望是上文词语的softmax值比非上下文词语的高。
Gensim是做自然语言处理常用的一个工具库,主要用来以无监督的方式从原始的非结构化文本中学习到文本隐藏层的主题向量表达。主要包括TF-IDF、LSA、LDA、word2vec、doc2vec等多种模型。利用Gensim库实现word2vec如图2所示。
自然语言处理的预训练模型
刘宗凡:近年来,预训练模型(PLMs)的出现将自然语言处理带入了一个新的时代。最近几年出现了许多可以改变整个NLP世界格局的文章。PLMs技术已逐渐发展成为NLP领域不可或缺的主流技术。PLMs主要是用来解决深度学习中大规模参数学习问题,其核心思想是在大数据上对深层次神经网络进行预训练得到模型参数,然后将这些训练好的模型运用到具体的下游任务中。在现代自然语言处理任务中,用大规模语料库进行无监督训练得到的词的分布式表示被广泛使用,其中word2vec实现了在低维条件下用稠密向量对词进行表示,但是这种方式只能提取浅层文本表征,忽略了上下文,无法在不同语境下对词的句法和语义进行有效表示;ELMo采用双向长短期记忆网络对语言模型实现了基于上下文的词嵌入表示;Google在Transformer中引入了注意力机制,为之后的BERT和GPT奠定了基础。
通过利用大型语料库学习通用语义表示的新方法,传统的基于词袋模型的文本特征提取方法,如词的独热编码,会参数很高的词向量维度,不能体现词之间语义信息和相对位置,n-gram算法和共现矩阵的出现缓解了区分词序的问题;通过结合神经网络和语言模型,词的分布式表示取得了巨大突破。神经网络语言模型通过n-gram方法对输入语言模型长文本进行简化处理,忽略长度大于n的词,不同于传统的语言模型,它在词语的表示上采用低维向量,当遇到语义相近的上文时,可以对目标词进行相似的预测。由于在前馈神经网络中使用了全连接的结构,只能处理定长的文本信息;采用循环神经网络在预测目标词时通过迭代的方式获取所有上文信息,使得模型能够处理长度变化的文本序列。
大量的文献已经表明,预训练语言模型在通用基准测试、问答、情感分析、命名实体识别、机器翻译、摘要等众多下游任务中可以带来喜人的性能提升。目前,将预训练语言模型应用到下游任务中主要还是依赖于迁移学习进行,迁移学习可以把从大规模语料中学习到的通用语言知识迁移到特定的下游任务上。通常迁移学习包含两个阶段,一是预训练,二是微调。对于一些任务,在微调阶段,预训练模型作为特征抽取器,其参数被固化。而对于大多数任务,微调阶段预训练模型的参数不固化,仍在微调阶段进行调整,以适应下游任务。
总之,PLMs已经在很多NLP任务中展现出了其强大的能力,然而由于自然语言处理的复杂性,仍存在诸多挑战。
中文文本情绪分析案例
杨磊:本案例的目的是了解文本处理的一般流程,仅采用比较少的数据作为处理对象。本例中每个步骤都可以展开,重点在于了解流程,分清上下游任务,细节方面仅知道有哪些库可以解决哪些问题即可。关键流程如下页图3所示。
(1)采集数据:导入数据集(利用Excel制作两个文件:pos.xlsx和neg.xlsx)(如下页图4)。
(2)词向量与序列处理:利用gensim进行词向量训练(如图5)。
(3)序列特征处理,求向量均值(如图6)。
(4)训练模型:利用tensorflow2.0框架(如图7)。
(5)验证(如图8)。
结语
自然语言处理是人工智能领域中的重要方向之一,被誉为人工智能皇冠上的“明珠”。当前,深度学习、图计算等方法被广泛应用于各种自然语言处理任务,取得了不错的研究成果,但也面临着全新的挑战。随着人工智能领域不断突破瓶颈,相信未来几年,语音识别、语义识别和语音合成技术将全面进入工业、通信、家电、医疗、汽车电子、家庭服务等领域,更好地服务于我们的生活。
3645500589294