pytorch-sequencelabeling

pytorch-sequencelabeling是一个支持softmax、crf、span等模型,只依赖pytorch、transformers、tensorboardX和numpy,专注于序列标注(命名实体识别、词性标注、中文分词)的轻量级自然语言处理工具包。

目录

  • 数据
  • 使用方式
  • paper
  • 参考
  • Reference

项目地址

  • pytorch-sequencelabeling: https://github.com/yongzhuo/Pytorch-NLU/tree/main/pytorch_sequencelabeling

数据

数据来源

免责声明:以下数据集由公开渠道收集而成, 只做说明; 科学研究、商用请联系原作者; 如有侵权, 请及时联系删除。

通用数据集

  • Corpus_China_People_Daily, 由北京大学计算语言学研究所发布的《人民日报》标注语料库PFR, 来源为《人民日报》1998上半年, 2014年, 2015上半年-2016.1-2017.1-2018.1(新时代人民日报分词语料库NEPD)等的内容, 包括中文分词cws、词性标注pos、命名实体识别ner…等标注数据;
  • Corpus_CTBX, 由宾夕法尼亚大学(UPenn)开发并通过语言数据联盟(LDC) 发布的中文句法树库(Chinese Treebank), 来源为新闻数据、新闻杂志、广播新闻、广播谈话节目、微博、论坛、聊天对话和电话数据等, 包括中文分词cws、词性标注pos、命名实体识别ner…等标注数据;
  • NER-Weibo, 中国社交媒体(微博)命名实体识别数据集(Weibo-NER-2015), 该语料库包含2013年11月至2014年12月期间从微博上采集的1890条信息, 有两个版本(weiboNER.conll和weiboNER_2nd_conll), 共1890样例, 3个标签;
  • NER-CLUE, 中文细粒度命名实体识别(CLUE-NER-2020), CLUE筛选标注的THUCTC数据集(清华大学开源的新闻内容文本分类数据集), 共12091样例, 10个标签;
  • NER-Literature, 中文文学章篇级实体识别数据集(Literature-NER-2017), 数据来源为网站上1000多篇中国文学文章过滤提取的726篇, 共29096样本, 7个标签;
  • NER-Resume, 中文简历实体识别数据集(Resume-NER-2018), 来源为新浪财经网关于上市公司的高级经理人的简历摘要数据, 共1027样例,8个标签。
  • NER-BosonN, 中文新闻实体识别数据集(Boson-NER-2012), 数据集BosonNLP_NER_6C, 新增时间/公司名/产品名等标签, 共2000样例, 6个标签;
  • NER-MSRA, 中文新闻实体识别数据集(MSRA-NER-2005), 由微软亚洲研究院(MSRA)发布, 共55289样例, 通用的有3个标签, 完整的有26个标签;

比赛数据

