作者:Andreas Herman

编译:ronghuaiyang

导读

信息抽取是NLP中非常重要的内容,而关系的抽取在知识图谱等领域应用广泛,也是非常基础的NLP任务,今天给大家介绍一下。

关系提取是指从文本中提取语义关系,这种语义关系通常发生在两个或多个实体之间。这些关系可以是不同类型的。" Paris is in France "表示巴黎与法国之间的" is in "关系。这可以用三元组(Paris, is in, France)来表示。

信息抽取(Information Extraction, IE)是从自然语言文本中抽取结构化信息的领域。该领域用于各种NLP任务,如创建知识图、问答系统、文本摘要等。关系抽取本身就是IE的一个子域。

关系提取有五种不同的方法:

  1. 基于规则的关系提取

  2. 弱监督关系提取

  3. 监督关系提取

  4. 模糊监督关系提取

  5. 无监督的关系提取

我们将在一个较高的层次上讨论所有这些问题,并讨论每个问题的优缺点。

基于规则的关系提取

许多实体的关系可以通过手工模式的方式来提取,寻找三元组(X,α,Y),X是实体,α是实体之间的单词。比如,“Paris is in France”的例子中,α=“is”。这可以用正则表达式来提取。

句子中的命名实体

句子中的词性标记

仅查看关键字匹配也会检索出许多假阳性。我们可以通过对命名实体进行过滤,只检索(CITY、is in、COUNTRY)来缓解这种情况。我们还可以考虑词性(POS)标记来删除额外的假阳性。

这些是使用word sequence patterns的例子,因为规则指定了一个遵循文本顺序的模式。不幸的是,这些类型的规则对于较长范围的模式和具有更大多样性的序列来说是不适用的。例如:“Fred and Mary got married”就不能用单词序列模式来成功地处理。

句子中的依赖路径

相反,我们可以利用句子中的从属路径,知道哪个词在语法上依赖于另一个词。这可以极大地增加规则的覆盖率,而不需要额外的努力。

我们也可以在应用规则之前对句子进行转换。例如:“The cake was baked by Harry”或者“The cake which Harry baked”可以转化成“Harry bake The cake”。然后我们改变顺序来使用我们的“线性规则”,同时去掉中间多余的修饰词。

优点

  • 人类可以创造出具有高准确率的模式

  • 可以为特定的领域定制

缺点

  • 人类模式的召回率仍然很低(语言种类太多)

  • 需要大量的人工工作来创建所有可能的规则

  • 必须为每个关系类型创建规则

弱监督的关系提取

这里的思想是从一组手工编写的规则开始,通过迭代的方式从未标记的文本数据中自动找到新的规则。或者,你可以从一个种子元组开始,用特定的关系描述实体。例如,seed={(ORG:IBM, LOC:Armonk), (ORG:Microsoft, LOC:Redmond)}表示具有“based in”关系的实体。

Snowball是一个相当古老的算法示例,它可以实现以下功能:

  1. 从一组种子元组开始(或使用一些手工规则从未标记的文本中提取一组种子)。

  2. 从未标记的文本中提取和元组匹配的共现词,并用NER(命名实体识别器)标记它们。

  3. 为这些事件创建模式,例如“ORG is based in LOC”。

  4. 从文本中生成新的元组,例如(ORG:Intel, LOC: Santa Clara),并添加到种子集中。

  5. 执行步骤2或终止并使用创建的模式进行进一步提取

优点

  • 可以发现比基于规则的关系提取更多的关系(更高的召回率)

  • 更少的人力投入(只需要高质量的种子)

缺点

  • 随着每次迭代,模式的集合更容易出错

  • 在通过元组共现生成新模式时必须小心,例如“IBM shut down an office in Hursley”可能被错误的认为是“based in”关系。

  • 新的关系类型需要新的种子(必须手动提供)

有监督的关系提取

进行监督关系提取的一种常见方法是训练一个层叠的二分类器(或常规的二分类器)来确定两个实体之间是否存在特定的关系。这些分类器将文本的相关特征作为输入,从而要求文本首先由其他NLP模型进行标注。典型的特征有:上下文单词、词性标注、实体间的依赖路径、NER标注、tokens、单词间的接近距离等。

