使用biLSTM_CRF完成词性标注任务

使用Pytorch框架中定义好的biLSTM_CRF模型和超参数,主要目的是加深学习印象;

过去一段时间对序列标注任务学习的梳理,学习的过程中有不断修正之前的理解里谬误的地方;本文是对tutorial的示范例子的一次依葫芦画瓢,仅作为对之前学习内容的回顾总结和实践,最重要的还是先对知识和模型的学习!

pytorch的官方文档

学习过程做的笔记:

对biLSTM_CRF模型的理解
对pytorch官方文档里biLSTM_CRF模型的源码学习(一)整体理解
(二)预定义方法、模型的初始化工作
(三)前向传播过程

上述是用序列标注任务(词性标注和命名实体识别)来学习bilstm_crf模型的,前提是理解序列标注任务

对词性标注任务、条件随机场crf、hmm模型及两者区别的理解

如果对hmm模型、以及序列标注任务中转移概率分布、发射概率分布概念的理解有困难,可以先从一个小例子开始学习hmm模型

用C++语言实现hmm+viterbi算法做词性标注任务(给定hmm模型,侧重于理解hmm和viterbi的算法部分)

理解给定hmm模型下完成词性标注任务的过程后,可以尝试⬇️基于统计、使用参数估计方法定义自己的hmm模型,并使用模型做词性标注任务

用python语言实现hmm+viterbi算法做词性标注任务(与本文使用相同的数据集)

1.开始标签、结束标签、超参数(词向量维度、隐藏层向量的维度)

START_TAG = "<START>"
STOP_TAG = "<STOP>"
EMBEDDING_DIM = 5
HIDDEN_DIM = 4

2.使用已经标注好的人民日报语料库作为数据集,读入文件

在这里插入图片描述
词序列和标签序列保存在list_vocab和list_pos

f = open("199801_dependency_treebank_2003pos2103230114.txt","r")
txt = f.read() # 一次性读入全部
f.close()

lines = txt.split("\n") # 按行切割

row = 0 # 源文本文件从第一行开始每隔四行为词汇统计行 中文分词结果
list_vocab=[]
while row<len(lines):
    for word in lines[row].split(): #将分好的词全部加进list_vocab中
        list_vocab.append(word)
    row+=5

row = 1 # 源文本文件从第二行开始每隔四行为词性标注统计行
list_pos=[]
while row<len(lines):
    for pos in lines[row].split(): #将分好的词全部加进list_vocab中
        list_pos.append(pos)
    row+=5

3.建立训练集数据,建立词在词表中的索引,标签在标签集中的索引,索引值到类标签的映射

training_data = [(list_vocab,list_pos)] #训练数据是(词序列,词性序列)的元组

word_to_ix = {
   }
for word in set(list_vocab):
    word_to_ix[word] = len(word_to_ix)  # 词表
tag_to_ix={
   }
ix_to_tag={
   } # 建立标签下标->标签的映射 便于输出预测结果时直接输出标签值
for tag in set(list_pos):
    tag_to_ix[tag] = len(tag_to_ix) #标签表
    ix_to_tag[tag_to_ix[tag]] = tag

tag_to_ix[START_TAG] = len(tag_to_ix)
ix_to_tag[tag_to_ix[START_TAG]
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值