python 命名实体识别_使用Python和Keras的有关命名实体识别(NER)的完整教程

假设您是报纸行业的编辑,每天都会收到数千个故事。您将如何找到与体育,政治等特定领域相关的故事?您会讲完所有这些故事吗?无权利?一个可以帮助您划分为不同类别的系统怎么样?该系统还可以执行复杂的任务,例如按城市划分故事,识别故事中涉及的人员姓名,组织等。在这篇文章中,我将向您介绍一个名为命名实体识别(NER)的东西。NER的任务是在文本中查找单词的类型。

简介:

在自然语言处理(NLP)中,实体识别是常见问题之一。该实体称为感兴趣的文本部分。在NLP中,NER是一种从大型语料库中提取相关信息并将这些实体分类为预定义类别(如位置,组织,名称等)的方法。这是一个简单的示例,可以解决与特定于领域的问题相关的复杂实体识别。

2.先决条件:

这篇文章假定您熟悉:机器学习和神经网络的基本概念

在Python和Keras中运行的LSTM网络

条件随机场(CRF)

3.了解数据:

我已经使用了kaggle的数据集。该数据集是从GMB(格罗宁根意思银行)语料库中提取的,该语料库经过标记,注释和构建,专门用于训练分类器以预测命名的实体(例如名称,位置等)。

所有实体均使用BIO方案进行标记,其中每个实体标签以B或I字母开头。B-表示实体的开始和I-内部。不需要的单词用0 –标签标记。

下表显示了有关单词标签的详细信息。

读取CSV文件并显示前10行。

如您所见,句子#表示句子编号,每个句子包含使用标签栏中的BIO方案标记的单词。

这个特定的数据集包含47959个句子和35178个唯一单词。对于预处理步骤,您可以参考我的Github存储库。

让我们显示第一个句子。

4.使用条件随机字段(CRF)的NER:

CRF用于预测使用上下文信息添加信息的序列,模型将使用这些信息进行正确的预测。

以下是CRF的公式,其中y是输出变量,X是输入序列。

输出序列被建模为特征函数的归一化乘积。

4.1 CRF的功能准备:

以下是NER在nltk中使用的默认功能。还可以修改它以进行自定义,并可以提高模型的准确性。

加入我们的每周时事通讯以接收:最新文章和访谈

一个我事件:更新,免费通行证和优惠码

加入AI Time Journal计划的机会

4.2用scikit-learn训练模型:

现在,我们可以使用sklearn-crfsuite提供的条件随机字段实现来训练模型。初始化模型实例,并使用fit方法拟合训练数据。

4.3评估模型性能:

我们将使用精度,召回率和f1得分指标来评估模型的性能,因为对于该数据集而言,精度不是一个好的指标,因为每个类中的数据点数量均不相等。

结果看起来不错。

5.带有双向LSTM – CRF的NER:

在本节中,我们将双向LSTM模型与CRF模型结合在一起。这种方法称为Bi LSTM-CRF模型,这是命名实体识别的最新方法。LSTM(长期短期记忆)是一种特殊类型的递归神经网络,用于处理数据序列。

5.1定义模型参数:

如果您知道这些参数的含义,那么您可以进行尝试并获得良好的结果。

5.2模型架构:

现在我们可以定义递归神经网络架构,并为LSTM网络提供训练数据。

我已经使用了keras callback()函数。

5.3可视化模型性能:

在这里,我们将绘制训练和验证集的损失与历时之间的图。

分类报告。

您可以从上一节中看到该模型优于性能。

6.评估:

让我们尝试从测试数据语句中识别出模型在训练过程中看不到的实体,以了解模型的性能如何。

每次执行时,以下代码都会从测试数据中随机选择句子,并为其预测标签。

现在,我们可以轻松地将模型的预测与实际预测进行比较。

要点:

我们必须了解这里训练的模型只能识别位置,人等常见实体。可以建立一个复杂的模型来预测化学实体,药物等,但是要完成这样的任务,制备和标记该数据集将具有挑战性。

7.结论和未来工作:

这是解决此问题的首选方法,可以通过以下方法进行修改以改进解决方案:更改模型超参数,例如时期数,嵌入尺寸,批处理大小,退出率,激活等。

使用更大的数据集。在这里,我们仅使用了47959个句子,这些句子很少为实体识别问题建立良好的模型。

使用预训练的词嵌入。

对LSTM使用字符级嵌入。

BERT模型的微调。

通过添加在测试时出现的未知标记来改进词汇表,方法是替换我们训练模型时使用的所有不常见词。为简便起见,我们还没有这样做。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android手机活跃度,微信Android机型活跃度曝光,这个结果你满意吗?

原标题:微信Android机型活跃度曝光,这个结果你满意吗?在本周的第二届前端开发者大会上,由腾讯微信工程师公布了微信Android客户端机型前十的发布图,说的也是某款手机的存量跟用户活跃度的统计,在这张微信分…

postgresql9.4.4中文手册笔记-9.10 支持枚举函数

2019独角兽企业重金招聘Python工程师标准>>> 创建枚举类型 create type name as ENUM(zhao,qian,sun,li,zhou,wu, zheng,wang,cheng); 支持枚举函数 select enum_first(null::testenum); --查询枚举类型第一个元素 enum_first ------------zhao (1 row) select e…

.NET Framework源码研究系列之---Delegate

前言 曾几何时能看到微软产品的源码简直是天方夜谭,不过现在这却成了现实,微软终于对外开放了它的产品的源代码.抛去开源运动与微软之间的世代情仇,抛去微软这一做法的初衷,这总归是件好事,能够让我们拨开云雾,一窥优秀产品的秘密. 前两天看到有位仁兄在随笔中的留言,说他以为&…

