Dawn's Blogs

分享技术 记录成长

0%

Java 类及其类的成员:属性、方法、构造器;代码块、内部类。

面向对象的三大特性:封装、继承、多态。

this package import 关键字

this

this 表示当前对象

  • 使用 this 访问属性和方法时,如果在本类中没有找到,会从父类中查找。
  • this(xxx) 表示调用当前类的构造器,可以用于构造器的相互调用(这个语句必须在构造器的首行)。

package

package 用于声明所在的包。作用:

  • 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
  • 如同文件夹一样,包也采用了树形目录的存储方式。

import

import 用于导入包中的某个成员

  • import static xx.xxx.xx 表示导入指定类或者接口的静态结构
  • 需要使用不同包下的重名类,只能补全包名(全类名)
1
2
3
4
5
6
import yy.y.ClassName

// ...

// 已经 import 了 ClassName,现在要使用重名的类,需要不全包名
xxx.xxx.packagename.ClassName cn = new xxx.xxx.packagename.ClassName()

属性

属性即为成员变量。

属性和局部变量的区别

成员变量局部变量的区别:

image-20221120125817158

阅读全文 »

数组

一维数组

数组本身是引用数据类型,一维数组的声明方式为 type var[] 或者 type[] var。一维数组的初始化分为动态初始化和静态初始化:

1
2
3
4
5
6
7
// 动态初始化
int[] arr = new int[3];
arr[0] = 1;

// 静态初始化
int[] arr2 = new int[]{1, 2, 3};
int[] arr3 = {1, 2, 3};
  • 数组在定义并且分配空间后,才可以使用。

  • 每个数组都有一个属性 length,初始化后不可变。

  • 数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化

    • 对于基本数据类型,默认初始化值为相应的零值

    image-20221120112659125

    • 对于引用数据类型,默认初始化值为 null
阅读全文 »

Java 语言概述

Java 技术体系平台

  • Java SE(Java Standard Edition)标准版:支持面向桌面级应用的 Java 平台,提供了完整的 Java 核心 API,此版本以前称为 J2SE。
  • Java EE(Java Enterprise Edition)企业版:是为开发企业环境下的应用程序提供的一套解决方案,主要针对于 Web 应用程序开发,此版本以前称为 J2EE。
  • Java ME(Java Micro Edition)小型版:支持 Java 程序运行在移动终端上的平台,对 Java API 有所精简,加入了针对移动端的支持,以前称为 J2ME。
  • Java Card:支持一些 Java 小程序(Applets)运行再小内存设备(如智能卡)上的平台。

Java 语言环境

  • JDK(Java Development Kit)开发工具包:JDK 是提供给 Java 开发人员使用的,其中包含了一些开发工具(如编译工具 javac、打包工具 jar),也包含 JRE
  • JRE(Java Runtime Environment)运行环境:包括 JVM 和 Java 程序所需的核心类库,如果想要运行一个开发好的 Java 程序只需要 JRE。

JDK = JRE + 开发工具集

JRE = JVM + Java SE 标准类库

image-20221119110257309

阅读全文 »

Joint Extraction of Entities and Relations Based on a Novel Tagging

会议:ACL

年份:2017

作者:Suncong Zheng, Feng Wang, Hongyun Bao, Yuexing Hao,Peng Zhou, Bo Xu

机构:Institute of Automation, Chinese Academy of Sciences

