Bilstm+crf中的crf详解-程序员宅基地

技术标签: crf讲解  bilstm+crf  知识图谱  

本文是对bilstm+crf模型中的crf进行讲解,并不是完整的条件随机场的讲解。

如果对命名实体识别还不清楚的同学,可以先看这篇文章代码在这里

模型如下图所示。

我们已知lstm的输出就是每个字标注的概率。假设lstm输出概率如下所示。这里为了方便,只写了 BMEO 4种标注结果。更多的话也是相同的。

而crf首先在每句话的前面增加一个<start>字,在每句话的结尾增加一个<end>字。

然后定义了一个转移矩阵,转移矩阵中的数值代表前面一个字标注结果到下一个字的标注结果的概率。比如下面矩阵中的第一行,代表的含义就是前一个字标注为start,下一个字标注为B 的概率是0.6,标注为O的概率就是0.4。这个矩阵是随机初始化的,里面的数值也是通过梯度下降自动更新的。

然后又定义了“路径”这个概念,一句话的每一种标注结果就代表一个路径。下图就代表两条路径。

每条路径的分数 P=e^s
s = 初试分数 + 转换分数
初试分数 = 路径上lstm输出分数和
转换分数 = 路径上转换矩阵分数和

我们要找的就是分数最大的那一条路径,就可以得到这句话每个字的标注结果,然后就可以通过BME规则把实体抽取出来了。我们定义crf的损失函数如下。

然后就可以通过pytorch提供的

loss.backward()
optimizer.step()

进行训练了。

这里有一个写代码时候的算法优化,因为要计算所有路径的分数,一个一个算时间复杂度太高了,计算时候一个字一个字的计算,计算下一个字的时候,只用前一个字的分数就行了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/buppt/article/details/82227030

智能推荐

localhost不能访问127.0.0.1可以访问的原因及解决方法_127.0.0.1能进入到input链路-程序员宅基地

文章浏览阅读6.8k次,点赞3次,收藏4次。有时候我们在调试程序的时候,会出现一些莫名其妙匪夷所思的奇怪问题,localhost不能访问但127.0.0.1可以访问的问题就是其中之一。我估计大多数人都不会去想localhost到底与127.0.0.1有什么不同,就比如我,有时候用http://localhost/来访问本地服务器网页,有时则用http://127.0.0.1/来访问,我觉得他们是通用的表示本地服务器的两个不同的写法而已,..._127.0.0.1能进入到input链路

Java 8 Update 141 (8u141)_8u141 jdk-程序员宅基地

文章浏览阅读1k次。发行版要点说明IANA Data 2017bJDK 8u141 包含 IANA 时区数据版本 2017b。有关详细信息,请参阅 JRE 软件中的时区数据版本。证书更改:新 Let's Encrypt 证书已添加到根 CA已添加一个新根证书:ISRG Root X1别名:letsencryptisrgx1DN:CN=ISRG Root X1,O=Internet Security Research Group,C=USJDK-8177539(非公共)JMX 诊断改进com.sun.mana_8u141 jdk

VMware 12 安装 OS X 10.11.6 El Capitan 时提示:OS X 未能安装在您的电脑上_ox x不能在untitled上安装-程序员宅基地

文章浏览阅读3.8k次。报错信息OS X 未能安装在您的电脑上没有符号安装资格的软件包。请联系软件制造商以获得帮助。退出安装器以重启电脑,然后再次尝试。原因时间问题解决方法【实用工具】–【终端】,输入如下代码修改时间date 070512052018.03退出终端,重启后继续报错为了下载并恢复 OS X,将向 Apple 验证您的电脑是否可以安装 OS X准备安装时发生错误。请尝试重新运行此应用程序。..._ox x不能在untitled上安装

【数据库内核】Join的种类和用法_join类型-程序员宅基地

文章浏览阅读2.5k次。目录概述测试的表数据Join的种类一、Inner Join二、Left Join三、RightJoin四、FullJoin五、LEFT JOIN EXCLUDING INNER JOIN六、RIGHT JOIN EXCLUDING INNER JOIN七、FULL OUTERJOIN EXCLUDING INNER JOIN八、CROSSJOIN九、SEMIJOIN十、ANTIJOIN十一、ANTI NAJOIN结论概述​..._join类型

