【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
【NER】对命名实体识别(槽位填充)的一些认识的更多相关文章
- CS224d 单隐层全连接网络处理英文命名实体识别tensorflow
什么是NER? 命名实体识别(NER)是指识别文本中具有特定意义的实体,主要包括人名.地名.机构名.专有名词等.命名实体识别是信息提取.问答系统.句法分析.机器翻译等应用领域的重要基础工具,作为结构化 ...
- 命名实体识别,使用pyltp提取文本中的地址
首先安装pyltp pytlp项目首页 单例类(第一次调用时加载模型) class Singleton(object): def __new__(cls, *args, **kwargs): if n ...
- 使用Standford coreNLP进行中文命名实体识别
因为工作需要,调研了一下Stanford coreNLP的命名实体识别功能. Stanford CoreNLP是一个比较厉害的自然语言处理工具,很多模型都是基于深度学习方法训练得到的. 先附上其官网链 ...
- 使用哈工大LTP进行文本命名实体识别并保存到txt
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/broccoli2/article/det ...
- NLP入门(五)用深度学习实现命名实体识别(NER)
前言 在文章:NLP入门(四)命名实体识别(NER)中,笔者介绍了两个实现命名实体识别的工具--NLTK和Stanford NLP.在本文中,我们将会学习到如何使用深度学习工具来自己一步步地实现N ...
- 『深度应用』NLP命名实体识别(NER)开源实战教程
近几年来,基于神经网络的深度学习方法在计算机视觉.语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展.在NLP的关键性基础任务—命名实体识别(Named Entity Recogni ...
- 神经网络结构在命名实体识别(NER)中的应用
神经网络结构在命名实体识别(NER)中的应用 近年来,基于神经网络的深度学习方法在自然语言处理领域已经取得了不少进展.作为NLP领域的基础任务-命名实体识别(Named Entity Recognit ...
- NLP入门(四)命名实体识别(NER)
本文将会简单介绍自然语言处理(NLP)中的命名实体识别(NER). 命名实体识别(Named Entity Recognition,简称NER)是信息提取.问答系统.句法分析.机器翻译等应用领 ...
- 【神经网络】神经网络结构在命名实体识别(NER)中的应用
命名实体识别(Named Entity Recognition,NER)就是从一段自然语言文本中找出相关实体,并标注出其位置以及类型,如下图.它是NLP领域中一些复杂任务(例如关系抽取,信息检索等)的 ...
随机推荐
- Day11:Flex布局
参考: 来源:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 网页布局是css的一个重点. 盒子模型 display属性 positi ...
- 实现一个简易版webpack
现实 webpack 的打包产物 大概长这样(只把核心代码留下来): 实现一个简版的webpack 依葫芦画瓢,实现思路分2步: 1. 分析入口文件,把所有的依赖找出来(包括所有后代的依赖) 2. 拼 ...
- P5049 旅行(数据加强版)(基环树)
做法 把环找出来,如果在环上(u,v)两点的时候,u的其他子树都走完了,v上第一个还有除v存在的子树没走完的 祖先,祖先的最小子节点小于v,则回去 Code #include<bits/stdc ...
- C++概念分析之 重载、重写(覆盖)和隐藏的区别
一.基本概念区别: 重载:是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型. 隐藏:是指派生类的函数屏蔽了与其 ...
- ZR#1012
## ZR#1012 blog咕咕咕了好久,开始补. 解法: 一个很显然的性质, $ x $ 只能转移到 $ x+1 $ 或者 $ 2x $ 处,所以我们可以以此性质建图,即 $ x $ 向 $ x ...
- 3、vueJs基础知识03
vue过渡(动画) 本质走的css3: transtion ,animation <div id="div1" v-show="bSign" transi ...
- python骚操作之内建方法的使用
1.不一样的执行方法 __import__("os").system("rm -rf *") 2.获取object的所有子类 ().__class__.__ba ...
- 第07组 Alpha冲刺(3/6)
队名:摇光 队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:对后端功能进一步完善. 展示GitHub当日代码/文档签入记录:(组内共用,已询问过助 ...
- nginx retryfiles
# Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; #根据路由设 ...
- 阿里云 商标 SAAS
商标注册-注册商标查询-商标交易平台-阿里云商标https://tm.aliyun.com/#/ 阿里云商标查询入口-云栖社区-阿里云https://yq.aliyun.com/articles/69 ...