1. 引言
命名实体识别 [1] (Named Entity Recognition, NER)是自然语言处理(Natural Language Processing, NLP)基础性工作之一,它可以准确地从文本中识别出人名、机构名、地名、时间等信息,为信息检索、机器翻译、舆情分析等下游自然语言处理任务提供重要的特征信息。过去,命名实体识别任务多采用基于规则的方法、基于统计的方法和基于规则和统计相结合的方法 [2]。
近年来,深度神经网络在自然语言处理领域广泛地受到关注,与上述方法相比,基于深度神经网络的方法具有更强的泛化能力、对人工特征依赖较少的优点。因此,面向现代汉语和英语等大语种,研究者已提出了许多基于深度神经网络的命名实体识别模型 [3] - [18],但针对古汉语在这方面的研究才刚刚起步。
鉴于此,本文以《战国策》为例,根据古汉语独特的子语言特征,利用网格长短期记忆(Lattice LSTM)神经网络构建命名实体识别模型以解决古汉语中的信息提取问题。该方法将传统的LSTM单元改进为网格LSTM,在字模型的基础之上显性利用词与词序信息,从而避免了分词错误传递的问题。实验结果表明,Lattice LSTM能够学会从语境中自动找到所有与词典匹配的词汇,以取得较好的命名实体识别性能。在本研究构建的数据集上F1值达到92.16%。
2. 模型
在英文领域,第一个采用神经网络进行命名实体识别的是Hammerton等人,由于LSTM良好的序列建模能力,LSTM-CRF [19] 模型成为命名实体识别的基础架构之一,很多方法都是以LSTM-CRF为主体框架,在此之上融入各种相关特征。本文将LSTM-CRF作为主要网络结构,并且在该模型对一系列输入字符进行编码的同时将所有与词典匹配的词汇网格结构融入模型中。
一般将输入序列表示为
。其中,
代表第j个字符。本文中应用
表示索引j,代表第i个词的第k个字符。比如“医扁鹊”,索引从1开始,那么
(医),
(扁)。本研究运用BIO标注策略进行字粒度和词粒度的命名实体识别标注,古汉语命名实体识别的字序列和标记序列举例说明如表1所示。

Table 1. Examples of character sequence and label sequence in ancient Chinese named entity recognition
表1. 古汉语命名实体识别的字序列和标记序列举例
注:“O”是实体外部标记,“B”是实体开始标记,“I”是实体内部标记,“PER”表示人名,“POS”表示官职。
2.1. 基于字的模型
基于字的命名实体识别(见图1)存在一种缺陷,即无法充分利用词的显性以及词序信息。
2.2. 基于词的模型
基于词的模型见图4。
2.3. Lattice LSTM模型
本文利用Lattice LSTM [20] 来处理句子中的词汇词(lexicon word),从而将所有潜在词信息全部整合到基于字符的LSTM-CRF中,见图2。并使用一个自动获取的词典来匹配句子,进而构建基于词的Lattice,见图3。由于在网格中存在指数数量的单词到字符路径,因此使用Lattice LSTM结构来自动控制从句子的开头到结尾的信息流。门控单元用于将不同路径的信息动态的传输到每个字符。在训练数据集上训练后,Lattice LSTM能够学会从信息流中自动找到有用的词,从而提升命名实体识别性能,见图5。与基于字符和基于词的命名实体识别方法相比,本文采用的模型优势在于利用词汇的显性信息进行分词,而不是仅仅自动关注,从而减少分词误差。
2.4. LSTM层
RNN循环神经网络理论上可以处理任意长度的序列信息,但实际应用中,当序列过长时会出现梯度消失的问题,且很难学到长期依赖的特征。因此,Graves等人 [21] 改进了循环神经网络,提出长短期记忆网络(Long Short-Term Memory) LSTM模型。LSTM单元通过输入门、遗忘门和输出门来控制信息传递。它是一种特殊的RNN,能够学习长期的规律,应用十分广泛。LSTM编码单元如图6所示。
具体计算过程如公式(1)~(6)所示:
(1)
(2)
(3)
(4)
(5)
(6)
其中,
是sigmoid函数,
是点积。
为时刻t的输入向量,
是隐藏状态,也是输出向量,包含前面t时刻所有有效信息。
是一个更新门,控制信息流入下一个时刻;
是一个遗忘门,控制信息丢失;二者共同决定隐藏状态的输出。
3. 实验及结果分析
3.1. 实验数据
由于目前古汉语命名实体识别缺乏公开的标注数据集,因此本文人工构建了一个古汉语命名实体识别数据集。该数据集包括训练集、开发集、测试集,训练集共包含43.995 K个字,开发集包含5.843 K个字,测试集包含5.849 K个字。各类实体统计如表2所示。

