NLP——Information Extraction信息提取

news2024/11/25 9:33:25

文章目录

  • Information Extraction 步骤
    • Named Entity Recognition (NER)
      • Typical Entity Tags 典型实体标签
      • IO tagging
      • IOB tagging
      • 神经网络做 NER
    • Relation Extraction
      • Rule-based
      • Supervised Relation Extraction
      • Semi-supervised
        • Semantic Drift 语义漂移
        • Distant supervision 远程监督
      • Unsupervised Relation Extraction ("OpenlE")
  • Evaluation
  • Other Information Extraction 任务
    • Temporal Expression Extraction
    • Event Extraction

在这里插入图片描述 在这里插入图片描述

Information Extraction 步骤

在这里插入图片描述

  • Named Entity Recognition (NER): 命名实体识别
  • Relation Extraction: 关系提取
    在这里插入图片描述

Named Entity Recognition (NER)

在这里插入图片描述
在这里插入图片描述

Typical Entity Tags 典型实体标签

在这里插入图片描述

  • 命名实体识别中可能遇到歧义的问题(这种问题在 POS tagging 里面也很普遍):
    在这里插入图片描述
  • 为了消除歧义,我们需要结合上下文。
    在这里插入图片描述
  • 虽然在 POS 中我们可以使用 HMM,但是在 NER 任务中却不适合这么做:

隐马尔可夫模型(Hidden Markov Models, HMM)是一种可以用来处理序列数据的模型,它在一些NLP任务中表现得非常好,比如词性标注。然而,HMM有一些局限性,使得它在处理命名实体识别中的歧义问题时可能不会表现得很好。原因如下:

  • 一阶马尔可夫性质:HMM假设序列中的每个状态(在NER任务中,这些状态可能是实体标签)仅依赖于前一个状态。这意味着HMM不能直接捕获超过一步的上下文信息。然而,实际上,一个词的实体类型可能依赖于更广的上下文。 例如,“苹果”在“我喜欢吃Apple”和“我喜欢使用Apple产品”这两个句子中具有不同的实体类型,但是这个信息无法通过仅看前一个词的HMM捕获。

  • 无法处理复杂的特征:HMM通常使用比较简单的特征,例如前一个词或前一个标签。然而,NER任务可能需要复杂的特征,例如词的词性,词的位置,以及词在句子中的其他词的关系等。这些特征无法直接在HMM中使用。

  • 独立输出假设:HMM假设给定隐藏状态序列,观测状态(在NER任务中,这些可能是词)是独立的。这意味着它不能直接模拟词与词之间的依赖关系。然而,在实际文本中,词与词之间往往有强烈的依赖关系。

IO tagging

  • 我们可以使用 IO tagging 来解决上述的问题

在命名实体识别(Named Entity Recognition,NER)中,IO标注(IO Tagging)是一种常见的标注策略。在这种策略中,只有两种标签:I(Inside)和O(Outside)。 以下是它们的含义:

  • “I”:表示该词是某个命名实体的一部分。
  • “O”:表示该词不是任何命名实体的一部分。
    比如在句子 “Apple is based in California” 中,如果我们的目标是识别组织名(ORG)和地名(GPE), 那么可能的IO标注就是 “I-ORG O O O I-GPE”。
    在这里插入图片描述
  • 但是 IO Tagging 的缺点就是:
    在这里插入图片描述
  • 这是因为 IO标注 无法标识一个实体的开始和结束。
  • 举个例子,考虑这个句子:“Apple and Microsoft are tech companies.” 如果我们使用IO标注,那么“Apple and Microsoft”就会被标注为“I I I”,这样就无法确定“Apple”、“and”、“Microsoft”是一个实体还是三个实体。
  • 同样,对于一个包含多个词的单一实体,如“San Francisco”,IO标注也会给出“I I”的标注,与上面的情况看起来是一样的,无法区分它们是一个实体还是两个实体。

