【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)

这篇具有很好参考价值的文章主要介绍了【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!
  • 【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)个人主页:有梦想的程序星空
  • 【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等领域,有较丰富的软件系统、人工智能算法服务的研究和开发经验。
  • 【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)如果文章对你有帮助,欢迎【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)关注【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)点赞【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)收藏【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)订阅。

命名实体识别的背景

命名实体识别(Named Entity Recognition, 简称NER)(也称为实体识别、实体分块和实体提取)是信息提取的一个子任务,旨在将文本中的命名实体定位并分类为预先定义的类别,如人员、组织、位置、时间表达式、数量、货币值、百分比等。命名实体识别是自然语言处理中的热点研究方向之一, 目的是识别文本中的命名实体并将其归纳到相应的实体类型中。

命名实体识别是NLP中一项非常基础的任务,是信息提取、问答系统、句法分析、机器翻译等众多NLP任务的重要基础工具。

从自然语言处理的流程来看,NER可以看作词法分析中未登录词识别的一种,是未登录词中数量最多、识别难度最大、对分词效果影响最大问题。同时NER也是关系抽取、事件抽取、知识图谱、机器翻译、问答系统等诸多NLP任务的基础。

 命名实体识别的方法

从模型的层面,可以分为基于规则的方法、无监督学习方法、有监督学习方法从输入的层面,可以分为基于字(character-level)的方法、基于词(work-level)的方法、两者结合的方法。

基于规则的方法:依赖人工制定的规则,规则的设计一般基于句法、语法、词汇的模式,以及特定领域的知识。当词典的大小有限时,基于规则的方法可以达到很好的效果。这种方法通常具有高精确率和低召回率的特点。但是这种方法无法难以迁移到别的领域,对于新的领域需要重新制定规则。

无监督学习方法:利用语义相似性进行聚类,从聚类得到的组当中抽取命名实体,通过统计数据推断实体类别。

基于特征的监督学习方法:可以表示为多分类任务或者序列标注任务,从数据中学习。

【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)

图1 NER识别算法发展历程

下面介绍几种常见的命名实体识别算法:

BiLSTM-CRF算法

【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)

 图2 BiLSTM-CRF结构图

论文名称Neural Architectures for Named Entity Recognition

论文链接:https://arxiv.org/pdf/1603.01360.pdf

应用于NER中的BiLSTM-CRF模型主要由Embedding层(主要有词向量,字向量以及一些额外特征),双向LSTM层,以及最后的CRF层构成。实验结果表明BiLSTM-CRF已经达到或者超过了基于丰富特征的CRF模型,成为目前基于深度学习的NER方法中的最主流模型。在特征方面,该模型继承了深度学习方法的优势,无需特征工程,使用词向量以及字符向量就可以达到很好的效果,如果有高质量的词典特征,能够进一步获得提高。

如果读者想要更进一步了解BiLSTM-CRF算法,可以转到之前笔者写的《深入浅出讲解BiLSTM-CRF》文章进一步阅读。

IDCNN-CRF算法

【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)

论文名称Fast and Accurate Entity Recognition with Iterated Dilated Convolutions

论文链接:https://arxiv.org/abs/1702.02098

论文提出在NER任务中,引入膨胀卷积,一方面可以引入CNN并行计算的优势,提高训练和预测时的速度;另一方面,可以减轻CNN在长序列输入上特征提取能力弱的劣势。具体使用时,dilated width会随着层数的增加而指数增加。这样随着层数的增加,参数数量是线性增加的,而感受野却是指数增加的,这样就可以很快覆盖到全部的输入数据。IDCNN对输入句子的每一个字生成一个logits,这里就和BiLSTM模型输出logits之后完全一样,再放入CRF Layer解码出标注结果。

Bert算法

【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)

图3 Bert算法的结构图 

Bert(Bidirectional Encoder Representations from Transformers)算法,顾名思义,是基于Transformer算法的双向编码表征算法,Transformer算法基于多头注意力(Multi-Head attention)机制,而Bert又堆叠了多个Transfromer模型,并通过调节所有层中的双向Transformer来预先训练双向深度表示,而且,预训练的Bert模型可以通过一个额外的输出层来进行微调,适用性更广,而不需要做更多重复性的模型训练工作。