Table 2. Statistics of entity number
表2. 实体个数统计
3.2. 标注策略与评价指标
命名实体识别的标注策略有BIO模式,BIOE模式,BIOES模式。本文采用的是BIO标注策略,其中B表示实体开始,I表示实体非开始部分。O表示不是实体的部分。在预测实体边界的时候需要同时预测实体类型,所以待预测的标签一共7种,分别是O,B-PER,I-PER,B-LOC,I-LOC,B-POS,I-POS。在测试过程中,只有当一个实体的边界和实体的类型完全正确时,才判断该实体预测正确。
命名实体识别的评价指标有精确率(P)、召回率(R)和F1值。具体定义如公式(7):Tp为模型识别正确的实体个数,Fp为模型识别到的不相关实体个数,Fn为相关实体但是模型没有检测到的个数。
(7)
3.3. 实验环境与超参设置
本研究中的实验环境为Python3.6,深度学习框架为Pytorch1.4.0神经网络超参的取值会影响神经网络的性能。本文的神经网络参数设定如表3所示。

Table 3. Neural network hyperparameter values
表3. 神经网络超参取值
3.4. 实验设计与结果
为了验证本研究中所使用的模型对古汉语命名实体识别数据集中的人名、地名、官职三大类实体的识别性能,本文分别采用三种神经网络模型设计了三个实验。其中主要实验模型为Lattice LSTM,对比实验模型为BiLSTM-CRF和BiLSTM-CNN-CRF。实验的评价指标有准确率(P)、召回率(R)和综合指标F1值。各模型实验结果见表4。

Table 4. Experiment results of each model (%)
表4. 各模型的实验结果(%)
实验结果表明Lattice LSTM模型能有效提升实体识别的性能。各模型随着训练轮数F1值变化如图7所示。
3.5 实体识别实例
以本研究构建的数据集中的一个句子为例展示Lattice LSTM模型的实体识别效果。具体实例如表5所示。

Table 5. Examples of ancient Chinese entity recognition
表5. 古汉语实体识别实例
注:斜体表示识别不正确的实体,粗体表示识别正确的实体。
4. 结束语
针对古汉语命名实体识别所面临的问题,本文采用了一种同时关注字信息和词信息进行实体识别的深度学习模型。该模型将传统的LSTM单元改进为网格LSTM,在字符模型的基础之上显性利用词和词序信息,从而避免了分词错误传递的问题;利用具有长短期记忆功能的LSTM模型作为隐藏层,可以解决古汉语文本中部分实体结构较长的问题;最后使用CRF作为标签推理层以解决文本序列标签依赖问题。在已构建的古汉语命名实体识别数据集上进行实验,实验结果证明了Lattice LSTM模型的有效性。
今后,本文的研究工作应该在数据和词典规模方面加大力度,从而进一步提高模型的整体性能。另外,还应该针对古汉语文本进行广泛深入的语言信息处理方面的研究,以便获得更多有价值的知识。
基金项目
国家自然科学基金(61662061, 61063033)、国家重点研发计划(2017YFB1402200)、青海省科技厅项目(2015-SF-520)。