IOB tagging

在这里插入图片描述
IOB(或BIO)标注(IOB Tagging)是一种常见的标注策略。在这种策略中,有三种标签:B(Begin),I(Inside),O(Outside)。以下是它们的含义:

  • “B”: 表示该词是某个命名实体的开始。
  • “I”: 表示该词是某个命名实体的一部分,但不是开始。
  • “O”: 表示该词不是任何命名实体的一部分。
    例如,在句子 “Apple is based in California” 中,如果我们的目标是识别组织名(ORG)和地名(GPE),那么可能的IOB标注就是 “B-ORG O O O B-GPE”。

相比IO标注策略,IOB标注策略可以更好地处理相邻的并且类型相同的命名实体。例如,在句子 “Apple and Google are tech companies” 中,“Apple” 和 “Google” 可以被分别标注为 “B-ORG” 和 “B-ORG”,从而区分为两个不同的实体。

  • 也就是说,如果有两个相邻的实体名,而且这两个实体名如果是属于同一个实体比如 san francisco 那么其中的 san 会被标注为 B-ORGfrancisco 则会被标注为 I-ORG 这样来表示这两个属于同一个实体,而如果是两个不相关的实体,比如 Microsoft Apple 就会被标注为 B-ORGB-ORG 表示两个不同的实体
Steve Jobs founded Apple Inc. in 1976

Steve - B-PER
Jobs - I-PER
founded - O
Apple - B-ORG
Inc. - I-ORG
in - O
1976 - B-TIME

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

神经网络做 NER

在这里插入图片描述

神经网络在命名实体识别(NER)任务中的应用已经取得了显著的成功。以下是一种常见的使用神经网络进行NER的方法:

  • 预处理:将输入文本分割成单词或令牌(tokens)。可能需要做一些其他的预处理步骤,如小写化或词干化。

  • 词嵌入:将每个单词转换为一个密集向量,这个向量可以捕获单词的语义信息。这可以通过使用预训练的词嵌入模型(如Word2Vec或GloVe)来完成。 预训练的模型已经在大量的文本上进行了训练,可以捕获到丰富的词汇知识。

  • 序列编码:使用一种可以处理序列数据的神经网络模型,如循环神经网络(RNN)、长短期记忆(LSTM)或门控循环单元(GRU)等来处理词嵌入序列。这种模型可以捕获单词之间的顺序关系。

  • 解码:对于每个单词,基于其上下文编码来预测其标签。这通常通过在序列编码的顶部添加一个全连接层和一个softmax函数来实现。 每个标签都会有一个softmax分数,表示该单词属于每个可能的实体类别的概率。

Relation Extraction

关系抽取(Relation Extraction)是自然语言处理(NLP)中的一个关键任务,其目标是从文本中识别并抽取出实体之间的预定义关系。 例如,在句子 “Barack Obama was born in Hawaii.” 中,我们可以抽取出关系 (“Barack Obama”, “born in”, “Hawaii”)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Rule-based

在这里插入图片描述

Supervised Relation Extraction

在这里插入图片描述
在这里插入图片描述

  • 这个例子中,由于我们已经通过 NER 确定出了所有的 entity,现在的任务是,将这些 entity 组合之后进行二分类,判断他们之间是不是有 relation
  • positive 代表有关系,negative 代表没有
  • 对于有关系的,我们再对关系进行分类
    在这里插入图片描述
    在这里插入图片描述

Semi-supervised

在这里插入图片描述

  • 进行 supervised learning 需要的数据集需要大量标注,但是标注非常昂贵,因此可以使用半监督的方式,进行模型训练
    在这里插入图片描述

它主要用于克服监督式关系抽取需要大量标注数据的问题。半监督关系抽取方法使用一小部分标注数据和大量未标注数据来进行训练。