数据集:NYT(https://github.com/shanzhenren/CoType),训练集利用远程监督的方法进行构建的。训练集中有 353k 个关系三元组,测试集中有 3880 个关系三元组。并且,关系类型的数量为 24。

贡献:

  • 针对联合抽取,提出的一种新的标记方法(包含了实体和关系信息的标签),可以将抽取问题转换为序列标注问题
  • 提出了一个具有 biased loss function 的模型,以适应新标签,它可以增强实体与关系之间的联系。

模型结构

论文提出了一种端到端的基于序列标注的关系抽取模型,主要结构:

  • BiLSTM 作为 encoder
  • 基于 LSTM 的 decoder
  • biased loss,起到了增强实体标签、削弱 O 标签的效果

image-20221108162246705

阅读全文 »

PRGC: Potential Relation and Global Correspondence Based Joint Relational Triple Extraction

会议:ACL

年份:2021

作者:Hengyi Zheng, Rui Wen, Xi Chen, Yifan Yang, Yunyan Zhang, Ziheng Zhang, Ningyu Zhang, Bin Qin, Ming Xu, Yefeng Zheng

机构:College of Electronics and Information Engineering, Shenzhen University Information Technology Center, Shenzhen University Tencent Jarvis Lab, Shenzhen, China

数据集:

贡献:

  • 以一种全新的视角,将关系抽取任务分为三个子任务:Relation Judges,Entity Extraction 和 Subject-object Alignment。
  • 针对三个子任务,提出关系抽取框架 PRGC(Potential Relation and Global Correspondence),并提出了三大组件:Potential Relation Prediction,Relation-Specific Sequence Tagging 和 Global Correspondence,减缓了冗余关系判断、基于 span 的提取泛化性差、不足的 subject-object 对齐的问题。
  • 尤其当数据集中有很多关系、复杂的 overlapping 的场景下,方法的效果很好。

github:https://github.com/hy-struggle/PRGC

对于overlapping 问题,不仅解决了 SEO 和 EPO 问题,而且也解决了 SOO(Subject Object Overlap)问题。三种 overlapping 问题的的例子如下:

image-20221107111440175

模型结构

PRGC 将关系抽取划分为 3 个子任务:

  • Relation Judgment:得到可能所包含的关系,可能的关系是全部关系的子集。
  • Entity Extraction:给定一个句子和其中包含的可能的关系集,利用 BIO 标记,提取实体。
  • Subject-object Alignment:预测主体和客体的开始 token 的 correspondence score(也就是说,其余的 token pair 分数很低)。

image-20221107114427343

阅读全文 »

Entity-Relation Extraction as Multi-turn Question Answering

会议:ACL

年份:2019

作者:Xiaoya Li, Fan Yin, Zijun Sun, Xiayu Li, Arianna Yuan, Duo Chai, Mingxin Zhou, Jiwei Li

机构:Shannon.AI Computer Science Department, Stanford University

数据集:ACE 04、ACE 05 和 CoNLL04。并且构建了一个新的数据集 RESUME。

  • ACE 04 :
    • 定义了 7 种实体类型:Person(PER)、Organization(ORG)、Geographical Entities(GPE)、Location(loc)、Facility(FAC)、Weapon(WEA)和 Vehicle(VEH)。
    • 定义了 7 种关系类型:Physica(PHYS)、Person-Social(PER-SOC)、Employment-Organization(EMP-ORG)、Agent-Artifact(ART)、PER/ORG Affiliation(OTHER-AFF)、GPE-Affiliation(GPE-AFF)和 Discourse(DISC)
  • ACE 05:
    • 保留了 PER-SOC、ART 和 GPE-AFF 类别,将 PHYS 分为了 PHYS 和一个新的类别 PART-WHOLE,删除了类别 DISC,将 EMP-ORG 和 OTHER-AFF 合并为了一个新的类别 EMP-ORG。
  • CoNLL04:
    • 定义了 4 种实体:LOC、ORG、PER 和 OTHERS
    • 5 种关系类别:LOCATED IN、WORK FOR、ORGBASED IN、LIVE IN、KILL

贡献:

  • 将实体关系联合抽取任务转换为多轮次的 QA 任务,即从上下文中识别答案范围。
  • 构建了一个新开发的中文 RESUME 数据集简历,它需要多步推理来构建实体依赖,而不是在以前的数据集的三元组提取中进行单步依赖提取。

RESUME 数据集

ACE 和 CoNLL04数据集基于关系三元组的提取,两轮 QA 就可以提取三元组:第一轮用于提取头实体,第二轮用于提取尾实体和关系。这些数据集不涉及层次的实体关系。

因此,论文中构建了一个新的数据集 RESUME,从 IPO(指首次公开募股)招股说明书中描述管理团队的章节中提取了 841 个文档。每一个文档都描述了一些主管的工作历史,并从简历中提取结构性数据。该数据集是用中文表示的。

定义了 4 种类型的实体:Person、Company、Position、Time。值得注意的是,一个人可以在不同的时间在不同的公司工作,一个人可以在不同的时间在同一公司担任不同的职位。将所有数据以(人,公司,时间,职位)进行组织,表示一个人在某事件某公司担任某职位:

image-20221106172825401

RESUME 数据集的统计数据如下:

image-20221106172112520

模型结构

算法分为两个阶段:

  • 头实体提取阶段(4 - 9 行):为了提取头实体,使用 EntityQuesTemplates(line 4)将实体类别转化为一个问题,并通过回答这个问题(line 5)提取实体 e(若答案是 None,则说明不包含该类型的任何实体)。
  • 关系和尾实体提取阶段(10 - 24 行):ChainOfRelTemplates 定义了一个关系链,需要遵循它的顺序来运行多轮次的 QA(因为一些实体的提取依赖于其他实体的提取,比如在 RESUME 数据集中,高管所担任的职位依赖于他所工作的公司,时间实体的提取也依赖于公司和职位的提取。)。提取的顺序是人为预先定义的。ChainOfRelTemplates 还定义了每一种关系的模板,每个模板都包含一些要填充的插槽。为了生成一个问题(line 14),我们将先前提取的实体插入到模板中的插槽中。通过回答生成的问题(line 15)共同提取 REL 和尾部实体 e。

值得注意的是,从头实体提取阶段提取的实体可能不都是头实体。如果从第一阶段提取的一个实体 e 确实是一个关系的头实体,那么 QA 模型将通过回答相应的问题来提取该尾部实体。否则,答案将是 None,因此这个错误的头实体会被忽略。

image-20221106173114028

阅读全文 »

TPLinker: Single-stage Joint Extraction of Entities and Relations Through Token Pair Linking

会议:COLING

年份:2020

作者:Yucheng Wang, Bowen Yu, Yueyang Zhang, Tingwen Liu, Hongsong Zhu, Limin Sun

机构:Institute of Information Engineering, Chinese Academy of Sciences

贡献:

  • 提出了一种一阶段的联合抽取方法,可以解决 overlapping 问题(也可以解决嵌套实体的问题)和 exposure bias 问题。将联合抽取问题转化为 token pair 的链接问题。

数据集:NYT 和 WebNLG

github: https://github.com/131250208/TPlinker-joint-extraction

目前处理 EntityPairOverlap(EPO)和SingleEntityOverlap(SEO)问题的模型可以分为两类:

  • decoder-based(基于解码器的):采用 encoder-decoder 架构,decoder 每次提取一个关系三元组或者一个词。
  • decomposition-based(基于分解的):首先提取出可能的候选 subject,然后为每个 subject 提取出对应的 object 和关系。

这些方法都有一个相同的问题:exposure bias,原指在 RNN 中的一种偏差,在训练时接受的标签是真实的值,但是在测试时却接受自己前一个单元的输出作为本单元的输入,这两者的不一致会导致误差累积。

exposure bias,暴露偏差:

  • 在decoder-based 的方法中,在训练时,ground truth token 被用作上下文,而在预测时,整个序列是由所产生的模型自行生成的,因此,由模型生成的之前的 token 被作为上下文输入。(解码器需要一个递归译码过程)

  • 在 decomposition-based 的方法中,在训练时使用 gold subject entity 作为输入去提取特定的 object 和关系;而在预测时,subject 由模型自己给出。

论文将联合抽取任务转化成了一种 token pair 的链接任务,对于两个位置 p1 和 p2,以及一个给定的关系 r,TPLinker 回答三个问题:

  1. p1 和 p2 是同一个实体的开始位置和结束位置吗?
  2. p1 和 p2 是两个具有关系 r 的实体的开始位置吗?
  3. p1 和 p2 是两个具有关系 r 的实体的结束位置吗?

设计了一个 handshaking tagging scheme,为每个关系标注三个 token link matrices(这三个矩阵用于解码不同的标记结果,用来解决 overlapping 问题),以回答上面的三个问题。TPLinker 不包含任何相互依赖的提取步骤,所以可以避免 exposure bias。

模型结构

模型的结构如下,可以划分为两个部分:

  • 下方绿色的部分是 Token Pair Representation
  • 上方橘色部分是 Handshaking Tagger

image-20221103114710332

阅读全文 »

BERT-Based Multi-Head Selection for Joint Entity-Relation Extraction

来源:2019 年语言与智能竞赛信息抽取任务

年份:2019

作者:Weipeng Huang, Xingyi Cheng, Taifeng Wang, Wei Chu

机构:Ant Financial Services Group

贡献:

  • 使用 BERT 代替 BiLSTM 作为特征提取层,并且使用 semantic-enhanced task 优化 BERT 的预训练。
  • 使用 Baidu Baike corpus 进行实体识别的预训练,以一种弱监督的方式。
  • Soft label embedding 用于表示实体类型信息。

实体识别有助于关系分类,关系分类也有助于实体识别。

模型结构

  • 模型使用 BERT 来获取上下文特征。
  • CRF 层用于抽取实体。
  • CRF 的最上面输出了软标签向量(soft label embedding),用于传递实体信息。
  • 应用了 multi-sigmoid layer 去解决一个实体属于多个关系三元组的问题。

image-20221102105616797

阅读全文 »

论文

A Novel Cascade Binary Tagging Framework for Relational Triple Extraction

发布年份:2020

会议:ACL

作者:Zhepei Wei, Jianlin Su, Yue Wang, Yuan Tian, Yi Chang

机构:School of Artificial Intelligence, Jilin University

贡献:

  • 以一种全新的视角去看待关系抽取任务,解决了 overlapping 问题。

数据集:NYT(定义了 24 种关系类型) 和 WebNLG(定义了 246 种关系类型)

github:[GitHub - weizhepei/CasRel: A Novel Cascade Binary Tagging Framework for Relational Triple Extraction. Accepted by ACL 2020.](https://github.c om/weizhepei/CasRel)

关系抽取中的 overlapping 问题,包括:

  • EntityPairOverlap(EPO):两个实体之间有多个关系。
  • SingleEntityOverlap(SEO):多个关系三元组共同享一个实体。

1666595989186

1666792872681

为了解决 overlapping 问题,论文以一种新的视角去看待关系抽取任务(避开了关系分类),即将关系抽取分为两步,对于一个关系三元组 (subject, relation, object)

  • 首先,识别出一个句子中所有可能的主体(subject)
  • 然后,对于每一个主体,应用一种特殊的标记方法(relation-specific object tagging)去同时识别所有可能的关系(relation)和与之相关的客体(object)

模型结构

1666665431934

阅读全文 »

论文

Attention as Relation: Learning Supervised Multi-head Self-Attention for Relation Extraction

发布年份:2020

会议:IJCAI

作者:Jie Liu, Shaowei Chen, Bingquan Wang, Jiaxin Zhang, Na Li, Tong Xu

机构:College of Artificial Intelligence, Nankai University

贡献:

  • 提出了一个 supervised attention-based 的联合关系抽取模型,用于解决 overlapping 关系三元组问题。
  • 为了充分捕捉独特的关联语义,分别学习不同关系类型下的关联强度(每一个关系类型都是单独的子空间),将关系检测转化为一个多标签分类任务,并设计了一个监督的多头自注意机制。

数据集:在测试集中随机选择 10% 作为验证集。

  • NYT(New York Times),包含 24 种关系类型。
  • WebNLG:包含 246 种关系类型。

github:https://github.com/NKU-IIPLab/SMHSA

目前来说,实体关系联合抽取模型还面临着许多问题。提出的基于多头注意力机制的联合抽取模型就是为了解决这些问题。

  • 识别重叠的关系三元组(identify overlapping relation triplets):overlapping 可以分为两种子类型,之前的联合关系抽取模型无法解决 overlapping 问题。
    • EntityPairOverlap(EPO):两个实体有多种关系。
    • SingleEntityOverlap(SEO):两个关系三元组共同享一个实体。
  • 在不同的关系类型中,实体语义可能会发生变化。
  • 在 EPO 问题中,传统的联合抽取模型将所有关系类型的可能性都放在同一个可能性空间中,这很难去同一对实体的多种关系。

NYT 和 WebNLG 的统计数据如下:

1666350029408

模型结构

模型由三个部分组成:

  • Encoding Layer:采用 BiLSTM 作为 encoder。
  • Entity Extraction Module:采用 CRF 去识别实体。
  • Relation Detection Module:设计了一种 supervised multi-head self-attention 机制,用于得到两个 token 之间的关系类型(解决 overlapping 问题)。

1666269354437

阅读全文 »