第5章 基于句子语义与Self-Atention 机制的中文和英文NER 模 型 5.概述 1 .................... 目前大多数命名实体识别模型通过上下文编码器(如LSTM和CNN等)获得的词的 上下文状态表示,来预测最终的实体标签。尽管这些词可以学习到当前的上下文信息,但 是这些词在句子中的语义信息仍然很贫乏。因此,在本章探索了一个携带句子语义信息 的句子表示模型。通过将上下文词表示与句子表示进行拼接,使得每个词能获得丰富的 语义信息,更好地进行实体标签预测。除此之外,还在模型中应用了Self-Atention机 制,Self-Atention可以直接捕捉句子中任意两个词的长距离依赖,更好的捕捉整个句子 的全局依赖。本章所提出的模型不仅适用于英文数据集,同时也适用于中文数据集。 本章中模型的介绍总体分为6个部分:模型的总体结构、词嵌入层、第一层 BiLSTM 、Self-Atention层、词隐状态与句子级向量结合部分、第二层BiLSTM 。下面将 分别详细介绍。 5.模型的总体结构 2 .............................. 本章所提出的模型主要结合句子特征表示进行中文和英文的命名实体识别,同时还 利用了SefAteto1描述 l-nin机制来更好地捕获任意两个词之间长距离依赖关系。图5. 了该模型的整体结构,词嵌入通过第一层BiLSTM获得词的隐状态向量表示和句子的向 量表示;然后词隐状态会送入到Self-Atention层增强捕获词之间关系的能力;最后将词 隐状态拼接上句子级向量后送入到第二层的BiLSTM得到最终的隐状态向量以进行标 签预测。考虑相邻标签之间的交互信息是很有限的,例如,标签I-PER不可能跟在 B-LOC的后面。因此,最后使用CRF层联合地解码标签序列,CRF使得模型从所有可能 的标签序列中找到最优路径。 第 5 章基于句子语义与Self-Attention 机制的中文和英文NER 模型 图5.基于句子语义与Sn机制的NER 模型 1 elf-Atentio 5.词嵌入层 3 ........................ 模型的第一步是将每一个输入的词或字符映射到分布式表示空间,它是低维稠密的 向量表示空间,能够捕捉单词的语义和句法特性,由于本章节使用了中文和英文两个数据 集,所以中文和英文的词嵌入层会因为语言特性而不同。 3.英文词嵌入层 5.1 在英文命名实体识别任务上,词嵌入通常会由词级向量与字符级向量组成。根据以 往的工作[26],使用预训练的词向量要比使用随机初始化的词向量能够获得很大性能的提 升。因此,本章使用斯坦福大学[11]预训练好的公共可用的300维词向量作为词级向量。 此外,不同的英文单词有表面或形态的相似性。例如,具有规则前后缀的单词可以共享一 些字符级的特征。因此,使用字符级特征去处理未登录词。首先,采用BiLSTM建立字 符级向量表示模型,公式为 h→ l=LSTM(hl→1) 5 ci,-(1) ci,← ) (52) h← l=LSTM(hl+1 hc=[hf (-3) h→1;←] 5 其中:表示一个字符序列() f 代表字符序列的长度;和hl 45 分 c2,…,中的某一个;→← cic1,cf hl 面向共融机器人的自然交互———命名实体识别与关系抽取 别是前向LSTM 与反向LSTM 的隐状态向量;hc 是最终要获得的字符级向量。 除此之外,本章还将研究如何使用CNN 去构建字符级向量表示模型。CNN 在计算 机视觉中已经有了广泛的应用。假如要识别一张分辨率为64×64 的小图像是猫还是狗, 第一步是要把它输入到模型中,实际上它的输入数量是64×64×3,因为每张图像都有3 个颜色通道,最后输入到模型中的特征维度是12288 。这还只是一张64×64 的小图像, 一般的图像都要比它大。例如,一张1000×1000 的图像,它的特征维度达到了300 万,如 果使用全连接层进行建模,在模型的第一个隐藏层中假如有1000 个隐藏单元,参数矩阵 大小将会是1000×300 万,会有30 亿个参数进行训练更新,这还只是一个隐藏层,在实际 情况中,往往会有多个隐藏层,这是一个无比庞大的数据量。在如此大量参数的情况下, 难以捕获足够多的数据来防止神经网络过拟合问题。此外,庞大的参数里所需求的巨大 内存也让人无法接受。CNN 避免了对参数的过度依赖,减少大量参数,相比于全连接神 经网络,能更好地识别超大图像。 文本卷积与图像上的卷积有所不同,首先是滤波器的大小,图像上滤波器的大小一般 是n×n,是一个正方形,而在文本上一般是i×j,其中 j 是词向量的维度。在文本上滤波 器是沿着句子中词的方向滑动,获得的是一个N-gr2描述了基于 am 局部特征。图5. CNN 生成字符级向量表示的过程。每个单词被分解为单个字符,模型的输入是一个字符 序列。首先使用一个一维卷积层为每个字符捕捉与其相邻字符的信息,本质是获得字符 N-gram 特征。不同的滤波器大小可以获得不同种类的上下文信息c。然后,在卷积的 结果上应用一个max-over-time 池化层获得当前滤波器特征gi。这种池(i) 化操作就是简单 地从之前一维的特征中提取一个最大值,代表着最重要的信号或信息。此外,还可以解决 可变长度的句子输入问题,因为不管有多少个特征值,只提取其中的最大值。最后,通过 不同尺寸滤波器所获得的不同特征进行拼接作为最后词的字符级表示hc ,公式如下。 k v([ k ,…,i,…,]) ( mi=conci-cci+5-4) 22 gi=pooling([m1,m2,…,mf ]) (5-5) hc=g1;g( [g2;…;] 56) 其中: k 是滤波器的尺寸大小; o 是滤波器种类(o) 的数量。 3.中文词嵌入层 5.2 与英文不同,中文由于缺乏天然的分隔符所以输入和分词有很大的关系。Peng 等[144]为中文命名实体识别提出了3种嵌入方法:词嵌入、字嵌入和字位置嵌入。相关最 新的研究成果[145]分析了在中文NLP 中是否需要分词,文中指出了分词的缺点。首先, 词数据比较稀疏容易导致过拟合,而且大量的未登录词限制了模型的学习能力。其次,分 46 词方法众多且不统一和分词效果不佳,错误的分词可能会对下游任务的使用产生错误的 第 5 章基于句子语义与Self-Attention 机制的中文和英文NER 模型 图5.基于CNN 字符级表示模型 2 影响,从而使得最终模型的性能不佳。最后,分词所带来的收益并不明确,尽管站在人的 角度直观观察,词所带的语义信息要比字更加丰富,但是对于神经网络而言,词不一定有 利于提高表现。上述相关论文中在4个NLP任务上分别对词级别和字级别的模型进行 了实验得出以下结论。首先,在神经网络模型下进行中文NLP任务,字级别的表现几乎 总是优于词级别的表现。其次,对于大多数中文NLP任务不需要额外的分词。最后,对 于部分任务而言,单使用字级别表示就可以达到最佳的表现,加入词会适得其反,有负作 用。因此,使用预训练中文100维字向量作为模型的输入。 5.4 Self-Atention机制 ................................ 相比较于RNN,BiLSTM可以处理一些较长的句子,然而当句子长度越长,距离越远 的词之间的依赖信息就越少,因此,词之间距离上的依赖信息并没有被很好地捕捉。Self- Atention不管它们之间的距离如何,可以直接捕捉句子中两个词之间的关系,同时也可 以很好的捕捉句子中句法和语义特征,这对BiLSTM来说是一个很好的补充。 47 面向共融机器人的自然交互———命名实体识别与关系抽取 5.1 Anin机制 4. teto Atention机制是对于某个时刻的输出y,它在输入 x 上的各个部分上的注意力,这 里的注意力也就是权重,是输入 x 的各个部分对某时刻输出 y 贡献的权重。Atention 的起源借鉴了人的注意力模式,通常人类在观察一张图像时会通过快速扫描全局图像获 得需要重点关注的目标区域,这叫作注意力焦点。人会对注意力焦点投入更多的精力以 获得关注目标的更多、更细致的信息,抑制其他无用的信息。这种注意力模式利用有限的 资源从大量的信息中筛选出高价值有用的信息,极大地提升了信息处理的效率与准确性。 深度学习的注意力机制本质上与人类的注意力机制相似,核心目标也是从大量信息中选 取对当前任务最有价值的信息。目前大多数Atention模型附着在Encoder-Decoder框 架下,这种框架可以看作是一种深度学习模式,应用场景很广泛。 图5.3是一种文本领域常用的Encoder-Decoder框架,可以把它看作输入一个句子生 成另外一个句子,即句子对(Source,Target),在机器翻译任务上,Source和Target可以 是不同的语言。假设输入句子Source为(x1,x2,…,xm ),Target为(y1,y2,…,ym )。 Encoder就是对输入句子Source编码,进行非线性转换为中间语义向量表示 C 的公式为 其中: f 是非线性转换函数。 C =f(x1,x2,…,xm ) (5-7) 图5.文本领域的Er框架 3 ncoder-Decode Decoder根据Source的中间语义向量表示 C 和已经生成的y1,y2,…,yi-1来生成 yi,其公式为 yi=.(C,y1,y2,…,yi-1) (5-8) 其中:.与 f 类似,是非线性转换函数。 如果没有引入Atention机制时,无论生成目标句子Target中的哪个词,它们使用的 48 第5 章 基于句子语义与Self-Attention 机制的中文和英文NER 模型 49 输入句子Source的语义编码C 都是一样的。但是,Source中的任意单词xi 对生成目标 单词yi 来说影响力是不同的。这类似于人类观察图像时,人眼中没有注意力焦点一样。 以机器翻译为例,输入句子Source为“TomchasesJerry”,目标句子Target为“汤姆追逐 杰瑞”。在没有引入Attention时,翻译“杰瑞”这个单词时Source中每个英文单词对“杰 瑞”的影响是相同的,这显然是不合理的,Jerry一词对于翻译“杰瑞”应该更重要。在引入 了Attention机制之后,会体现出英文单词对于翻译当前中文单词不同的影响程度。当 翻译“杰瑞”时,注意力机制会给不同的英文单词分配不同的注意力权重,对正确翻译当前 词有很大的积极作用。这意味着生成每个目标词yi 时,由之前固定的中间语义表示C 换成了根据当前输入词不断变化的语义表示Ci。生成目标单词过程如下。 y1 =.(C1) (5-9) y2 =.(C2,y1) (5-10) y3 =.(C3,y1,y2) (5-11) 每个Ci 对应着不用Source中单词的注意力权重,公式为 Ci =ΣLx j=1 aijhj (5-12) 其中:Lx 代表输入句子Source的长度;aij代表Target输出第i 个单词时Source中第j 个单词的注意力权重;hj 是Source中第j 个单词的语义编码。 把Attention机制进一步抽象,其本质思想如图5.4所示,可以看出将Source中的元 素变成(Key,Value)数据对,一般情况下Key 等于Value存储在Source中的元素。 Target中的元素为Query,给定一个Query,通过计算Query与各个Key之间的相似性 得到Key对应Value的权重系数,最后对Value进行加权求和,得到最终的Attention数 值,其公式为 Attention(Q,K,V)=SoftmaxQKT dk . è . . .÷V (5-13) 其中:Q、K 和V 分别是Query、Key和Value的缩写;dk 是一个调节因子,保证内积不 会太大。Attention机制的计算过程可以分为三步。首先,根据Query与各个Key的内 积计算它们之间的相似性。其次,引入Softmax函数对内积结果进行归一化,将原始数 值变成所有数值之和为1的概率分布,此外,根据Softmax特有的机制能更加突显出重要 元素的权重。最后,根据得到的权重系数对Value进行加权求和。 现在大多数Attention 机制的计算方法都是根据以上3 个步骤求出Query 的 Attention数值。 5.4.2 Multi-HeadAttention 如图5.5所示,Multi-HeadAttention[21]是谷歌公司提出的概念,是Attention的提 面向共融机器人的自然交互———命名实体识别与关系抽取 图5.n机制的本质思想 4 Atentio 升版。其原理很简单,就是把Q、 K 和 V 通过参数矩阵进行线性映射,然后再做 Atention,这个过程重复 h 次,最后把 h 个Atention结果拼接在一起再一次通过参数矩 阵进行映射得到一个新的向量表示,公式如下。 hednin(QWQKWK VWV (514) ai=Atetoi , i , i ) - MultiHead(Q,K,V)=Concat(head1,head2,…,headh )WO (5-15) 其中: h 是Atention重复地次数,也是head的数量;WQ、WK 、WV 和WO 是可训练的参 i 数。Multi-Head就是多做了几次同样的事情,参数不共享,之后(i) 把结(i) 果进行拼接。 图5.n模型 5 Multi-HeadAtentio 5.4.3 Self-Atention Self-Atention即自注意力或称作内部注意力,它是一种特殊的Atention机制,输入 序列即输出序列,在序列内部做Atention,计算序列对其本身的Atention权重,寻找序 50 列内部的联系。Query=Key=Value,即Atention(X,X,X),最后的输出就是 Y = 第 5 章基于句子语义与Self-Attention 机制的中文和英文NER 模型 MultiHead(X,X,X)。 5.句子表示模型 5 .......................... 尽管双向LSTM 可以学到当前词的上下文信息,但是当前词的全局语义信息仍然很 贫乏。本节重点探索了两个具有全局语义信息的句子表示模型,分别是基于双向LSTM 的句子表示模型和基于多通道卷积神经网络的句子表示模型。将句子表示与经过 BiLSTM 获得的上下文词状态进行连接可以很好地利用全局上下文信息。 5.1 基于双向LSTM 的句子表示模型 5. 图5.输入是句子中的词序 6描述了基于双向LSTM 神经网络生成句子表示的过程, 列,每个词被前向的LSTM 与反向的LSTM 分别捕捉过去和未来的信息,最后,每个方 向的LSTM 隐状态连接在一起生成句子表示,公式如下。 h→ l=LSTM(hl→1) ( xi,-516) xi,( h← l=LSTM(h← l+1) 517) =[→;←] (5-18) xi xn h→ l ← hS h1 hf 其中:表示输入句子(x2,…,中的一个词;和hl x1,) hSn 代表词序列的长度;分别是 前向LSTM 与反向LSTM 的隐状态向量;是最终要获得的句子级向量。 图5.基于双向LSTM 的句子表示模型 6 5.2 基于多通道CNN 的句子表示模型 5. 如何使用CNN 构建句子表示模型?CNN 编码句子通常需要使用一个通道结构,类 3. 似于5.1节中的字符卷积模型,使用一个1D卷积层生成一个句子表示,本节中还重点 51 面向共融机器人的自然交互———命名实体识别与关系抽取 研究了一个多通道CNN 用于建立句子的特征表示模型。如图5.嵌入层有两个通 7所示, 道,每个通道都是一组向量,第一个通道是字符级向量,第二个通道是词级向量。每个滤 波器应用到两个通道上捕捉相邻词信息,然后应用了max-pooling层选取一个最强信息 作为当前的句子表示。公式类似于5.1节中字符卷积公式,但模型输入有所不同。 3. kk xi,…,( mi=conv([xi-,…,xi+]) 5-19) 22 gi=pooling([m1,m2,…,mf ]) (5-20) =[g2;…;] ( hS g1;go 5-21) 其中: k 是滤波器的尺寸大小;gi 是不同种类滤波器获得的特 o 是滤波器种类的数量; 征;表示输入句子(x1,x2,…,)中的一个词;表示输入句子的句子级表示。 xi xn hS 图5.基于多通道CNN 的句子表示模型 7 5.实验与分析 6 ........................ 5.1 数据集 6. 为了评估本章所提出的NER 模型,在两个不同语言的数据集上进行了验证实验,分 别是CoNLL2003NER 英文数据集和OriginalWeiboNER 中文数据集。中文数据集来 自新浪微博数据,总共有4种实体类型:人名(person)、地名(location)、组织名 (organization)和地缘政治实体(geo-politicalentity)。训练集有1350 条句子,测试集有 270 条句子,验证集有270 条句子。英文数据集来自Reuters语料库的新闻数据组成,有 与中文数据集相同的4种实体类型。训练集有14987 条句子,测试集有3466 条句子,验 证集有3684 条句子。表5. 1列出了数据集的详细统计。 52 第 5 章基于句子语义与Self-Attention 机制的中文和英文NER 模型 表5.数据集统计 1 数据集类型训练集验证集测试集 句子14987 3466 3684 CoNLL2003NER 词203621 51362 46435 实体23499 5942 5648 句子1400 270 270 OriginalWeiboNER 字73800 14500 14800 实体1890 390 420 6.超参数 5.2 在英文任务上,词嵌入维度是300,字符嵌入维度是100,在模型训练过程进行微调。 字符级BiLSTM 的隐藏单元为150,词级BiLSTM 的隐藏单元为300 。采用Adam 优化 器,初始学习率为0.9。为了防止过拟合, 001,衰减率为0.在BiLSTM 隐藏单元处应用 drpu值为0.批次大小为20, pc如 oot, 5, 梯度裁剪为3。在总共100 个eoh的训练过程中, 果20 个epoch内的结果没有提升会提前终止训练。 在中文任务上,通过look-up表从预训练的字嵌入矩阵中获得每个字嵌入,其维度为 100 。BiLSTM 的隐藏单元为120,采用Adam 优化器,初始学习率为0.t值为 7。批次大小为20, 模型总共训练140 个eoh, 001,dropou 0. 梯度裁剪为5, pc采取F作为评价指标对 实验结果进行评测。 5.3 模型探索 6. 如5.2.1节所示,在英文NER 任务上探索了两个字符级表示模型,分别是Char- BiLSTM 和Char-CNN 。本章实现了一个Baseline模型:BiLSTM+CRF 。将Char- BiLSTM 和Char-CNN 分别和BiLSTM+CRF 结合,称之为BiLSTM+CRF+char- BiLSTM 和BiLSTM+CRF+char-CNN 。如表5. 2所示,不同的字符级表示模型在 CoNLL2003NER 数据集上模型性能比较。BiLSTM+CRF+char-CNN 是使用1个滤 波器大小为3的卷积层,BiLSTM+CRF+char-CNN(multi-size)是使用3个不同滤波器 大小的卷积层,kernelsize分别为3、4、5。通过实验结果观察,3个模型的实验结果大致 相同。尽管使用多个不同大小的滤波器CNN 可以捕获到不同种类的上下文信息,但是 这对构建字符级向量表示并没有太大的提升。此外,考虑到模型的复杂性与相对较小的 性能差距,使用char-BiLSTM 是一种安全的选择。因此,在英文NER 任务上使用 53