一种常见的半监督关系抽取方法是自举(Bootstrapping)。自举方法一开始使用一小部分标注数据(种子实例)进行训练,然后使用训练好的模型去预测未标注数据中的关系。这些预测被认为是正确的,并添加到训练集中。然后,模型使用更新后的训练集进行再训练。这个过程反复进行,直到模型收敛或者达到预设的迭代次数。

例如,假设我们有一个种子实例 “Barack Obama was born in Hawaii”,我们可以首先训练一个模型来识别 "was born in" 这种关系。然后,我们使用这个模型去预测其他句子中的关系,如果模型预测 “Steve Jobs was born in San Francisco” 中存在 "was born in" 这种关系,那么我们就把这个实例添加到训练集中,然后进行再训练。

Semantic Drift 语义漂移

语义漂移(Semantic Drift)是一种在半监督学习中常见的问题,特别是在自举(Bootstrapping)过程中。这是因为在自举过程中,模型在每次迭代中都会通过将预测的实例添加到训练集中来更新它的训练数据。

语义漂移指的是当模型开始从初始种子实例中学习一种关系,然后逐渐开始学习到与初始关系不同的其他关系的情况。 这通常是由于模型预测错误导致的,即模型错误地认为一个实例表示了目标关系,并将其添加到训练集中,从而改变了训练数据的分布。

举个例子,假设我们在进行关系抽取的任务中,目标是找出 "was born in" 的关系。我们初始的种子实例可能是 “Steve Jobs was born in San Francisco”。然而,如果模型在某一次迭代中错误地将 “Apple was founded in Cupertino” 识别为 "was born in" 的关系并将其加入到训练集中,那么模型可能开始学习到 "founded in" 这种关系,这就产生了语义漂移。

在这里插入图片描述

Distant supervision 远程监督

在这里插入图片描述
远程监督(Distant Supervision)是一种用于关系抽取的弱监督学习方法。远程监督的核心思想是,如果两个实体在知识库(例如Freebase, Wikidata等)中存在某种关系,那么所有包含这两个实体的句子都可以被视为这种关系的实例。

例如,如果我们知道在知识库中,“Barack Obama” 和 “Hawaii” 之间有一个 “出生地” 的关系,那么任何提到 “Barack Obama” 和 “Hawaii” 的句子,如 “Barack Obama was born in Hawaii” 或者 “Hawaii is the birthplace of Barack Obama”,都可以被视为 “出生地” 关系的实例。

使用远程监督方法,我们可以从未标注的文本和知识库中自动构建大规模的关系抽取训练集。然而,远程监督方法也有一个显著的问题,即错误标注问题(也被称为远程监督假设的不足)。 因为并非所有包含两个有关系实体的句子都表示这种关系,这可能导致许多错误标注的实例。例如,句子 “Barack Obama went on vacation in Hawaii” 并不表示 “出生地” 的关系,但是在远程监督的假设下,它可能被错误地标注为一个 "was born in" 关系的实例。

Unsupervised Relation Extraction (“OpenlE”)

在这里插入图片描述

无监督的关系抽取(Unsupervised Relation Extraction),例如OpenIE (Open Information Extraction),是一种不依赖标记数据,直接从未标记的文本中抽取实体关系的方法。

OpenIE旨在从文本中抽取一种形式的 (subject, relation, object) 三元组。这种方法的优点是它可以抽取任意种类的关系,而不仅仅是预先定义好的关系类型。然而,这也意味着它可能抽取出大量不太有用的或者噪音较大的关系。

OpenIE的工作流程通常包括以下几个步骤:

  • 句子分割和词语标注:首先,将文本分割成句子,并进行词性标注和命名实体识别。

  • 句法解析:接着,对每个句子进行句法解析,通常是依存句法解析。

  • 关系抽取:然后,根据句法解析的结果抽取出 (subject, relation, object) 三元组。通常,subject 和 object 是句子中的命名实体,relation 是它们之间的动词短语。

  • 三元组筛选:最后,可以通过一些启发式规则或者基于学习的方法来筛选或者评分三元组,以提高结果的质量。

