BERT: Pre-training of Deep Bidirectional Transformers for
Language Understanding
○ 将预训练语言模型应用在下游任务中,一般有两种策略:
作者认为影响当前预训练语言模型的 瓶颈是——“模型是单向的” 。如 GPT 选择从左到右的架构,这使得每个 token 只能注意到它前面的 token,这对 sentence 级的任务影响还是次要的,但对于 token 级的任务来说影响就很巨大。例如问答任务,从两个方向结合上下文是至关重要的。
BERT 通过使用受完形填空任务启发的 Mask Language Model (MLM)缓解了先前模型的单向性约束问题。MLM 随机 mask 掉一些输入文本中的 token,然后根据剩下的上下文预测 masked 的 token。除了 Mask Language Model,作者还提出了 Next Sequence Predict 任务,来联合训练文本对表示。
论文中BERT的改进如下:
预训练前的一般语言表征有着悠久历史,本节我们简要回顾一下最广泛使用的方法。
21 基于特征的无监督方法 :
几十年来,学习广泛适用的词汇表征一直是一个活跃的研究领域,包括非神经系统、神经系统方法。预训练的词嵌入是现代NLP系统的一个组成部分,与从头学习的嵌入相比,它提供了显著的改进(Turian等人,2010)。为了预先训练单词嵌入向量,已经使用了从左到右的语言建模目标(Mnih和Hinton,2009),以及在左右上下文中区分正确单词和错误单词的目标(Mikolov等人,2013)。
这些方法已被推广到更粗糙的粒度,例如句子嵌入(Kiros等人,2015;Logeswaran和Lee,2018)或段落嵌入(Le和Mikolov,2014)。为了训练句子表征,之前的工作已经使用了目标对候选下一个句子进行排序(Jernite等人,2017;Logeswaran和Lee,2018),根据前一个句子的表征从左到右生成下一个句子单词(Kiros等人,2015),或去噪自动编码器衍生的目标(Hill等人,2016)。
ELMo 及其前身(Peters等人,20172018a)从不同的维度概括了传统的单词嵌入研究。它们通过从左到右和从右到左的语言模型中提取上下文敏感的特征。每个标记的上下文表示是从左到右和从右到左表示的 串联 。在将上下文单词嵌入与现有任务特定架构相结合时,ELMo推进了几个主要NLP基准(Peters等人,2018a)的最新技术,包括问答(Rajpurkar等人,2016年)、情感分析(Socher等人,2013年)和命名实体识别(Tjong Kim-Sang和De Meulder,2003年)。Melamud等人(2016年)提出通过一项任务来学习语境表征,即使用 LSTM 从左右语境中预测单个单词。与ELMo类似,他们的模型是基于特征的,而不是深度双向的。Fedus等人(2018)表明,完形填空任务可以用来提高文本生成模型的 稳健性 。
22 无监督微调方法:
与 基于特征feature-based 的方法一样,第一种方法只在未标记文本中预先训练单词嵌入参数的情况下才朝这个方向工作。最近,产生上下文标记表示的句子或文档编码器已经从未标记的文本和文本中预训练出来针对受监督的下游任务进行了 微调fine-tuned 。
这些方法的 优点是 ,很少有参数需要从头学习。至少部分由于这一优势,OpenAI GPT在GLUE基准测试的许多句子级任务上取得了之前的最新成果。从左到右的语言建模和自动编码器目标已用于此类模型的预训练。
注解 :BERT的整体预训练和微调程序。除了输出层之外,在预训练和微调中使用相同的体系结构。相同的预训练模型参数用于初始化不同下游任务的模型。在微调过程中,所有参数都会微调。
23 基于监督数据的迁移学习:
也有研究表明,在大数据集的监督任务中,如自然语言推理和机器翻译可以有效地进行转换。计算机视觉研究也证明了 从大型预训练模型中进行迁移学习的重要性 ,其中一个有效的方法是对使用ImageNet预训练模型进行微调。
本节将介绍BERT及其详细实现。在我们的框架中有两个步骤:预训练和微调。
BERT的一个显著特点是其跨不同任务的统一体系结构 。预训练的体系结构和最终的下游体系结构之间的差异最小。
BERT 的模型架构是 一种多层的双向 transformer encoder ,BERT 在实现上与 transformer encoder 几乎完全相同。
定义:transformer block 的个数为 L ; hidden 大小为 H; self-attentions head 的个数为 A 作者主要展示了两种规模的 BERT 模型:
在这项工作中,我们将层数(即Transformer blocks)表示为L,隐藏大小表示为H,自我注意头的数量表示为A。我们主要报告两种型号的结果:
为了进行比较,选择BERT-base与OpenAI GPT具有相同的模型大小。然而,关键的是, BERT Transformer使用双向自注意力机制self-attention ,而 GPT Transformer使用受限自注意力机制constrained self-attention ,其中每个标记只能关注其左侧的上下文。
为了使 BERT 能处理大量不同的下游任务,作者将模型的输入设计成可以输入单个句子或句子对,这两种输入被建模成同一个 token 序列。作者使用了有 30000 个 token 的 vocabulary 词嵌入。
31 Pre-training BERT :
我们不使用传统的从左到右或从右到左的语言模型来预训练BERT。相反,我们使用本节所述的两个无监督任务对BERT进行预训练。这一步如图1的左半部分所示。
Task #1: Masked LM
标准的语言模型只能实现从左到右或从右到左的训练,不能实现真正的双向训练,这是因为双向的条件是每个单词能直接“看到自己”,并且模型可以在多层上下文中轻松的预测出目标词。
为了能够实现双向的深度预训练,作者选择 随机 mask 掉一些比例的 token ,然后预测这些被 masked 的 token,在这种设置下,被 masked 的 token 的隐向量表示被输出到词汇表的 softmax 上,这就与标准语言模型设置相同。作者将 这个过程称为“Masked LM”,也被称为“完形填空” 。
○ Masked LM 预训练任务的缺点 :
在于由于 [MASK] 标记不会出现在微调阶段,这就造成了预训练和微调阶段的不一致。为了解决该问题,作者提出了 一种折中的方案 :
○ BERT 的 mask策略:
Task #2: Next Sentence Prediction (NSP)
很多下游任务都是基于对两句话之间的关系的理解,语言模型不能直接捕获这种信息。为了训练模型理解这种句间关系,作者 设计了 next sentence prediction 的二分类任务 。具体来说,就是选择两个句子作为一个训练样本,有 50% 的概率是下一句关系,有 50% 的概率是随机选择的句子对, 预测将 [CLS] 的最终隐状态 C 输入 sigmoid 实现 。
○ Pre-training data :
作者选用了BooksCorpus (800M words) 和 English Wikipedia (2,500M words) 作为预训练的语料库,作者只选取了 Wikipedia 中的文本段落,忽略了表格、标题等。为了获取长的连续文本序列,作者选用了 BIllion Word Benchmark 这样的文档级语料库,而非打乱的句子级语料库。
32 Fine-tuning BERT :
因为 transformer 中的 self-attention 机制适用于很多下游任务,所以可以直接对模型进行微调。对于涉及文本对的任务,一般的做法是独立 encode 文本对,然后再应用双向的 cross attention 进行交互。Bert 使用 self-attention 机制统一了这两个阶段,该机制直接能够实现两个串联句子的交叉编码。
对于不同的任务,只需要简单地将特定于该任务的输入输出插入到 Bert 中,然后进行 end2end 的fine-tuning。
与预训练相比,微调相对便宜。从完全相同的预训练模型开始,本文中的所有结果最多可以在单个云TPU上复制1小时,或在GPU上复制几个小时。
在本节中,我们将介绍11个NLP任务的BERT微调结果。
41 GLUE:
GLUE (General Language Understanding Evaluation) 是多个 NLP 任务的集合。作者设置 batch size 为 32;训练 3 个 epochs;在验证集上从(5e-5, 4e-5, 3e-5, 2e-5)中选择最优的学习率。结果如下:
结果见表1。 BERT-base和BERT-large在所有任务上都比所有系统表现出色,与现有技术相比,平均准确率分别提高了45%和70% 。请注意,除了注意掩蔽,BERT-base和OpenAI GPT在模型架构方面几乎相同。
对于最大和最广泛报道的GLUE任务MNLI,BERT获得了46%的绝对准确率提高。在官方的GLUE排行榜10中,BERT-lagle获得805分,而OpenAI GPT在撰写本文之日获得728分。我们发现BERT-large在所有任务中都显著优于BERT-base,尤其是那些训练数据很少的任务。
42 SQuAD v11 :
斯坦福问答数据集(SQuAD v11)收集了10万对众包问答对。给出一个问题和一段维基百科中包含答案的文章,任务是预测文章中的答案文本。
如图1所示,在问答任务中,我们将输入的问题和段落表示为单个压缩序列,问题使用A嵌入,段落使用B嵌入。在微调过程,我们只引入一个起始向量S和一个端向量E。单词i作为答案范围开始的概率计算为Ti和S之间的点积,然后是段落中所有单词的softmax:
答案范围结束时使用类似公式。候选人从位置 i 到位置 j 的得分定义为:S·Ti + E·Tj ,最大得分跨度为 j≥ i 被用作预测。训练目标是正确起始位置和结束位置的对数概率之和。我们微调了3个阶段,学习率为5e-5,批量大小为32。
表2显示了顶级排行榜条目以及顶级发布系统的结果。SQuAD排行榜的前几名没有最新的公共系统描述,并且允许在训练系统时使用任何公共数据。因此,在我们的系统中使用适度的数据扩充,首先在TriviaQA上进行微调,然后再对团队进行微调。
我们表现最好的系统在ensembling方面的表现优于排名第一的系统,在ensembling方面的表现优于排名第一的系统+15 F1,在单一系统方面的表现优于排名第一的系统+13 F1得分。事实上,我们的单BERT模型在F1成绩方面优于顶级合奏系统。如果没有TriviaQA微调数据,我们只会损失01-04 F1,仍然远远超过所有现有系统。
其他实验:略
在本节中,我们对BERT的许多方面进行了消融实验,以便更好地了解它们的相对重要性。其他消融研究见附录C。
51 预训练任务的效果 :
○ 进行了如下消融测试:
○ 结果如下:
52 模型大小的影响 :
○ 结果如下:
作者证明了 :如果模型经过充分的预训练,即使模型尺寸扩展到很大,也能极大改进训练数据规模较小的下游任务。
53 将 Bert 应用于 Feature-based 的方法 :
○ feature-based 的方法是从预训练模型中提取固定的特征,不对具体任务进行微调 。
○ 这样的方法也有一定的优点 :
作者进行了如下实验:在 CoNLL-2003 数据集上完成 NER 任务,不使用 CRF 输出,而是从一到多个层中提取出激活值,输入到 2 层 768 维的 BiLSTM 中,再直接分类。结果如下:
结果说明:无论是否进行微调,Bert 模型都是有效的。
个人认为 Bert 的意义在于:
由于语言模型的迁移学习,最近的经验改进表明,丰富的、无监督的预训练是许多语言理解系统的一个组成部分。特别是,这些结果使得即使是低资源任务也能从深层单向体系结构中受益。我们的主要贡献是将这些发现进一步推广到深层双向体系结构中,使相同的预训练模型能够成功地处理广泛的NLP任务。
信息抽取(information extraction),简称IE,即从自然语言文本中,抽取出特定的事件或事实信息,帮助我们将海量内容自动分类、提取和重构。这些信息通常包括实体(entity)、关系(relation)、事件(event)。 例如从新闻中抽取时间、地点、关键人物,或者从技术文档中抽取产品名称、开发时间、性能指标等。能从自然语言中抽取用户感兴趣的事实信息,无论是在知识图谱、信息检索、问答系统还是在情感分析、文本挖掘中,信息抽取都有广泛应用。
信息抽取主要包括三个子任务 :
关系抽取 :通常我们说的三元组(triple)抽取,主要用于抽取实体间的关系。
实体抽取与链指 :也就是命名实体识别。
事件抽取 :相当于一种多元关系的抽取。
关系抽取(RE)是为了抽取文本中包含的关系,是信息抽取(IE)的重要组成部分 。主要负责从无结构文本中识别出实体,并抽取实体之间的语义关系,被广泛用在信息检索、问答系统中。本文从关系抽取的 基本概念 出发,依据不同的视角对 关系抽取方法进行了类别划分 ;最后分享了基于深度学习的关系抽取方法常用的数据集,并总结出基于深度学习的关系抽取框架。
完整的关系抽取包括实体抽取和关系分类两个子过程。实体抽取子过程也就是命名实体识别,对句子中的实体进行检测和分类; 关系分类子过程对给定句子中两个实体之间的语义关系进行判断,属于多类别分类问题 。
例如,对于句子“青岛坐落于山东省的东部”,实体抽取子过程检测出这句话具有“青岛”和“山东”两个实体。关系分类子过程检测出这句话中“青岛”和“山东”两个实体具有“坐落于”关系而不是“出生于”关系。在关系抽取过程中,多数方法默认实体信息是给定的,那么关系抽取就可以看作是分类问题。
目前, 常用的关系抽取方法有5类,分别是基于模式匹配、基于词典驱动、基于机器学习、基于本体和混合的方法 。基于模式匹配和词典驱动的方法依靠人工制定规则,耗时耗力,而且可移植性较差,基于本体的方法构造比较复杂,理论尚不成熟。 基于机器学习的方法以自然语言处理技术为基础,结合统计语言模型进行关系抽取,方法相对简单,并具有不错的性能,成为当下关系抽取的主流方法,下文提到的关系抽取方法均为机器学习的方法 。
关于信息关系抽取,可以 从训练数据的标记程度 、 使用的机器学习方法 、 是否同时进行实体抽取 和 关系分类子过程以及是否限定关系抽取领域和关系专制 四个角度对机器学习的关系抽取方法进行分类。
根据训练数据的标记程度可以将关系抽取方法分为 有监督、半监督和无监督三类 。
有监督学习 ,处理的基本单位是包含特定实体对的句子,每一个句子都有类别标注。 优点 :取能够有效利用样本的标记信息,准确率和召回率都比较高。 缺点 :需要大量的人工标记训练语料,代价较高。
半监督学习 ,句子作为训练数据的基本单位,只有部分是有类别标注的。此类方法让学习器不依赖外界交互,自动地利用未标记样本来提升学习性能。
无监督学习 ,完全不需要对训练数据进行标注,此类方法包含实体对标记、关系聚类和关系词选择三个过程。
根据使用机器学习方法不同,可以将关系抽取划分为三类: 基于特征向量的方法 、 基于核函数的方法 以及 基于神经网络的方法 。
基于特征向量的方法 ,通过从包含特定实体对的句子中提取出语义特征,构造特征向量,然后通过使用支持向量机、最大熵、条件随机场等模型进行关系抽取。
基于核函数的方法 ,其重点是巧妙地设计核函数来计算不同关系实例特定表示之间的相似度。 缺点 :而如何设计核函数需要大量的人类工作,不适用于大规模语料上的关系抽取任务。
基于神经网络的方法 ,通过构造不同的神经网络模型来自动学习句子的特征,减少了复杂的特征工程以及领域专家知识,具有很强的泛化能力。
根据是否在同一个模型里开展实体抽取和关系分类,可以将关系抽取方法分为 流水线(pipeline)学习 和 联合(joint)学习两种 。
流水线学习 是指先对输入的句子进行实体抽取,将识别出的实体分别组合,然后再进行关系分类,这两个子过程是前后串联的,完全分离。
联合学习 是指在一个模型中实现实体抽取和关系分类子过程。该方法通过使两个子过程共享网络底层参数以及设计特定的标记策略来解决上述问题,其中使用特定的标记策略可以看作是一种序列标注问题。
根据是否限定抽取领域和关系类别,关系抽取方法可以划分为 预定义抽取 和 开放域抽取 两类。
预定义关系抽取 是指在一个或者多个固定领域内对实体间关系进行抽取,语料结构单一,这些领域内的目标关系类型也是预先定义的。
开放域关系抽取 不限定领域的范围和关系的类别。现阶段,基于深度学习的关系抽取研究集中于预定义关系抽取。
基于深度学习的关系抽取方法常用的数据集有 ACE关系抽取任务数据集 、 SemEval2010 Task 8数据集 、 NYT2010数据集 等
ACE关系抽取任务数据集 :ACE2005关系抽取数据集包含599篇与新闻和邮件相关的文档,其数据集内包含7大类25小类关系。
SemEval2010 Task 8数据集 :该数据集包含9种关系类型,分别是Compoent-Whole、Instrument-Agency、Member-Collection、Cause-Effect、Entity-Destination、Content-Container、Message-Topic、Product-Producer和Entity-Origin。 考虑到实体之间关系的方向以及不属于前面9种关系的“Other”关系,共生成19类实体关系。其中训练数据 8000个,测试数据2717个。
NYT2010数据集 是Riedel等人在2010年将Freebase知识库中的知识“三元组”对齐到“纽约时报”新闻中得到的训练数据。该数据集中,数据的单位是句包,一个句包由包含该实体对的若干句子构成。其中,训练数据集从《纽约时报》2005—2006年语料库中获取,测试集从2007年语料库中获取。
基于深度学习的关系抽取方法模型构建的重点在于利用不同神经网络的特点来抽取样本的特征,以学习样本的向量表示。在学习过程中,根据所用的神经网络基本结构的不同,可将基于深度学习的关系抽取方法分为 基于递归神经网络(recursive neural network,Rec-NN)的方法 、 基于卷积神经网络的方法 、 基于循环神经网络(recurrent net neural net-work,RNN)的方法 和 基于混合网络模型的方法 四类。
基于递归神经网络的关系抽取方法 首先利用自然语言处理工具对句子进行处理,构建特定的二叉树,然后解析树上所有的相邻子节点,以特定的语义顺序将其组合成一个父节点,如下图3所示。这个过程递归进行,最终计算出整个句子的向量表示。向量计算过程可以看作是将句子进行一个特征抽取过程,该方法对所有的邻接点采用相同的操作。
由于句子含义跟单词出现的顺序是相关的,因此关系抽取可以看作是一个时序学习任务,可以使用循环神经网络来建模。
基于循环神经网络的方法 在模型设计上使用不同的循环神经网络来获取句子信息,然后对每个时刻的隐状态输出进行组合,在句子层级学习有效特征。在关系抽取问题中,对每一个输入,关系的标记一般只在序列的最后得到。Zhang等首次使用双向循环神经网络来进行关系抽取,提出了BRNN模型。如下图7 所示,在双向循环神经网络中某一时刻的输出不仅依赖序列中之前的输入,也依赖于后续的输入。
为了更好地抽取句子中的特征,研究人员 使用递归神经网络、卷积神经网络与循环神经网络3种网络及其他机器学习方法进行组合建模来进行关系抽取 。
Vu等提 出 了 基 于 文 本 扩 展 表 示 的ECNN和基于链接的UniBRNN模型 ,将每个神经网络得到的多个结果根据投票机制得到关系的最终抽取结果。
Xiao等将 注意力机制引入一个多级的循环神经网络 ,该方法使用文本序列作为输入,根据标记实体的位置将句子分为5部分,使用同一个双 向LSTM网络在3个子序列上独立学习,然后引入词层级的注意力机制关注重要的单词表示,分别得到子序列的向量表示;随后,使用双向RNN网络进一步抽取子序列和实体的特征,并再次使用注意力机制将其转换成句子的最终向量表示,并送入到分类器中。
Nguyen等将 传统基于特征的方法(log-linear模型)、卷积神经网络方法和循环神经网络方法使用集成、投票等机制进行组合 。
zhang等提出 在双向LSTM 的基础上叠加注意力机制 ,以及使用卷积神经网络层获取句子的表示,再送入到一个全连接层和softmax层进行分类。
在联合学习问题上,Zheng等 使用递归神经网络和卷积神经网络组合来进行联合学习 ,也是一种共享底层网络参数的方法。
[1]庄传志,靳小龙,基于深度学习的关系抽取研究综述[J]中文信息学报,2019,33(12):1-18
更多自然语言处理相关知识,还请关注 AINLPer公众号 ,极品干货即刻送达。
自然语言处理(NLP)关注的是人类的自然语言与计算机设备之间的相互关系。NLP是计算机语言学的重要方面之一,它同样也属于计算机科学和人工智能领域。而文本挖掘和NLP的存在领域类似,它关注的是识别文本数据中有趣并且重要的模式。
但是,这二者仍有不同。首先,这两个概念并没有明确的界定(就像“数据挖掘”和“数据科学”一样),并且在不同程度上二者相互交叉,具体要看与你交谈的对象是谁。我认为通过洞见级别来区分是最容易的。如果原始文本是数据,那么文本挖掘就是信息,NLP就是知识,也就是语法和语义的关系。
虽然NLP和文本挖掘不是一回事儿,但它们仍是紧密相关的:它们处理同样的原始数据类型、在使用时还有很多交叉。
我们的目的并不是二者绝对或相对的定义,重要的是要认识到,这两种任务下对数据的预处理是相同的。
努力消除歧义是文本预处理很重要的一个方面,我们希望保留原本的含义,同时消除噪音。
以下就是处理文本任务的几大主要步骤:
1数据收集
获取或创建语料库,来源可以是邮箱、英文维基百科文章或者公司财报,甚至是莎士比亚的作品等等任何资料。
2数据预处理
在原始文本语料上进行预处理,为文本挖掘或NLP任务做准备
数据预处理分为好几步,其中有些步骤可能适用于给定的任务,也可能不适用。但通常都是标记化、归一化和替代的其中一种。
3数据挖掘和可视化
无论我们的数据类型是什么,挖掘和可视化是探寻规律的重要步骤
常见任务可能包括可视化字数和分布,生成wordclouds并进行距离测量
4模型搭建
这是文本挖掘和NLP任务进行的主要部分,包括训练和测试
在适当的时候还会进行特征选择和工程设计
语言模型:有限状态机、马尔可夫模型、词义的向量空间建模
机器学习分类器:朴素贝叶斯、逻辑回归、决策树、支持向量机、神经网络
序列模型:隐藏马尔可夫模型、循环神经网络(RNN)、长短期记忆神经网络(LSTMs)
5模型评估
模型是否达到预期?
度量标准将随文本挖掘或NLP任务的类型而变化
以上观点仅供参考,而在自然语言文本预处理方面的技术在国内效果比较好的并不多,具有代表性的如:北理工张华平博士的NLPIR大数据语义智能分析技术。NLPIR大数据语义智能分析平台是根据中文数据挖掘的综合需求,融合了网络精准采集、自然语言理解、文本挖掘和语义搜索的研究成果,并针对互联网内容处理的全技术链条的共享开发平台。如果感兴
对于现代汉语的分词,开源/免费的解决方案或工具很多,开源的解决方案如Jieba、HanLp、StanfordNLP和IKAnalyzer等,“傻瓜式”的免费操作工具的也有 新浪微舆情 的 文本挖掘 工具 ,如果直接采用这些现代汉语分词工具对古诗词进行分词,结果会是这样的:
然而,对于古汉语(文言文),尤其是诗词的分词处理可没有这么简单,因为单字词占古汉语词汇统计信息的80%以上,再加上古汉语微言大义,字字千钧,所以针对现代汉语的分词技术往往不适用于它。鉴于此种情况,笔者采取的是 逐字切分 的处理方式,同时去掉一些常见的 虚词 ,如“之”、“乎”、“者”、“也”。分词和去停用词处理如下所示:
经过文本预处理后,就可以进行文本挖掘中最常规的分析---字频统计,看看《全唐诗》中出现最多的字有哪些。
全局高频字
首先,让我们来看看去掉这些虚词之后的全局高频字有哪些,笔者这里展示的是TOP148。“人”字排行第一,这体现了《说文解字》里所讲的“人,天地之性最贵者也”,说明唐诗很好的秉承了“以人为本”的中华文化。而后续的“山”、“风”、“月”、“日”、“天”、“云”、“春”等都是在写景的诗句里经常出现的 意象 。
典型意象分析
所谓“ 意象 ”,就是客观物象经过创作主体独特的情感活动而创造出来的一种艺术形象。简单地说,意象就是寓“意”之“象”,就是用来寄托主观情思的客观物象。在比较文学中,意象的名词解释是---所谓“意象”简单说来,可以说就是主观的“意”和客观的“象”的结合,也就是融入诗人思想感情的“ 物象 ”,是赋有某种特殊含义和文学意味的具体形象。简单地说就是借物抒情。
比如,“月”这个古诗词里常见的意象,就有如下内涵:
表达思乡、思亲念友之情,暗寓羁旅情怀,寂寞孤独之感;
历史的见证今昔沧桑感;
冷寂、凄清的感觉;
清新感。
笔者在这里挑选的意象是关于季节和颜色的。
物转星移几度秋---《全唐诗》中的季节
统计“春”、“夏/暑”、“秋”、“冬”这4个字在《全唐诗》中出现的频次,“春”字排行榜首,“秋”字列第2位,“夏”和“冬”出现的频次则要少1个量级,在唐诗里,伤春、惜春是常见的春诗题材,代表性的作品有朱淑真《赏春》、杜甫《丽春》、韩愈《春雪》、张若虚《春江花月夜》等。也难怪,在商代和西周前期,一年只分为春秋二时,后世也常以春秋作为一年的代称,约定俗成,由来已久,这两个字的使用频率很高也就不足为奇了。
万紫千红一片绿---《全唐诗》中的色彩
笔者在这里找了51个古语中常用的颜色的单字(注意是古汉语语境中的颜色称谓),其中以 红色系 (红、丹、朱、赤、绛等)、 黑色系 (暗、玄、乌、冥、墨等)、 绿色系 (绿、碧、翠、苍等)及 白色系 (白、素、皎、皓等)为主,这些颜色及其对应的字频如下表所示:
这里面“白”字的字频最高,本意是“日出与日落之间的天色”,笔者常见的有“白发”、“白云”、“白雪”,常渲染出一种韶华易逝、悲凉的气氛,名句如“白头搔更短,浑欲不胜簪”、“白雪却嫌春色晚,故穿庭树作飞花”、“君不见,高堂明镜悲白发,朝如青丝暮成雪”、 “白云一片去悠悠,青枫浦上不胜愁”。
将上述主要的色系综合统计一下,得到下面的环形占比图:
其中,绿色系的占比居多,“绿”“碧”“苍”“翠”等大都用于写景,“绿树”、“碧水”、“苍松”、“翠柳”等,这些高频字从侧面反映出全唐诗中描写景物、寄情山水的诗句占比很大,透露出平静、清新和闲适之感。
刚才笔者分析的是单字,而汉语的语素大都是由单音节(字)表示,即所谓的“一音一义”。当这些单音节语素,能够独立应用的话,就是词。古汉语中存在着许多单音节词,这也就是文言文翻译中要经常把一个字翻译成现代汉语中的双音节词的原因。
然而,有些单音节语素,不能够独立使用,就不是词,只能够是语素,如“第-“、”踌-“、”- 们“。
鉴于此,笔者想发现一些唐诗中的常用双字词,看看其中的 成词规律 是怎样的。笔者在这里选取共现次数超过10次的词汇,并列出TOP200的共现双字词。关键操作步骤如下所示:
以下是TOP200的共现双字词:
从上面的双词探测结果中,笔者可以发现如下6类成词规律:
(1) 复合式 (A+B等于C):由两个字组成,这两个字分别代表意义,组成双音节的词,这类词出现的频次最多。比如,弟兄、砧杵、纪纲、捐躯、巡狩、犬吠。
(2) 重叠式 (AA等于A): 琅琅、肃肃、忻忻、灼灼。
(3) 叠音 (AA不等于A):琅琅(单独拆开不能组其他词)、的的(拆开后的单字的词义不同)等。
(4) 双声 (声母相同): 踌躇(声母都是c,分开各自无法组词)、参差(声母都是c)、缅邈(声母都是m)。
(5) 叠韵 (韵母相同):噫嘻(韵母是i)、缭绕(韵母是ao)、妖娆(韵母是ao)等。
(6) 双音节拟声词 :歔欷、咿哑等。
在这一部分,笔者抽取的是上述高频字TOP148中的字的共现关系
可以看到,上述的语义网络可以分为3个簇群,即橙系、紫系和绿系,TOP148高频字中,字体清晰可见字的近40个。圆圈的大小表示该字在语义网络中的影响力大小,也就是“ Betweenness Centrality (中介核心性),”学术的说法是“两个非邻接的成员间的相互作用依赖于网络中的其他成员,特别是位于两成员之间路径上的那些成员,他们对这两个非邻接成员的相互作用具有某种控制和制约作用”。在诗句中,这些字常以“字眼”的形式呈现,也就是诗文中精要的字。3类中:
橙系 :北、流、马、草、闲、孤、逢、云等;
紫系 :游、树、雨、回、笑、言、幽、清、白、野、行等
绿系 :知、金、柳、难、愁、旧、仙、望、客。
其中,根据字的构成来看,绿系簇群中的字大多跟送别(好友)有关。
因为之前的文本预处理是按字来切分的,所以这里进行的是基于 Word2vec 的字向量分析。
基于Word2vec的字向量能从大量 未标注 的普通文本数据中 无监督 地学习到字向量,而且这些字向量包含了字与字之间的 语义关系 ,正如现实世界中的“物以类聚,类以群分”一样,字可以由它们身边的字来定义。
从原理上讲,基于字嵌入的Word2vec是指把一个维数为所有字的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单字被映射为实数域上的向量。把每个单字变成一个向量,目的还是为了方便计算,比如“求单字A的同义字”,就可以通过“求与单字A在cos距离下最相似的向量”来做到。下面是基于Word2vec的字向量模型原理示意图。
下面,笔者选取一些单字进行字向量关联分析,展示如下:
与“梅”相关的字,大致分为两类:同属植物,如醾、杏、梨、桃、榴、杨、柳、楝等;和“梅”相关的意象,如春(梅)、酴(酒)、(梅)花、(梅)枝、残(梅)、(梅)梢等。最相关的是“春”,吟咏春梅,在唐诗中极为常见,贤相宋璟在东川官舍见梅花怒放于榛莽中,归而有感,作《梅花赋》,其中,"独步早春,自全其天",赞赏梅花在早春中一枝独秀,自己安于凌寒而开的天命。
“静”字则跟它的同音字“净(连带繁体,一共出现三次,即“净”、“净”和“净”)”的相关度最大,结合“坐”、“院”“梵”等字,可联想到“净院”(佛寺,亦称“净宇”)、净觉(谓心无妄念,对境不迷),这也说明,在唐诗里最能体现静的,还是在寺庙里参禅,感悟佛法。
笔者还想看看唐诗里经常出现的情绪,即“悲”、“忧”、“愁”、“怒”、“惧”,看看它们的相关字有哪些。这里就请读者自行分析,笔者不做赘述。
注意,在这里得到的情绪相关字,笔者将收集整理它们,制成情绪词典,用于后面的诗词情绪分类。
王国维在《人间词话》里曾提到:“ 境非独谓景物也,喜怒哀乐,亦人心中之一境界。故能写真景物、真感情者,谓之有境界 … ”,讲的是"境"与"境界"通用---写景亦可成境界,言情亦可成境界,因为景物是外在的世界,情感是内在的世界。所以,在这里,笔者想分析一下全唐诗中诗词所表达出来的内在境界,也就是内在情感,为了丰富分析维度,不采用简单的二元分析,即“积极”和“消极”2种情绪,而是7种细颗粒的情绪分类,即悲、惧、乐、怒、思、喜、忧。
根据上面获取到的字向量,经过人工遴选后,得到可以用于训练的“情绪字典”,根据诗歌中常见的主题类别,情绪类别分为:
悲: 愁、恸、痛、寡、哀、伤、嗟…
惧: 谗、谤、患、罪、诈、惧、诬…
乐: 悦、欣、乐、怡、洽、畅、愉…
怒: 怒、雷、吼、霆、霹、猛、轰…
思: 思、忆、怀、恨、吟、逢、期…
喜: 喜、健、倩、贺、好、良、善…
忧: 恤、忧、痾、虑、艰、遑、厄…
笔者在这里采用的是基于 LSTM (LongShort-Term Memory,长短期记忆网络)的情绪分析模型。
在这里,我们会将文本传递给 嵌入层 (Embedding Layer),因为有数以万计的字词,所以我们需要比 单编码向量 (One-Hot Encoded Vectors)更有效的表示来输入数据。这里,笔者将使用上面训练得到的Word2vec字向量模型,用预先训练的 词嵌入 (Word Embedding)来引入的外部语义信息,做 迁移学习 (Transfer Learning)。
以下是简要原理展示图:
为了取得更好的效果,笔者采用最新的 NestedLSTM+Conv1D 的深度学习模型来做情绪判断,它能较好的提炼文本里的特征和语序信息,记住更长的语义依赖关系,做出较为精确的情绪判断。其网络结构如下所示:
接着,来试试实际的效果:
笔者随机测试了100句,判断准确的有86条,粗略的准确率估计是86%。当然,这只是一次不太严谨的小尝试,在真实的业务场景里,这得花很多时间来做优化,提高模型的准确率。
下面是对《全唐诗》近5万首诗的情绪分析结果,展示如下:
可能出乎很多人的意料,代表大唐气象的唐诗应该以积极昂扬的情绪为主,怎么会是“悲”、“思”、“忧”这样的情绪占据主流呢?而 “喜”、“乐”这样的情绪却占据末流呢?
接下来,笔者着重来分析下“悲”这个情绪占据主流的原因。
从常见的唐诗写作题材上说,带有“悲”字基调的唐诗较多,也多出名诗佳句,比如唐诗中常见的几种情结,如 ”悲秋情结“ 、 ”别离情结“ 、 ”薄暮情结“ 和 ”悲怨情结“ ,都体现出浓重的“悲情”色彩。
古人云:“悲愤出诗人”,它点破了人的成就与所处的环境、心境有某种关系。就像司马迁所说:“夫《诗》、《书》隐约者,欲遂其志之思也。昔西伯拘羑里,演《周易》;孔子厄陈、蔡,作《春秋》…大抵贤圣发愤之所为作也。此人皆意有所郁结,不得通其道也…” 回顾古今中外的著名的诗人和作家,几乎无一不是曾有一段被排挤,诽谤,不得志和身处逆境之经历,有些甚至还很悲惨。正是在这种悲难,恶劣环境中,才使得其奋发图强。
重要的是,唐诗中的“悲”不仅仅是做“儿女态”的悲,更是具有超越时空、怜悯苍生以及同情至美爱情的大慈大悲。如下:
陈子昂的《登幽州台歌》,“ 前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。 ”从时间与空间两个角度把悲凉拉长了。
李白的《将进酒》中“ 君不见明镜高堂悲白发,朝如青丝暮成雪 ”,以及《梦游天姥吟留别》中“ 世间行乐亦如此,古来万事东流水 ”让人唏嘘!还有《长相思》第一首中“ 天长路远魂飞苦,梦魂不到关山难。长相思,摧心肝。 ”
杜甫的《登高》中“ 无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。 ”老病残躯,孤苦无依独登台,心中悲凉陡然而生。《石壕吏》中“ 老妪力虽衰,请从吏夜归。急应河阳役,犹得备晨炊 ”等句语言朴实,但极具张力!
白居易的《长恨歌》末尾“ 七月七日长生殿,夜半无人私语时。在天愿作比翼鸟,在地愿为连理枝。天长地久有时尽,此恨绵绵无绝期。 ”相爱而不能相聚,生死遗恨,没有尽头!
与上面情绪分析模型采用的内部原理一致,这里采用的还是LSTM,2层网络。
上图是文本生成的简要原理图,是基于 字符 (字母和标点符号等单个字符串,以下统称为 字符 )进行模型构建,也就是说我们的输入和输出都是字符。举个栗子,假如我们有一个一句诗“胸中稳处即吾乡”,我们想要基于这句诗来构建LSTM,那么希望的到的结果是,输入“胸”,预测下一个字符为“中”;输入“中”时,预测下一个字符为“稳”…输入“吾”,预测下一个字符为“乡”,等等。
由于其中的原理过于繁复,涉及大量的code和数学公式,故笔者仅展示生成的结果,训练的语料即经过预处理的《全唐诗》。
以“春雨”打头,生成500字的诗词,结果如下:
可以看见,其中的诗词大都围绕着“春”来展开,也就是打头的两个字引导了后续结果的生成,这多亏了LSTM超强的“记忆能力”---记住了诗歌文本序列中的时空依赖关系。
在生成的诗句中,某些诗句还是蛮有意思的,上下联间的意象有很强的相关性。
下面是多次生成中产生的较优秀的诗句(当然,这是笔者认为的),其中有些学习到了高阶的对仗技巧,如下:
白鹭惊孤岛,朱旗出晚流。
笔者最喜欢的是这两句,它们对仗工整:“白鹭”-“朱旗”,“孤岛”-“晚流”,“惊”-“出”。这里体现出《人间词话》中的“无我之境”: “无我之境,以物观物,故不知何者为我,何者为物”,也就是意境交融、物我一体的优美境界,其中的 “惊”、“出”堪称字眼,极具动感,炼字绝妙!
最后,我们来看看诗歌的信息检索问题,也就是笔者随意输入一句诗词,然后机器会按照语义相似度在《 全唐诗 》中检索出若干句符合要求的诗词。
谈到这里,笔者不由得想起一个词---“射覆”,射覆游戏早期的耍法主要是制谜猜谜和用盆盂碗等把某物件事先隐藏遮盖起来,让人猜度。这两种耍法都是比较直接的。后来,在此基础上又产生了一种间接曲折的语言文字形式的射覆游戏,其法是用相连字句隐寓事物,令人猜度,若射者猜不出或猜错以及覆者误判射者的猜度时,都要罚酒。唐浩明的长篇小说《 张之洞 》中有对射覆游戏的精彩描写:
宝竹坡突然对大家说,我有一覆,诸位谁可射中。不带大家做声,他立刻说,《 左传 》曰: 伯姬归于宋。 射唐人诗一句。大家都低头想。
张之洞不慌不忙地念着,白居易诗曰: 老大嫁作商人妇。
如果对古文生疏,大家可能很难将这两句联想起来,但《 张之洞 》里接下来就有关于解谜的描述:
杨锐道: “ 伯、仲、叔、季,这是中国兄弟姊妹得排行序列。伯姬是鲁国的长公主,排行老大。周公平定武庚叛乱后,把商旧都周围地区封给商纣王的庶子启,定国名为宋,故宋国为商人后裔聚族之地。伯姬嫁到宋国,不正是'老大嫁作商人妇'吗? ”
大家可能会想,如果是自己来思索的话,不仅需要自己具备渊博的学识,更要有疾如闪电的反应能力,这个非极顶聪明之人不可!
试想,机器来做,可以做好吗?能的话,又会是如何操作?
这里,笔者介绍基于 WMD (Earth Mover’s Distance)的语义相似度算法,与上面的情绪分析类似,还有用到之前训练得到的字向量模型,借助外部语义信息来应对同义不同字的情形。
WMD (EarthMover’s Distance)是一种能使机器以有意义的方式(结合文本的语义特征)评估两个文本之间的“ 距离 (也就是文本间的相似度)”的方法,即使二者没有包含共同的词汇。它使用基于word2vec的词向量,已被证明超越了k-近邻分类中的许多现有技术方法。以下是基于WMD的“射覆”的机器解:
上面两个句子没有共同的词汇,但通过匹配相关单字,WMD能够准确地测量两个句子之间的(非)相似性。该方法还使用了基于词袋模型的文本表示方法(简单地说,就是词汇在文本中的频率),如下图所示。该方法的直觉是最小化2段文本间的“ 旅行距离 (traveling distance)”,换句话说,该方法是将文档A的分布“移动”到文档B分布的最有效方式。
简要的解释了相关原理后,笔者紧接着展现最后的分析效果。由于对《 妖猫传 》中的那首线索式的《 清平乐 》印象深刻,笔者让机器在《 全唐诗 》+《 全宋词 》中查找与它相关性最大的TOP9诗词。结果如下:
查找的结果排行第一的是原句,但有一个字不同(其实古语中“花”、“华”互通,华字的繁体是会意字,本意是“花”),略微差异导致相似度不为10。第二相似的是一首宋词,林正大的《 括酹江月(七) 》,其实这整首词可以作为李白《 清平乐 》的注解,因为全篇都是对它的化用:即将《 清平乐 》中的句、段化解开来,增加了新的联想,重新组合,灵活运用,对原诗的表达进行了情感上的升华。随后的两句诗词也是类似的情况,只是相似度上略有差异罢了。
紧接着,是刚才机器生成的诗句,看看与它内涵相近的诗句有哪些:
再看看笔者较为欣赏的2句名句,机器很好的捕捉到了它们之间的相似语义关系,即使词汇不尽相同,但仍能从语义上检索相似诗句。
写到这里,关于《全唐诗》单独的文本挖掘已经完成,但笔者又想到一个有趣的分析维度---从文本挖掘的角度来比较《 全唐诗 》、《 全宋词 》和《 全元曲 》之间用字的差异,借助字这种基本符号来分析各自的 文学艺术特征 。
因为分析的对象涉及3个,常规的二元对比分析方法难以得出有效的结论。因此,笔者在这里跨界采用来自符号学领域的研究成果--- Semiotic Squares 。
“ Semiotic Squares (笔者译作‘符号方块’)”,是由知名符号学大师Greimas和Rastier发明,是一种提炼式的对比分析(Oppositional Analyses)方法,通过将给定的两个相反的概念/事例(如 “生命(Life)”和“死亡(Death)”)的分析类型(通过‘或’、‘与’、‘非’的逻辑)拓展到4类(如“生命(Life)”、“死亡(Death)”、“生死相间(也就是活死人,The Living Dead)”、“非生非死(天使,Angels)”,有时还可以拓展到8个或10个分析维度。以下是符号方块的结构示意图:
说明:“+”符号将2个词项组合成一个“ 元词项 (Metaterm)”( 复合词 ,Compound Term),例如,5是1和2的复合结果。
Semiotic Squares的构成要素
Semiotic Squares主要包含以下2种元素(我们正在避开方块的组成关系:对立,矛盾、互补或包含):
(1)词项(Terms):
Semiotic Square 由4个词项组成::
位置1 (Term 1): 词项A(Term A)
位置 2(Term 2): 词项B(Term B)
位置 3 (Term Not-2): 非B 词项(Term Not-B)
位置 4 (Term Not-1): 非A词项(Term Not-A)
Term A和TermB是相反的两个概念,二者是对立关系,这是“符号方块”的基础,另外两项是通过对Term A和Term B取反而获得。
(2)元词项 (Metaterms)
Semiotic Square囊括6个元词项。这些元词项由上面的4个基础词项组合而成,其中的绝大部分元词项已被命名。
位置5 (Term 1 + Term 2): 复合词项(Complex Term)
位置6 (Term 3 + Term 4): 中立词项(Neutral Term)
位置7 (Term 1 + Term 3): 正向系(Positive Deixis)
位置8 (Term 2 + Term 4): 负向系(Negative Deixis)
位置9(Term 1 + Term 4): 未命名(Unnamed)
位置10(Term 2 + Term 3): 未命名(Unnamed)
下面以“男性”和“女性”这两个相对的概念来举个例子,注意其中错综复杂的逻辑关系/类型。
说完了分析的大致原理,笔者这里就来实战一番,与上述原始模型不同的是,笔者在这里除了基本的二元对立分析外,还新增了一个分析维度,总体是关于《 全唐诗 》、《 全宋词 》和《 全元曲 》的三元文本对比分析。
预处理前的文本是这样的:
预处理后是这样的形式:
用Semiotic Squares进行分析的结果如下图所示:
从上面呈现的TOP10高频字和象限区块(左上角“唐诗”、右上角“宋词”和正下方“元曲”)来看,唐诗、宋词、元曲中出现的 独有高频字 依次是:
唐诗 :唯、馀、始、鸟、含、尔、昔、兹、忽、栖、川、旌、戎、秦…
宋词 :阑、沈、匆、帘、浓、约、淡、觞、蕊、屏、凝、笙、瑶、柔…
元曲 :哥、俺、咱、孩、姐、吃、哩、科、厮、拿、你、叫、呀、呵…
从上面的关键字来看,唐诗、宋词和元曲各自的特征很鲜明:
唐诗 :用字清澹高华、含蓄,诗味较浓,寄情山水和金戈铁马的特征明显,可以联想到唐诗流派中典型的 山水田园派 和 盛唐边塞诗 ,它们大都反映大唐诗人志趣高远、投效报国的情怀。
宋词 :所用的字体现出婉约、宛转柔美,表现的多是儿女情长,生活点滴,这也难怪,由于长期以来词多趋于宛转柔美,人们便形成了以婉约为正宗的观念。
元曲 :所用的字生活气息浓重,通俗易懂、接地气、诙谐、洒脱和率真,充分反映了其民间戏曲的特征,这与蒙元治下的汉族知识分子被打压,很多文人郁郁不得志、转入到民间戏曲的创作中来有关。
此外,正上方的“复合”中,表征的是三者皆常用的字,即共性特征,主要涉及 写景 (如 “晴”、“幽”、“溪”、“洲”、“霜”、“浦”、“露”、 “碧”、“帆”、“峰”等)和 抒情 (等“怅”、“忆”、“寂”、“悠”等)。
下方的两个象限,“Not 唐诗”和“Not 宋词”分别代表的“宋词+元曲”、“唐诗+元曲”,三者之二的共性高频字,中的两项也以此类推。
一、一般处理流程
语料获取 -> 文本预处理 -> 特征工程 -> 特征选择
1、语料获取
即需要处理的数据及用于模型训练的语料。
数据源可能来自网上爬取、资料积累、语料转换、OCR转换等,格式可能比较混乱。需要将url、时间、符号等无意义内容去除,留下质量相对较高的非结构化数据。
2、文本预处理
将含杂质、无序、不标准的自然语言文本转化为规则、易处理、标准的结构化文本。
①处理标点符号
可通过正则判定、现有工具(zhon包)等方式筛选清理标点符号。
②分词
将连续的自然语言文本,切分成具有语义合理性和完整性的词汇序列的过程。
一般看来英文较容易可通过空格符号分词,中文相对复杂,参考结巴分词、盘古分词、Ansj等工具。
常见的分词算法有:基于字符串匹配的分词方法、基于理解的分词方法、基于统计的分词方法和基于规则的分词方法,每种方法下面对应许多具体的算法。
③词性标注
为自然语言文本中的每个词汇赋予一个词性的过程,如名词、动词、副词等。可以把每个单词(和它周围的一些额外的单词用于上下文)输入预先训练的词性分类模型。
常用隐马尔科夫模型、N 元模型、决策树
④stop word
英文中含大量 a、the、and,中文含大量 的、是、了、啊,这些语气词、助词没有明显的实际意义,反而容易造成识别偏差,可适当进行过滤。
⑤词形还原
偏向于英文中,单数/复数,主动/被动,现在进行时/过去时/将来时等,还原为原型。
⑥统计词频
因为一些频率过高/过低的词是无效的,对模型帮助很小,还会被当做噪声,做个词频统计用于停用词表。
⑦给单词赋予id
给每一个单词一个id,用于构建词典,并将原来的句子替换成id的表现形式
⑧依存句法分析
通过分析句子中词与词之间的依存关系,从而捕捉到词语的句法结构信息(如主谓、动宾、定中等结构关系),并使用树状结构来表示句子的句法结构信息(如主谓宾、定状补等)。
3、特征工程
做完语料预处理之后,接下来需要考虑如何把分词之后的字和词语表示成计算机能够计算的类型。
如果要计算我们至少需要把中文分词的字符串转换成数字,确切的说应该是数学中的向量。有两种常用的表示模型分别是词袋模型和词向量。
①词向量
词向量是将字、词语转换成向量矩阵的计算模型。目前为止最常用的词表示方法是 One-hot,这种方法把每个词表示为一个很长的向量。
②词袋模型
即不考虑词语原本在句子中的顺序,直接将每一个词语或者符号统一放置在一个集合(如 list),然后按照计数的方式对出现的次数进行统计。统计词频这只是最基本的方式,TF-IDF 是词袋模型的一个经典用法。
常用的表示模型有:词袋模型(Bag of Word, BOW),比如:TF-IDF 算法;词向量,比如 one-hot 算法、word2vec 算法等。
4、特征选择
在文本挖掘相关问题中,特征工程也是必不可少的。在一个实际问题中,构造好的特征向量,是要选择合适的、表达能力强的特征。
举个自然语言处理中的例子来说,我们想衡量like这个词的极性(正向情感还是负向情感)。我们可以预先挑选一些正向情感的词,比如good。然后我们算like跟good的PMI,用到点互信息PMI这个指标来衡量两个事物之间的相关性。
特征选择是一个很有挑战的过程,更多的依赖于经验和专业知识,并且有很多现成的算法来进行特征的选择。目前,常见的特征选择方法主要有 DF、 MI、 IG、 CHI、WLLR、WFO 六种。
5、模型训练
在特征向量选择好了以后,接下来要做的事情是根据应用需求来训练模型,我们使用不同的模型,传统的有监督和无监督等机器学习模型,如 KNN、SVM、Naive Bayes、决策树、GBDT、K-means 等模型;深度学习模型比如 CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN 等。这些模型在分类、聚类、神经序列、情感分析等应用中都会用到。
当选择好模型后,则进行模型训练,其中包括了模型微调等。在模型训练的过程中要注意由于在训练集上表现很好,但在测试集上表现很差的过拟合问题以及模型不能很好地拟合数据的欠拟合问题。同时,也要防止出现梯度消失和梯度爆炸问题。
6、模型评估
在机器学习、数据挖掘、推荐系统完成建模之后,需要对模型的效果做评价。模型的评价指标主要有:错误率、精准度、准确率、召回率、F1 值、ROC 曲线、AUC 曲线等。
7、投产上线
模型的投产上线方式主要有两种:一种是线下训练模型,然后将模型进行线上部署提供服务;另一种是在线训练模型,在线训练完成后将模型 pickle 持久化,提供对外服务。
三、NLP应用方向
1、命名实体识别
指识别自然语言文本中具有特定意义的实体,主要包括人名、地名、机构名、时间日期等。
传统机器学习算法主要有HMM和CRF,深度学习常用QRNN、LSTM,当前主流的是基于bert的NER。
2、情感分析
文本情感分析和观点挖掘(Sentiment Analysis),又称意见挖掘(Opinion Mining)是自然语言处理领域的一个重要研究方向。简单而言,是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。
情感分析技术可以分为两类,一类是基于机器学习的方法,通过大量有标注、无标注的主观语料,使用统计机器学习算法,通过提取特征,进行文本情感分析。另一类是基于情感词典的方法,根据情感词典所提供的词的情感极性(正向、负向),从而进行不同粒度的(词语、短语、属性、句子、篇章)下的文本情感分析。
3、文章标签
文章标签是利用机器学习算法,对文章进行文字和语义的分析后,提取出若干个重要的词或者短语(关键短语)。关键短语是NLP基础的算法模块,有了关键短语,能为后续的搜索、推荐等更高级的应用提供有力的抓手。
适用场景:1、个性化推荐:通过对文章的标签计算,结合用户画像,精准的对用户进行个性化推荐;2、话题聚合:根据文章计算的标签,聚合相同标签的文章,便于用户对同一话题的文章进行全方位的信息阅读;3、搜索:使用中心词可以对query进行相似度计算、聚类、改写等,可以用于搜索相关性计算。
4、案件串并
①信息抽取
运用实体抽取、关系抽取,从案情中抽取关键信息,如从警情中可以抽取报警人项目、报警人电话、案发地址等信息
②实体对齐
相同的实体在不同的案情中会有不同的表述,会给串并带来困难。可针对地址、人名、组织名进行对齐处理。
③文本聚类
对于关键片段类信息,无法像实体那样对齐,需要借助文本聚类技术进行关联。
④构建图谱
将信息抽取结果存入图谱。每个警情id对应一个节点,实体、属性、关键片段作为节点,对齐的实体、同一类的文本存为同一个节点。
除了来自于从警情中抽取的信息,还可以将其他警务系统中存在的结构化数据导入(如来自户籍信息的人物关系),从而丰富图谱。
⑤图谱检索
完成以上工作,即完成了案件串并的必要基础建设,接下来通过图谱的查询功能自动完成案件的串并。首先需要设定串并的条件,案件串并的条件在警务实战中已有很多的积累,如“具有相似的作案手段”,又如“相似作案手段,嫌疑人有共同联系人”,只需要将这些条件用图谱查询语言表达出来。
**中的2001与现实中的1969
无论是光怪陆离的的星际穿越,还是颓垣败井的废土世界,科幻**架空的时空,一直在努力营造距离感和割裂感拉长时间维度,将观众迅速带入科幻世界。不过,正如火爆的《头号玩家》,科幻**的最大价值在于天马行空描绘出可以跨越银幕的硬核科幻,人工智能,作为硬科幻**的宠儿,充当了填补观众探寻未来意义心理沟壑的润滑剂。
自1965年正式提出人工智能算起,50多年,AI在好莱坞**和现实中都取得了长足进步。尤其是大银幕上,以梦工厂为代表的**制作公司,塑造了无数出神入化的AI形象,成为普罗大众对科技崇拜的源泉所在,满足了人类对未知生活方式的向往。
一定程度上,科幻**也成为科技行业的启蒙者,移动电话之父马丁库帕就承认,他发明第一台移动电话正是受了《星际迷航》中“通讯器”(communicator)的启发。正如迪斯尼动画**中,总会有一个捧哏的话唠动物角色,人工智能机器人也是科幻**的标配。伴随着**塑造的经典AI根深蒂固形象,人工智能被视为下一个从银幕上走出来的科技。
《星际迷航》中的通讯器
**2001年:人工智能飞船迈向木星
现实1969年:登月飞船算力不如手机
1968年一部被誉为““现代科幻**技术的里程碑”的**横空出世,这就是《2001漫游太空》,**将未来锁定在了33年后的2001年,“发现一号”太空飞船向木星进发执行太空任务。除了飞行员和宇航员,还有一台具有人工智能、掌控飞船的电脑哈尔9000,哈尔9000被设定为一个永远不需要关机,从不出错的人工智能形象,它可以用自然语言沟通,带有人类情感和趋利避害的生物属性。
哈尔9000(引自网络)
哈尔的声音温和友善,让人产生发自内心的暖意,在茫茫太空孤独旅行,它也成为了人类最好的交流伙伴。
影片大篇幅展示了2001年人工智能哈尔与人类的互动,比如与鲍曼下国际象棋并轻松赢了对方。它可以毫无障碍的理解人类的语言和情感,甚至能够在人类躲着自己谈话的时候,读出唇语。在得知自己会被强行关机之后,哈尔还能够作出先发制人的反应。最终,在杀死三位宇航员之后,哈尔被男主拔出了记忆板。
哈尔与人类下国际象棋(引自网络)
这部**展现了人们对2001年的畅想,尽管我们距离“未来”已经过去17年,人类仍未实现随心所欲的漫游太空,但当时一些接近想象力巅峰的预测已经实现。比如**出现的iPad、视频通话的雏型已经普遍使用,甚至iPod的名字都源于**维修小飞船的名字Pod。
视频通话(引自网络)
**中iPad的原型(引自网络)
而哈尔作为人工智能的雏型也给我们留下了深刻的印象,包括Siri在内的现有语音助手都是对哈尔的一脉相承。
值得一提的是,影片在上映几个月后,阿波罗11号登陆月球;26年以后的1997年,IBM深蓝超级计算机打败世界排名第一的国际象棋选手加里卡斯帕罗夫,让深埋**中的隐喻变为现实。
NASA登月导航计算机算力综合不如手机(引自NASA)
《2001漫游太空》寄托了人类开拓星球的思潮,但1968年的现实是,即便登月用的导航计算机主频也只有2.048MHz,所有登月电脑的性能加起来都不如现在一部手机的运算能力,更不用谈人工智能所需要的强大算力和海量数据的支撑。
80年代到90年代的很多**很少有揉入硬科幻的人工智能形象展现,无论是斯皮尔伯格的《人工智能》还是《机械公敌》、《月球》、《银河系漫游指南》AI 机器人 Marvin,**更多的是披着科幻外衣去对人性复杂的探讨,鲜有以科技或科学猜想推动情节。
**《人工智能》(引自网络)
集中在2013年到2014年上映的几部**,开始继续从硬科幻的角度探讨人工智能,与此前天马行空的机器人相比,这些人工智能形象更加超前,但也更加接近现实。
**中的2025与现实中的2016
**2025年:手机女友成为现实
现实2016年:语音识别与人类打平
《星际穿越》大量展示了虫洞、黑洞、多维空间以及广袤的星际旅行场景,诺兰导演甚至邀请到了天体物理领域的顶尖大牛基普索恩担任影片的科学顾问,保证了影片科幻属性足够硬。TARS作为智能机器人的出现带给观众很多亮眼之处。
《星际穿越》中的智能机器人(引自互联网)
在**中,TARS会说话能思考,甚至能够麻溜利索的变形在滔天巨浪扑来之前拯救安妮海瑟薇。在解密引力之谜甚至在五维空间里,TARS都以恪尽职守的高级助理形象出现,高效完成任务指令,可以说缺少TARS,人类的智慧无法完成这项艰巨的太空任务。而重建TARS时,那个幽默度的桥段让冰冷的机器形象多了一份人性。
《星际穿越》中的智能机器人(引自互联网)
观众偏爱TARS,更多在于,相比于无所不能的机器人,TARS没有被设定为拟人形象,不锈钢拼接起来的外观更符合人类世界设定下的工业产品,与现实更接近。
而约翰尼德普在《超验骇客》的人工智能突破就显得惊世骇俗,你能想象有一天你的躯体死去精神意识却被保留在互联网上,而且可以无所不能,《超验骇客》打造的一流的科幻概念超越了很多硬科幻设定的范畴,将我们能想象到的人工智能进一步升级,以去实体化的虚拟形态存在。
**《超验骇客》(引自互联网)
在**中,生化形态的人工智能高概念让德普无所不能,与此同时去中心化的生存方式让他无处不在,如同正在火热的区块链,这种繁衍形态让传统势力很难通过拔电源将其消灭。
**《超验骇客》(引自互联网)
如果说《星际穿越》和《超验骇客》还距离我们认为的人工智能太远,**《Her》所打造的智能环境简直是死宅单身狗的天堂。故事发生在17年以后的2025年,内向宅男西奥多托姆布里遭遇分手后,寻求一款叫做OS1的智能操作系统聊以慰藉,操作系统化身为一名叫做萨曼莎的“女性”(斯嘉丽约翰逊声),她风趣幽默又善解人意,她学习和进化的速度让西奥多感到不可思议,甚至能够帮助以写情书为本职工作的男主检查拼写和语法。
**《Her》(引自网络)
萨曼莎脱胎于类似苹果HomePod/亚马逊Echo这样的智能音响,以机器人女友的形象对外展示,并以卡片机的终端对外销售。OS1所代表的人工智能比17年前的智能音响有了长足的进步,它所有的交互通过自然语言完成,背后有一套完成的养成逻辑,依靠语音、图像识别和神经网络算法,能够与用户沟通迅速成长,并依靠与数千名用户“谈恋爱”不断进化,达成完美情侣,可以说这一形象几乎满足了人类对未来智能伴侣的所有想象。无疑,在众多人工智能形象中,OS1更接近我们真实生活。
OS1帮助男主检查语法和错别字(引自网络)
值得一提的是,法国计算机科学家 Pierre 受**中 AI 作音乐的启发,研制了一款先进的能作曲的 AI —— Avia,不仅所作曲子出了专辑,应用到重要庆典、NVIDIA GTC 2017中,而且 Avia 还成了国际作曲家。
OS1的终端形态更像目前的智能手机(引自网络)
这是观众的反馈,同时也有这足够牢固的现实基础。OS1有着足够强大的算法和硬件配套,与现实生活中的智能音箱相同的交互逻辑和演化路线,增强了用户的认同感。
从亚马逊Echo到OS1还有17年的路要走。
单拿语音识别来说,从1952年贝尔实验室研制了第一个可十个英文数字的特定人语音增强系统一Audry系统,到2016年微软发表论文称语音识别上的技术已经高于专业的人工速记员,达到了与人类同等交流对话的水平,中间走了64年。这背后涉及到的卷积神经网络及LSTM神经网络,以及自由格人机界面听觉训练虽非易事,但我们有理由相信17年以后的Echo就是OS1的原型机。
从2001年走到2025年,科幻**所塑造的人工智能形象愈发保守,好莱坞**开始通过与现实接轨的方式应对观众的审美疲劳。对应到现实世界,人类的人工智能则来到了一个集中爆发的阶段。在看过了无数个哈尔、Marvin、TARS之后,我们也正在按照**中的酷炫思路打造活生生的人工智能。
比如AlphaGo,它是第一个击败人类职业围棋选手、第一个战胜围棋世界冠军的人工智能程序,和IBM的深蓝超级电脑有着同样举足轻重的意义,意味着人工智能的时代从**银幕走到现实中来。
人工智能对弈围棋(引自谷歌)
Google的AI法宝还不止有AlphaGo,引入NMT神经网络的Google翻译、会主动管理照片的Google Photo、像OS1跟你聊天的Google Allo、语音助手Google Assistant以及更帮你看到东西的Google Lens都是Google组装一款超级人工智能终端的模块化产品。
而这一切模块化产品都可以组装在一款智能手机上,尤其是5G网络带来的速度和数据支撑,被认为是人工智能最终爆发增长的终端。随着移动设备的增加,数据也逐渐海量,尤其是5G时代,大数据的支撑,让人工智能有了爆发基础。
手机中Siri曾经被视为人工智能在现实中的形象,但烂尾的效果最终让Siri成为众人调侃的形象,甚至对消费者对人工智能产生了负面影响,据一份2016年的调查显示,只有3%的用户在公共场合使用过Siri,如此尴尬的数据以至于最后库克不得不连夜从Google挖人。
手机人工智能初探
4月4日,苹果公司宣布,前一天离职的谷歌前搜索兼AI高级副总裁John Giannandrea(约翰詹南德雷)加入苹果,担任“机器学习及人工智能战略”总负责人,成为苹果第16位核心管理层高管,直接向CEO库克汇报。急切的挖人举动让苹果的AI焦虑一览无遗。
吾家有AI初长成 Jovi初探银幕梦想
除了苹果,赶赴人工智能这波浪潮的手机公司大有所在,并开始为人工智能打造形象,这里面还包括打造AI品牌Jovi的vivo,Jovi和哈尔、TARS、Alexa一样,是驻留在智能手机中的人工智能。
现在Jovi虽然只是探索AI的第一阶段,但却为人工智能提供了很好的演化路径。背靠骁龙AIE(人工智能引擎),以骁龙神经处理引擎(NPE)软件框架和神经网络(NN)库为接口的异构计算方案。其具有广泛接纳性的逻辑,极高的兼容性,精准而庞大的计算力,成为了Jovi AI的推动力,并为消费者量身打造实现智能场景应用的vivo X21手机。
vivo打造的人工智能想象Jovi
功能上Jovi 助理拥有系统全局级的智慧识屏功能,可以让用户的所有操作节点智能化,替代繁琐重复甚至需要思考的操作,让我们可以高效管理生活和工作事物。比如在界面中长按一段文字即可触发识屏功能,该功能会快速识别并智能提取用户长按的文字信息,然后用户就可以就此信息进行快速查阅/扩展及相关操作。
Jovi人工智能
AI应用到相机,Jovi则可以自动识别你的肤质、肤色、性别、年龄,并且会学习你的使用习惯,在你每次自拍的时候为你选择一种最适合的美颜效果。回望2001年的哈尔,Jovi正在替代它的角色,只不过不是在宇宙飞船,而是一个普通人的生活起居,你定了车票、机票,它会提醒你时间、目的地天气和机场路况;你上网购买了快递,它会告诉你快递单号是多少并一键帮你快速查询物流;如果你喜欢看球赛,它会帮你跟踪欧冠和NBA赛事;它能在你出行前,为你安排行程。
Jovi人工智能
我们可能习惯了手机作为一个冰冷的连通机器,但Jovi赋予了机器血肉,Jovi能够不断地学习,就像是一个有血有肉的伙伴一样,认识越久就越懂你的需求,随时给你最好的生活建议,并打理好了生活的一切。
未来,你和手机不再是简单的交互,而是养成关系,Jovi所代表的人工智能可以被养成高效贴心的商务管家,也可以被养成为体贴入微的女友。它不会随着你更换设备而丢失,正如《超验骇客》中的德普一样,跟随互联网随遇而安。现在Jovi所代表的手机人工智能,正在朝《Her》中的2025年走去。
尽管霍金临终前曾警告人类要警惕人工智能,但他仍然承认“创造AI的成功可能是我们人类文明历史上最大的事件,我们生活的每一方面都会因为人工智能改变。”
我们会在“绿洲”里汇聚,还是在2049相遇
时间随着**往前走,在《银翼杀手2049》中的2049年,城市已经失控并崩溃。虚拟人工智能乔伊成为复制人K慰藉的对象,在2049年依靠全息投影投射成像的虚拟人可以随意出售,除了没有实体,她已经完全和人类无异,情商智商超高也更为体贴,成为不少宅男倾慕的对象。
**(银翼杀手2049)中的虚拟投射人工智能(引自网络)
作为一款成熟的人工智能产品,我们在**里见证了乔伊从机械装置投影到投影设备移动化全新升级的过程。尽管很多人认为复制人是鬼扯,但这个投射装置的升级让不少人认为在2049年更容易实现。距离2049还有21年,依靠现有的人工智能基础,我们相信乔伊真的有可能在2049年从银幕走出来与我们相遇。
可移动版乔伊(引自网络)
无独有偶,斯皮尔伯格在《头号玩家》中也将2045年设定为世界崩溃的边缘,眼花缭乱的VR世界让快要凉了的VR厂商起死回生,终于有了用例可以背书。人工智能也好,VR也好,都是科技高速发展的终极产物,或许那天世界依旧运转良好,我们和朋友在“绿洲”里相聚,回家在2049里缠绵。
艺术来源于生活而高于生活,科幻**则完全源于天马行空的想象,科幻与现实看似两条平行的世界,我们深信二者的时间线和想象力最终会因为不懈努力在未来交汇在一起,这一天我想并不遥远。
1 DL在圈内的意思
DL是“Deep Learning”的缩写,意为“深度学习”,是一种机器学习的分支。与传统的机器学习算法相比,深度学习算法具有更强的模拟人脑神经网络的能力,能够在海量数据的基础上进行学习和预测。因此,在人工智能领域,DL被广泛应用于图像、语音、自然语言处理等多个领域。
2 DL的应用范围
从图像识别、语音识别到自然语言处理,DL被广泛应用于多个领域。在图像识别方面,DL可以通过卷积神经网络(CNN)进行图像分类、识别、检测等任务。在语音识别方面,DL可以通过循环神经网络(RNN)进行语音识别、语音转换等任务。在自然语言处理方面,DL可以通过递归神经网络(RNN)和长短时记忆网络(LSTM)进行文本分类、情感分析、机器翻译等任务。
3 DL的发展历程
深度学习在机器学习领域已经有数十年的历史。20世纪80年代,BP神经网络为基础的深度学习方法被应用于字符识别等任务。但是,由于计算机性能和数据量的限制等原因,深度学习并没有达到预期的效果。然而,随着大数据时代的到来,计算机性能的提高,深度学习又重新回到人们的视野中。在2012年,Alex Krizhevsky等人在ImageNet图像识别比赛中使用CNN算法,实现了前所未有的准确率,成为了深度学习的一个重要里程碑。
4 DL的发展趋势
DL作为机器学习领域的重要分支,正在不断地发展和完善。未来,DL将会更加注重在实际应用中的落地。同时,DL也将会与其他技术深度融合,例如区块链、物联网、大数据等,共同构建一个智能化的世界。此外,随着算法的不断改进和硬件的不断更新,DL的计算速度和算法效率将会持续提升,为人工智能技术的发展提供更加强大的支持。
5 DL的优缺点
DL作为一项重要的技术,具有许多优点,例如模型的自适应、预测能力强、处理海量数据等。但是,DL也存在一些缺点,例如算法较为复杂、数据依赖性强、模型可解释性较差等。因此,在使用DL技术的过程中需谨慎对待,避免其带来的负面影响。
6 DL在企业中的应用
随着计算机性能的提高和算法的不断发展,越来越多的企业开始采用DL技术。例如,谷歌基于DL技术研发的AlphaGo在围棋领域取得了重大突破;苹果采用DL技术提高了Siri语音助手的智能化水平;阿里巴巴将DL技术应用于物流管理、欺诈识别等多个领域。可以看出,DL已经在企业的智能化转型中扮演了重要的角色,未来也将会有更多的企业采用这项技术。
7 如何学习DL
学习DL需要具备一定的数学基础和编程能力,不过并不需要过于高深的数学背景,也不需要对向量、矩阵、微积分等数学内容有深入的理解。此外,对于初学者来说,选择合适的教材和在线课程也尤其重要。可以选择一些国内外知名的机构提供的课程,例如斯坦福大学的公开课、李宏毅老师的中文课程等。同时,开源社区中也有很多优秀的教程和代码,可以加快学习的速度。
8 小结
DL作为机器学习领域的重要分支,在图像、语音、自然语言处理等多个领域都有着广泛的应用。未来,DL还将会与其他技术深度融合,共同构建一个智能化的世界。虽然DL具有许多优点,但也需要注意其带来的潜在影响和缺点。因此,在学习和应用DL技术时,需要谨慎对待,掌握其核心理论和实际应用方法。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)