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

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

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

  1. 命名实体识别 实体抽取_您的公司为什么要关心命名实体的识别

    命名实体识别 实体抽取 Named entity recognition is the task of categorizing text into entities, such as people, ...

  2. python dlib人脸检测_使用Python+OpenCV+Dlib实现人脸检测与人脸特征关键点识别

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 今天,我们将学习如何检测图像中的人脸并提取面部特征,如眼睛.鼻子. ...

  3. python识图打怪_利用python进行识别相似图片(二)

    前言 和网上各种首先你要有一个女朋友的系列一样,想进行人脸判断,首先要有脸, 只要能靠确定人脸的位置,那么进行两张人脸是否相似的操作便迎刃而解了. 所以本篇文章着重讲述如何利用openCV定位人脸. ...

  4. python映射实体类_将Python(django)实体类转换为Java的好方法 - java

    我正在寻找一种"复制" /将模型从Python源代码转换为Java源代码的好方法.我的想法是在服务器上使用Python django框架生成实体模型类.另一方面,我想将实体类转换为 ...

  5. python人脸深度识别_基于Python的深度学习人脸识别方法

    基于 Python 的深度学习人脸识别方法 薛同来 ; 赵冬晖 ; 张华方 ; 郭玉 ; 刘旭春 [期刊名称] <工业控制计算机> [年 ( 卷 ), 期] 2019(032)002 [摘 ...

  6. python手写多个字母识别_一个带界面的CNN手写数字识别,使用Python(tensorflow, kivy)实现...

    CNN_Handwritten_Digit_Recognizer (CNN手写数字识别) A CNN handwritten digit recognizer with graphical UI, i ...

  7. mser python车牌识别_基于MSER与SVM算法的车牌定位识别方法

    基于 MSER 与 SVM 算法的车牌定位识别方法 胡成伟 ; 袁明辉 [期刊名称] <软件> [年 ( 卷 ), 期] 2020(041)002 [摘要] 针对实际车牌识别系统中车牌位置 ...

  8. python画交互式地图_使用Python构建交互式地图-入门指南

    python画交互式地图 Welcome to The Beginner's Guide to Building Interactive Maps in Python 欢迎使用Python构建交互式地 ...

  9. python大牛 关东升_《Python从小白到大牛》第4章 Python语法基础

    本章主要为大家介绍Python的一些语法,其中包括标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 标识符和关键字 任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍Pyth ...

最新文章

  1. 浅入浅出TensorFlow 8 - 行人分割
  2. python 运行pyc_python项目运行后产生__pycache__包含pyc格式文件
  3. Symantec Backup Exec Remote Agent 2010在Redhat Enterprise 6.6上启动问题
  4. 我的做题日志(1),来源:COCI2017,SDOJ
  5. Spire.Pdf 的各种操作总结
  6. SQL Server 2008存储结构之GAM、SGAM
  7. 开源的读取Excel文件组件-ExcelDataReader
  8. python监听键盘输入_Python监听鼠标键盘事件
  9. 【Netbackup恢复步骤-02】
  10. Sql Server 数据库出现“可疑”的解决办法
  11. mongodb 备份 导入导出
  12. 三国志战略版:求贤之我要换啥
  13. XAMPP下的Tomcat 7运行出现“1% 不是有效的 Win32 应用程序。”
  14. 美团 java_GitHub - meituan/mssapi_java: 美团云对象存储 Java SDK
  15. 单点登录的三种实现方式
  16. 如何改掉自己的坏习惯
  17. 亚马逊云科技——如何在中国市场破局?
  18. java main 运行_使用maven运行Java Main的三种方法解析
  19. Google/glog
  20. 高斯-克吕格(Gauss-Kruger)投影与UTM投影的在ArcGIS中的区别

热门文章

  1. ArcGis开发过程中遇到HRESULT:0x80040213错误
  2. javascript --- 编程风格
  3. 23 Refs的应用场景与选用思考
  4. Istio流量管理实践之(5): 使用cert-manager部署Istio自定义入口网关及进行证书管理...
  5. 杨浦区阜盛农民工子弟小学见闻
  6. 【跃迁之路】【428天】程序员高效学习方法论探索系列(实验阶段185-2018.04.09)...
  7. 当安全遇到大数据 “永恒之蓝”也将无所遁形!
  8. 有的日期输入框,可直接调用javascripts
  9. java文件处理之压缩,分割
  10. MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析...