【原】P2P应用的探究

什么是P2P(peer to peer)? 跟P2P对应的是传统的客户端-服务器(C/S或B/S)体系结构,这种体系结构就是客户端发送请求,服务器端给予响应。但是随着客户端不断的增加,成了服务器端崩溃的主要原因。增加服务器的功能或者资…

如何设置多个图层层叠关系_如何玩转 XMind 中的多种思维结构?

熟悉 XMind 的用户都知道,XMind 支持多种思维结构,并且不同思维结构可以混用。每一个分支都可以是一个不同的结构,让你不受限制、自由地进行思维的发散和整理。这个是目前其他思维导图工具少有的。在 XMind 中,你可以用思维导图、…

python修改html表格,使用styles和css更改pandas dataframe html表python中...

这需要几个步骤:首先导入HTML并重新输入from IPython.display import HTMLimport re你可以通过to_html方法得到html pandas.df_html df.to_html()接下来,我们将为html表和我们要创建的样式生成随机标识符.random_id id%d % np.random.choice(np.arange(1000000))因…

PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择

2019独角兽企业重金招聘Python工程师标准>>> 这里是我在搭建php环境时收集的资料供大家参考: 现在PHP官网上下载PHP安装包都有VC11或VC9的字样,这是什么含义,我们应该下载哪种安装包更好呢?其实PHP官网给出了答案&…

Silverlight与WCF之间的通信(5)silverlight应用和wcf服务的发布方法

上一篇博文中有朋友问到关于silverlight程序发布的问题,上一篇写的是silverlight访问host在console上的wcf,其实关于wcf和silverlihgt通信的问题有好几种方式,这里列举了一下 客户端和服务端采用http协议通信(分两种,同…

常用函数(字符和字符串)

Pascal常用的字符处理标准函数有5个 (1)ord(ch) 求字符ch对应的ASCII代码值;如 ord (A)结果为65,ord(true)结果为1,ord(false)结果为0(2)chr(x) 求x(x为1…255…

python搜索文件内容_python实现搜索文本文件内容

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存储NAS是一个可共享访问&#xf…

html单张图片效果,jquery+html5实现单张图片上传预览

js:if (window.File && window.FileReader && window.FileList && window.Blob){//Blob是计算机界通用术语之一,全称写作:BLOB (binary large object),表示二进制大对象。//全部支持function handleFileS…

通向成功的23个方法

1.设立大目标和小目标。总要保持向前看,但不要忘记你今天的成绩。 2.每天都设立新的目标。因为成功是一个过程,所以要确保总是有新的事情要完成。 3.逐一完成每周的事情。将时间表分成容易做到的几块,并且单独完成每一块。 4.每天至少完成一件…

科讯SQL标签调用文章技巧

http://qdh68.blog.163.com/blog/static/13756126201241584835332/转载于:https://www.cnblogs.com/zhangzhu/archive/2013/03/31/2991754.html

小程序引用其他页面js_来聊聊小程序页面之间如何通信

小程序页面之间如何通信?首先将通信的模型列举出来, 分为以下几种兄弟页面间通信父路径页面向子路径页面通信子路径页面向父路径页面通信通信的方式localStorage 本地存储globalData 全局对象eventBus 发布订阅PageModel 缓存整个pageModel至globalDataLocalStorage利用onShow…

html meta页面自适应,【转载·收藏】 html5手机网站自适应需要加的meta标签

webapp开发初期,会碰到在pc端开发好的页面在移动端显示过大的问题,这里需要在html head中加入meta标签来控制缩放下面是对于这个标签的具体说明:viewport 语法介绍:content包含有以下几个属性:height [pixel_value | device-height] ,width [pixel_value | device-w…

用碧海潮声制作的宋体(雅黑宋体)替换Windows7原生的火柴棍式的宋体

第一眼见到Windows7的时候,界面真的非常漂亮,但是当查看文件属性的时候,里面宋体出奇的难看,网上有很多在XP里替换宋体的方法,但是到了Windows7里就不那么好用了,经过多次查找相关方法,终于使用…

最近2个月的生活

最近2个月,心情动荡不定。时而快乐,时而悲伤,时而激动,时而淡定。最近的故事还是比较多的,就按编号来分别描述吧.1.周五,公司举办了2012年年会。 本次年会,是 帅哥和美女展示身材和才艺的机会。…

json动画_three.js动画(四)

ThreeJS的动画系列分为:基础动画、相机控制、变形动画、用骨骼和蒙皮制作动画以及使用外部模型创建动画。用骨骼和蒙皮制作动画用骨骼来做动画时,移动一下骨骼,Three.js必须决定如何相应地迁移附着在骨骼上的皮肤,一起来看吧~~~举…

如何做PHD (1)

做PHD两年了,经验不多,从朋友、导师、教授、名人得到的做PHD的经验却很宝贵,为了不让自己忘记,特此记录,希望对各位已经是PHD或即将成为PHD的朋友有所帮助。 1.多读文章 做PHD与做硕士不一样,计算机的硕士…

sqlite3x library

sqlite3x - C wrapper of SQLite API. http://sourceforge.net/projects/int64/files/SQLite3%20C%2B%2B%20Wrapper/ https://github.com/ptrv/sqlite3x http://wanderinghorse.net/computing/sqlite/ Appendix http://www.sqlite.org/转载于:https://www.cnblogs.com/androidm…