命名实体识别学习-从基础算法开始(01)-维特比算法

用PyTorch从零实现BiLSTM-CRF命名实体识别(NER),附完整代码与中文数据集处理 本文详细介绍了如何使用PyTorch从零实现BiLSTM-CRF模型进行中文命名实体识别(NER),涵盖数据处理、模型构建、训练优化到实际应用的全流程。通过结合双向LSTM(BiLSTM)和条件随机场(CRF),有效提升实体识别准确率,特别适合处理中文文本中的复杂实体边界问题。文章还提供了完整代码和中文数据集处理方案,帮助开发者快速上手NER任务。 阅读详情

title: 命名实体识别学习-从基础算法开始-维特比算法
date: 2020-06-22 15:28:49
tags:


命名实体识别学习-从基础算法开始(01)-维特比算法


代码地址: https://github.com/SStarLib/NERfromBasic

Day1: 维特比算法

HMM的小例子

从一个小例子开始实现维特比算法:

例子来自知乎一个答案对维特比算法和HMM的讲解:

如何通俗地讲解 viterbi 算法? - Kiwee的回答 - 知乎
https://www.zhihu.com/question/20136144/answer/239971177

大致介绍下这个例子:

题目背景

从前有个村儿,村里的人的身体情况只有两种可能:健康或者发烧。
假设这个村儿的人没有体温计或者百度这种神奇东西,他唯一判断他身体情况的途径就是到村头我的偶像金正月的小诊所询问。
月儿通过询问村民的感觉,判断她的病情,再假设村民只会回答正常、头晕或冷。
有一天村里奥巴驴就去月儿那去询问了。
第一天她告诉月儿她感觉正常。
第二天她告诉月儿感觉有点冷。
第三天她告诉月儿感觉有点头晕。
那么问题来了,月儿如何根据阿驴的描述的情况,推断出这三天中阿驴的一个身体状态呢?

将问题抽象为一个HMM

从问题中过可以看出,{健康,发烧}对应隐马尔可夫模型中的状态序列,{正常,冷,头晕},则对应观察序列。(本例子其实不严谨,冷,头晕这两个观察现象是可以同时存在的,不过本例中假设其不同时存在)

问题要求:推断出这三天中阿驴的一个身体状态

问题本质:解码这三天的状态序列。

模型参数:状态转移概率矩阵,状态-观察概率分布矩阵,初始状态

  • **初始状态:**月儿预判的阿驴身体状态的概率分布 = { 健康:0.6 , 发烧: 0.4 }

  • 状态转移概率矩阵: {
    健康->健康: 0.7 ,
    健康->发烧: 0.3 ,
    发烧->健康:0.4 ,
    发烧->发烧: 0.6
    }

  • 状态-观察概率分布矩阵:{
    健康,正常:0.5 ,冷 :0.4 ,头晕: 0.1 ;
    发烧,正常:0.1 ,冷 :0.3 ,头晕: 0.6
    }

    image-20200622160308608

有了模型参数。就可以构建模型并用维特比算法进行解码了即预测三天的身体状态。

Python实现维特比算法

为了方便后面学习,使用Pytorch框架(其实numpy应该更简单些)

手算维特比过程:

image-20200622155623835

伪代码:

维特比算法的伪代码(来自宗成庆老师的ppt):

image-20200622161813184