值得注意的是,OpenIE方法通常需要大量的计算资源,因为它需要处理大量的句子和句法解析树。此外,由于它的无监督性质,所以它的结果可能包含大量的噪音,需要后续的处理来提高可用性。

Evaluation

在这里插入图片描述

  • 对于命名实体识别(NER)和关系抽取任务,常用的评估方法包括精确度(Precision)、召回率(Recall)和 F1 分数(F1-Score)。

  • 这些指标都是基于真正例(True Positives,TP)、假正例(False Positives,FP)和假反例(False Negatives,FN)的概念来定义的。

  • 对于关系抽取任务,评估时需要考虑实体对和它们的关系都正确才算预测正确。例如,如果一个关系是 (“Barack Obama”, “born in”, “Hawaii”),但模型预测的是 (“Barack Obama”, “live in”, “Hawaii”),那么这被视为一个错误的预测。

Other Information Extraction 任务

Temporal Expression Extraction

在这里插入图片描述

Event Extraction

在这里插入图片描述

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

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

相关文章

chatgpt赋能python:在Python中添加NumPy

在Python中添加NumPy Python是一种功能强大且广泛使用的编程语言。它被广泛用于数据科学、人工智能和机器学习等领域。NumPy是一种用于数学和科学计算的Python库。本文将介绍在Python中如何添加NumPy库。 什么是NumPy? NumPy是一个开源的Python库,它提供了大量的…

ROCKETMQ极简介绍,顺序,事务示例

整体架构 Name Server 管理Broker实例的注册,提供心跳检测机制 路由管理: Producer和Conumser通过NameServer可以获取整个Broker集群的路由信息 生产者 Producer 以生产者组的形式出现,一个生产者组可以同时发送多个主题的消息 Broker …

计算机组成原理 之 第五章 中央处理器

1. CPU的功能和基本结构 (1-1)运算器的基本结构 a. 寄存器与ALU通讯方式一:专用数据通路方式 是专用数据通路方式(并行传递) 多路选择器(MUX)或三态门 b. 寄存器与ALU通讯方式二:CP…

chatgpt赋能python:Python中添加SEO元素的实践

Python中添加SEO元素的实践 在SEO(Search Engine Optimization)优化中,添加正确的SEO元素对网站的排名和可见性至关重要。Python作为一种广泛应用于网络开发的编程语言,提供了许多用于添加和管理SEO元素的工具和技术。在这篇文章…

chatgpt赋能python:Python怎么求完数

Python怎么求完数 什么是完数? 在数学中,完数指一个正整数,它的所有因子(除了本身以外)之和恰好等于该数本身。例如,6是一个完数,因为6的因子为1、2和3,而1 2 3 6。 Python如何…

springboot+vue在线课程大纲知识点管理系统

对于之前在线课程管理系统的管理,大部分都是使用传统的人工方式去管理,这样导致了管理效率低下、出错频率高。而且,时间一长的话,积累下来的数据信息不容易保存,对于查询、更新还有维护会带来不少问题。对于数据交接也…

每天一道算法题第3天--排序子序列

