• 【NER】对命名实体识别(槽位填充)的一些认识


    命名实体识别

    1. 问题定义

    广义的命名实体识别是指识别出待处理文本中三大类(实体类、时间类和数字类)、七小类(人名、机构名、地名、日期、货币和百分比)命名实体。但实际应用中不只是识别上述所说的实体类,还包括其他自定义的实体,如角色、菜名等等。

    2. 解决方式

    命名实体识别其本质是一个序列标注问题,序列标注就是对给定文本中每一个字符打上标签。标签的格式可以分为BO,BIO和BIEO三种形式。对于数据集较少的情况,建议使用BO,如果有大量数据可以选用BIEO格式。
    命名实体识别的解决方案有三种:基于词典规则匹配、基于特征的机器学习方式和基于深度学习的方式。目前基于深度学习的命名实体是主流方式,现在做的实体识别也是基于深度学习方式。
    评测指标
    识别识别任务中的评测指标是F1,F1 = 2 * (precison + recall) / (precision * recall),precision(精准率)是指在所有预测出的标签中正确的label个数, 召回是指在真实的标签中预测正确的label个数,这是整体的准召,如果想细致的分析,可以求每种label的准召及F1

    3. 基于深度学习的命名实体识别

    3.1 经典结构

    Neural Architectures for Named Entity Recognition 经典论文,2016NAACL
    该论文主要提出两种结构,一种是LSTM-CRF,另一种是 Stack-LSTM,该论文中的输入主要是时word embedding

    .

    LSTM后面为什么接CRF?
    如何理解LSTM后接CRF?简单说就是LSTM可以学习到上下文特征,CRF可以学习到label的特征,比如状态转移矩阵,tensorflow中训练时也是获得转移矩阵。

    3.2 字符级别结构

    这种是以字符作为基本输入,在char embedding基础上经过LSTM得到字符的label

    3.3 字符和词融合的结构

    在这种结构中根据对字符的抽取方式可以分为两种:一是对字符表示层用卷积网络进行提取特征,从而获取基于字符的词语表示,第二种方式是对词语的字符表示用BiLstm进行学习得到词语的表示,然后将词语的embedding与字符学习到的embeddig进行拼接作为词语的基本表示.

    3.4 字符、词和词缀融合的结构

    Deep Affix Features Improve Neural Named Entity Recognizers

    3.5 加入分词信息

    以上四种结构是该论文A Survey on Recent Advances in Named Entity Recognition from DeepLearning models提到的模型结构,自己在做中文任务时又有一些的感受。
    针对中文NER,LSTM-CRF也是一个标准的模型结构,根据任务选择输入时word embedding还是char embedding,对于中文来说,多数还是以char embdding,因为分词可能会将一些实体给切分开,后续就是在embedding的基础上使用BiLSTM进行学习上下文特征,最后接一层CRF。
    加入分词信息
    Improving Named Entity Recognition for Chinese Social Mediawith Word Segmentation Representation Learning
    思想同上文中提到的字符和词融合的结构类似,这种方式是使用分词后,对每一个字符都使用BIES的标记格式进行标记,这就是分词信息,这种分词信息使用4*20的矩阵进行初始化,并通过loop-up方式查找每个字符的分词信息拼接到char embedding后面作为输入,不论是直接使用lstm还是使用bert,加入分词信息效果均有提升。

    3.6 基于字符的部首来做中文命名实体识别

    Character-Based LSTM-CRF with Radical-LevelFeatures for Chinese Named Entity Recognition.
    2016年中科院,发布地方不详。

    本文提出了基于字符的部首来做中文命名实体识别,模型结果挺简单.
    第一步获取字符的embedding,这一步是通过对字符预训练词向量和使用bi-lstm对部首学习到的向量拼接得到.
    第二步,就是通用的bi-lstm+crf,创新之处就是使用了部首编码那一步。

    3.7 BERT

    使用bert的产出的字符序列作为输入,bert中是直接对每个字符向量进行分类,我使用同上面一样的模型对字符序列分别经过LSTM和CRF,其实不知道LSTM有没有用,但是在加了之后好像效果是有点提升,但是不太理解,明明bert已经使用transform将上下文特征学的这么好了,lstm的作用几乎就不存在了吧?

    3.8 ERNIE

    其中也尝试了百度的ernie,但是在预测时很乱,不知道自己哪里改错了,放弃

    4.总结

    在意图识别和槽位填充时,学习了命名识别实体的方式,虽然之前也有了解,没有具体的写代码实现过。这次通过自己的调研与尝试,了解了深度学习在命名实体识别任务的基本架构: embedding作为输入,使用LSTM提取上下文特征,使用CRF获得label的转移矩阵,即对label的最后输出做一个限制。可做的优化点有:1、对embedding进行增强特征,比如char embedding与word embedding进行拼接,加入分词信息,加入部首信息等;2、多任务学习,经试验对意图和槽位联合训练比两个任务分别学习效果更明显。
    后续研究内容是调研tensorflow中crf实现过程。

    【参考文献】

    [1].Neural Architectures for Named Entity Recognition
    [2] Neural Architectures for Named Entity Recognition
    [3] A Survey on Recent Advances in Named Entity Recognition from DeepLearning models
    [4] Improving Named Entity Recognition for Chinese Social Mediawith Word Segmentation Representation Learning
    [5] Character-Based LSTM-CRF with Radical-LevelFeatures for Chinese Named Entity Recognition

  • 相关阅读:
    Redis分布式锁的正确实现方式
    Redis+Jedis封装工具类
    MyCat配置文件详解--server.xml
    linux buff/cache释放
    mycat中间件--schema.xml配置文件详解
    mycat中间件--linux安装mycat1.6版本
    如何查找SHELL的进程号并杀死
    dubbo常用配置及注意事项
    xxxx
    解决docker镜像无法下载的问题
  • 原文地址:https://www.cnblogs.com/zhaopAC/p/11197866.html
Copyright © 2020-2023  润新知