代码前期准备
def main():
    states = [ "健康", "发烧"]
    observations = ["正常","冷", "头晕"]
    tran_matrix = torch.Tensor([[0.7, 0.3], [0.4, 0.6
中文命名实体识别:基于PyTorch的多模型中文命名实体识别 命名实体识别作为序列标注类的典型任务,其使用场景特别广泛。本项目基于PyTorch搭建HMM、CRF、BiLSTM、BiLSTM+CRF及BERT模型,实现中文命名识别任务,部分内容参考了https://zhuanlan.zhihu.com/p/61227299,全部代码链接上可找。 数据集 数据集来源于ACL 2018Chinese NER using Lattice LSTM论文中从新浪财经收... 阅读详情

相关推荐

从通信到NLP:维特比算法的跨领域应用之旅

本文探讨了维特比算法从通信到自然语言处理(NLP)的跨领域应用历程。作为动态规划的经典实践,该算法最初用于通信系统的卷积码解码,后成功应用于NLP的序列标注任务如中文分词。文章详细对比了不同领域的参数设计差异,并介绍了在现代AI系统中的演进方向,展现了这一算法的持久生命力。

weixin_29208077的博客 437

自然语言处理命名实体识别:使用Conditional Random Fields构建系统_2024-07-21_01-25-09.Tex

命名实体识别(NER)是NLP中的一个子任务,旨在识别文本中具有特定意义的实体,如人名、地名、组织名等。NER在信息抽取、问答系统、机器翻译等领域有广泛应用。命名实体识别(Named Entity Recognition, NER)是自然语言处理中的一个关键任务,旨在从文本中识别出人名、地名、组织名等特定实体。长实体识别:对于较长的实体,如“中华人民共和国国家卫生健康委员会”,CRF模型可能因特征窗口大小限制而难以准确识别。实体边界模糊。

zhubeibei168的博客 1135

PyTorch tutorial - BiLSTM CRF 代码解析

本文主要对PyTorch的tutorial之一,Advanced: Making Dynamic Decisions and the Bi-LSTM CRF,进行详细解读,行文顺序上,首先说明一下前面几个辅助函数的作用,然后主体按照Run training的运行顺序进行。(以下删除了原代码注释,可回tutorial中查看) def argmax(vec): _, idx = torch.m...

Ono_online的博客 1306

机器学习维特比算法(Viterbi Algorithm)

一、维特比算法(Viterbi Algorithm)讲解方式01:篱笆网络(Lattice)的最短路径问题 已知下图的篱笆网络,每个节点之间的数字表示相邻节点之间的距离,举个例子来说,如果我走,这个距离是。那么如果让你从A走到E,最短路径是哪一条呢? 显然大家都知道,通过穷举的方法是很容易得到最短路径,可是问题就在于如果穷举的话,需要的加法次数不用算你也知道实在是太多啦(每条路径需要计算次加法,一共条路径共次计算)!像这种没几层的篱笆网络也就罢了,如果每层13个节点,一共12层(然而这个规模对于标注问题来

u013250861的博客 9238

简单理解viterbi算法

简介: viterbi算法其实就是多步骤每步多选择模型的最优选择问题,其在每一步的所有选择都保存了前续所有步骤到当前步骤当前选择的最小总代价(或者最大价值)以及当前代价的情况下前继步骤的选择。依次计算完所有步骤后,通过回溯的方法找到最优选择路径。符合这个模型的都可以用viterbi算法解决。 用以下例子加以说明: 1.题目背景: 从前有个村儿,村里的人的身体情况只有两种可能:健康或...

3万+

命名实体识别的语料和代码(部分)

1.用规则做命名实体识别 原文:用规则做命名实体识别——NER系列(一) 这篇博文就不放出代码了,因为现在基本上不用规则做命名实体识别,当然除非你在某些特定的语料有规律,就完全可以用正则表达式来做。 2.用HMM做命名实体识别 原文:用隐马尔可夫模型(HMM)命名实体识别——NER系列(二) 代码和语料:https://github.com/lipengfei-558/hmm_ner_organization 3.用CRF做命名实体识别 原文:用CRF做命名实体识别——NER系列(

qq_19072921的博客 1449

隐马尔可夫模型之维特比算法案例讲解

111

anapple00的博客 1637

从语音识别到中文分词:维特比算法(Viterbi)在NLP里的那些“隐藏”应用

本文深入探讨了维特比算法(Viterbi Algorithm)在自然语言处理(NLP)中的多种应用,包括语音识别、中文分词、词性标注和命名实体识别等。通过动态规划的核心思想,维特比算法能够高效解决序列解码问题,显著提升NLP任务的性能。文章还介绍了算法优化技巧及与现代深度学习模型的结合方式,展示了这一经典算法在AI领域的持久价值。

weixin_30480075的博客 689

NLP作业01:利用HMM实现词性标注

HMM,即隐马尔可夫模型(Hidden Markov Model),是一种基于状态转移的概率模型,它可以用来描述一个系统在不同状态之间转移的过程,其中状态是不可观测的,只能通过观测到的结果来推测。HMM模型由两个部分组成:状态序列和观测序列。状态序列是一个随机的序列,描述了系统在不同状态之间的转移过程;观测序列是由状态序列生成的观测数据,描述了在不同状态下系统产生的观测结果。HMM模型的基本假设是,系统的状态转移过程和观测结果都是由概率分布描述的。

lz_逸尘9的博客 1370

CRF条件随机场----原理讲解和代码实现(命名实体识别--序列标注问题)

1、CRF条件随机场引入 几个概念介绍: 随机场:由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场 马尔科夫随机场:马尔科夫随机场是随机场的特例,它及假设随机场中某个位置的赋值仅仅与和它相邻的位置的赋值有关,与其不相邻的位置的值无关 条件随机场:CRF是马尔科夫随机场的特例,它假设马尔科夫随机场中只有X和Y两种变量,且X一般是...

weixin_41097516的博客 3856

学习笔记:基于BI-LSTM+CRF实现命名实体识别(Pytorch实现)

写在前面: 本文根据自己的理解介绍Pytorch实现Bi-LSTM+CRF的官方代码的实现过程和原理,初入NLP如有不对请大牛指正。 原文链接:https://pytorch.org/tutorials/beginner/nlp/advanced_tutorial.html#bi-lstm-conditional-random-field-discussion 代码下载链接: 先不讲原理,来看看代码的实现过程 一、main函数(包括准备数据、训练、验证结果) 1.首先准备好数据 词语(输入):将训练句子中出

Tangjing_Pacino的博客 4202

命名实体识别(NER)任务中,为什么BiLSTM后面一定要接CRF层?一个例子讲透

本文深入解析了BiLSTM-CRF模型在命名实体识别(NER)任务中的核心优势。通过分析'北京欢迎你'的标注案例,揭示BiLSTM单独使用时产生的标签冲突问题,以及CRF层如何作为'规则校验器'确保标签序列的合理性。文章详细对比了有无CRF层的预测差异,并探讨了标签转移矩阵的学习机制,帮助读者理解这一黄金组合在NER任务中的不可替代性。

weixin_42653691的博客 352

劝你别再闷头自学NLP了!!!请收下这套自然语言处理(NLP)算法学习路线!

2021年眼看快要结束,回想起前段时间的秋招算法岗,可谓是从灰飞烟灭到人间炼狱。之后的趋势都变成了这样:转行的开始转行,换专业的开始换专业。于是很多人欲转行NLP,原因是NLP技术近几年发...

zenRRan的博客 1505

自然语言处理(NLP)算法学习路线!

允中 发自 凹非寺量子位 编辑 | 公众号 QbitAINLP近几年非常火,且发展特别快。像BERT、GPT-3、图神经网络、知识图谱等技术应运而生。我们正处在信息爆炸的时代、面对每天铺天...

量子位 1708

昇思25天学习打卡营第19天|LSTM+CRF序列标注

序列标注指给定输入序列,给序列中每个Token进行标注标签的过程。序列标注问题通常用于从文本中进行信息抽取,包括分词(Word Segmentation)、词性标注(Position Tagging)命名实体识别(Named Entity Recognition, NER)等。输入序列清华大学座落于首都北京输出标注BIIIOOOOOBI如上表所示,清华大学和北京是地名,需要将其识别,我们对每个输入的单词预测其标签,最后根据标签来识别实体。

weixin_52919639的博客 1096

【最新】2021年自然语言处理(NLP)算法学习路线!

NLP近几年非常火,且发展特别快。像BERT、GPT-3、图神经网络、知识图谱等技术应运而生。我们正处在信息爆炸的时代、面对每天铺天盖地的网络资源和论文、很多时候我们面临的问题并不是缺资源...

fengdu78的博客 738

别再只调包了!手把手带你用PyTorch从零实现BiLSTM-CRF命名实体识别(附完整代码)

本文详细介绍了如何使用PyTorch从零实现BiLSTM-CRF模型进行命名实体识别(NER),深入解析了模型架构、CRF层设计及维特比解码等核心原理。通过实战医疗文本NER任务,展示了完整训练流程和优化策略,帮助开发者彻底理解底层实现而非仅调用现成工具包。

weixin_42528090的博客 88

别再手动标注了!用BERT+CRF搞定中文命名实体识别,快速构建你的智能问答知识库

本文详细介绍了如何利用BERT-CRF模型组合实现高效的中文命名实体识别(NER),解决传统方法依赖大量人工标注的问题。通过BERT的语义理解能力和CRF层的序列优化,显著提升实体识别准确率,并分享数据准备、模型训练及知识库集成的实战经验,助力快速构建智能问答系统。

weixin_42552637的博客 226
上一篇: NBSVM (Naive Bayes - Support Vector Machine)学习
下一篇: 命名实体识别学习-从基础算法开始(02)lstm+crf序列标注
StarLib
博客等级 码龄8年 31粉丝 23原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值