NER(命名实体识别)之LatticeLSTM+CRF详解

图片

paper: https://arxiv.org/pdf/1805.02023.pdf

code:https://github.com/jiesutd/LatticeLSTM

前言

        NER(命名实体识别)是信息抽取的一个基础任务,常用的做法是character-based和word-based,其中基于字符的方法是每个字符会输出一个实体标签,它的缺点是不能利用字与字之间的信息;而基于词的方法是每个词会输出一个实体标签,会受到分词的影响,而且更容易出现OOV的情况。

      而且《Chinese named entity recognition and word segmentation based on character》、《Chinese named entity recognition with a sequence labeling approach: based on characters, or based on words?》、《Comparison of the impact of word segmentation on name tagging for Chinese and japanese.》这三篇论文都说明了character-based方法要优于word-based方法,那有没有一种方法可以把这两种方法结合呢?有,最近NER模型词汇增强方法之一的LatticeLSTM就是。在介绍这个模型之前,我们先简单回顾一下之前的模型。

 

图片

 

 

 

    首先介绍一下符号,一个句子可以表示为每个字符的序列,如s = c1,c2,...,cm,同样也可以表示为每个词的序列,如s = w1,w2,...,wn,那么可以使用t(i,k)表示第i个词的第k个字符。

基于字符和基于词模型

 

 

 

1、Character-Based Model

 

 

 

1)Char + bichar

 

 

 

xcj = [ec(cj ); eb(cj , cj+1)],把当前字符和当前字符与下一个字符的词向量拼接起来。

2)Char + softword

 

 

 

xcj = [ec(cj);es(seg(cj))],seg(cj)表示的label的词向量,如果一个词包括两个字符,那么这两个字符的seg(cj)应该是一样的。

2、Word-Based Model

1)Word + char LSTM

图片

通过双向拼接词的最后一个字符的隐藏向量来表示词向量

2)Word + char LSTM′

 

使用标准的biLSTM进行拼接每个字符的词向量

3)Word + char CNN

图片

      采用卷积的方式来捕获词的字符信息,比如一个词有3个字符,卷积窗口为2,那么可以进行两次卷积,了解CNN的朋友,很容易理解的,然后使用maxpooling。

LatticeLSTM模型介绍

       前面算是“开胃菜”,哈哈,主菜马上就来。

图片

        LatticeLSTM通过引入词汇的信息可以排除“江大桥”是人名所产生的歧义。序列中每个字符之间都可能会组合成相应的词汇,但是如果枚举所有的可能,这么这个是序列长度的指数级复杂度,LatticeLSTM是通过引入外部词典,并且使用门控机制来进行动态选择词汇和融入词汇信息来实现。

        首先每个字符会使用下面lookup table方式使用向量表示

图片

       再介绍一下标准的LSTM的公式,相信很多人都非常清楚了,符合的含义我这里也不解释了。下面是基于字符的LSTM结构

图片

       句子序列可以通过和外部词典匹配到所有可能的词,然后使用某种词向量(比如word2vec等等)方式来映射为词向量,如下图

图片

其中b和e表示词在句子中的索引。下面是基于词的LSTM结构

图片

由于序列的label是字符级别的输出,所以词的LSTM是不需要输出门的。

        LatticeLSTM是考虑词典中以当前字符结尾的所有可能词,那么有可能会出现多个词,比如“南京市长江大桥”中的字符“桥”,那么在字典中可能会出现“大桥”和“长江大桥”两个词,那么多个词是如何引入的呢?看下面的公式

图片

图片

         通过上面的公式计算出每个字符以及以该字符结尾的词的权重,代入到下面的公式进行加权求和

图片

最后使用下面的公式来更新隐藏状态(不使用标准LSTM中的

图片

 

 

 

图片

解码就是标准的CRF,公式如下:

图片

图片

 

 

LatticeLSTM模型实验

1、数据集

图片

2、模型超参数

图片

3、实验结果

图片

图片

LatticeLSTM不足之处

1、计算性能差,不能batch并行化(原因是每个句子中词的数量不一致);

2、存在信息损失,只能利用词结尾的信息;

3、可迁移性差,只能使用LSTM;

4、模型复杂度高,句子不能太长

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
命名实体识别(Named Entity Recognition,NER)是自然语言处理中的一个重要任务,其目的是从文本中识别出具有特定意义的实体,如人名、地名、组织机构名等。 下面是bilstm+crf模型命名实体识别的流程: 1. 数据预处理:首先需要将文本数据转化为模型能够处理的格式,通常是将每个词转化为对应的向量表示,这可以通过使用预训练的词向量或者自己训练词向量来实现。同时还需要对文本进行标注,标注出每个词是否属于命名实体、属于哪种类型等信息。 2. 模型搭建:使用bilstm+crf模型来进行命名实体识别。其中bilstm是一个双向LSTM网络,它可以同时考虑前后文信息,从而提高模型的准确性。而CRF(Conditional Random Field)则是用来对模型输出的标签序列进行约束,从而提高模型的稳定性和鲁棒性。 3. 模型训练:将预处理好的数据集用于模型训练,通过不断调整模型参数,使得模型在训练集上的表现达到最优。 4. 模型评估:使用测试集来评估模型的性能,通常使用准确率、召回率、F1值等指标来评估模型的效果。 5. 模型应用:将模型应用到实际场景中,对文本进行命名实体识别,得到每个实体的类型和位置信息。 总的来说,使用bilstm+crf模型进行命名实体识别,可以提高模型的准确性和稳定性,适用于各种类型的文本数据,是目前命名实体识别领域的主流方法之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wshzd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值