我们可以通过下面的方式训练和提取:

  1. 根据句子是否与特定关系类型相关或不相关来手动标注文本数据。例如“CEO”关系:“Apple CEO Steve Jobs said to Bill Gates.” 是相关的,“Bob, Pie Enthusiast, said to Bill Gates.”是不相关的。

  2. 如果相关句子表达了这种关系,就对正样本/负样本进行手工的标注。“Apple CEO Steve Jobs said to Bill Gates.”:(Steve Jobs, CEO, Apple) 是正样本,(Bill Gates, CEO, Apple)是负样本。

  3. 学习一个二分类器来确定句子是否与关系类型相关

  4. 在相关的句子上学习一个二分类器,判断句子是否表达了关系

  5. 使用分类器检测新文本数据中的关系。

有些人选择不训练“相关分类器”,而是让一个单一的二分类器一次性确定这两件事。

优点

  • 高质量的监督信号(确保所提取的关系是相关的)

  • 我们有明确的负样本

缺点

  • 标注样本很贵

  • 增加新的关系又贵又难(需要训练一个新的分类器)

  • 对于新的领域不能很好的泛化

  • 只对一小部分相关类型可用

模糊监督的关系提取

我们可以将使用种子数据(比如弱监督的RE)和训练分类器(比如有监督的RE)的思想结合起来。但是,我们可以从现有的知识库(KB),比如Wikipedia、DBpedia、Wikidata、Freebase、Yago中得到种子,而不是自己提供一组种子元组。

模糊监督的关系抽取方法:

  1. 对于知识库中我们感兴趣的每个关系类型进行循环

  2. 对于知识库中该关系的每个元组进行循环

  3. 从我们的未标记文本数据中选择可以匹配到这些元组的句子(元组的两个单词在句子中是共现的),并假设这些句子是这种关系类型的正样本

  4. 从这些句子中提取特征(如词性、上下文词等)

  5. 训练一个有监督的分类器

优点

  • 更少的人力

  • 可以扩展使用大量的标注数据和大量的关系

  • 不需要迭代(相比于弱监督关系抽取)

缺点

  • 训练语料库的标注噪声(句子中同时具有这两个单词可能并没有描述这种关系)

  • 没有明显的负样本(可以通过匹配没有关系的实体来解决)

  • 受限于知识库

  • 需要在任务上进行非常仔细的调试

无监督的关系提取

在这里,我们从文本中提取关系,而不需要标注任何训练数据、提供一组种子元组或编写规则来捕获文本中不同类型的关系。相反,我们依赖于一组非常普遍的约束和启发。这算不算是无监督的,是有点争议的,因为我们使用的“规则”是在一个更普遍的层面上。此外,在某些情况下,甚至可以利用小的标注文本数据集来设计和调整系统。然而,这些系统一般需要较少的监督。开放信息提取(Open Information Extraction, Open IE)通常指的是这种范式。

TextRunner是属于这类关系提取方案的一种算法。其算法可以描述为:

1.  在一个小语料库上训练一个自监督分类器

  • 对于每一个解析过的句子,找出所有名词短语(X, Y),它们之间由一系列单词r连接起来。如果它们满足所有的约束条件,就将它们标注为正样本,否则就将它们标注为负样本。

  • 将每个三元组(X、r、Y)映射到一个特征向量表示上(例如,对POS标注进行聚合、r中的停止词数量、NER标注等)。

  • 训练二分类器来识别可靠的候选

2. 遍历整个语料库并提取可能的关系

  • 从语料库获取潜在的关系

  • 根据分类器的到的候选的置信度,保留/丢弃候选

3.  基于文本冗余度的关系排序评估

  • 规范化(忽略不必要的修饰词)和合并相同的关系

  • 计算关系中出现的不同句子的数量,并为每个关系分配概率

OpenIE 5.0和Stanford OpenIE是这样做的两个开源系统。它们比TextRunner更现代(这里只是用它来演示范例)。我们可以期望从这样的系统输出许多不同的关系类型(因为我们没有指定我们感兴趣的关系类型)。

优点

  • 不需要/几乎不需要标注训练数据

  • 不需要我们手动预先指定每个甘心去的关系,而是考虑所有可能的关系类型

缺点

  • 系统的表现在很大程度上取决于约束和启发法的构造有多好

  • 关系不像预先指定的关系类型那样规范化

—END—

英文原文:https://medium.com/@andreasherman/different-ways-of-doing-relation-extraction-from-text-7362b4c3169e

交流学习,进群备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

