精华内容
下载资源
问答
  • python实体关系抽取
    2020-12-04 15:42:18

    模型图:项目中model.png

    请参照模型图理解代码

    1.项目大致流程描述:

    word/char Embedding(特征嵌入层):

    在词级别的向量基础上加入字符级的信息,这样的embedding可以捕捉前缀后缀这样的形态特征。

    先用skip-gram word2vec 模型预训练得到的词向量表将每个词映射为一个词向量,然后把每个词中字母用一个向量表示,把一个词中所包含的字母的向量送入 BiLSTM, 把前后两个最终状态和 词向量进行拼接,得到词的embedding

    BiLSTM层:

    把句子中所包含词的embedding输入,然后将前向、后向 每个对应位置的hidden state拼接起来得到新的编码序列。

    CRF Layer:

    采用BIO标注策略,使用CRF引入标签之间的依赖关系,

    计算每个词得到不同标签的分数

    计算句子的标签序列概率

    采用Viterbi算法得到分数最高的序列标签

    在进行命名实体时 通过最小化交叉熵损失 来达到 优化网络参数和CRF的目的,测试时用Viterbi算法得到分数最高的序列标签

    Label Embedding:

    实体标签的embedding。训练时真实标签,测试时为预测标签

    Heads Relations:

    输入为BiLSTM的hidden state和label Embedding的拼接。可以预测多个头,头和关系的决策是一块完成的,而不是先预测头,再用关系分类器预测关系

    标签策略: CRF层的输出是采用BIO标注策略的实体识别结果,head Relations层只有在和其他实体有关系时 会给出对应实体的尾单词和关系;在与其他实体没有关系时 head为原单词本身,关系为N

    Adversarial training(AT): 对抗训练 使分类器对于噪音数据有更强的鲁棒性(混合原来的样本+对抗样本)

    2.数据格式描述:

    #doc 5121 文件名

    ['token_id', 'token', "BIO", "relation", 'head']

    token_id : 每个文件中词所在位置下标

    token : 词

    BIO: 标注实体类型

    relation: 实体关系

    head: 当前 实体关系 对应实体的位置下标

    data_parsers.py:

    docId: 文件名称id

    token_ids: 词在每个文件中对应位置的下标列表

    tokens: 单词的列表

    BIOs: 词对应的实体列表

    ecs: 没加标注的的实体列表

    relations: 实体关系的列表

    heads: 实体关系对应实体下标位置的列表,如[[2],[3,4]]

    char_ids: 每个单词中的每个字母对应的id的列表,如 两个单词第一个单词包含三个字母,第二个单词包含四个字母[[1,2,3],[11,12,1,4]]

    embedding_ids:单词对应id的列表

    BIO_ids: 实体对应id的列表

    ec_ids: 没加标注的实体对应id的列表

    joint_ids: 实体关系联合的列表:计算规则(可参考后期验证数据校验时的 数据处理规则):headId*len(set(relations))+relation_id

    实体关系的去重列表长度:len(set(relations))

    该实体谷关系对应的实体下标:headId

    实体关系 对应的id: relation_id

    3.文件描述:方法详细功能在代码注释中可看

    data_build.py 初始化配置文件及数据

    data_parsers.py 封装数据

    model.py 模型

    train.py 模型训练

    data_utils 数据转换、处理

    eval 模型校验

    更多相关内容
  • Entity and Relation Extraction Based on TensorFlow and BERT. 基于TensorFlow和BERT的管道式实体关系抽取,2019语言与智能技术竞赛信息抽取任务解决方案。Schema based Knowledge Extraction, SKE 2019
  • 用TensorFlow实现神经网络实体关系抽取
  • 基于Deep Belief Nets 的中文名实体关系抽取
  • 7.5命名实体识别(NER)目标是识别所有文字提及的命名实体。可以分成两个子任务:确定NE的边界和确定其类型。NLTK提供了一个已经训练好的可以识别命名实体的分类器,如果我们设置参数binary=True,那么命名实体只被...

    7.5命名实体识别(NER)

    目标是识别所有文字提及的命名实体。

    可以分成两个子任务:确定NE的边界和确定其类型。

    NLTK提供了一个已经训练好的可以识别命名实体的分类器,如果我们设置参数binary=True,那么命名实体只被标注为NE,没有类型标签。可以通过代码来看:

    >>>sent = nltk.corpus.treebank.tagged_sents()[22]>>>print nltk.ne_chunk(sent, binary=True)

    (S

    The/DT

    (NE U.S./NNP)is/VBZ

    one/CD

    ...

    according/VBG

    to/TO

    (NE Brooke/NNPT./NNPMossman/NNP)

    ...)>>>printnltk.ne_chunk(sent)

    (S

    The/DT

    (GPE U.S./NNP)is/VBZ

    one/CD

    ...

    according/VBG

    to/TO

    (PERSON Brooke/NNPT./NNPMossman/NNP)

    ...)

    7.6关系抽取

    一旦文本中的命名实体已被识别,我们就可以提取它们之间存在的关系。

    进行这一任务的方法之一,就是寻找所有的(X,α, Y)形式的三元组,我们可以使用正则表达式从α的实体中抽出我们正在查找的关系。下面的例子搜索包含词in的字符串。

    特殊的正则表达式(?!\b.+ing\b)是一个否定预测先行断言,允许我们忽略如success in supervising the transition of中的字符串,其中in 后面跟一个动名词。

    >>>IN = re.compile(r'.*\bin\b(?!\b.+ing)')>>>for docin nltk.corpus.ieer.parsed_docs('NYT_19980315'):

    ...for rel in nltk.sem.extract_rels('ORG', 'LOC', doc,

    ... corpus='ieer',pattern =IN):

    ...printnltk.sem.show_raw_rtuple(rel)

    [ORG:'WHYY'] 'in' [LOC: 'Philadelphia']

    [ORG:'McGlashan &Sarrail']'firm in' [LOC: 'San Mateo']

    [ORG:'Freedom Forum']'in' [LOC: 'Arlington']

    [ORG:'Brookings Institution'] ', the research group in' [LOC: 'Washington']

    [ORG:'Idealab'] ', a self-described businessincubator basedin' [LOC: 'Los Angeles']

    [ORG:'Open Text']', basedin' [LOC: 'Waterloo']

    [ORG:'WGBH'] 'in' [LOC: 'Boston']

    [ORG:'Bastille Opera']'in' [LOC: 'Paris']

    [ORG:'Omnicom'] 'in' [LOC: 'New York']

    [ORG:'DDB Needham']'in' [LOC: 'New York']

    [ORG:'Kaplan ThalerGroup']'in' [LOC: 'New York']

    [ORG:'BBDO South']'in' [LOC: 'Atlanta']

    [ORG:'Georgia-Pacific'] 'in' [LOC: 'Atlanta']

    如前文所示,CoNLL2002命名实体语料库的荷兰语部分不只包含命名实体标注,也包含词性标注。这允许我们设计对这些标记敏感的模式,如下面的例子所示。show_clause()方法以分条形式输出关系,其中二元关系符号作为参数relsym的值被指定。

    >>>fromnltk.corpusimport conll2002>>>vnv= """... (

    ... is/V| #3rdsing present and

    ... was/V| #past forms of the verb zijn ('be')

    ... werd/V| #and also present

    ... wordt/V #pastof worden('become')

    ... )

    ... .* #followed byanything

    ... van/Prep #followed byvan('of')

    ..."""

    >>>VAN=re.compile(vnv, re.VERBOSE)>>>for docin conll2002.chunked_sents('ned.train'):

    ...for r in nltk.sem.extract_rels('PER', 'ORG', doc,

    ... corpus='conll2002', pattern=VAN):

    ...print nltk.sem.show_clause(r,relsym="VAN")

    VAN("cornet_d'elzius",'buitenlandse_handel')

    VAN('johan_rottiers','kardinaal_van_roey_instituut')

    VAN('annie_lennox','eurythmics')

    展开全文
  • 知乎id: WhiteAndWhite(本人是北邮研究生,毕设的方向是实体关系抽取,在这里总结一下我看过的关于这个task的文献,肯定有很多错误,还请大家指出。知乎上有我实验室的专栏,我在上面会每隔三个礼拜发布一篇文章,...

    出现的知乎的链接笔记部分是我写的,也有我的同学写的。知乎id: WhiteAndWhite

    (本人是北邮研究生,毕设的方向是实体关系抽取,在这里总结一下我看过的关于这个task的文献,肯定有很多错误,还请大家指出。知乎上有我实验室的专栏,我在上面会每隔三个礼拜发布一篇文章,一般都是关于本task的。本人才疏学浅,代码能力接近0,大家见笑了。)

    传统的关系抽取方法总结:

    基于句法解析增强的方法,Milleret al. 2000

    基于逻辑回归的方法,Kambhatla 2004

    基于核函数的方法,Zhao and Grishman 2005; Bunescu and Mooney 2006

    基于条件随机场的方法,Culotta et al. 2006

    远程监督,Distant supervision,Mintz et al. 2009

    基于无向图模型的关系抽取方法,Yao et al. 2010

    增强远程监督的假设,Riedel et al. 2010

    改进实体对齐,Takamatsuet al. 2012

    多实例多标签,Hoffmann etal. 2011

    多标签多实例+贝叶斯网络,Surdeanu etal. 2012

    基于深度学习的关系抽取方法(2015年之前的,CNN刚刚火起来):

    RNN,Socher et al. 2012

    [Socher et al. 2012] 提出使用递归神经网络来解决关系抽取问题。该方法首先对句子进行句法解析,然后为句法树上的每个节点学习向量表示。通过递归神经网络,可以从句法树最低端的词向量开始,按照句子的句法结构迭代合并,最终得到该句子的向量表示,并用于关系分类。该方法能够有效地考虑句子的句法结构信息,但同时该方法无法很好地考虑两个实体在句子中的位置和语义信息。

    CNN,Zeng et al. 2014

    他们采用词汇向量和词的位置向量作为卷积神经网络的输入,通过卷积层、池化层和非线性层得到句子表示。通过考虑实体的位置向量和其他相关的词汇特征,句子中的实体信息能够被较好地考虑到关系抽取中。

    CNN,新的损失函数,Santos et al. 2015

    后来,[Santos et al. 2015]还提出了一种新的卷积神经网络进行关系抽取,其中采用了新的损失函数,能够有效地提高不同关系类别之间的区分性。

    CNN,扩展至远程监督,Zeng et al. 2015

    理解远程监督 a glance at Distant Supervision

    什么是远程监督呢?一开始是因为觉得人工标注数据比较费时费力,那么就有人想来个自动标注的方法。远程监督就是干这个事儿的。

    假设知识库KB当中存在实体与实体的关系,那么将KB当中的关系引入到正常的自然语言句子当中进行训练,例如‘苹果’和’乔布斯’在KB中的关系是CEO,那么我们就假设类似于“【乔布斯】发布了【苹果】的新一代手机”的句子上存在CEO的关系,如此,利用KB对海量的文本数据进行自动标注,得到标注好的数据(正项),再加入一些负项,随后训练一个分类器,每个分类是一个关系,由此实现关系抽取。

    09年的文章就是这个思想:在KB中有一个triplet,那么在corpus中凡是有这个entity pair的sentence全都当成含有这个relation的instance

    下面是我阅读过的文献,几乎都是基于深度学习的。这些文章有些很有新意,也有一些是在单纯灌水。

    论文总结 paper reading

    论文名称:Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks

    论文信息:Zeng et al. 2015 EMNLP

    模型名称:PCNN

    论文内容:非常经典的文章,分段式的max pooling。后面做的文章都要引用这篇文章。

    展开全文
  • 7.5定名实体辨认(NER)目标是辨认所有文字说起的定名实体。可以分成两个子任务:断定NE的鸿沟和断定其类型。NLTK供给了一个已经练习好的可以辨认定名实体的分类器,若是我们设置参数binary=True,那么定名实体只被...

    7.5定名实体辨认(NER)

    目标是辨认所有文字说起的定名实体。

    可以分成两个子任务:断定NE的鸿沟和断定其类型。

    NLTK供给了一个已经练习好的可以辨认定名实体的分类器,若是我们设置参数binary=True,那么定名实体只被标注为NE,没有类型标签。可以经由过程代码来看:

    >>>sent = nltk.corpus.treebank.tagged_sents()[22]>>>print nltk.ne_chunk(sent, binary=True)

    (S

    The/DT

    (NE U.S./NNP)is/VBZ

    one/CD

    ...

    according/VBG

    to/TO

    (NE Brooke/NNPT./NNPMossman/NNP)

    ...)>>>printnltk.ne_chunk(sent)

    (S

    The/DT

    (GPE U.S./NNP)is/VBZ

    one/CD

    ...

    according/VBG

    to/TO

    (PERSON Brooke/NNPT./NNPMossman/NNP)

    ...)

    7.6关系抽取

    一旦文本中的定名实体已被辨认,我们就可以提取它们之间存在的关系。

    进行这一任务的办法之一,就是寻找所有的(X,α, Y)情势的三元组,我们可以应用正则表达式从α的实体中抽出我们正在查找的关系。下面的例子搜刮包含词in的字符串。

    特别的正则表达式(?!\b.+ing\b)是一个否定猜测先行断言,容许我们忽视如success in supervising the transition of中的字符串,此中in 后面跟一个动名词。

    >>>IN = re.compile(r.\bin\b(?!\b.+ing))>>>for docin nltk.corpus.ieer.parsed_docs(NYT_19980315):

    ...for rel in nltk.sem.extract_rels(ORG, LOC, doc,

    ... corpus=ieer,pattern =IN):

    ...printnltk.sem.show_raw_rtuple(rel)

    [ORG:WHYY] in [LOC: Philadelphia]

    [ORG:McGlashan &Sarrail]firm in [LOC: San Mateo]

    [ORG:Freedom Forum]in [LOC: Arlington]

    [ORG:Brookings Institution] , the research group in [LOC: Washington]

    [ORG:Idealab] , a self-described businessincubator basedin [LOC: Los Angeles]

    [ORG:Open Text], basedin [LOC: Waterloo]

    [ORG:WGBH] in [LOC: Boston]

    [ORG:Bastille Opera]in [LOC: Paris]

    [ORG:Omnicom] in [LOC: New York]

    [ORG:DDB Needham]in [LOC: New York]

    [ORG:Kaplan ThalerGroup]in [LOC: New York]

    [ORG:BBDO South]in [LOC: Atlanta]

    [ORG:Georgia-Pacific] in [LOC: Atlanta]

    如前文所示,CoNLL2002定名实体语料库的荷兰语项目组不只包含定名实体标注,也包含词性标注。这容许我们设计对这些标识表记标帜敏感的模式,如下面的例子所示。show_clause()办法以分条情势输出关系,此中二元关系符号作为参数relsym的值被指定。

    >>>nltk.corpusimport conll2002>>>vnv= """... (

    ... is/V| #3rdsing present and

    ... was/V| #past forms of the verb zijn (be)

    ... werd/V| #and also present

    ... wordt/V #pastof worden(become)

    ... )

    ... . #followed byanything

    ... van/Prep #followed byvan(of)

    ..."""

    >>>VAN=re.compile(vnv, re.VERBOSE)>>>for docin conll2002.chunked_sents(ned.train):

    ...for r in nltk.sem.extract_rels(PER, ORG, doc,

    ... corpus=conll2002, pattern=VAN):

    ...print nltk.sem.show_clause(r,relsym="VAN")

    VAN("cornet_delzius",buitenlandse_handel)

    VAN(johan_rottiers,kardinaal_van_roey_instituut)

    VAN(annie_lennox,eurythmics)我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》

    展开全文
  • 基于几个可用的NER和RE数据集定义了7个实体标签和9个关系标签。实体(Entity):每个实体都由带有多个属性的T标签标识。关系(Relation):每个关系由R标签标识,该标签可以具有多个属性。
  • 关系提取是指从文本中提取语义关系,这种语义关系通常发生在两个或多个实体之间。这些关系可以是不同类型的。" Paris is in France "表示巴黎与法国之间的" is in "关系。这可以用三元组(Paris, is in, France)来...
  • 基于依存句法分析,实现面向开放域文本的知识三元组抽取实体关系抽取)及知识库构建
  • 中文自然语言的实体抽取和意图识别(Natural Language Understanding),可选Bi-LSTM CRF 或者 IDCNN CRF
  • 中文实体关系抽取,对实体关系抽取不了解的可以先看。顺便求star~ 数据 中文实体关系抽取数据实在太难找了,data中是忘记在哪里找的人物关系数据集,一共11+1种关系,数据质量不太好,但也找不到其他的了。 (更新...
  • 关系抽取旨在识别命名实体之间的语义关系.作为自然语言处理中信息抽取的重要子任务,是构建知识图谱,实现语义搜索,建立智能问答系统等应用领域必不可少的关键技术,具有极其重要的研究价值.关系抽取研究的热点经历了...
  • 农业知识图谱:农业领域的命名实体识别,实体解析,关系抽取,数据挖掘
  • SemEval2010 任务8 实体关系抽取数据集 已经标注的语料 SemEval2010 任务8 实体关系抽取数据集 已经标注的语料
  • 推荐解决地址实体抽取与补全问题的方法:ahocorasick库,与cpca库的安装使用
  • 基于crfsuited的医疗命名实体抽取Python实现 医疗电子病例命名实体识别评测任务的一个可执行demo,采用的方法是条件随机场(CRF),实现CRF的第三方库为[python-crfsuite]。目前该demo准确率为68%,召回率为62%,F1...
  • 对于存储在excel里的一些文字,想要提取其中的相关实体,比如人名、地名、机构名以及死亡人数、受伤人数等等,应该运用什么方法可以实现呢?![图片说明]...
  • 关系抽取实验 Django python bootstrap relation extraction ##特征工程 ###特征类型的定义(43维特征,第42和43维特征暂时没有提取)
  • 中文实体关系抽取实践

    万次阅读 多人点赞 2019-07-17 16:21:04
    关于实体关系抽取的技术发展脉络,感兴趣的可以看一下: https://www.cnblogs.com/theodoric008/p/7874373.html 关系抽取有限定关系抽取和开放关系抽取,这里主要说限定关系抽取即分类问题 其过程常常又有监督...
  • 超级超级详细的实体关系抽取数据预处理代码详解 由于本人是代码小白,在学习代码过程中会出现很多的问题,所以需要一直记录自己出现的问题以及解决办法. 废话不多说,直接上代码!!! 一.data_process 1.由于数据集太大,...
  • 在清华大学开源的OpenNRE项目基础上实现中文实体关系识别 github项目地址,点我 文章目录一、中文关系抽取训练结果测试结果二、使用前准备三、注意事项 一、中文关系抽取 使用哈工大,BERT-wwm,中文bert,在20w...
  • 这个项目的本质是-----------医学文本的实体关系联合抽取问题,既要解决命名实体识别,又要解决关系分类问题。使用RoFormerV2模型作为预训练模型,GPLinker作为下游模型,在Embedding层添加FGM对抗训练增加模型性能...
  • python命名实体抽取学习记录(1)

    万次阅读 2017-02-19 14:35:22
     信息有多种表现形式,一个重要的形式就是结构化数据:即实体关系的规范和可预测的组织。而现实生活中大多数自然语言句子是非结构化数据,为从文本获得其意义,我们首先需要将自然语言数据转化为结构化数据,然后...
  • 古汉语实体关系联合抽取的标注方法.docx
  • Python NLTK学习11(命名实体识别和关系抽取)发表于:2017年7月27日阅读:18262除特别注明外,本站所有文章均为小杰Code原创本系列博客为学习《用Python进行自然语言处理》一书的学习笔记。命名实体识别命名实体识别...
  • deepdive python3 环境下多种实体关系抽取流程

    千次阅读 热门讨论 2019-06-14 09:28:11
    deepdive是基于python2的,如果写脚本时使用python3,就会出现一系列问题,例如最开始可能遇到的报错就是:即找不到dd文件等等 22:38:04 [Helpers$(akka://deepdive)] INFO Traceback (most recent call last): 22...
  • python命名实体抽取学习记录

    千次阅读 2018-12-09 13:01:12
     信息有多种表现形式,一个重要的形式就是结构化数据:即实体关系的规范和可预测的组织。而现实生活中大多数自然语言句子是非结构化数据,为从文本获得其意义,我们首先需要将自然语言数据转化为结构化数据,然后...
  • 摘要本文接着 知识图谱系列––命名实体识别方法[1],继续介绍关系抽取方法。知识图谱在构建的过程中,往往伴随着边试用,边拓展,边优化的过程,其中图谱拓展和优化就必须用到关系抽取方法来进一步抽取补充实体关系...
  • #民航系统实体关系抽取 ##说明 本工程使用于民航系统的实体关系抽取,数据资料来源于2011-2018民航统计公报及民航资源网实体资料[] 关系抽取模型训练使用清华大学THUNLP的opennre开源工具包,基本实现民航系统的抽取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,105
精华内容 3,242
关键字:

python实体关系抽取