导读

  • 本文主要介绍一下,怎么在NER任务中融合词典。

一、NER任务简介

NER(Named Entity Recognition,命名实体识别)又称作专名识别,是自然语言处理中常见的一项任务,使用的范围非常广。命名实体通常指的是文本中具有特别意义或者指代性非常强的实体,通常包括人名、地名、机构名、时间、专有名词等。NER系统就是从非结构化的文本中抽取出上述实体,并且可以按照业务需求识别出更多类别的实体,比如产品名称、型号、价格等。因此实体这个概念可以很广,只要是业务需要的特殊文本片段都可以称为实体。

二、LSTM模型融合词典

1、特征向量的构建

  • 给定一个句子sentence X 和一个外部词典Dictionary,记作D。 我们通过对句子中的每个词xixi
    抽取特征模板,通过特征模板上的词产生特征向量。特征模板描述为如下图
  • 对于每一个出现在特征的文本片段,我们都产生一个二进制的值来表示这个片段是否在词典 D 中,如果在词典中可以找到,我把这个词的向量表示为1,否则,表示为0。

举个例子说明:
美国总统特朗普意识到对中国发起 易战是极其愚蠢的做法。
2-gram 起贸 贸易
3-gram 发起贸 贸易战
4-gram 国发起贸 贸易战是
5-gram 中国发起贸 贸易战是极
对应词典有“贸易”、“贸易战”,那我们的特征向量 t 可以表示为:

0 1 0 1 0 0 0 0

2、model的设计

  • 设计图如下,这也是参考论文:Neural Networks Incorporating Dictionaries for Chinese Word Segmentation。2018年AAAI论文做法:

    图片中的t1t2....tnt1,t2....tn
    表示我们抽取的特征向量,作为一个LSTM向量的输入,而exiexi
    表示训练语料的字符过完embedding之后的结果,在这里作为其中一个LSTM的输入。
    然后我们可以分别得到两个过完LSTM的隐层结果,用公式表示:

    hxi=BiLSTM(hxi1,hxi+1,exi)hix=BiLSTM(h→i−1x,h←i+1x,exi)

    hti=BiLSTM(hti1,hti+1,ti)hit=BiLSTM(h→i−1t,h←i+1t,ti)

    然后我们把这hxihix
    htihit
    结果concat在一起,用公式表示:

    hi=hxihtihi=hix⊕hit


    接着过一个线性层,得到预测的结果。

3、部分代码展示

按照model设计部分,展示主要的代码设计部分:

        x_emb = self.embed(batch_feature.word_features)  x_emb = self.dropout_embed(x_emb)lstm_out, _ = self.bilstm(x_emb)lstm_out_t, _ = self.bilstm_t(t_emb)lstm_out = torch.cat([lstm_out, lstm_out_t], 2)lstm_out = F.tanh(lstm_out)logit = self.linear(lstm_out)

三、实验结果

参数设计:

[data]  ###这里可以不用看,可以忽略,因为是项目中人为标注的。
train_file = ./data/cropus/4/train_sentence6.txt
test_file = ./data/cropus/4/test_sentence6.txt[Model]
lstm_layers = 1
embed_dim = 300
lstm_hiddens = 300
dropout_embed = 0.2
dropout = 0.4[Optimizer]
adam = True
learning_rate = 0.001
learning_rate_decay = 1
weight_decay = 1e-8
clip_max_norm = 10[Train]
use_cuda = True
epochs = 1000
batch_size = 16
test_batch_size = 16

实验结果,用的评测指标是F值评测,最终跑到数据是74.6%比我预期的效果要差,因为我没有用词典的效果是77.2%。这里写这篇博客的目的纯粹是介绍一下加词典的方法,也对这次做的东西做一个小结吧。

四、结果分析

  • 主要分析我这个失败的做法失败的原因吧,沮丧。。

1、第一我觉得我的model的设计有点简单,但是做法是没有问题,毕业人家在分词做出效果了。
2、就是我外部词典质量是存在重大问题,我试着对比词典中比较明显的词和训练语料的词,发现基本匹配不到,所以导致我的特征向量普遍都是零。
3、第三我觉得本身我的语料就是存在一些问题,但是这不是主要的原因,因为据我对语料的分析观察,发现有些可以标注为实体的内容没有标注出来。

参考文献

[1] Neural Networks Incorporating Dictionaries for Chinese Word Segmentation