【关系抽取】从文本中进行关系抽取的几种不同的方法相关推荐

  1. python实体关系抽取_【关系抽取】从文本中进行关系抽取的几种不同的方法

    关系提取是指从文本中提取语义关系,这种语义关系通常发生在两个或多个实体之间.这些关系可以是不同类型的." Paris is in France "表示巴黎与法国之间的" ...

  2. 文献阅读:神经网络提取生物医学文本中的关系

    文献阅读:神经网络提取生物医学文本中的关系 题目 1 背景 2 相关工作 3 方法 3.1 生物医学关系提取 3.2 Dependency graphs and SDPs 3.3 句子嵌入表示 3.4 ...

  3. 《利用条件随机场实现中文病历文本中时间关系的自动提取》——阅读笔记

    摘要 提出一种基于CRF的时间关系提取算法.以经过医学问题和时间信息语义标注的病历为训练内容,时间关系结果标注采用以医学问题为中心的模式.以63份实际病历作为实验文本. 引言 时间关系非常重要,如,哥 ...

  4. java uml图中的关系_UML类图中的关系

    UML类图中的关系分为四种:泛化.依赖.关联.实现:关联关系又可以细化为聚合和组合. 1. 泛化(Generalization) 泛化是父类和子类之间的关系,子类继承父类的所有结构和行为.在子类中可以 ...

  5. EF Core中避免贫血模型的三种行之有效的方法(翻译)

    [Paul Hiles: 3 ways to avoid an anemic domain model in EF Core :https://www.devtrends.co.uk/blog/3-w ...

  6. mysql关系运算_数据库中的关系运算

    1.和(Union)运算.针对行 针对两张具有相同属 性的表,将两者表合并起来,在合并过程中遇到重复的行保留一项就行了. 2.差(difference)运算.针对行 vc3Ryb25nPjwvcD4K ...

  7. python匹配文本中全角符号的两种方法

    在对文本进行处理的时候经常会遇见要对括号和标点进行匹配 常见的英文(半角)符号如( ) 直接用正则匹配即可 但是遇见全角字符(中文括号.标点),直接用正则匹配会存在问题: 因为编码通常为为utf8,若 ...

  8. xsl调用java方法传参_Java中的XSL转换:一种简单的方法

    xsl调用java方法传参 XSL转换 (XSLT)是将一个XML文档转换为另一个XML文档的强大机制. 但是,在Java中,XML操作相当冗长和复杂. 即使是简单的XSL转换,也必须编写几十行代码- ...

  9. Java中的XSL转换:一种简单的方法

    XSL转换 (XSLT)是将一个XML文档转换为另一个XML文档的强大机制. 但是,在Java中,XML操作相当冗长和复杂. 即使是简单的XSL转换,也必须编写几十行代码-如果需要适当的异常处理和日志 ...

  10. 用c 语言中 矩阵乘法,C中实现矩阵乘法的一种高效的方法

    如何计算矩阵乘法,这个大家都知道.通常情况下,我们都是用以下代码实现的: for(i=0;i for(j=0;j sum=0; for(k=0;k sum+=A[i][k]*B[k][j]; C[i] ...

最新文章

  1. MYSQL查询数据中通讯最多的两个人
  2. Caffe学习笔记2
  3. Scala入门到精通——第十一节 Trait进阶
  4. 浅析 PHP 中的 Generator
  5. react hooks_为什么选择React Hooks,我们如何到达这里?
  6. jdk的安装(redhat)
  7. 使用mysqldump 迁移数据库
  8. Word Frequency(Leetcode192)
  9. 海康摄像头音频方案(播放音频文件+语音对讲+语音转发)-支持window/Linux-java版本
  10. OSChina 周三乱弹 —— 总觉得路过是 VIVO 大酒店
  11. java纸牌_Java纸牌拖拉机简单模拟
  12. csv文件的格式---Comma Separate Values
  13. 数据安全法下,企业如何平衡数据安全合规与业务性能?| 产业安全专家谈
  14. 贪吃蛇游戏 c++代码 ↑,↓,→,←分别控制蛇的方向 增加蛇长 随机生成食物 吃食物 吃撞墙 撞到自己
  15. 原创工具14Finger-全能web指纹识别与分享平台
  16. javascript11位手机号码正则表达式
  17. 一文彻底玩转Android通知栏消息通知
  18. Vue之小目标列表实现
  19. vac虚拟声卡我linux,Virtual Audio Cable
  20. ab命令压力测试攻击

热门文章

  1. HTML-参考手册: HTML 符号实体
  2. python基础(set)补充
  3. 文件查找命令 - find
  4. ASP.NET 数据绑定常用代码及其性能分析
  5. sql server 2008如何导入mdf,ldf文件
  6. 《人人都是产品经理》读后小结
  7. java day03【 流程控制语句】
  8. bugfree 数据库配置 显示No such file or directory
  9. DbVisualizer的Driver连接Oracle Thin选项不可选
  10. weblogic系列漏洞整理 -- 3. weblogic 后台提权