实体识别

  • CCKS 2021 中文NLP地址要素解析, 地址要素解析是将地址文本拆分成独立语义的要素,并对这些要素进行类型识别的过程。地址要素解析与地址相关性共同构成了中文地址处理两大核心任务,具有很大的商业价值。标注数据集由训练集、验证集和测试集组成,整体标注数据大约2万条左右。地址数据通过抓取公开的地址信息(如黄页网站等)获得, 均通过众包标注生成。
  • CCKS 2021 面向中文电子病历的医疗实体及事件抽取, 词表及电子病历数据由医渡云(北京)技术有限公司编写,标注数据由医渡云公司组织专业的医学团队进行人工标注,仅限CCKS竞赛评测用。本次评测的训练数据有:1500条中文标注数据, 1000条中文非标注数据, 6个类别的6292个中文实体词词表;
  • CCKS 2020 面向试验鉴定的命名实体识别任务, 军事装备试验鉴定是指通过规范化的组织形式和试验活动,对被试对象进行全面考核并作出评价结论的国家最高检验行为,涵盖方法、技术、器件、武器系统、平台系统、体系、训练演习等领域,涉及面广、专业性强。包括试验要素、性能指标、系统组成、任务场景共4个类别。
  • 2020语言与智能技术竞赛:关系抽取任务, 百度实体关系抽取数据集, 其中实体部分可作为NER任务, 数据集共包含 48个已定义好的schema和超过21万中文句子,其中包括17万训练集,2万验证集和2万测试集。
  • 2020 非结构化商业文本信息中隐私信息识别, 明略科技商业文本数据集,本赛题要求参赛者从提供的非结构化商业文本信息中识别出文本中所涉及到的隐私数据,包括但不限于:(1)公司或个人基本信息:账号、姓名、联系方式、地址等;(2)商业秘密:制造方法、工艺流程、产品名称、专利名称等。共2515个样例, 14个类别。
  • 2020 中文医学文本命名实体识别, 数据集是由北京大学计算语言学教育部重点实验室、郑州大学信息工程学院自然语言处理实验室、哈尔滨工业大学(深圳)、以及鹏城实验室人工智能研究中心智慧医疗课题组联合构建。总字数达到164万,包含26903个句子,1062个文件,平均每个文件的字数为2393。数据集包含504种常见的儿科疾病、7,085种身体部位、12,907种临床表现、4,354种医疗程序等九大类医学实体。
  • 2020 中药说明书实体识别挑战, 本次标注数据源来自中药药品说明书,共包含1997份去重后的药品说明书,其中1000份用于训练数据,500份用作初赛测试数据,剩余的497份用作复赛的测试数据,共定义了13类实体。
  • CCKS 2019 医疗命名实体识别, 本任务是CCKS围绕中文电子病历语义化开展的系列评测的一个延续,在CCKS 2017,2018医疗命名实体识别评测任务的基础上进行了延伸和拓展。包括疾病和诊断、检查、检验、手术、药物和解剖部位等6种类别。
  • CCKS 2019 中文短文本的实体链指, 百度实体链指数据集, 面向中文短文本的实体识别与链指,简称ERL(Entity Recognition and Linking),是NLP领域的基础任务之一,即对于给定的一个中文短文本(如搜索Query、微博、用户对话内容、文章标题等)识别出其中的实体,并与给定知识库中的对应实体进行关联。ERL整个过程包括实体识别和实体链指两个子任务。7万训练集、1万开发集、1万测评集。
  • CCKS 2019 人物关系抽取, 任务关系抽取数据集IPRE(Inter-Personal Relationship Extraction),重点关注人物之间的关系抽取研究。给定一组人物实体对和包含该实体对的句子,找出给定实体对在已知关系表中的关系。
  • CCKS 2018 面向中文电子病历的命名实体识别, 本任务由清华大学知识工程实验室及医渡云(北京)技术有限公司联合主办,是CCKS 2017 CNER评测的改进和完善。实体类型聚焦在症状,药物,手术三大类,症状类型进一步细化,划分为三种类别, 总共五种类别, 600个现病史文档作为训练集,200 -400份作为测试集;

数据格式

1. 序列标注 (COLLN格式, SPAN格式):
1.1 COLLN格式(文件以.conll结尾):
青 B-ORG
岛 I-ORG
海 I-ORG
牛 I-ORG
队 I-ORG
和 O
广 B-ORG
州 I-ORG
松 I-ORG
日 I-ORG
队 I-ORG
的 O
雨 O
中 O
之 O
战 O1.2 SPAN格式(文件以.span结尾):
{"label": [{"type": "ORG", "ent": "市委", "pos": [10, 11]}, {"type": "PER", "ent": "张敬涛", "pos": [14, 16]}], "text": "去年十二月二十四日,市委书记张敬涛召集县市主要负责同志研究信访工作时,提出三问:『假如上访群众是我们的父母姐妹,你会用什么样的感情对待他们?"}
{"label": [{"type": "PER", "ent": "金大中", "pos": [5, 7]}], "text": "今年2月,金大中新政府成立后,社会舆论要求惩治对金融危机负有重大责任者。"}
{"label": [], "text": "与此同时,作者同一题材的长篇侦破小说《鱼孽》也出版发行。"}

使用方式

更多样例sample详情见test目录,以及slRun.py文件

序列标注, sequence-labeling