Bert算法的论文:https://arxiv.org/abs/1810.04805

Bert算法的开源代码:https://github.com/google-research/bert

读者如果想进一步了解Bert算法,可以前往笔者之前写的《深入浅出讲解Bert算法》进一步阅读。

关注微信公众号【有梦想的程序星空】,了解软件系统和人工智能算法领域的前沿知识,让我们一起学习、一起进步吧!文章来源地址https://www.toymoban.com/news/detail-401551.html

到了这里,关于【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【朴素贝叶斯】深入浅出讲解朴素贝叶斯算法(公式、原理)

    本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅! ​个人主页:有梦想的程序星空 ​个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等

    2024年02月03日
    浏览(49)
  • 深入浅出讲解Stable Diffusion原理,新手也能看明白

    最近一段时间对多模态很感兴趣,尤其是Stable Diffusion,安装了环境,圆了自己艺术家的梦想。看了这方面的一些论文,也给人讲过一些这方面的原理,写了一些文章,具体可以参考我的文章: 北方的郎:图文匹配:Clip模型介绍 北方的郎:VQGAN(Vector Quantized Generative Adversar

    2024年02月08日
    浏览(45)
  • 深入浅出介绍微软的Windows Azure(一)

       我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows Azure到底是一个什么技术。 总是在知乎上看到各种比较Windows Azure和阿里云的帖子。大家都在讨论哪个好用。其实我们真的没必要去这么累的去查找这些讨论的最终答案。我们工程师就是要从实践和系统框

    2024年02月05日
    浏览(39)
  • 深入浅出hdfs-hadoop基本介绍

    一、Hadoop基本介绍 hadoop最开始是起源于Apache Nutch项目,这个是由Doug Cutting开发的开源网络搜索引擎,这个项目刚开始的目标是为了更好的做搜索引擎,后来Google 发表了三篇未来持续影响大数据领域的三架马车论文: Google FileSystem、BigTable、Mapreduce开始掀起来了大数据的浪潮

    2024年01月24日
    浏览(56)
  • 数据库深入浅出,数据库介绍,SQL介绍,DDL、DML、DQL、TCL介绍

            数据(Data):文本信息(字母、数字、符号等)、音频、视频、图片等;         数据库(DataBase):存储数据的仓库,本质文件,以文件的形式将数据保存到电脑磁盘中         数据库管理系统(DBMS):管理、操作、维护数据库的软件         数据库应用程序

    2024年02月06日
    浏览(48)
  • 【深入浅出C#】章节 1:C#入门介绍:C#开发环境的设置和配置

    一、环境准备 1.1 安装和配置.NET Core 当配置C#开发环境时,安装.NET Core是一个重要的步骤。以下是安装.NET Core的基本过程: 访问官方网站:打开浏览器,访问.NET Core的官方网站:https://dotnet.microsoft.com/en-us/download。 选择下载版本:在官方网站上,选择所需的.NET Core版本。通常

    2024年02月13日
    浏览(50)
  • 深入浅出线程池

    线程 (thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际 运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线 程并行执行不同的任务。 既然我们创建了线程,那为何我们直接调用方法和我们调

    2024年02月08日
    浏览(50)
  • 深入浅出 Typescript

    TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准(ES6 教程)。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。 TypeScript JavaScript JavaScript 的超集,用于解决大型

    2024年02月14日
    浏览(52)
  • 深入浅出前端本地储存

    2021 年,如果你的前端应用,需要在浏览器上保存数据,有三个主流方案: Cookie Web Storage (LocalStorage) IndexedDB 这些方案就是如今应用最广、浏览器兼容性最高的三种前端储存方案 今天这篇文章就聊一聊这三种方案的历史,优缺点,以及各自在今天的适用场景 文章在后面还会提

    2024年04月17日
    浏览(85)
  • 深入浅出Kafka

    这个主题 武哥漫谈IT ,作者骆俊武 讲得更好 首先我们得去官网看看是怎么介绍Kafka的: https://kafka.apache.org/intro Apache Kafka is an open-source distributed event streaming platform. 翻译成中文就是:Apache Kafka 是一个开源的分布式流处理平台。 Kafka 不是一个消息系统吗?为什么被称为分布式

    2023年04月11日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包