网上大部分都是使用ChinaPeoplesDailyNerCorpus语料做的,真正应用到自已的语料和需求中还是有一些坑,这里整理记录一下

首先明确语料需要处理成什么格式,贴图理解一下

这里面需要搞清楚几点,我们的语料最小粒度是字级别的,然后每句话结束会有一个空行(当年踩过的坑),后面的标记简单科普一下,专业人士直接跳过,大O表示非实体,B-ORD表示机构开头第一个字,I-ORD表示中间,有些预料可能会有结束标记,这里只使用了开头和中间,当然你可能还需要识别人名(B-PER, I-PER),地名(B-LOC, I-LOC),同理。

接下来就要考虑如何将一段话或者一篇文章处理成这种格式了
这里参考了一篇文章https://www.cnblogs.com/combfish/p/7830807.html其中的代码直接贴在下面了,不想看的可以直接跳过看后面分析

import re# txt2ner_train_data turn label str into ner trainable data
# s :labeled str  eg.'我来到[@1999年#YEAR*]的[@上海#LOC*]的[@东华大学#SCHOOL*]'
# save_path: ner_trainable_txt name
def str2ner_train_data(s,save_path):ner_data = []result_1 = re.finditer(r'\[\@', s)result_2 = re.finditer(r'\*\]', s)begin = []end = []for each in result_1:begin.append(each.start())for each in result_2:end.append(each.end())assert len(begin) == len(end)i = 0j = 0while i < len(s):if i not in begin:ner_data.append([s[i], 0])i = i + 1else:ann = s[i + 2:end[j] - 2]entity, ner = ann.rsplit('#')if (len(entity) == 1):ner_data.append([entity, 'S-' + ner])else:if (len(entity) == 2):ner_data.append([entity[0], 'B-' + ner])ner_data.append([entity[1], 'E-' + ner])else:ner_data.append([entity[0], 'B-' + ner])for n in range(1, len(entity) - 1):ner_data.append([entity[n], 'I-' + ner])ner_data.append([entity[-1], 'E-' + ner])i = end[j]j = j + 1f = open(save_path, 'w', encoding='utf-8')for each in ner_data:f.write(each[0] + ' ' + str(each[1]))f.write('\n')f.close()
# txt2ner_train_data turn label str into ner t

动手实践bert+BiLstm+crf相关推荐

  1. bert+crf可以做NER,那么为什么还有bert+bi-lstm+crf ?

    我在自己人工标注的一份特定领域的数据集上跑过,加上bert确实会比只用固定的词向量要好一些,即使只用BERT加一个softmax层都比不用bert的bilstm+crf强.而bert+bilstm+c ...

  2. 基于BERT+BiLSTM+CRF的中文景点命名实体识别

    赵平, 孙连英, 万莹, 葛娜. 基于BERT+BiLSTM+CRF的中文景点命名实体识别. 计算机系统应用, 2020, 29(6): 169-174.http://www.c-s-a.org.cn ...

  3. Bert+BiLSTM+CRF实体抽取

    文章目录 一.环境 二.预训练词向量 三.模型 1.BiLSTM - 不使用预训练字向量 - 使用预训练字向量 2.CRF 3.BiLSTM + CRF - 不使用预训练词向量 - 使用预训练词向量 ...

  4. 基于BERT+BiLSTM+CRF模型与新预处理方法的古籍自动标点

    摘要 古文相较于现代文不仅在用词.语法等方面存在巨大差异,还缺少标点,使人难以理解语义.采用人工方式对古文进行标点既需要有较高的文学水平,还需要对历史文化有一定了解.为提高古文自动标点的准确率,将深层 ...

  5. 信息抽取实战:命名实体识别NER【ALBERT+Bi-LSTM模型 vs. ALBERT+Bi-LSTM+CRF模型】(附代码)

    实战:命名实体识别NER 目录 实战:命名实体识别NER 一.命名实体识别(NER) 二.BERT的应用 NLP基本任务 查找相似词语 提取文本中的实体 问答中的实体对齐 三.ALBERT ALBER ...

  6. bert pytorch 序列标注_序列标注:Bi-LSTM + CRF

    最近在做序列标注的相关任务,为了理解bi-lstm + crf的原理及细节,找了很多相关资料,以及代码实现,这里分享给大家并附上一些自己的理解. CRF 相关资料推荐 关于crf,我看了很多资料,这里 ...

  7. BiLSTM+CRF医学病例命名实体识别项目

    向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习  公众号:datayx 数据来自CCKS2018的电子病历命名实体识别的评测任务,是对于给定的一组电子病历纯文本文档 ...

  8. NLP工具包(Albert+BiLSTM+CRF)

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 一.简介 Macropodus自然语言处理工具(Albert+BiLSTM+CRF) 中文分词 ...

  9. 【项目实战课】基于BiLSTM+CRF的命名实体识别实战

    欢迎大家来到我们的项目实战课,本期内容是<基于BiLSTM+CRF的命名实体识别实战>.所谓项目课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的实战讲解. ...

  10. NLP(二十五)实现ALBERT+Bi-LSTM+CRF模型

      在文章NLP(二十四)利用ALBERT实现命名实体识别中,笔者介绍了ALBERT+Bi-LSTM模型在命名实体识别方面的应用.   在本文中,笔者将介绍如何实现ALBERT+Bi-LSTM+CRF ...

最新文章

  1. 论文不必参考任何文献?看到作者,网友大呼失敬了
  2. 关于排版中经常见的问题的解决方法
  3. Spring AOP,AspectJ,CGLIB 有点晕
  4. 常态化疫情防控下会展经济的“长沙蓝本”
  5. 经典C语言程序100例之三一
  6. LeetCode 832. 翻转图像(异或^)
  7. tensorflow图形识别_手把手教你使用TF服务将TensorFlow模型部署到生产环境
  8. java timezone_Java TimeZone getAvailableIDs()方法与示例
  9. activemq中怎么知道推送消息是否成功_ActiveMQ安装试用示列
  10. c 命令行简易计算器
  11. 利用计算机进行国际贸易的弊端,国际贸易中的计算机应用体系建设浅析
  12. sonar下载安装配置教程
  13. Day03 爬取京东商品信息+元素交互操作+BeautifulSoup4
  14. Unity中摄像机绕物体旋转和拉近拉远视角的操作
  15. windows下谷歌邮箱注册及谷歌浏览器登录
  16. 汽车加油站问题(Java)
  17. 硬盘数据恢复方法有哪些?希望这些方法能帮助你
  18. 张亚勤、刘慈欣、周鸿祎、王飞跃新书推荐,《崛起的超级智能:互联网大脑如何影响科技未来》...
  19. aso优化师是什么_【aso优化师赵星凯】简述为什么要做aso?
  20. LDK3读书笔记(第一章:LINUX内核简史)

热门文章

  1. 实验三 使用列表实现筛选法求素数
  2. apache+svn配置过程
  3. 寒哥教你学iOS - 经验漫谈
  4. adb shell 修改文件名_常用Adb命令整理
  5. 单词 Punchout 的含义和使用场合
  6. SSM--前后端交互
  7. ie使用blob下载txt文件无效
  8. wits数据格式_一种用于钻完井现场同时集成WITS数据和WITSML数据的方法_2016108662447_说明书_专利查询_专利网_钻瓜专利网...
  9. 8个最受欢迎的可3D打印Minecraft模型
  10. python语言电脑安装_教你如何安装Python环境