# 适配linux
import platform
import json
import sys
import os
path_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
path_sys = os.path.join(path_root, "pytorch_sequencelabeling")
sys.path.append(path_sys)
print(path_root)
print(path_sys)
# 分类下的引入, pytorch_textclassification
from slTools import get_current_time
from slRun import SequenceLabeling
from slConfig import model_configevaluate_steps = 320  # 评估步数
save_steps = 320  # 存储步数
# pytorch预训练模型目录, 必填
pretrained_model_name_or_path = "bert-base-chinese"
# 训练-验证语料地址, 可以只输入训练地址
path_corpus = os.path.join(path_root, "corpus", "sequence_labeling", "ner_china_people_daily_1998_conll")
path_train = os.path.join(path_corpus, "train.conll")
path_dev = os.path.join(path_corpus, "dev.conll")if __name__ == "__main__":model_config["evaluate_steps"] = evaluate_steps  # 评估步数model_config["save_steps"] = save_steps  # 存储步数model_config["path_train"] = path_train  # 训练模语料, 必须model_config["path_dev"] = path_dev      # 验证语料, 可为Nonemodel_config["path_tet"] = None          # 测试语料, 可为None# 一种格式 文件以.conll结尾, 或者corpus_type=="DATA-CONLL"# 另一种格式 文件以.span结尾, 或者corpus_type=="DATA-SPAN"model_config["corpus_type"] = "DATA-CONLL"# 语料数据格式, "DATA-CONLL", "DATA-SPAN"model_config["task_type"] = "SL-CRF"     # 任务类型, "SL-SOFTMAX", "SL-CRF", "SL-SPAN"model_config["dense_lr"] = 1e-3  # 最后一层的学习率, CRF层学习率/全连接层学习率, 1e-5, 1e-4, 1e-3model_config["lr"] = 1e-5        # 学习率, 1e-5, 2e-5, 5e-5, 8e-5, 1e-4, 4e-4model_config["max_len"] = 156    # 最大文本长度, None和-1则为自动获取覆盖0.95数据的文本长度, 0则取训练语料的最大长度, 具体的数值就是强制padding到max_lenmodel_config["pretrained_model_name_or_path"] = pretrained_model_name_or_pathmodel_config["model_save_path"] = "../output/sequence_labeling/model_{}".format(model_type[idx])model_config["model_type"] = model_type[idx]# mainlc = SequenceLabeling(model_config)lc.process()lc.train()

paper

序列标注(SL, sequence-labeling)

  • Bi-LSTM-CRF: Bidirectional LSTM-CRF Models for Sequence Tagging
  • Bi-LSTM-LAN: Hierarchically-Refined Label Attention Network for Sequence Labeling
  • CNN-LSTM: End-to-endSequenceLabelingviaBi-directionalLSTM-CNNs-CRF
  • DGCNN: Multi-Scale Context Aggregation by Dilated Convolutions
  • CRF: Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data
  • Biaffine-BER: Named Entity Recognition as Dependency Parsing
  • Lattice-LSTM: Lattice LSTM:Chinese NER Using Lattice LSTM
  • WC-LSTM: WC-LSTM: An Encoding Strategy Based Word-Character LSTM for Chinese NER Lattice LSTM
  • Lexicon: Simple-Lexicon:Simplify the Usage of Lexicon in Chinese NER
  • FLAT: FLAT: Chinese NER Using Flat-Lattice Transformer
  • MRC: A Unified MRC Framework for Named Entity Recognition

参考

This library is inspired by and references following frameworks and papers.

  • keras与tensorflow版本对应: https://docs.floydhub.com/guides/environments/
  • BERT-NER-Pytorch: https://github.com/lonePatient/BERT-NER-Pytorch
  • bert4keras: https://github.com/bojone/bert4keras
  • Kashgari: https://github.com/BrikerMan/Kashgari
  • fastNLP: https://github.com/fastnlp/fastNLP
  • HanLP: https://github.com/hankcs/HanLP
  • FGM: 【炼丹技巧】功守道:NLP中的对抗训练 + PyTorch实现
  • pytorch-loss: pytorch-loss
  • PriorLoss: 通过互信息思想来缓解类别不平衡问题
  • CircleLoss: 将“softmax+交叉熵”推广到多标签分类问题
  • FocalLoss: Focal Loss for Dense Object Detection
  • CRF: pytorch-crf
  • scikit-learn: https://github.com/scikit-learn/scikit-learn
  • tqdm: https://github.com/tqdm/tqdm

Reference

For citing this work, you can refer to the present GitHub project. For example, with BibTeX:

