http://blog.csdn.net/appleml/article/details/78664824 在理解CRF的时候费了一些功夫,将一些难以理解的地方稍微做了下标注,隔三差五看看加强记忆, 代码是pytorch文档上的example import torch import torch.autograd as autograd import torch.nn as nn import torch.optim as optim def to_scalar(var): #var是Variab…
http://blog.csdn.net/scotfield_msn/article/details/60339415 在TensorFlow (RNN)深度学习下 双向LSTM(BiLSTM)+CRF 实现 sequence labeling  双向LSTM+CRF跑序列标注问题 源码下载 去年底样子一直在做NLP相关task,是个关于序列标注问题.这 sequence labeling属于NLP的经典问题了,开始尝试用HMM,哦不,用CRF做baseline,by the way, 用的CR…
前言:译者实测 PyTorch 代码非常简洁易懂,只需要将中文分词的数据集预处理成作者提到的格式,即可很快的就迁移了这个代码到中文分词中,相关的代码后续将会分享. 具体的数据格式,这种方式并不适合处理很多的数据,但是对于 demo 来说非常友好,把英文改成中文,标签改成分词问题中的 "BEMS" 就可以跑起来了. # Make up some training data training_data = [( "the wall street journal reported…
久闻LSTM + CRF的效果强大,最近在看Pytorch官网文档的时候,看到了这段代码,前前后后查了很多资料,终于把代码弄懂了.我希望在后来人看这段代码的时候,直接就看我的博客就能完全弄懂这段代码. 看这个博客之前,我首先建议看看 Pytorch 关于Bi-LSTM + CRF的解释 看完再看看这位的博客 Bi-LSTM-CRF for Sequence Labeling PENG 这两部分内容都看完了之后,我就接着上面这位的博客继续讲,他讲的很好了,只是没有讲的更细致. 首先我们来看看Sco…
一. BILSTM + CRF介绍 https://www.jianshu.com/p/97cb3b6db573 1.介绍 基于神经网络的方法,在命名实体识别任务中非常流行和普遍. 如果你不知道Bi-LSTM和CRF是什么,你只需要记住他们分别是命名实体识别模型中的两个层. 1.1开始之前 我们假设我们的数据集中有两类实体——人名和地名,与之相对应在我们的训练数据集中,有五类标签: B-Person, I- Person,B-Organization,I-Organization 假设句子x由五…
pytorch实现BiLSTM+CRF用于NER(命名实体识别)在写这篇博客之前,我看了网上关于pytorch,BiLstm+CRF的实现,都是一个版本(对pytorch教程的翻译), 翻译得一点质量都没有,还有一些竟然说做得是词性标注,B,I,O是词性标注的tag吗?真是误人子弟.所以 自己打算写一篇关于pytorch上实现命名实体识别的翻译,加入自己的理解.前面是一些牢骚话 BiLSTM我上篇博客介绍了pytorch实现LSTM 链接,这里是BiLSTM,网络结构图如下 单向的LSTM,当前…
自己也是一个初学者,主要是总结一下最近的学习,大佬见笑. 中文分词说到命名实体抽取,先要了解一下基于字标注的中文分词.比如一句话 "我爱北京天安门”. 分词的结果可以是 “我/爱/北京/天安门”. 那什么是基于字标注呢? “我/O 爱/O 北/B 京/E 天/B 安/M 门/E”. 就是这样,给每个字都进行一个标注.我们可以发现这句话中字的标注一共有四种.他们分别代表的意义如下. B | 词首M | 词中E | 词尾O | 单字 B表示一个词的开始,E表示一个词的结尾,M表示词中间的字.如果这个…
BILSTM+CRF中的条件随机场 tensorflow中crf关键的两个函数是训练函数tf.contrib.crf.crf_log_likelihood和解码函数tf.contrib.crf.viterbi_decode crf_log_likelihood(inputs, tag_indices, sequence_lengths, transition_params=None) Computes the log-likelihood of tag sequences in a CRF. A…
动态 VS 静态深度学习工具集 Pytorch 是一个 动态 神经网络工具包. 另一个动态工具包的例子是 Dynet (我之所以提这个是因为使用 Pytorch 和 Dynet 是十分类似的. 如果你看过 Dynet 中的例子, 那么它将有可能对你在 Pytorch 下实现它有帮助). 与动态相反的是 静态 工具包, 包括了 Theano, Keras, TensorFlow 等等. 下面是这两者核心的一些区别: 在一个静态工具包中, 你一次性定义好一个计算图, 接着编译它, 然后把数据流输实例…
记pytorch版faster rcnn配置运行中的一些坑 项目地址 https://github.com/jwyang/faster-rcnn.pytorch 一般安装配置参考README.md文件 配置详情 Python3.6 pytorch1.0 GPURTX2080 CUDA10.0 参考博客 https://blog.csdn.net/weixin_43380510/article/details/83004127 1. 分支爬取错误 git clone -b pytorch-1.0…
1. https://blog.csdn.net/buppt/article/details/82227030 (Bilstm+crf中的crf详解,包括是整体架构) 2. 邹博关于CRF的讲解视频 3. https://blog.csdn.net/jmh1996/article/details/83476061 (实践代码)…
一.模型框架图 二.分层介绍 1)ALBERT层 albert是以单个汉字作为输入的(本次配置最大为128个,短句做padding),两边分别加上开始标识CLS和结束标识SEP,输出的是每个输入word的embedding.在该框架中其实主要就是利用了预训练模型albert的词嵌入功能,在此基础上fine-tuning其后面的连接参数,也就是albert内部的训练参数不参与训练. 2)BiLSTM层 该层的输入是albert的embedding输出,一般中间会加个project_layer,保证…
  在文章NLP(二十四)利用ALBERT实现命名实体识别中,笔者介绍了ALBERT+Bi-LSTM模型在命名实体识别方面的应用.   在本文中,笔者将介绍如何实现ALBERT+Bi-LSTM+CRF模型,以及在人民日报NER数据集和CLUENER数据集上的表现.   功能项目方面的介绍里面不再多介绍,笔者只介绍模型训练和模型预测部分的代码.项目方面的代码可以参考文章NLP(二十四)利用ALBERT实现命名实体识别,模型为ALBERT+Bi-LSTM+CRF,结构图如下: 模型训练的代码(alb…
https://blog.csdn.net/guolindonggld/article/details/79044574 Bi-LSTM 使用TensorFlow构建Bi-LSTM时经常是下面的代码: cell_fw = tf.contrib.rnn.LSTMCell(num_units=100) cell_bw = tf.contrib.rnn.LSTMCell(num_units=100) (outputs, output_states) = tf.nn.bidirectional_dyna…
目录 1. 环境搭建 2. 数据集构建 3. 训练模型 4. 测试模型 5. 评估模型 6. 可视化 7. 高级进阶-网络结构更改 1. 环境搭建 将github库download下来. git clone https://github.com/ultralytics/yolov3.git 建议在linux环境下使用anaconda进行搭建 conda create -n yolov3 python=3.7 安装需要的软件 pip install -r requirements.txt 环境要求…
采用github上star比较高的一个开源实现https://github.com/yhenon/pytorch-retinanet 在anaconda中新建了一个环境,因为一开始并没有新建环境,在原有的环境里,遇到了pytorch,numpy等版本问题,尤其是一开始用0.1.2版的pytorch,有一个TH路径不对,导致编译错误,这是我最讨厌的错误,遇到编译错误往往一脸懵逼,如果NMS部分不用编译,直接用python实现就好了,当然那样速度可能会慢很多. 先记录下我的各个包的版本 cffi …
传统 CRF 中的输入 X 向量一般是 word 的 one-hot 形式,前面提到这种形式的输入损失了很多词语的语义信息.有了词嵌入方法之后,词向量形式的词表征一般效果比 one-hot 表示的特征要好.本文先主要介绍了LSTM.词嵌入与条件随机场,然后再从序列标注问题探讨 BiLSTM与CRF等的应用. Word Embedding 和 LSTM Word Embedding 简单的说是将高维空间(空间的维度通常是词典的大小)中的表示 word 的高维 one-hot 向量映射到低维(几十维…
本文转载自:http://www.17bigdata.com/97-5%E5%87%86%E7%A1%AE%E7%8E%87%E7%9A%84%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D%EF%BC%88%E5%AD%97%E5%B5%8C%E5%85%A5bi-lstmcrf%EF%BC%89.html 摘要 深度学习当前在NLP领域发展也相当快,翻译,问答,摘要等基本都被深度学习占领了. 本文…
https://www.cnblogs.com/Determined22/p/7238342.html 这篇博客 里面这个公式表示抽象的含义,表示的是最后的分数由他们影响,不是直观意义上的相加. 为什么在后面使用的时候只输入了特征转移矩阵,没有观测矩阵: 1. 因为在LSTM或者是Transformer输出的时候,输出的是[batch_size, sequence_length, num_tags],只需要找到最符合的tag就行了 2. 为什么CRF是无向图:因为后面的标签要决定前面的标签.为什…
数据集为玻森命名实体数据. 目前代码流程跑通了,后续再进行优化. 项目地址:https://github.com/cyandn/practice/tree/master/NER 步骤: 数据预处理: def data_process(): zh_punctuation = [',', '.', '?', ':', '!', '……'] with open('data/BosonNLP_NER_6C_process.txt', 'w', encoding='utf8') as fw: with o…
import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms # 配置GPU或CPU设置 device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') # 超参数设置 num_epochs = 5 num_classes = 10 batch_size = 100 learning_…
import os import torch import torchvision import torch.nn as nn from torchvision import transforms from torchvision.utils import save_image # 配置GPU或CPU设置 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') # 超参数设置 latent_size = 64 h…
import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms # 配置GPU或CPU设置 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') # 超参数设置 sequence_length = 28 input_size = 28 hidden_size = 128 num_l…
好久没有写博客了,这一次就将最近看的pytorch 教程中的lstm+crf的一些心得与困惑记录下来. 原文 PyTorch Tutorials 参考了很多其他大神的博客,https://blog.csdn.net/cuihuijun1hao/article/details/79405740 https://www.jianshu.com/p/97cb3b6db573 至于原理,非常建议读这篇英文博客,写的非常非常非常好!!!!!!值得打印出来细细品读!!!!!!!!!!!!!!!!!!!!!!…
好久没有写博客了,这一次就将最近看的pytorch 教程中的lstm+crf的一些心得与困惑记录下来. 原文 PyTorch Tutorials 参考了很多其他大神的博客,https://blog.csdn.net/cuihuijun1hao/article/details/79405740 https://www.jianshu.com/p/97cb3b6db573 至于原理,非常建议读这篇英文博客,写的非常非常非常好!!!!!!值得打印出来细细品读!!!!!!!!!!!!!!!!!!!!!!…
文章目录基本介绍BertForTokenClassificationpytorch-crf实验项目参考基本介绍命名实体识别:命名实体识别任务是NLP中的一个基础任务.主要是从一句话中识别出命名实体.比如姚明在NBA打球 从这句话中应该可以识别出姚明(人), NBA(组织)这样两个实体.常见的方法是对字或者词打上标签.B-type, I-type, O, 其中B-type表示组成该类型实体的第一个字或词.I-type表示组成该类型实体的中间或最后字或词,O表示该字或词不组成命名实体,当然有的地方也…
1. 概述条件随机场(Conditional Random Field, CRF)是概率图模型(Probabilistic Graphical Model)与区分性分类( Discriminative Classification)的一种接合,能够用来对“结构预测”(structured prediction,e.g. 序列标注)问题进行建模. 如图1,论文 [1] 阐释了 CRF 与其他模型之间的关系. 图1. CRF 与 其他机器学习模型对比[src] 本文我们重点关注输入结点独立的“线性链…
做了一段时间的Sequence Labeling的工作,发现在NER任务上面,很多论文都采用LSTM-CRFs的结构.CRF在最后一层应用进来可以考虑到概率最大的最优label路径,可以提高指标. 一般的深度学习框架是没有CRF layer的,需要手动实现.最近在学习PyTorch,里面有一个Bi-LSTM-CRF的tutorial实现.不得不说PyTorch的tutorial真是太良心了,基本涵盖了NLP领域各个流行的model实现.在这里从头梳理一遍,也记录下学习过程中的一些问题. Bi-L…
目录 简介 隐马尔可夫模型(HMM) 条件随机场(CRF) 马尔可夫随机场 条件随机场 条件随机场的特征函数 CRF与HMM的对比 维特比算法(Viterbi) 简介 序列标注(Sequence Tagging)是一个比较简单的NLP任务,但也可以称作是最基础的任务.序列标注的涵盖范围是非常广泛的,可用于解决一系列对字符进行分类的问题,如分词.词性标注.命名实体识别.关系抽取等等. 对于分词相信看过之前博客的朋友都不陌生了,实际上网上已经有很多开源的中文分词工具,jieba.pkuseg.pyh…
声明:为了帮助初学者快速入门和上手,开始源学计划,即通过源代码进行学习.该计划收取少量费用,提供有质量保证的源码,以及详细的使用说明. 第一个项目是基于bert的命名实体识别(name entity recognition),pytorch实现 基于bert与语料模型在多个NLP任务上取的不错效果,包括在命名实体识别(name entity recognition)上,在bert之前,主要采用的模型是Bi-lstm + CRF的方式,取得了不错效果. Bert横空出世后,至今已经深度侵入到序列标…