【学术论文】一种面向微博文本的命名实体识别方法
命名实体识别(Named Entity Recognition)是指识别文本中的各种实体,如人名、地名、机构名或其他特有标识[1],是自然语言处理(Natural Language Processing,NLP)中非常重要的一项基础性技术。近年来,Twitter、新浪微博等新型社交平台发展迅速,成为命名实体识别的新方向。RITTER A[2]等人设计了一个应用于Twitter上的T-NER系统,重构了命名实体识别的流程。TURIAN J等人[3]利用半监督的系统进行命名实体识别,大大减少了识别的成本。Liu Xiaohua等人[4]在一个半监督的框架下把K近邻分类器和CRF模型结合起来,识别Twitter中的命名实体,取得了较好的效果。
上述工作都是基于Twitter的,没有考虑中文的深层语义,且多使用有限自建数据集,没有考虑人工标记的代价和不足,因此需要加以改进。本文研究面向中文微博的命名实体识别,将识别视为一个序列标注问题,通过改进的基于概率模型的算法优化识别效果。针对微博文本短小、信息量少和文体不正规、语意含糊的特点,引入外部数据源提取深层语义特征;针对微博数据集人工处理代价大的问题,引入主动学习算法,以较小的人工代价获得识别效果的提升。
参照CoNLL2003的标准,给定一条微博,需要识别出其中的人名、地名、机构名和其他实体共4类命名实体[5]。
研究的基础模型采用了CRF[6]模型。
1.1 特征选取
基础特征采用当前词和前后位置词的词型和词性特征,这也是大多数CRF模型会采用的特征。由此生成的模型作为基础模型,对应的实验结果作为基线。
1.1.1 主题特征
(Latent Dirichlet Allocation,LDA)模型[7]是一种无监督的概率主题模型。每个主题下都分布着出现概率较高的词语,这些词都与这个主题有很强的相关性,利用这种相关性能在一定程度上解决一词多义、同义词等问题。模型的训练使用了外部数据源,主题个数k可以事先指定。
获得LDA模型后,对于给定k个主题,通过p(w|t),将每个主题视为一个特征,将训练集中的每个词看作是由k个特征表示的K维向量,则每个词都可以表示成一个k维向量,即:
其中,vi表示第i个词的向量,λk表示该词在第k个主题上的权重,N是词表的大小。
1.1.2 词向量特征
词向量源于HINTON G E[8]提出的Distributed Representation。一个流行的词向量训练工具是word2vec,由MIKOLOV T[9]于2013年提出。word2vec能把词映射到d维的向量空间,用向量空间的相似度表示文本语义上的相似度,有利于解决微博语义含糊的问题。
词向量一般有200~500维,如果直接将词向量作为特征引入CRF模型,则计算量过大。这里需要利用的是其相似性,因此可以用聚类的方法进行简化。实验中选择将词语表示为200~500维的词向量,再利用k-means进行聚类,将类别作为特征输入模型。特别需要指出的是,相比采用单一的聚类结果,更好的办法是多层聚类(multi-layer cluster)。
1.2 模型强化
人工处理微博语料人工处理代价高昂,为了以最小的人工代价获得最大的系统性能提升,研究采用了主动学习算法。主动学习算法包含两部分,一个是分类器,另一个是抽样策略[10]。分类器采用前文所述的改进型CRF模型。抽样策略可采用如下方法。
抽样不确定度是一中常见的衡量样本信息含量的方法,在序列标注模型中,可以根据最小置信度(Least Confidence)φLC(x)来确定抽样不确定度。
其中,x表示一个样本,y*是对应概率最大的标记。对于一个训练好的CRF模型,可以在对每条微博进行标记的同时输出对应概率P。现给出整个算法框架。
算法1:基于置信度的主动学习算法
输入:有标记语料DL、未标记语料DU
输出:分类器C
用DL训练分类器C(CRF classifier)
重复:
实验用到了3个数据集,分别是训练集、扩展集和测试集。其中3 000条标记语料作为训练集,2 000条标记语料作为测试集。另外2 000条作为扩展集用于主动学习,不需标注。另有500万条经过除重去噪的微博作为外部源,分别用于LDA模型训练和词向量模型训练,供抽取外部特征使用。
2.1 评价标准
本文采用的评价标准包括准确率P(Precision)、召回率R(Recall)和F1值(F1-measure)3个指标。F1是准确率和召回率的调和平均值,是一个综合性的指标。
2.2 实验数据及分析
(1)使用训练集提取基础特征,建立基础模型,在测试集上进行评估。结果如表1所示。此结果将作为基线与后续实验结果进行对比。
(2)引入外部特征进行了多组实验。图1左侧是引入主题特征后的提升效果,虽然有效果但不明显。图1右侧是将400维的词向量进行聚类后作为特征引入模型的效果。F1值在聚类个数为400时达到了63.96%,较基线有明显提升。究其原因,主要是词向量的分量中隐含了丰富的上下文语法和语义信息,而LDA模型内部采用了词袋模型,仅考虑了词的共现关系而没有考虑上下文关系,这样简化了模型,但不可避免地带来了信息的损失。
多层聚类的实验效果如图2所示,每个维度下前4个柱图表示单层聚类(分别是聚成200、300、400、500个类簇)时的效果,最后一个表示同时使用前4个聚类结果作为多层聚类时的效果,显然效果比单层聚类更好。
同时将所有的外部特征添加到基础模型进行实验,F1值提高到65.41%。
(3)采用主动学习的方法进一步强化模型。提升效果如图3所示。详细的数据参见表2。曲线Model_ba表示仅用外部特征而不进行主动学习的模型效果。曲线Model_la表示把一次性把包括训练集DL和扩展集DU在内的所有语料都进行标记(label all)并用于模型训练。Model_al1、Model_al2和model_al3是使用主动学习策略但阈值不同的模型。总体看,无论是取哪个阈值,相比不进行主动学习,主动学习都能提高F1值,且收敛速度很快。
表2进一步说明了主动学习的优点。Model_la需要标记微博2 080条,约9万个词,人工代价太大。相比之下,3个主动学习模型能明显降低人工标记量。其中Model_al2比Model_al3的F1值要高0.25%,标记量仅提升了12.9%;而Model_al1与Model_al2相比,F1值仅提升了0.1%,但代价是标记量提升了17%,且多迭代了两次。综合考虑,取Model_al2作为最终的实验结果。此时仅需标记457条微博,约37 000个标记,F1值达到67.23%,相较最初的模型提升4.54%。
本文提出了一种面向中文微博的命名实体识别方法,先引入外部特征训练CRF模型,再采用主动学习算法强化训练结果。实际工作中发现,中文分词效果不佳影响了后续的工作,主动学习仍然引入了二次标记,不利于大规模的识别任务。这些都需要在以后的工作中加以改进。