文章目录
基本介绍
BertForTokenClassification
pytorch-crf
实验项目
参考
基本介绍
命名实体识别:命名实体识别任务是NLP中的一个基础任务。主要是从一句话中识别出命名实体。比如
姚明在NBA打球

从这句话中应该可以识别出姚明(人), NBA(组织)这样两个实体。
常见的方法是对字或者词打上标签。B-type, I-type, O, 其中B-type表示组成该类型实体的第一个字或词。I-type表示组成该类型实体的中间或最后字或词,O表示该字或词不组成命名实体,当然有的地方也采用B-type, I-type, E-type,O形式。
比如上一句话就可以有如下标签

姚/B-PER 明/I_PER 在/O NBA/B_ORG 打/O 球/O

这样根据标签我们就可以提取出命名实体了

BertForTokenClassification
Bert作为进来比较火的模型,自然官方给出了进行命名实体识别的方法。就是BertForTokenClassfication类。使用如下:

引入模型:

from pytorch_pretrained_bert import BertForTokenClassification
1
创建模型

model = BertForTokenClassification.from_pretrained(bert_model_dir, num_labels=self.opt.tag_nums)
1
参数:
bert_model_dir: bert预训练模型参数
num_labels: 词标签类的个数。即(2 or 3)*type+1
模型使用

out = model(batch_data, token_type_ids=None, attention_mask=batch_masks, labels=labels)
1
参数解释:

输入:
input_ids:训练集,torch.LongTensor类型,shape是[batch_size, sequence_length]
token_type_ids:可选项,当训练集是两句话时才有的。
attention_mask:可选项,当使用mask才有,可参考原论文。
labels:数据标签,torch.LongTensor类型,shape是[batch_size]
输出:
如果labels不是None(训练时):输出的是分类的交叉熵
如果labels是None(评价时):输出的是shape为[batch_size, num_labels]估计值
From:https://zhuanlan.zhihu.com/p/56155191
这样通过BertForTokenClassificaiton类,我们就可以很容易实现命名实体识别了。

pytorch-crf
条件随机场(CRF)命名实体识别的传统方法。自深度学习火后,BiLstm+CRF成为命名实体识别的标准方法。具体原理可以参看这篇博客.
由于pytorch官方没有实现条件随机场。但是有人自己实现了pytorch-crf, 是一个不错的开源包。

pytorch-crf基本操作:https://pytorch-crf.readthedocs.io/en/stable/
pytorch-crf接入BiLstm:
流程:
BiLstm输出:
(BatchSize, Sequence Length, 2*hidden_size)
经过一个linear层:
(BatchSize, Sequence Length, tag_nums)
可以考虑对tag_nums这个维度softmax一下.
最后输入到CRF中.
输出:
CRF的前向传播最后输出的是真实标签序列的分数。形式是log(realall) log(\frac{real}{all})log(
all
real

), 因此是一个负值。作为损失函数需要加一个负号
预测时调用decode就可以输出(BatchSize, Sequence)的序列标签。
具体细节可以参见这个issue
实验项目
见个人github. 待补充

参考
最通俗易懂的BiLSTM-CRF模型中的CRF层介绍
kmkurn/pytorch-crf
一起读Bert文本分类代码
---------------------
作者:无聊的人生事无聊
来源:CSDN
原文:https://blog.csdn.net/wangpeiyi9979/article/details/89599009
版权声明:本文为博主原创文章,转载请附上博文链接!

Pytorch: 命名实体识别: BertForTokenClassification/pytorch-crf相关推荐

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

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

  2. 知识图谱 基于CRF的命名实体识别模型

    基于CRF的命名实体识别模型 条件随机场 CRF ​ 条件随机场 CRF 是在已知一组输入随机变量条件的情况下,输出另一组随机变量的条件概率分布模型:其前提是假设输出随机变量构成马尔可夫随机场:条件随 ...

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

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

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

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

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

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

  6. Pytorch:jieba分词、hanlp分词、词性标注、命名实体识别、one-hot、Word2vec(CBOW、skipgram)、Word Embedding词嵌入、fasttext

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 文本预处理及其作用: 文本语料在输送给模型前一般需要一系列的预 ...

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

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

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

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

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

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

最新文章

  1. LeetCode 90.子集 II 中等难度
  2. Kafka删除topic Note: This will have no impact if delete.topic.enable is not【另外强烈推荐一个kafka小工具】
  3. 贷款中介市场要变天了吗?
  4. php strstr 从尾部,PHP strstr() 和 strrchr() 详解
  5. 批量上传文件及进度显示
  6. 性能测试流程与性能测试分析和问题定位分享
  7. Linux下qwt源码编译,QWT的编译与配置
  8. 中断程序_ABB机器人中断程序详解(安川FANUC)
  9. 盘点那些跨界玩到飞起的程序员们!
  10. php变量存储过程,php - 从存储过程调用返回的变量作为用于可变的输出值 - SO中文参考 - www.soinside.com...
  11. gre考试是机考还是笔试?
  12. 极通首次为中小企业量身定制EWEBS极速版
  13. Android自带Switch系列汇总学习
  14. 彻底解读剪不断理还乱的\r\n和\n, 以Windows和Linux为例
  15. 利用报废主板制作SPD刷内存编程器座子
  16. springboot多数据源配置导致mybatis的下划线转驼峰命名不起作用
  17. 怎样使用iPhone对Apple TV进行色彩平衡调整?
  18. j-vector(Multi-Task Learning for Text-dependent Speaker Verification)
  19. 项目选择与评估及后评价
  20. 前端使用search搜索器、with(关联)和 field

热门文章

  1. IDEA中将代码块封装为方法,IDEA代码重构快捷键
  2. 禅道Docker安装包发布
  3. 窗口键 键位码_键盘上这些被冷落的键位居然有这么强大的功能
  4. js数组的排序 sort详解
  5. Intellij IDEA 添加jar包
  6. jieba分词工具的使用方法
  7. 正则表达式中的\.表示什么意思
  8. OpenCL产业开发链
  9. TVM量化路线图roadmap
  10. 对抗性鲁棒性与模型压缩:ICCV2019论文解析