排序子序列 1.题目2.题目解析3.代码 1.题目 链接: 排序子序列 2.题目解析 【题目解析】: 本题要求解的是排序子序列,排序子序列为非递增或者非递减,很多同学在这个非递增、非递减问题上很纠 结,注意:非递减就是a[i…

facebook文本生成音乐项目-audiocraft 安装教程

文章目录 所需环境安装ffmpeg克隆项目仓库安装相关依赖库运行项目模型下载自动下载模型失败MusicGen 模型下载地址 所需环境 ffmpegpython>3.9gitcuda118(torch>2.0) 安装ffmpeg 下载地址 下载后解压,然后将解压后的目录配置到系统…

chatgpt赋能python:Python怎么求最大值

Python怎么求最大值 如果您正在寻找一种简便快捷的方法来从一组数字中找到最大值,那么Python就是您的选择。作为一种易于学习和使用的编程语言,Python在数据处理和分析方面越来越受欢迎。本文将介绍如何使用Python来找出一组数字中的最大值,…

MySQL数据库基本命令操作

MySQL数据库基本命令操作 一、MySQL基本命令操作指令二、查看数据库结构1.查看当前服务器中的数据库2.查看数据库中包含的表3.查看表的结构(字段) 三、SQL语句1、SQL语言分类 四、SQL语句操作1、创建及删除数据库和表2…

Nucleo-F411RE (STM32F411)LL库体验 2 -sysclk的配置

Nucleo-F411RE (STM32F411)LL库体验 2 -sysclk的配置 1、Nucleo-F411RE 时钟源 Nucleo-F411RE开发版只有一个8M的晶振,看起来像是给st-link提供时钟的,所以猜测F411RE时钟的来源应该来自st-link(stm32F103c8t6&#…

数据库是什么?为什么要使用它?

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、数据库是什么? 二、为什么要⽤数据库 1、方便用户 2、安全的保存数据 3、利用数据库分析 三、数据库的分类 1、关…

chatgpt赋能python:Python添加包的方法

Python添加包的方法 Python是一种高级编程语言,拥有着强大的库和模块。在开发过程中,很大一部分时间会用于查找、安装和更新各种包或依赖库。本文将介绍Python添加包的方法,以帮助开发者更快地找到并安装所需的包及依赖库。 什么是包 在Py…

Java 中的重载(overload)和重写(override)

​ 重载和重写都是面向对象编程中的概念,但我们或许还听说过一种叫做覆写(overwrite)的概念。C 是拥有这个概念的,Java 只有 overload 和 override,Python 只有隐式的 overload 和 override,没有 o…

海思平台上USB WIFI的移植与局域网无线调试和视频流预览

目录 1.海思平台上USB WIFI移植概述 1.1、移植WIFI背景 1.2、移植的起点 1.3、实验案例 2.AP模式USB WIFI驱动移植 2.1、源码 2.2、修改移植 3.AP模式USB WIFI传输视频实战 3.1、部署USB WIFI驱动使之工作为AP 3.2、准备测试用例 3.3、测试实验 4.USB WIFI做sta模式…

python函数详解(超详细)

❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 首先零基础是能学python的,很多编程大神入门之前…

Qt中的坐标体系和内存回收

目录 坐标体系 窗口的坐标原点 窗口的相对坐标 示例 内存回收 1. 自动垃圾回收机制 2. 对象树机制 示例 坐标体系 窗口的坐标原点 在Qt中,坐标系统一般是以窗口左上角为原点,向右为正方向X轴,向下为正方向Y轴。 窗口的相对坐标 在一个…

node.js+vue企业人事管理系统q731f

中小企业人事管理系统的主要开发目标如下: (1)实现管理系统信息关系的系统化、规范化和自动化; (2)减少维护人员的工作量以及实现员工对信息的控制和管理。 (3)方便查询信息及管理信…

chatgpt赋能python:Python编程中的警告是什么?

Python编程中的警告是什么? 在Python编程中,警告是指在程序运行时出现的一些提示信息。这些警告通常不会导致程序崩溃,但却表明程序中存在某些问题。例如,警告可以是一个不推荐使用的语法或者可能导致性能退化的某个编码模式。通…

发布关于Strve.js的动态,被Vite团队核心成员点赞的那些事!

近日,在浏览之前发的推特文章时,发现了曾经被Vite团队核心成员 Matias Capeletto 点赞的一篇动态,心里格外的高兴。 被大佬认可,也是值得开心的一件事情。毕竟独立开发一个前端框架,其中的艰辛也只有像参与过类似设计框…