BiLSTM+CRF基于pytorch实现命名实体识别,对pytorch官网给出的例子实现优化,附学习思路和源代码

本文基于深度学习知识,详细介绍了使用PyTorch实现BiLSTM和CRF进行命名实体识别的学习过程。文章首先概述了BiLSTM和CRF的基本概念,接着阐述了学习CRF的思路,包括参考的资料和理解关键点。文中还提到了所需环境,并展示了训练和预测的示例结果,显示了模型的有效性。
摘要由CSDN通过智能技术生成

学习思路

BiLSTM + CRF

本文建立在读者已有一定深度学习知识的基础上,可以看看pytorch实现验证码图片识别基本的反向传播思想,以及机器学习的相关概念(损失函数、随机梯度下降、训练集测试集等等)。

LSTM看这一篇就够了。

接下来给出我学习CRF的思路

  • 这篇的Section1,2,3,了解基本的朴素贝叶斯和最大熵模型,我个人觉得这篇CRF的部分讲得不清楚
  • 这篇全部,了解CRF的特征向量、CRF建模的对象、对数极大似然函数以及CRF的损失函数、以及viterbi解码(decode)和迭代计算所有路径分数的思想
  • 再对照这篇博客pytorch官网BiLSTM+CRF教程中对CRF的路径分数等的定义,初步实现模型
  • 最后,基于这篇博客实现简化版模型,但我觉得这篇博客没搞清楚特征向量和分数的关系,所以只要看迭代计算那里就行

Requirements

  • python==3.7.6,
  • torch==1.4.0+cu92
  • 安装环境可以参考这篇博客

运行结果

随便编了3个句子,用前两句训练100轮后预测第三句,结果如下
在这里插入图片描述
可以看到效果还是不错的。

源代码

import torch
import torch.autograd as autograd
import torch.nn as nn
import torch.optim as optim
from utils import prepare_sequence
def prepare_sequence(seq, to_ix):
    idxs = [to_ix[w] for w in seq]
    return torch.tensor(idxs, dtype=torch.long)

class BiLSTM_CRF(nn.Module):
    def __init__(self, vocab_size, tag_to_ix, embedding_dim, hidden_dim):
        super().__init__()

        self.embedding_dim = embedding_dim
        self.hidden_dim = hidden_dim
        self.vocab_size = vocab_size
        self.tag_to_ix = tag_to_ix
        self.tagset_size = len(tag_to_ix)

        self.word_embeds = nn.Embedding(vocab_size, embedding_dim)
        self.lstm = nn.LSTM(embedding_dim, hidden_dim // 2,
                            num_layers=1, bidirectional=True)

        self.hidden2tag = nn.Linear(hidden_dim, self.tagset_size)

        self.transitions = nn.Parameter(
            torch.randn(self.tagset_size, self.tagset_size))
        # never transfer to the start tag and never transfer from stop tag
        self.transitions.data[tag_to_ix[START_TAG], :] 
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值