@software{Pytorch-NLU,url = {https://github.com/yongzhuo/Pytorch-NLU},author = {Yongzhuo Mo},title = {Pytorch-NLU},year = {2021}

*希望对你有所帮助!

pytorch-sequencelabeling是一个支持softmax、crf、span等模型,注于序列标注(命名实体识别、词性标注、中文分词)的轻量级自然语言处理工具包,包含数据与实验相关推荐

  1. PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词

    20210607 https://blog.csdn.net/u011828281/article/details/81171066 前言:译者实测 PyTorch 代码非常简洁易懂,只需要将中文分词 ...

  2. Pytorch——XLNet 预训练模型及命名实体识别

    介绍 在之前我们介绍和使用了 BERT 预训练模型和 GPT-2 预训练模型,分别进行了文本分类和文本生成次.我们将介绍 XLNet 预训练模型,并使用其进行命名实体识别次. 知识点 XLNet 在 ...

  3. NLP入门(八)使用CRF++实现命名实体识别(NER)

    CRF与NER简介   CRF,英文全称为conditional random field, 中文名为条件随机场,是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机 ...

  4. pytorch实现BiLSTM+CRF用于NER(命名实体识别)

    pytorch实现BiLSTM+CRF用于NER(命名实体识别) 在写这篇博客之前,我看了网上关于pytorch,BiLstm+CRF的实现,都是一个版本(对pytorch教程的翻译), 翻译得一点质 ...

  5. Pytorch: 命名实体识别: BertForTokenClassification/pytorch-crf

    文章目录 基本介绍 BertForTokenClassification pytorch-crf 实验项目 参考 基本介绍 命名实体识别:命名实体识别任务是NLP中的一个基础任务.主要是从一句话中识别 ...

  6. BiLSTM+CRF的损失由发射矩阵和转移矩阵计算而得 BiLSTM+CRF命名实体识别:达观杯败走记(下篇

    如果是训练,那么直接用发射矩阵和真实标签去计算Loss,用于更新梯度. 这需要用到CRF中的forward函数. 如果是预测,那么就用发射矩阵去进行维特比解码,得到最优路径(预测的标签). 这需要用到 ...

  7. 【文本数据挖掘】中文命名实体识别:HMM模型+BiLSTM_CRF模型(Pytorch)【调研与实验分析】

    1️⃣本篇博文是[文本数据挖掘]大作业-中文命名实体识别-调研与实验分析 2️⃣在之前的自然语言课程中也完成过一次命名实体识别的实验 [一起入门NLP]中科院自然语言处理作业三:用BiLSTM+CRF ...

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

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

  9. 零基础入门--中文命名实体识别(BiLSTM+CRF模型,含代码)

    https://github.com/mali19064/LSTM-CRF-pytorch-faster 中文分词 说到命名实体抽取,先要了解一下基于字标注的中文分词. 比如一句话 "我爱北 ...

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

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

最新文章

  1. ucint核心边缘分析_5G、云计算、物联网与边缘计算的相辅相承
  2. 先入为主与刚刚好(自省)
  3. P4332 [SHOI2014]三叉神经树(LCT)
  4. jQuery的概念、用法、常见面试题详解
  5. vue 双数据绑定原理
  6. Delphi XE的RTTI增强,动态Hook某些内部事件
  7. 语言写贪吃蛇墙角符号_从零基础到拥抱人工智能,您的孩子可能就差一个贪吃蛇游戏...
  8. 《使命召唤7:黑色行动》有什么简单办法进入僵尸模式
  9. 不使用任何判断比较两个整数
  10. 网络是怎样连接起来的
  11. 陈丹琦博士论文里对attention机制的讲解
  12. 连接服务器打印机文件名无效,局域网打印机连接时显示打印机名无效是何原因? 求教数码高手!...
  13. layui switch使用详解
  14. 2020年的触动心灵的鸡汤
  15. led大屏按实际尺寸设计画面_LED显示屏尺寸规格及计算方法
  16. cad怎么设置线的粗细_AUTOCAD中如何设置线宽
  17. Spring Boot(三):RestTemplate提交表单数据的三种方法
  18. c语言测试软件的编写,用c语言编写智商测试软件
  19. Discuz! version 5.0.0 suffers from a cross site sc
  20. 北电破产意味着电信业贵族时代的结束

热门文章

  1. php 过滤绕过注入,PHPB2B注入#1(绕过过滤)
  2. QT入门(六)——代码创建计算器界面|可以计算的简易计算器|按键的关联
  3. 【车牌识别】基于matlab GUI模板匹配车牌库识别【含Matlab源码 416期】
  4. codewhy 深入JavaScript高级语法(资源视频全)
  5. 一次通过PMP认证考试的心得分享
  6. c语言大学程序设计题库,c语言程序设计题库
  7. html切西瓜游戏源码,html5切水果源码(水果忍者)
  8. QQ聊天记录恢复、迁移教程(改变默认存储位置、个人文件夹保存位置)
  9. android移动应用基础教程源代码,《Android移动应用基础教程》之Android购物商城
  10. mysql数据库的属性_mysql 数据库属性