实体命名识别(NER)任务中加词典相关推荐

  1. Huggingface抱抱脸实体命名识别NER案例

    NLP之Huggingface抱抱脸实体命名识别NER案例 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala ...

  2. 中文实体命名识别工具使用汇总:Stanza、LAC、Ltp、Hanlp、foolnltk、NLTK、BosonNLP

    实体命名识别 相关知识 Stanford CoreNLP 命名实体识别 一.简介: 二.java版本使用 三.python版本使用 NLTK 命名实体识别 一.简介: 二.搭建环境 三.nltk使用 ...

  3. 信息抽取(五)实体命名识别之嵌套实体识别哪家强,我做了一个简单的对比实验

    实体命名识别之嵌套实体识别哪家强 嵌套实体识别 实体矩阵构建框架 方法比较 GlobalPointer TPLinker Tencent Muti-head Deep Biaffine 实验结果 总结 ...

  4. 最通俗易懂的命名实体识别NER模型中的CRF层介绍

    向AI转型的程序员都关注了这个号

  5. BilSTM 实体识别_NLP-入门实体命名识别(NER)+Bilstm-CRF模型原理Pytorch代码详解——最全攻略

    最近在系统地接触学习NER,但是发现这方面的小帖子还比较零散.所以我把学习的记录放出来给大家作参考,其中汇聚了很多其他博主的知识,在本文中也放出了他们的原链.希望能够以这篇文章为载体,帮助其他跟我一样 ...

  6. BilSTM 实体识别_NLP入门实体命名识别(NER)+BilstmCRF模型原理Pytorch代码详解——最全攻略...

    来自 | 知乎   作者 | seven链接 | https://zhuanlan.zhihu.com/p/79552594编辑 | 机器学习算法与自然语言处理公众号本文仅作学术分享,如有侵权,请联系 ...

  7. 命名实体识别 NER 论文综述:那些年,我们一起追过的却仍未知道的花名 (一)...

    点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要24分钟 跟随小博主,每天进步一丢丢 作者: 龚俊民(昵称: 除夕) 学校: 新南威尔士大学 方向: 自然语言处理和可解释学习 知乎: http ...

  8. 一文详解深度学习在命名实体识别(NER)中的应用

    近几年来,基于神经网络的深度学习方法在计算机视觉.语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展.在NLP的关键性基础任务-命名实体识别(Named Entity Recogni ...

  9. 命名实体识别(NER)发展简史

    近几年来,基于神经网络的深度学习方法在计算机视觉.语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展.在NLP的关键性基础任务-命名实体识别(Named Entity Recogni ...

最新文章

  1. 不懂SOLID,GRASP这些软件开发原则!写出来的代码都是垃圾!
  2. 分布式消息队列 — RabbitMQ(3)
  3. HDU 2955 Robberies
  4. 光流 | MATLAB实现HS Optical Flow(代码类)
  5. CRM My Opportunity max hit的技术实现
  6. spring boot注释_使用Spring Boot和注释支持配置Spring JMS应用程序
  7. java自动推断类型_Java 7的类型推断
  8. 对每个小组的评论和建议
  9. HTML/CSS进阶
  10. idea进行maven离线打包时出现Cannot access central xxxxx in offline mode
  11. 企业CRM项目实施调研内容有那些?
  12. VC中CListCtrl设置滚动条在最下边的方法(MSDN中的例子)
  13. Collectors.averagingDouble()
  14. js一键批量打印_JS 实现选中内容批量打印/导出
  15. MODBUS转EtherNet/IP网关连接罗克韦尔(AB)PLC与英威腾变频器配置案例
  16. helm 简介与入门
  17. 网易中国创业家大赛倒计时,2017年8月报名结束
  18. 输出菱形图案Python
  19. java优化方法_JAVA程序性能优化的10个简单方法
  20. 拜占庭将军问题(三)——书面协议

热门文章

  1. 企业员工管理系统 三:工具类
  2. 合工大 程序设计艺术 实验六 买票问题
  3. 黑客用python还是ruby-python和ruby,我选谁?
  4. win10安装flutter
  5. 机器学习 之 EM算法
  6. 搭建个人码免签支付系统
  7. “智”和“慧”的区别是什么?
  8. 传统监控摄像机与工业智能相机的区别
  9. freemarker 模板生成pdf文件并下载
  10. STC12C5A60S2单片机IO口工作…