C语言的内存管理(代码段、数据段,栈,堆)_进程加载可执行文件时,将代码段都读入内存了吗-程序员宅基地

文章浏览阅读5.1k次,点赞6次,收藏48次。C语言的内存管理(代码段、数据段,栈,堆)C语言程序分为映像和运行两种状态,经过编译连接后形成的映像由:代码段(text) 数据段(data 包括RO data ,RW data), 其他段(调试的段,动态库共享库链接表的段)组成。可执行文件在内存运行时由栈,堆,数据段(由三部分部分组成:只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成,如下图所示: 栈区..._进程加载可执行文件时,将代码段都读入内存了吗

spring-boot-starter-test 使用_spring-boot-starter-test 2.7.10 怎么用-程序员宅基地

文章浏览阅读1.7w次。pom.xml &amp;amp;amp;amp;amp;lt;dependency&amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;lt;groupId&amp;amp;amp;amp;amp;gt;org.springframework.boot&amp;amp;amp;amp;amp;lt;/groupId&amp;amp;amp;amp;amp;gt; &amp;amp;amp;a_spring-boot-starter-test 2.7.10 怎么用

随便推点

John the Ripper 密码破解者_john the ripper jumbo-程序员宅基地

文章浏览阅读2.7k次,点赞47次,收藏19次。John the Ripper 是一个开源密码安全审计和密码恢复工具,可用于许多操作系统。 John the Ripper jumbo支持数百种哈希和密码类型,包括:Unix 风格的用户密码(Linux、*BSD、Solaris、AIX、QNX 等)、macOS、Windows、“网络应用程序”(例如 WordPress)、群件(例如,Notes/Domino)和数据库服务器(SQL、LDAP 等);网络流量捕获(Windows 网络身份验证、WiFi WPA-PSK 等);加密私钥(SSH、GnuPG、加_john the ripper jumbo

快速沃尔什变换(FWT)-程序员宅基地

文章浏览阅读621次,点赞6次,收藏4次。FWT 是一个用来快速求出下标进行位运算卷积的方法。_快速沃尔什变换

Windows环境下使用ssh服务器;MobaXterm1修改提交文件_mobaxterm创建文件夹-程序员宅基地

文章浏览阅读1k次。Windows环境下使用ssh服务器;MobaXterm1修改提交文件_mobaxterm创建文件夹

img标签和p标签是行内元素还是块级元素?以及p标签中可以放img标签吗?_imgp-程序员宅基地

文章浏览阅读2.1w次,点赞7次,收藏11次。其他块级元素:常用的有: div、p、ul、ol、li、dl、dt、dd、fieldset、form、h1~h6、hr、table另外还有:address、isindex、menu、noframes、noscript、pre、blockquote、center、dir、块级元素,默认宽度占满一行。HTML 是段落标签,除了可以添加文字内容外,完全可以添加其他。类似于 inline-block ,可以被p标签包裹。比如p是居中,图片也中了。也包括IMG图片标签。_imgp

G-Nut/Anubis-程序员宅基地

文章浏览阅读2.2k次。在GNSS数据处理中,我们时常要对观测值数据质量进行评估。G-Nut/Anubis (以下简称Anubis)是一款在原始观测值层面,提供多频多系统GNSS观测值质量检测与评估的开源C++程序,是GNSS领域为数不多的开放源代码的数据预处理和分析软件包之一1.G-Nut/Anubis 安装首先使用VMware 下载ubuntu然后安装QT creator然后给权限:chmod u+x gNut-Anubis./gNut-Anubis –h./gNut-Anubis -x XXXX.xml一些_g-nut

使用torchsummary时报错AttributeError: ‘list‘ object has no attribute ‘size‘_torchsummary 'list' object has no attribute 'size-程序员宅基地

文章浏览阅读2.2w次,点赞29次,收藏34次。使用torchsummary时报错AttributeError: 'list' object has no attribute 'size'说明使用代码报错截图查明原因解决方法最后说明因为最近刚开始学pytorch,想输出模型结果来看看,但是他并没有像keras那么简单,就挺苦恼的。但学习的过程从来都不会一帆风顺的,加油吧。使用代码报错截图查明原因首先找到上面截图的红框框,找到torchsummary.py文件中的那一行代码我们输出一下input[0]的类型发现前面传进去的都是tor_torchsummary 'list' object has no attribute 'size

推荐文章

热门文章

相关标签