精华内容
下载资源
问答
  • 2021-06-18 09:32:19

    1、本项目是基于阿里云比赛开放的医疗数据集去做的实体关系抽取。下面会从数据的详情,模型的选取,模型的训练,模型的验证和模型的预测去讲述。

    2、数据准备阶段

    • 1、数据来源是阿里云医疗大赛,选取的是其中一个子任务,医疗实体关系抽取,数据如下:
      在这里插入图片描述
      在这里插入图片描述
    • 2、数据分析
      • 从上面的数据中我们可以发现数据是清洗后的json文件,其中包含对应的需要的文本,标注的三元组信息,三元组按照主体-》关系-》客体去标注的。其中整理后的关系种类也是一个json文件,因为在实体关系抽取中我们目标是计划在文本句子中抽取出一个或n个三元组。较于传统正则去清洗三元组不同,使用模型去实现需要事先定义好这些信息,具体数据格式如下:
        在这里插入图片描述

      3、模型选择

      • 针对Bert在文本上下文语义中的很好效果,采用半指针半标注结构,去实现,通过先把subject传到模型中,将输出去预测出object和predicate,模型的结构如下:
        在这里插入图片描述
      • 模型设计过程如下:基于“半指针-半标注”的方式来做抽取,顺序是先抽取s,然后传入s来抽取o、p,不同的只是将模型的整体架构换成了bert:
      • 1、原始序列转id后,传入bert的编码器,得到编码序列;
      • 2、编码序列接两个二分类器,预测s;
      • 3、根据传入的s,从编码序列中抽取出s的首和尾对应的编码向量;
      • 4、以s的编码向量作为条件,对编码序列做一次条件Layer Norm;
      • 5、条件Layer Norm后的序列来预测该s对应的o、p。

    4、模型训练

    • 1、模型的核心代码部分:
      • 1.1模型代码如下:
    在这里插入代# 补充输入
    subject_labels = Input(shape=(None, 2), name='Subject-Labels')
    subject_ids = Input(shape=(2,), name='Subject-Ids')
    object_labels = Input(shape=(None, len(predicate2id), 2), name='Object-Labels')
    
    # 加载预训练模型
    bert = build_transformer_model(
        config_path=config_path,
        checkpoint_path=checkpoint_path,
        return_keras_model=False,
    )
    
    # 预测subject
    output = Dense(
        units=2, activation='sigmoid', kernel_initializer=bert.initializer
    )(bert.model.output)
    subject_preds = Lambda(lambda x: x ** 2)(output)
    
    subject_model = Model(bert.model.inputs, subject_preds)
    
    
    output = bert.model.layers[-2].get_output_at(-1)
    subject = Lambda(extract_subject)([output, subject_ids])
    output = LayerNormalization(conditional=True)([output, subject])
    output = Dense(
        units=len(predicate2id) * 2,
        activation='sigmoid',
        kernel_initializer=bert.initializer
    )(output)
    output = Lambda(lambda x: x ** 4)(output)
    object_preds = Reshape((-1, len(predicate2id), 2))(output)
    
    object_model = Model(bert.model.inputs + [subject_ids], object_preds)码片
    
    • 1.2定义损失函数:
    
    class TotalLoss(Loss):
        """subject_loss与object_loss之和,都是二分类交叉熵
        """
    
        def compute_loss(self, inputs, mask=None):
            subject_labels, object_labels = inputs[:2]
            subject_preds, object_preds, _ = inputs[2:]
            if mask[4] is None:
                mask = 1.0
            else:
                mask = K.cast(mask[4], K.floatx())
            # sujuect部分loss
            subject_loss = K.binary_crossentropy(subject_labels, subject_preds)
            subject_loss = K.mean(subject_loss, 2)
            subject_loss = K.sum(subject_loss * mask) / K.sum(mask)
            # object部分loss
            object_loss = K.binary_crossentropy(object_labels, object_preds)
            object_loss = K.sum(K.mean(object_loss, 3), 2)
            object_loss = K.sum(object_loss * mask) / K.sum(mask)
            # 总的loss
            return subject_loss + object_loss
    
    • 1.2数据加载:
    def load_data(filename):
        D = []
        with open(filename, encoding='utf-8') as f:
            for l in f:
                l = json.loads(l)
                D.append({
                    'text': l['text'],
                    'spo_list': [(spo['subject'], spo['predicate'], spo['object']['@value'])
                                 for spo in l['spo_list']]
                })
        return D
    
    • 1.3关系语料读取:
    with open('CMeIE/53_schemas.json', encoding="utf-8") as f:
        for l in f:
            l = json.loads(l)
            if l['predicate'] not in predicate2id:
                id2predicate[len(predicate2id)] = l['predicate']
                predicate2id[l['predicate']] = len(predicate2id)
    print(predicate2id)
    
    • 1.4输入text进行三元组抽取:
    def extract_spoes(text):
        """抽取输入text所包含的三元组
        """
        tokens = tokenizer.tokenize(text, maxlen=maxlen)
        mapping = tokenizer.rematch(text, tokens)
        token_ids, segment_ids = tokenizer.encode(text, maxlen=maxlen)
        token_ids, segment_ids = to_array([token_ids], [segment_ids])
        # 抽取subject
        subject_preds = subject_model.predict([token_ids, segment_ids])
        start = np.where(subject_preds[0, :, 0] > 0.6)[0]
        end = np.where(subject_preds[0, :, 1] > 0.5)[0]
        subjects = []
        for i in start:
            j = end[end >= i]
            if len(j) > 0:
                j = j[0]
                subjects.append((i, j))
        if subjects:
            spoes = []
            token_ids = np.repeat(token_ids, len(subjects), 0)
            segment_ids = np.repeat(segment_ids, len(subjects), 0)
            subjects = np.array(subjects)
            # 传入subject,抽取object和predicate
            object_preds = object_model.predict([token_ids, segment_ids, subjects])
            for subject, object_pred in zip(subjects, object_preds):
                start = np.where(object_pred[:, :, 0] > 0.6)
                end = np.where(object_pred[:, :, 1] > 0.5)
                for _start, predicate1 in zip(*start):
                    for _end, predicate2 in zip(*end):
                        if _start <= _end and predicate1 == predicate2:
                            spoes.append(
                                ((mapping[subject[0]][0],
                                  mapping[subject[1]][-1]), predicate1,
                                 (mapping[_start][0], mapping[_end][-1]))
                            )
                            break
            return [(text[s[0]:s[1] + 1], id2predicate[p], text[o[0]:o[1] + 1])
                    for s, p, o, in spoes]
        else:
            return []
    
    
    
    • 1.5模型的验证与指标信息保存:
    def evaluate(data):
        """评估函数,计算f1、precision、recall
        """
        X, Y, Z = 1e-10, 1e-10, 1e-10
        f = open('dev_pred.json', 'w', encoding='utf-8')
        w2=open('final_result.txt','a+',encoding='utf-8')
        pbar = tqdm()
        for d in data:
            R = set([SPO(spo) for spo in extract_spoes(d['text'])])
            T = set([SPO(spo) for spo in d['spo_list']])
            X += len(R & T)
            Y += len(R)
            Z += len(T)
            f1, precision, recall = 2 * X / (Y + Z), X / Y, X / Z
            pbar.update()
            pbar.set_description(
                'f1: %.5f, precision: %.5f, recall: %.5f' % (f1, precision, recall)
            )
            s = json.dumps({
                'text': d['text'],
                'spo_list': list(T),
                'spo_list_pred': list(R),
                'new': list(R - T),
                'lack': list(T - R),
            },
                ensure_ascii=False,
                indent=4)
            f.write(s + '\n')
        pbar.close()
        f.close()
        w2.write('F1:'+str(f1)+';'+'Precision:'+str(precision)+';'+'Recall:'+str(recall)+'\n')
        return f1, precision, recall
    

    2、模型训练过程:

    • 实验环境介绍:采用的是tensorflow,keras,12g显存上训练一个星期左右,时间问题,只跑了50个epoch,尝试在自己的1650TI上训练实在是太慢了,不动的,建议服务器去跑,参数量是几个亿左右。迭代次数在1000步以上效果会更好。
    • 训练过程截图如下:
      在这里插入图片描述
      在这里插入图片描述
      3、模型预测:
    • 根据训练好的权重,使用load_wights去加载模型,再去输入文本去预测
      权重已经训练好,需要的可以私信我发给大家。需要数据集的可以邮我:sessioncookies@163.com。
    • 模型的预测结果如下:
      在这里插入图片描述
      在这里插入图片描述
    • 模型的验证结果保存到json如下:
      在这里插入图片描述

    5、总结:

    根据上述验证结果和预测结果我们发现bert实现实体关系抽取效果很好,最高是可以达到84%的F1值,在足够多的epoch下。欢迎三连啦。关注一波,后期各种干货,下一期将讲解如何利用这些抽取的三元组去使用neo4j通过脚本生成知识图谱,最终完成KBQA问答。

    更多相关内容
  • Q1:与联合抽取对比,Pipeline方法有哪些...Q8:实体关系抽取的前沿技术和挑战有哪些?如何解决低资源和复杂样本下的实体关系抽取?如何应用图神经网络?彩蛋:百度2020关系抽取比赛的baseline可以采取哪些方法?实体
  • 实体关系抽取作为信息抽取、自然语言理解、信息检索等领域的核心任务和重要环节,能够从文本中抽取实体对间的语义关系.近年来,深度学习在联合学习、远程监督等方面上的应用,使关系抽取任务取得了较为丰富的研究成果....
  • 实体关系抽取

    2017-08-08 12:23:33
    实体关系抽取
  • 中文实体关系抽取,对实体关系抽取不了解的可以先看。顺便求star~ 数据 中文实体关系抽取数据实在太难找了,data中是忘记在哪里找的人物关系数据集,一共11+1种关系,数据质量不太好,但也找不到其他的了。 (更新...
  • 实体关系抽取旨在识别网络文本中的实体,并提取出文本中实体之间隐含的关系。研究表明,深度神经网络在实体关系抽取任务上具有可行性,并优于传统关系抽取方法。目前的关系抽取方法大都使用卷积神经网络(CNN)和长...
  • 作为信息抽取的一项核心子任务,实体关系抽取对于知识图谱、智能问答、语义搜索等自然语言处理应用都十分重要。关系抽取在于从非结构化文本中自动地识别实体之间具有的某种语义关系。
  • 该方法利用依存句法分析简称依存分析实现开放式中文实体关系抽取,首先对一个句子进行依存分析,再结合中文语法启发式规则和依存分析的结果抽取关系表述,并根据距离确定论元位置,最后进行三元组输出。
  • 基于几个可用的NER和RE数据集定义了7个实体标签和9个关系标签。实体(Entity):每个实体都由带有多个属性的T标签标识。关系(Relation):每个关系由R标签标识,该标签可以具有多个属性。
  • 基于机器学习的实体关系抽取方法.pdf
  • 清华大学刘知远老师和学生韩旭、高天宇所写的关于知识图谱相关的介绍。 机器之心获授权转载,此文为.md笔记...沿着实体关系抽取需要进一步探索的四个主要方向,介绍这四个方面的发展现状和挑战,以及 一些思考和努力。
  • 用TensorFlow实现神经网络实体关系抽取
  • 针对传统实体关系抽取需要预先指定关系类型和制定抽取规则等无法胜任大规模文本的情况,开放式信息抽取(Open Information Extraction, OIE)在以英语为代表的西方语言中取得了重大进展,但对于汉语的研究却显得不足...
  • 在自然语言处理领域,信息抽取一直以来受到...实体关系抽取的主要目标是从自然语言文本中识别并判定实体对之间存在的特定关系,这为智能检索、语义分析等提供了基础支持,有助于提高搜索效率,促进知识库的自动构建。
  • 实体关系抽取是指从无结构的自然语言文本中抽取实体之间的语义关系,并以结构化的形式表示出 来。传统的实体关系抽取方法只注重一种特定类型的数据源,并需要标注大量的训练数据来训练抽取模型,人工成本高。因此...
  • SemEval2010 任务8 实体关系抽取数据集 已经标注的语料 SemEval2010 任务8 实体关系抽取数据集 已经标注的语料
  • 基于Deep Belief Nets 的中文名实体关系抽取
  • SemEval2010 任务8 实体关系抽取数据集 已经标注的语料 从其他地方整理过来,欢迎下载使用!
  • 深度学习实体关系抽取研究综述.pdf
  • 基于深度学习的中文实体关系抽取方法.pdf
  • 基于联合模型的藏文实体关系抽取方法研究
  • 基于维基百科和模式聚类的实体关系抽取方法.pdf
  • 实体关系抽取的目标在于探测实体之间的显式关系和隐式关系. 现有研究大多集中在显式实体关系抽取,而忽略了隐式实体关系抽取. 针对旅游和新闻领域文本经常包含许多由协陪义动词引发的隐式实体关系,本文研究了基于协...
  • 融合知识图谱与深度学习的文物信息资源实体关系抽取方法研究.pdf
  • 深度学习实体关系抽取研究综述.软件学报,2019,30(6): 1793−1818. http://www.jos.org.cn/1000-9825/5817.htm 摘要部分 1、实体关系抽取很重要,是很多领域的核心任务和重要环节 2、作用:能够从文本中抽取实体对间...

    鄂海红,张文静,肖思琪,程瑞,胡莺夕,周筱松,牛佩晴.深度学习实体关系抽取研究综述.软件学报,2019,30(6): 1793−1818. http://www.jos.org.cn/1000-9825/5817.htm

    摘要部分

    1、实体关系抽取很重要,是很多领域的核心任务和重要环节
    2、作用:能够从文本中抽取实体对间的语义关系
    3、发展趋势:深度学习的实体关系抽取技术,在特征提取的深度和模型的精确度上已经逐渐超过了传统基于特征和核函数的方法
    4、如何工作:通过对文本信息建模,自动抽取出实体对之间的语义关系,提取出有效的语义知识
    5、成果应用:文本摘要、自动问答、机器翻译、语义网标注、知识图谱等
    6、自然语言处理国际会议:ACL、EMNLP、ICLR、AAAI、KDD、NAACL、ECML-PKDD等
    7、经典的方法:主要分为有监督、半监督、弱监督和无监督这 4 类,缺点:经典方法存在特征提取误差传播问题,极大影响实体关系抽取效果
    7.1、有监督的实体关系抽取主要分为基于特征和基于核函数的方法。缺点:有监督方法需要手工标注大量的训练数据,浪费时间精力
    7.2、提出了基于半监督、弱监督和无监督的关系抽取方法来解决人工标注语料问题

    经典论文:需要看的
    [32] Brin S. Extracting patterns and relations from the World Wide Web. In: Proc. of the Int’l Workshop on the World Wide Web and
    Databases. 1998. 172−183.
    [33] Kumlien MCJ. Constructing viological knowledge bases by extraction information from text sources. In: Proc. of the 7th Int’l Conf.
    on Intelligent Systems for Molecular Biology. AAAI Press, 1999. 77−86.
    [34] Hasegawa T, Sekine S, Grishman R. Discovering relations among named entities from large corpora. In: Proc. of the Meeting on Association for Computational Linguistics. 2004. 415.

    8、深度学习方法:深度学习的实体关系抽取任务分为有监督和远程监督两类
    8.1、基于深度学习的有监督实体关系抽取方法是近年来关系抽取的研究热点,该方法能避免经典方法中人工特征选择等步骤,减少并改善特征抽取过程中的误差积累问题。优点:基于深度学习的远程监督实体关系抽取方法因具有缓解经典方法中错误标签和特征抽取误差传播问题的能力而成为研究热点
    8.2、基于深度学习的有监督实体关系抽取方法可以分为流水线(pipeline)方法联合学习(joint learning)方法
    8.3、主要基础方法包括 CNN,RNN,LSTM 等网络结构
    经典论文
    [13] Katiyar A, Cardie C. Going out on a limb: Joint extraction of entity mentions and relations without dependency trees. In: Proc. of
    the Meeting of the Association for Computational Linguistics. 2017. 917−928.
    [20] Zeng D, Liu K, Lai S, Zhou G, Zhao J. Relation classification via convolutional deep neural network. In: Proc. of the 25th Int’l Conf. on Computational Linguistics: Technical Papers (COLING 2014). 2014. 2335−2344.
    [35] Jiao LC, Yang SY, Liu F, Wang SG, Feng ZX. Neural Network Seventy Years: Retrospect and Prospect. Chinese Journal of Computers, 2016,39(8):1697−1716 (in Chinese with English abstract).
    [36] Zhou FY, Jin LP, Dong J. A survey of Convolutional Neural Networks. Chinese Journal of Computers, 2017,40(6):1229−1251 (in Chinese with English abstract).

    8.2、方法改进,有时间要看:学者们在基础方法之上提出了多种改进,如 PCNN 与多示例学习的融合方法[37]、PCNN 与注意力机制的融合方法[10]等.Ji 等人[38]提出在 PCNN 和 Attention 的基础上添加实体的描述信息来辅助学习实体的表示,Ren 等人[39]提出的 COTYPE 模型、Huang[40]提出的残差网络皆增强了关系提取效果

    经典论文
    [10] Lin Y, Shen S, Liu Z, Luan H, Sun M. Neural relation extraction with selective attention over instances. In: Proc. of the Meeting of
    the Association for Computational Linguistics. 2016. 2124−2133.
    [37] Zeng D, Liu K, Chen Y, Zhao J. Distant supervision for relation extraction via piecewise convolutional neural networks. In: Proc.
    of the Conf. on Empirical Methods in Natural Language Processing. 2015. 1753−1762.
    [38] Ji GL, Liu K, He SZ, Zhao J. Distant supervision for relation extraction with sentence-level attention and entity descriptions. In: Proc. of the AAAI. 2017. 3060−3066.
    [39] Ren X, Wu Z, He W, Qu M, Voss CR, Ji H, Abdelzaher TF, Han JW. Co Type: Joint extraction of typed entities and relations with
    knowledge bases. 2016. 1015−1024. https://arxiv.org/abs/1610.08763
    [40] Huang YY, Wang WY. Deep residual learning for weakly-supervised relation extraction. ar Xiv preprint ar Xiv:1707.08866, 2017.

    8.4、基于深度学习的实体关系抽取方法与经典抽取方法相比,其主要优势在于深度学习的神经网络模型可以自动学习句子特征,无需复杂的特征工程

    深度学习实体关系抽取的问题定义和解决框架

    1、流水线学习方法:是指在实体识别已经完成的基础上直接进行实体之间关系的抽取
    2、联合学习方法:主要是基于神经网络的端到端模型,同时完成实体的识别和实体间关系的抽取
    3、方法对比:与有监督实体关系抽取相比,远程监督方法缺少人工标注数据集,因此,远程监督方法比有监督多一步远程对齐知识库给无标签数据打标的过程.而构建关系抽取模型的部分,与有监督领域的流水线方法差别不大

    解决问题的框架

    针对实体关系抽取任务,基于深度学习的抽取框架如图 1 所示
    (1) 获取有标签数据:有监督方法通过人工标记获取有标签数据集,远程监督方法通过自动对齐远程知识库获取有标签数据集;
    (2) 构建词语向量表示:将有标签句子分词,将每个词语编码成计算机可以接受的词向量,并求出每个词语与句子中实体对的相对位置,作为这个词语的位置向量,将词向量与位置向量组合作为这个词语的最终向量表示;
    (3) 进行特征提取:将句子中每一个词语的向量表示输入神经网络中,利用神经网络模型提取句子特征,进而训练一个特征提取器;
    (4) 关系分类:测试时根据预先定义好的关系种类,将特征提取出的向量放入非线性层进行分类,提取最终的实体对关系;
    (5) 评估分类性能:最后,对关系分类结果进行评估,评测指标和相关数据集详见第 6 节.

    在这里插入图片描述

    有监督实体关系抽取框架演化流程

    解决的问题:能解决经典方法中存在的人工特征选择特征提取误差传播两大主要问题,将低层特征进行组合,形成更加抽象的高层特征,用来寻找数据的分布式特征表示.
    有监督的实体关系抽取框架的演化流程如图 2 所示

    在这里插入图片描述
    基于深度学习的有监督实体关系抽取可以分为流水线方法联合学习方法.这两种方法都基于 CNN, RNN,LSTM 这 3 种框架进行扩展优化
    .
    流水线方法中,基于 RNN 模型的扩展包括在 RNN 基础之上增加依存分析树信息词依存矩阵信息;基于 CNN 模型的扩展包括在 CNN 基础之上增加类别排名信息依存分析树注意力机制;基于 LSTM模型的扩展包括在 LSTM 基础之上增加最短依存路径(SDP)或将 LSTM 与 CNN 结合.流水线方法存在错误累积传播忽视子任务间关系依赖产生冗余实体等问题,因此,联合模型逐渐开始受到重视;

    联合学习方法根据其建模对象不同,可分为参数共享序列标注两类子方法:参数共享方法的编码层均使用 Bi-LSTM,解码层则基于 Bi-LSTM、依赖树和注意力机制等方法纷纷进行优化扩展;序列标注方法则用一种新标注策略的端到端模型解决流水线模型中冗余实体的问题.

    流水线方法

    针对已经标注好目标实体对的句子进行关系抽取,最后把存在实体关系的三元组作为预测结果输出。

    1、基于 RNN 模型的实体关系抽取方法

    RNN 在处理单元之间既有内部的反馈连接又有前馈连接,可以利用其内部的记忆来处理任意时序的序列信息,具有学习任意长度的各种短语和句子的组合向量表示的能力

    首次提出基于 RNN 模型进行关系抽取的方法的论文:
    [46] Socher R, Huval B, Manning CD, Ng AY. Semantic compositionality through recursive matrix-vector spaces. In: Proc. of the Joint Conf. on Empirical Methods in Natural Language Processing and Computational Natural Language Learning. 2012. 1201−1211.

    优化论文
    [19] Hashimoto K, Miwa M, Tsuruoka Y, Chikayama T. Simple customization of recursive neural networks for semantic relation classification. In: Proc. of the 2013 Conf. on Empirical Methods in Natural Language Processing. 2013.18−21.

    RNN 相比于前馈网络更适合处理序列化输入,但 RNN 也存在着以下两个缺点:(1) 在网络训练时,RNN 容易出现梯度消失、梯度爆炸的问题,因此,传统 RNN 在实际中很难处理长期依赖,这一点在 LSTM 网络中有所改进;(2) 由于 RNN 的内部结构复杂,网络训练周期较长,而 CNN 结构相对简单,主要包括前置的卷积层和后置的全连接层,训练更快速.

    基于CNN模型的实体关系抽取方法

    CNN 的基本结构包括两层:其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征;其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等,减少了网络中自由参数的个数.由于同一特征映射面上的神经元权值相同,所以 CNN 网络可以并行学习.

    首次提出使用 CNN 进行关系抽取的论文
    [20] Zeng D, Liu K, Lai S, Zhou G, Zhao J. Relation classification via convolutional deep neural network. In: Proc. of the 25th Int’l Conf. on Computational Linguistics: Technical Papers (COLING 2014). 2014. 2335−2344.

    优化的论文
    [21] Santos CND, Xiang B, Zhou B. Classifying relations by ranking with convolutional neural networks. Computer Science, 2015,86: 132−137.
    [47] Xu K, Feng Y, Huang S, Zhao D. Semantic relation classification via convolutional neural networks with simple negative sampling. Computer Science, 2015,71:941−949.
    [48] Vu NT, Adel H, Gupta P, Schütze H. Combining recurrent and convolutional neural networks for relation classification. ar Xiv preprint ar Xiv:1605.07333, 2016.
    [49] Wang L, Cao Z, Melo GD, Liu Z. Relation classification via multi-level attention CNNs. In: Proc. of the Meeting of the Association for Computational Linguistics. 2016. 1298−1307.

    在这里插入图片描述
    图 3 描述了该论文用于关系分类的神经网络的体系结构.网络对输入句子提取多个级别的特征向量,它主要包括以下 3 个组件:词向量表示特征提取输出.图 3 右部分显示了句子级特征向量构建过程:每个词语向量由词特征(WF)和位置特征(PF)共同组成,将词语向量放入卷积层提取句子级特征.图 3 左上部分为提取词汇级和句子级特征的过程,然后直接连接以形成最终的句子特征向量.最后如图3 左下部分,通过隐藏层和 Softmax 层得到最终的分类结果.

    基于 LSTM 模型的实体关系抽取方法

    由于梯度消失梯度爆炸的问题,传统的 RNN 在实际中很难处理长期依赖,后面时间的节点对于前面时间的节点感知力下降.而 LSTM 网络通过 3 个门控操作细胞状态解决了这些问题,能够从语料中学习到长期依赖关系.

    经典论文

    [11] Xu Y, Mou LL, Li G, Chen YC, Peng H, Jin Z. Classifying relation via long short term memory networks along shortest dependency paths. Conf. on Empirical Methods in Natural Language Processing, 2015,42(1):56−61.
    [22] Nguyen TH, Grishman R. Combining neural networks and log-linear models to improve relation extraction. ar Xiv preprint ar Xiv: 1511.05926, 2015.
    [50] Li F, Zhang M, Fu G, Qian T, Ji D. A Bi-LSTM-RNN model for relation classification using low-cost sequence features. ar Xiv preprint ar Xiv:1608.07720, 2016.
    [51] Cai R, Zhang X, Wang H. Bidirectional recurrent convolutional neural network for relation classification. In: Proc. of the Meeting of the Association for Computational Linguistics. 2016. 756−765.

    在这里插入图片描述
    论文[11]的模型图如图 4 所示.首先,如图 4 左下部分,利用斯坦福解析器****将句子解析为依赖树,并提取最短依赖路径(SDP)作为网络的输入,沿着 SDP,使用 4 种不同类型的信息(称为通道),包括单词、词性标签、语法关系和 Word Net 上位词;在每个通道中(图 4 右部分是每个通道的细节图),词语被映射成向量,捕获输入的基本含义,两个递归神经网络分别沿着 SDP 的左右子路径获取信息,网络中的 LSTM 单元用于有效信息的传播;之后,如图 4 左上部分,最大池化层从每个路径中的 LSTM 节点收集信息,来自不同通道的池化层连接在一起,然后输入到隐藏层;最后,使用 Softmax 输出层用于关系分类

    流水线方法中存在的共性问题
    1. 错误传播:实体识别模块的错误会影响到接下来的关系分类性能;
    2. 忽视了两个子任务之间存在的关系:丢失信息,影响抽取效果;
    3. 产生冗余信息:由于对识别出来的实体进行两两配对,然后再进行关系分类,那些没有关系的实体对就会带来多余信息,提升错误率.

    联合学习方法

    相比于流水线方法,联合学习方法能够利用实体和关系间紧密的交互信息,同时抽取实体并分类实体对的关系,很好地解决了流水线方法所存在的问题.

    联合学习方法通过实体识别和关系分类联合模型,直接得到存在关系的实体三元组.

    基于参数共享的实体关系抽取方法

    针对流水线方法中存在的错误累积传播问题忽视两个子任务间关系依赖的问题。

    在基于参数共享的实体关系抽取方法的方法中,实体识别子任务关系抽取子任务通过共享联合模型的编码层来进行联合学习,通过共享编码层,在训练时,两个子任务都会通过后向传播算法更新编码层的共享参数,以此来实现两个子任务之间的相互依赖,最终找到全局任务的最参数,实现性能更佳的实体关系抽取系统.在联合学习模型中,输入的句子在通过共享的编码层后,在解码层会首先进行实体识别务,再利用实体识别的结果,并对存在关系的实体对进行关系分类,最终输出实体-关系三元组.

    首次提出的论文
    [12] Miwa M, Bansal M. End-to-end relation extraction using LSTMs on sequences and tree structures. In: Proc. of the Meeting of the Association for Computational Linguistics. 2016. 1105−1116.
    经典论文

    [13] Katiyar A, Cardie C. Going out on a limb: Joint extraction of entity mentions and relations without dependency trees. In: Proc. of the Meeting of the Association for Computational Linguistics. 2017. 917−
    928.
    [53] Li F, Zhang M, Fu G, Ji D. A neural joint model for extracting bacteria and their locations. In: Proc. of the Pacific-Asia Conf. on Knowledge Discovery and Data Mining. Cham: Springer-Verlag, 2017. 15−26.
    [54] Katiyar A, Cardie C. Investigating LSTMs for joint extraction of opinion entities and relations. In: Proc. of the Meeting of the Association for Computational Linguistics. 2016. 919−929.

    在这里插入图片描述
    论文 [12] 模型图如图 5 所示.在该模型中,实体识别子任务和关系分类子任务共享编码层的 LSTM 单元序列表示(编码层包括 LSTM 单元和隐藏层).该方法将实体识别任务当作序列标注任务,使用双向序列 LSTM 输出具有依赖关系的实体标签;之后,通过在双向序列 LSTM 单元上堆叠双向树结构 LSTM 的方法,使关系分类子任务和实体识别子任务共享编码层的 LSTM单元序列表示,同时,在关系分类子任务中捕获词性标签等依赖特征实体识别子任务中输出的实体序列,形成依存树,最终根据依存树中目标实体间的最短路径对文本进行关系抽取.但该模型中的关系分类子任务和实体识别子任务仅共享了编码层的双向序列 LSTM 表示,从严格意义上来说不是真正的联合模型.但是该模型的提出,为之后真正意义上联合学习模型的提出奠定了基础,是基于深度学习方法做联合学习模型的启发者.

    基于序列标注的实体关系抽取方法

    基于参数共享的实体关系抽取方法在训练时还是需要先进行命名实体识别子任务,再根据实体预测信息对实体进行两两匹配,最后进行关系分类子任务,因其在模型实现过程中分开完成了命名实体识别和关系分类这两个子任务,仍然会产生没有关系的实体这种冗余信息.为了解决这个问题,基于新序列标注方法的实体、关系联合抽取方法被提出.

    经典论文
    [55] Zheng S, Wang F, Bao H, Hao Y, Zhou P, Xu B. Joint extraction of entities and relations based on a novel tagging scheme. 2017. 1227−1236. https://arxiv.org/abs/1706.05075

    在这里插入图片描述该方法能使用序列标注的方法同时识别出实体和关系,避免了复杂的特征工程,通过一个端到端的神经网络模型直接得到实体关系三元组,解决了基于参数共享的实体关系抽取方法可能会带来的实体冗余的问题.新序列标注方法的模型图如图 6 所示.在该端到端的神经网络模型中,对输入的句子,首先,编码层使用 Bi-LSTM 来进行编码;之后,解码层再使用 LSTM 进行解码;最终,输出模型标注好的实体-关系三元组.
    另外,Zheng 等人[55]在这篇论文中还对该端到端模型增加了偏置损失函数,该函数增强了相关实体对之间的联系,削弱了无效实体标签的影响力,提高了关系分类的准确率;并基于这种新的标注方法,该论文中还学习用不同的端到端模型来解决关系抽取问题.

    联合学习方法中存在的共性问题

    基于参数共享的实体关系抽取方法和基于新序列标注的实体关系抽取方法对于现今有监督领域存在的重叠实体关系识别问题,并未能给出相关的解决方案.

    基于深度学习的有监督领域关系抽取方法与经典方法的对比

    基于有监督学习的经典方法严重依赖于词性标注、句法解析等自然语言处理标注工具中提供的分类特征,而自然语言处理标注工具中往往存在大量错误,这些错误会在关系抽取系统中不断传播放大,最终影响关系抽取的效果.而基于深度学习的有监督方法可以在神经网络模型中自动学习特征,将低层特征进行组合,形成更加抽象的高层特征,用来寻找数据的分布式特征表示,能够避免人工特征选择等步骤,减少并改善特征抽取过程中的误差积累问题.

    有监督领域实体关系抽取核心公式

    在这里插入图片描述

    基于深度学习的远程监督实体关系抽取方法

    远程监督实体关系抽取框架演化流程

    面临大量无标签数据时,有监督的关系抽取消耗大量人力,显得力不从心.因此,远程监督实体关系抽取应运生.通过数据自动对齐远程知识库来解决开放域中大量无标签数据自动标注的问题.远程监督标注数据时主要有两个问题:噪声和特征提取误差传播.噪声问题是由于远程监督的强假设条件,导致大量数据的关系被错误标记,使得训练数据存在大量噪声;而特征提取中的误差传播问题是由于传统的特征提取主要是利用NLP 工具进行数据集的特征提取,因此会引入大量的传播误差.针对错误标签问题 .自从深度学习的崛起和其在有监督领域取得良好的关系抽取效果后,用深度学习提取特征的思路来替代特征工程是一个非常自然的想法:用词向量、位置向量来表示句子中的实体和其他词语;用深度模型对句子建模,构建句子向量;最后进行关系分类.深度学习模型及其特点有:CNN 的扩展模型 PCNN+MIL、PCNN+ATT(Attention 机制作为多示例机制的一种泛化)弱化错误标签问题;LSTM获取实体对方向性信息;COTYPE联合抽取实体和关系信息;深度残差网络防止错误标签噪声的逐层累积.基于远程监督实体关系抽取框架的演化流程如图 7 所示.

    在这里插入图片描述

    基于深度学习的远程监督领域实体关系抽取主流方法介绍
    基于 PCNN 及其扩展模型的实体关系抽取

    深度学习中的PCNN 方法有效解决了特征提取误差传播的问题.而对于远程监督中错误标签引入噪声的问题,本模块采用多示例和注意力两种机制来缓解噪声问题.以下是基于 PCNN 及其扩展模型的实体关系抽取过程

    a) 示例语句编码:词向量、位置向量共同组成词语表示向量;
    b) 卷积层:卷积部分是采用了常见的针对文本的卷积核设计,单向滑动;
    c) 三段池化与最终关系分类:在池化层,是按照分段进行 Max Pooling 的,而 PCNN 的 P 是 Piecewise,将句子按照两个实体进行分割,分割得到 3 段,将这 3 段分别进行 Max Pooling.最后,使用一个 Softmax 分类器进行类别判断

    缺点:PCNN 结合多实例的方法虽然优化了传统远程监督的效果,但多实例实际上是给包打标签而不是给语句打标签,即从包含实体对的所有语句中只选择了一个语句,这必然导致丢失大量有用的句子信息

    经典论文:
    [20] Zeng D, Liu K, Lai S, Zhou G, Zhao J. Relation classification via convolutional deep neural network. In: Proc. of the 25th Int’l Conf. on Computational Linguistics: Technical Papers (COLING 2014). 2014. 2335−2344.

    基于 PCNN 和注意力机制(ATT)的实体关系抽取

    多示例方法只用了包中一条语句信息,这就在一定程度上丢失了很多信息.针对此问题,论文[10]在Zeng 的基础上采用 Attention 机制,充分利用包内的信息,进一步减弱错误打标的示例语句产生的噪声.最终,标签正确分类的示例语句贡献较大,分配权重较高;标签错误分类的示例语句贡献较小,分配权重较低.从而提高分类的准确率.具体流程主要分为:

    a) 包中示例分类:将实体对作为包,含实体对的句子作为包中示例;
    b) 示例语句编码(句子特征提取):句子分词,将句子词语和实体转化为稠密实数向量,然后利用卷积、池化和非线性转换等操作构建起对应的句向量.句向量编码过程如图 8 所示;
    c) 给句子加入注意力机制:给不同的句子赋予不同的权重α1,α2,α3,…,αn,隐式地摒弃一些噪音语料,以此提升分类器的性能.这样使得网络的输出数目和关系数目相等,方便后续 Softmax 层进行分类.图 9 为原始句子包生成句子包向量的过程,原始句子通过 CNN 提取句子特征,构建句子向量,给包中不同句子添加不同的权重,构建出一个句子包向量.
    在这里插入图片描述
    在这里插入图片描述
    Attention 机制虽与多示例方法都是减弱错误标签带来的噪声问题,但多示例只用了包中一条语句信息,而Attention 机制综合利用了包中所有示例语句信息,更好地提升了远程监督中关系抽取的效果.

    经典论文:
    [10] Lin Y, Shen S, Liu Z, Luan H, Sun M. Neural relation extraction with selective attention over instances. In: Proc. of the Meeting of
    the Association for Computational Linguistics. 2016. 2124−2133.

    基于 PCNN、注意力机制和实体表示信息的实体关系抽取

    目前的远程监督关系抽取都集中在探索句子的语义信息层次上,忽略了实体本身的描述信息对关系抽取效果的影响.对此,文献[38]中提出加入实体表示信息的深度学习实体关系抽取模型.此模型是在 PCNN 和Attention 的基础上添加了实体的描述信息来辅助学习实体的表示,从而提高准确率.其提取关系流程主要为:

    a) PCNN 模块:用 PCNN 提取句子特征,每个实体对对应一个包,用句子级别注意力机制给包中每个句子分配一个权重,综合利用包中所有句子的信息;

    b) 提取实体信息:从 Freebase 和 Wikipedia 页面中提取实体描述以补充实体关系提取的背景知识,用一个传统的 CNN 模型(一个卷积层和一个最大池化层)从实体描述中提取特征.背景知识不仅为预测关系提供了更多信息,而且为注意力机制模块带来了更好的实体表示;

    c) 特征融合:用交叉熵最小化目标函数,目标函数由句子级别注意力机制和实体信息共同决定.

    本文实际检测到:当前远程监督关系抽取模型如果在没有实体背景信息的情况下,其在抽取某些实体对关系时效果不佳.针对此问题,作者提出使用实体表示信息丰富其背景知识,以便更好地预测关系.实验表明在前人模型的基础上加入此创新点,均明显地提升了当前模型的效果.

    经典论文:
    [38] Ji GL, Liu K, He SZ, Zhao J. Distant supervision for relation extraction with sentence-level attention and entity descriptions. In: Proc. of the AAAI. 2017. 3060−3066.

    基于 LSTM 的实体关系抽取方法

    传统的远程监督方法在提取特征时采用 NLP 工具包,加重了错误传播、错误积累的问题,所以论文[57]提出一种 SE-LSTM 结合多示例学习的方法来解决远程监督中错误传播、错误积累问题,其模型如图 10 所示

    经典论文:

    [57] He D, Zhang H, Hao W, Zhang R, Chen G, Jin D, Cheng K. Distant supervised relation extraction via long short term memory networks with sentence embedding. Intelligent Data Analysis, 2017,21:1213−1231.

    a) LSTM 网络抽取实体对方向性信息(图 10 左上部分):论文[57]首先将句子的最短依存路径(SDP)分割成两个子路径作为 LSTM 结构的输入,自动地抽取特征,以此来抽取实体对的方向性信息;

    b) CNN 网络提取句子整体信息(图 10 右部分):尽管 SDP 对关系抽取非常有效,但是这并不能捕捉到句子的全部特征.针对此问题,作者将全部句子放进 CNN 网络,进而抽取句子的全部信息(sentence embedding);

    c) 特征融合(图 10 左下部分):最后,将 LSTM 隐藏层单元以及 CNN 的非线性单元相融合,通过 Softmax层来标注实体对对应的关系
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/5659b8e2edae4feaa330e1215f43158f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5raC5YWG6K-a,size_20,color_FFFFFF,t_70,g_se,x_16

    在这里插入图片描述
    论文[57]提出的 SE-LSTM 网络结合多示例的方法,其可以在不需要任何 NLP 工具包的帮助下自动地抽取特征,并且通过两个 LSTM 提取实体对的方向性信息.实验表明,该方法大大地提升了关系抽取的准确率.

    基于 COTYPE 联合抽取模型的实体关系抽取方法

    文献[39]中提出了联合抽取模型 COTYPE,此模型的提出,主要解决在远程监督关系抽取过程中面临的 3 大挑战:

    1. 事先训练好的命名实体识别器限制了领域之间的扩展;
    2. 将实体抽取和关系抽取分开导致错误的累积传播;
    3. 在远程监督中标签噪声问题.COTYPE 的框架主要分为 3 个部分

    a) 数据预处理:在训练语料上运行文本分割算法,得到候选实体;给同一句话的两个候选实体构建关系,用三元组表示;最后分析文本
    ,抽取文本特征

    b) 联合训练实体和关系向量空间:将候选实体、候选关系、文本特征等嵌入到关系空间以及实体空间,并对两者进行联合建模;

    c) 对实体类型和关系类型进行推理预测

    COTYPE 模型与 PCNN 等单模型相比不仅可以扩展到不同领域,而且通过把实体抽取和关系抽取两个任务结合,较好地减弱了错误的累积传播.实验结果表示,其明显提升了当时 State-of-the-art 的效果.

    经典论文:

    [39] Ren X, Wu Z, He W, Qu M, Voss CR, Ji H, Abdelzaher TF, Han JW. Co Type: Joint extraction of typed entities and relations with
    knowledge bases. 2016. 1015−1024. https://arxiv.org/abs/1610.08763

    基于深度残差网络的实体关系抽取方法

    一般来说,深层神经网络能抽取更深的语义特征,所以论文[40]实验了 9 层 CNN 的实体关系抽取模型.但事实发现,9 层 CNN 抽取效果不如单层.Huang 猜测可能是由于远程监督的数据里有太多错误标签的数据,错误标签带来的噪声随着神经网络层次的加深逐渐被放大,导致 9 层效果比单层的差.因此,提出一种深度残差网络模型来解决深层网络增大噪声的问题,其采用残差网络设法使浅层网络的特征跳跃传递至深层网络,让网络可以选择较不被噪声影响的那层网络特征来进行关系分类.在性能上,9 层的残差网络可达到 State-of-the-art (PCNN+ATT)模型相似的效果

    基于深度学习的远程监督关系抽取方法与经典方法的对比

    经典的远程监督方法是在解决远程监督中强假设条件造成大量错误标签的问题,而深度学习方法主要是是在解决特征提取中误差传播问题.

    远程监督的提出,是因为在开放域中存在大量无规则非结构化数据,人工标注虽能使标注的准确率较高,但是时间和人力消耗巨大,在面对大量数据集时显得不切实际.因此,远程监督实现一种数据集自动对齐远程知识库进行关系提取的方法,可进行自动标注数据.但由于其强假设条件造成大量错误标签问题,之后,经典的远程监督的改进都是在改进处理错误标签的算法

    深度学习的提出,是因数据特征构造过程依赖于 NER 等 NLP 工具,中间过程出错会造成错误传播问题.且现今基于深度学习的远程监督实体关系抽取框架已包含经典方法中对错误标签的探讨解决,因此可以认为现今的远程监督关系抽取框架是基于传统方法的扩展优化.

    基于深度学习的远程监督关系抽取方法与有监督方法的对比

    有监督的实体关系抽取依靠人工标注的方法得到数据集,数据集准确率、纯度较高,训练出的关系抽取模型效果较好,具有很好的实验价值.但其人工标注数据集的方法耗费大量人力成本,且标注数据的数量有限、扩展性差、领域性强,导致构造的关系抽取模型对人工标注的数据具有依赖性,不利于模型的跨领域泛化能力,领域迁移性较差.

    远程监督在面对大量无标签数据时,相较于有监督实体关系抽取具有明显优势.人力标注大量无标签数据显得不切实际,因此远程监督采用对齐远程知识库的方式自动标注数据,极大地减少了人力的损耗且领域迁移性较强.但远程监督自动标注得到的数据准确度较低,因此在训练模型时,错误标签的误差会逐层传播,最终影响整个模型的效果.因此,现今的远程监督实体关系抽取模型的效果普遍比有监督模型抽取效果效果差.基于深度学习的有监督和远程监督实体关系抽取效果对比可见表 2.

    在这里插入图片描述

    远程监督领域实体关系抽取方法核心公式

    在这里插入图片描述

    基于深度学习的实体关系抽取新模型与新思路

    在这里插入图片描述

    融合深度增强学习的实体关系抽取

    在这里插入图片描述
    论文[60]在 2017 年提出了基于增强学习和深度学习的联合学习方法抽取实体和关系的模型.该模型中,增强学习将任务建模为两步决策过程,如图 11 所示:第 1 个决策根据实体抽取的初步结果,判断包含目标实体对的句子是否是一个关系;第 2 个决策将关系进行分类.通过设计每步的奖励函数,可以将实体提取的信息传递给关系提取并获得反馈,以便同时提取实体和关系.深度学习用于自动捕获非结构化文本中最重要的信息,这些信息代表决策过程中的状态,首先使用 Bi-LSTM 来模拟上下文信息,将实体抽取任务视为序列标注任务,实现初步的实体提取;在提取结果的基础上,基于注意力机制的方法可以表示包括目标实体对的句子,以在决策过程中生成初始状态;接着使用Tree-LSTM 来表示关系,在决策过程中生成过渡状态;最后采用Q -Learning 算法,在两步决策过程中得到控制策略π.该方法解决了在增强学习与深度学习的联合模型中,如何将实体信息传递给关系抽取,使实体和关系信息能够交互并获得反馈的问题.在ACE2005 数据集上的实验结果,比现有技术的方法获得更好的性能,并且召回率评分提高了 2.4%.

    经典论文:
    [60] Feng Y, Zhang H, Hao W, Chen G. Joint extraction of entities and relations using reinforcement learning and deep learning. In: Proc. of the Comput Intell Neurosci. 2017. 1−11.
    [61] Qin P, Xu W, Wang WY. Robust distant supervision relation extraction via deep reinforcement learning. ar Xiv preprint ar Xiv:1805.
    09927, 2018.

    融合生成对抗网络的实体关系抽取

    生成对抗网络是实体关系提取中的新兴方法,其通过在词向量表示阶段引入对抗性噪声并给出新的损失函数来增加模型的准确率.其主要思路是:生成器和判别器为博弈对方,生成器拟合数据的产生过程生成模型样本,判别器通过增加噪声样本增强模型准确率和鲁棒性,优化目标是达到纳什均衡.

    论文[64]于 2018 年将生成对抗网络引入到远程监督关系抽取中,用于筛选错误标签,最终达到降噪的效果.实验结果表明,此模型优于现今效果最好的远程监督实体关系抽取模型.

    在这里插入图片描述

    生成对抗网络筛选错误标签数据的流程如图 12 所示.

    a) 预训练:对生成器和鉴别器进行预训练,得到生成器和鉴别器的参数θG和θD.由于在良好初始化参数的情况下对抗训练很容易趋于收敛,因此预训练具有很好的优化效果.本文生成器和鉴别器都用简单的卷积神经网络,相比于循环神经网络,卷积神经网络具有更少的参数;

    b) 数据划分:一次迭代(epoch)扫描远程监督训练集中所有正例集 P={s1,s2,…,sj,…},将其划分为 N 个包: B={Bag1,Bag2,…,Bagk,…},一次处理一个包中的全部数据;

    c) 生成器训练:生成器计算包中正样本的概率分布,其产生的高置信样本被认为是真实的正例样本,然后根据这个概率分布进行抽样;

    d) 对抗器训练:对抗器接收这些高置信度样本,但将其视为负样本;相反,低置信度的样本仍被视为正样本.在这个过程中,模型会以预训练的参数行初始化;

    e) 交替训练:对于生成的样本,生成器使真正的概率最大;相反,对抗器使这个概率最小.两个网络交替进行训练,更新θG和θD.

    基于深度学习的实体关系抽取在生物医药领域中的最新应用进展

    基于深度学习的实体关系抽取的数据集及其评测方法

    数据集介绍

    1、有监督领域

    有监督领域的实体关系抽取主要采用 MUC 关系抽取任务数据集、ACE04、ACE05、Sem Eval-2010 Task 8公开数据集
    ,部分论文采用 MPQA 2.0 语料库和 Bio NLP-ST 2016 的 BB 任务数据集.有监督方面评测标准主要以 F1 值来统计.

    2、远程监督领域

    远程监督领域的实体关系抽取主要采用 NYT-FB 数据集.这个数据集是由 Freebase 知识库对其纽约时报的文本获得的数集.训练数据为知识库对其 2005 年、2006 年文本获得的,测试库数据为知识库对其 2007 年文本获得的.NYT-FB 数据集中共有 53 种关系,共计 695 059 条数据(其中训练集包含 522 611 条训练语句,训练数据中有近 80%的句子的标签为 NA,测试集包含 172 448 条测试语句),通过结合 Free Base 对 NYT 语料做实体链接、关系对齐等操作进行标注,最终得到一个被广泛使用的关系抽取数据集.

    评测方法介绍

    1、准确率
    准确率是从查准率的角度对实体关系抽取效果进行评估,其计算公式为:
    在这里插入图片描述
    2、召回率
    召回率是从查全率的角度对抽取效果进行评估,其计算公式为
    在这里插入图片描述
    3、F 值
    对与关系抽取来说,准确率和召回率是相互影响的,二者存在互补关系,因此,F 值综合了准确率和召回率的信息,其计算公式为

    在这里插入图片描述
    β是一个调节准确率与召回率比重的参数,实际测试中,一般认为准确率与召回率同等重要,因此,β值一般设置成 1.因此,上式可以表示为

    在这里插入图片描述

    深度学习实体关系抽取典型论文的数据集与评测标准

    在这里插入图片描述
    表 5 中,序号 1-序号 15 是有监督领域实体关系抽取的典型模型与其相关信息介绍,序号 16-序号 25 是远程监督领域实体关系抽取的典型模型与其相关信息介绍.其中,1-10 是有监督领域中流水线类别的模型,序号11-序号 15 是有监督领域的联合学习类别的模型.

    在这里插入图片描述

    未来研究方向和总结

    (1) 重叠实体关系识别
    (2) 跨句子级别关系抽取
    (3) 关系类型 OOV 问题
    (4) 解决远程监督的错误标签问题
    (5) 远程监督领域错误传播问题

    展开全文
  • 关系抽取(Relation Extraction,简称RE)的概念是1988年在MUC大会上提出,是信息抽取的基本任务之一,目的是为了识别出文本实体中的目标关系,是构建知识图谱的重要技术环节。 知识图谱是语义关联的实体,它将人们...
    • 本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!
    • 个人主页:有梦想的程序星空
    • 个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等领域,有较丰富的软件系统、人工智能算法服务的研究和开发经验。
    • 如果文章对你有帮助,欢迎关注点赞收藏订阅。

    关系抽取的背景和定义

            关系抽取(Relation Extraction,简称RE)的概念是1988年在MUC大会上提出,是信息抽取的基本任务之一,目的是为了识别出文本实体中的目标关系,是构建知识图谱的重要技术环节。

            知识图谱是语义关联的实体,它将人们对物理世界的认知转化为计算机能够以结构化的方式理解的语义信息。关系抽取通过识别实体之间的关系来提取实体之间的语义关系。在现实世界中,关系的提取要比实体提取复杂得多,自然句子的形式也多种多样,所以关系的提取比实体提取困难得多。

    图1 关系抽取的示例        

            关系抽取是从纯文本中提取未知关系事实并将其加入到知识图谱中,是自动构建大规模知识图谱的关键。传统方法高度依赖于特征工程,深度学习正在改变知识图谱和文本的表示学习。

    关系抽取的详细分类 

            关系抽取就是从非结构化文本中提取实体之间的关系。依据实体是否在文本中被标记,关系抽取方法可分为联合抽取流水线式抽取

            联合抽取是指从文本中完成实体识别和关系分类任务,流水线式抽取是指先使用实体识别模型识别文本中的实体对,然后判断实体对的关系。一个完整的流水线式关系抽取系统包括:命名实体识别、实体链接和关系分类

            关系抽取模型大致可分为三类:基于pattern的方法、统计机器学习和神经网络。其中神经网络方法效果更好。依据抽取语料形式,关系抽取模型又可分为句子级关系抽取和段落级关系抽取。句子级关系抽取指两个实体在一个句子中,段落级关系抽取指两个实体不在同一个句子中。句子级关系抽取在实际业务中更常见。

      神经网络可以从大规模数据中自动学习特征,此类方法的研究多集中在设计模型结构捕获文本语义。当前最好的关系抽取模型都是有监督模型,需要大量标注数据并且只能抽取预定义的关系。这种方法不能面对复杂的现实场景,例如少样本。目前已有不少工作探索在现实场景下的关系抽取任务。

    关系抽取的主要任务

    关系抽取主要分为两个任务:

    (1)关系分类

    基于预先给定的关系,对实体对进行分类匹配。

    2)开放关系抽取

    直接从文本中抽取结构化文本关系,对文本关系映射到知识库的规范关系。

    关系抽取经典算法和模型详解

    (1)基于规则的关系提取

    • 基于触发词模式的提取

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

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

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

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

    • 基于依存关系(语法树)

            以动词为起点构建规则,对节点上的词性和边上的依存关系进行限定。

            基于规则的关系抽取算法的优点:人类可以创造出具有高准确率的模式,可以为特定的领域定制。缺点:人类模式的召回率仍然很低(语言种类太多),需要大量的人工工作来创建所有可能的规则,必须为每个关系类型创建规则。

    (2)有监督关系抽取:

            有监督神经网络方法是指采用深度学习方法在大规模有监督数据集上训练模型,此类方法是目前效果最好且研究最深入的。

            进行有监督关系提取的一种常见方法是训练一个层叠的二分类器(或常规的二分类器)来确定两个实体之间是否存在特定的关系。这些分类器将文本的相关特征作为输入,从而要求文本首先由其他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)使用分类器检测新文本数据中的关系。

            有监督关系抽取任务并没有实体识别这一子任务,因为数据集中已经标出了subject实体和object实体分别是什么,所以全监督的关系抽取任务更像是做分类任务。模型的主体结构都是特征提取器+关系分类器。特征提取器比如CNN,LSTM,GNN,Transformer和BERT等。

    图2 基于LSTM的有监督关系抽取方法 

            有监督关系抽取的优点:高质量的监督信号(确保所提取的关系是相关的),有明确的负样本。缺点:标注样本很贵,增加新的关系又贵又难(需要训练一个新的分类器),对于新的领域不能很好的泛化,只对一小部分相关类型可用。

    (3)远程监督模型:       

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

    链接:https://aclanthology.org/D15-1203.pdf

    图3 PCNN模型架构

             这篇论文工作是将Fully Supervised 转化为Distant Supervised。Distant supervised 会产生有大量噪音或者被错误标注的数据,直接使用supervised的方法进行关系分类,效果很差。原始方法大都是基于词法、句法特征来处理, 无法自动提取特征。而且句法树等特征句子长度变长的话,正确率很显著下降。因此文中使用Multi Instance Learning的at least one假设来解决第一个问题;在Zeng 2014 的CNN基础上修改了Pooling的方式,解决第二个问题。

             训练强大的关系抽取模型需要更多的高质量数据,但是构建这样的数据集需要大量人工标注,耗时费力。Mike Mintz[22]首次使用远程监督方法生成标注数据,远程监督的假设是:如果两个实体有关系,那么任何包含这两个实体的句子都可以表达这种关系。例如,Ra{e1, e2}表示实体e1和e2具有关系Ra,若存在一个句子同时包含e1和e2,则认为该句子表达了关系Ra,将该句子标注为关系Ra的一个正样本。使用这种方法只需一个知识库和一个文本库便可自动得到标注数据。

            远程监督似乎是一种解决监督数据不足的完美解决方案,但实际上远程监督数据存在如下问题:1)并非所有同时包含e1和e2的句子都可以表达关系Ra,因此数据集中存在大量标注错误问题;2)无法解决一对实体含有多关系的情况;3)False negative问题,标记为负样本的实例实际存在关系,但这种知识在知识图谱中不存在,导致标记错误。第二个问题是远程监督无法解决的问题,因为在知识图谱中两个节点间只能存在一条边,所以无法建模一对实体存在多个关系的情况。第三个问题可以通过更好的生成负样本方式缓解,例如选择包含两个明显不存在关系的实体对的句子作为负样本。第一个问题是最严重的,目前大量的研究多集中于此。

            缓解远程监督数据噪声有三种方法:1)多实例学习,从多个实例中选择最有效的实例作为训练样本;2)使用外部信息选择有效实例;3)使用复杂的模型和训练方法,例如soft label、增强学习、对抗学习。

    (4)联合关系抽取

            参数共享的联合模型抽取spo三元组的过程是分成多步完成的(不同步),整个模型的loss是各个过程的loss之和,在求梯度和反向更新参数时会同时更新整个模型各过程的参数,后面过程的训练可以使用前面过程的结果作为特征 (注:管道模型各子过程之间没有联系)。目前多数SOTA方法都使用这种方式。

            联合解码的联合模型则更符合“联合”的思想,没有明确的将抽取过程分为实体识别和关系分类两个子过程,spo三元组是在同一个步骤中进行识别得到的,真正实现了子任务间的信息共享(缺陷:不能识别重叠的实体关系)。

     图4 联合关系抽取模型的种类

    • 使用参数共享的经典模型

    论文:《End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures

    链接:https://aclanthology.org/P16-1105.pdf

          模型中有两个BiLSTM,一个基于word sequence,主要用于实体检测;另一个基于tree structures,主要用于关系抽取;后者堆叠在前者上,前者的输出和隐层作为后者输入的一部分。

            该论文提出了一个新的端到端模型来提取实体之间的关系。模型使用双向序列RNNs(从左到右和从右到左)和双向树结构(自下而上和自上而下)LSTM-RNNs,对实体和关系进行联合建模。首先检测实体,然后使用一个递增解码的nn结构提取被检测实体之间的关系,并且使用实体和关系标签共同更新nn参数。与传统的端到端提取模型不同,模型在训练过程中还包含两个增强功能:实体预训练(预培训实体模型)和计划抽样,在一定概率内用gold标签替换(不可靠)预测标签。这些增强功能缓解了早期实体检测低性能问题。

            该模型主要由三个表示层组成:字嵌入层(嵌入层)、基于字序列的LSTM-RNN层(序列层)和基于依赖子树的LSTM-RNN层(依赖层)。解码期间,在序列层上建立基于贪心思想的从左到右的实体检测,在依赖层上,利用dependency embedding和TreeLSTM中的实体对最小路径,来辅助关系分类,依赖层堆叠在序列层上,这样共享参数由实体标签和关系标签的决定。

    (2)使用联合解码的经典模型

    论文:《Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme

    链接:https://aclanthology.org/P17-1113.pdf

            将实体识别和关系分类转化为序列标注问题,采用一种端到端模型, 通过编码器对句子进行编码,将隐层向量输入解码器后直接得到spo三元组,没有将抽取过程分为实体识别和关系分类两个子过程。

            此文将实体关系联合抽取转换成一种新的标注模式,无需像以往研究一样,将实体和关系分步处理,直接对三元组建模。新的标签模式还可兼顾关系的方向性。针对新的标签模式,设计了一种新的loss bias函数。这为我们提供了一种新的思路,即复杂的模型往往不一定会有更好的效果,尤其对于工业及应用,代价更是无法预测。但是任务转换上的巧思,能让模型轻量的同时,得到好的效果。

    (3)预训练模型+关系分类

            输入层BERT:分别用特殊符号$和#号标识两个实体的边界和位置;

            利用了BERT特征抽取后2个部分的特征:BERT [CLS]位置的embedding和两个实体相对应的embedding;

            将上述3类特征拼接起来,再接一个FC和softmax层输出关系的分类。

    (4)预训练模型+联合抽取

            使用一个模型得到输入文本中的实体以及实体之间的关系,包括实体抽取模块、关系分类模块和共享的特征抽取模块。

            关系分类模块包括:BERT对输入序列编码得到特征序列;NER模块的输出,经过argmax函数得到一个与输入序列长度相同,转化为固定维度的序列;拼接得到的向量分别通过一个FFN层,通过一个Biaffine分类器,预测出实体之间的关系。

     关注微信公众号【有梦想的程序星空】,了解软件系统和人工智能算法领域的前沿知识,让我们一起学习、一起进步吧!

    展开全文
  • 实体关系抽取任务介绍 关系定义为两个或多个实体的某种联系 实体关系抽取是自动识别出实体间是否存在某种关系 复杂语境 实体关系联合抽取 ·序列标注 ·表填充 ·序列到序列 联合抽取:序列标注(NovelTagging) ·...

    在这里插入图片描述
    公众号 系统之神与我同在

    本文包括四个部分:

    1、任务简介

    2、实体关系联合抽取

    3、文档级关系抽取

    4、总结与展望

    实体关系抽取任务介绍

    关系定义为两个或多个实体的某种联系

    实体关系抽取是自动识别出实体间是否存在某种关系在这里插入图片描述
    复杂语境
    在这里插入图片描述实体关系联合抽取

    ·序列标注
    ·表填充
    ·序列到序列

    联合抽取:序列标注(NovelTagging)

    ·对每个关系,将其与(Begin,Inside,End,Single)以及头实体和尾实体的序号(1,2)组合
    ·额外考虑一个Other标签,表示不属于任何一个关系
    ·如果总共有| |个关系,那么一共有2∗4∗| |+1个标签
    在这里插入图片描述
    在这里插入图片描述
    实验结果

    数据

    ·使用弱监督的NYT数据集,看做监督数据。
    ·训练集包括353k个三元组
    ·测试集包括3880个三元组
    ·一共24种关系

    实验结果
    在这里插入图片描述
    联合抽取:NovelTagging缺陷
    在这里插入图片描述
    联合抽取:序列标注(HTB)
    在这里插入图片描述
    联合抽取:表填充
    在这里插入图片描述
    联合抽取:表填充(多头选择)
    在这里插入图片描述
    联合抽取:序列到序列(CopyRE)
    在这里插入图片描述
    联合抽取:序列到序列(CopyMTL)
    在这里插入图片描述
    联合抽取:序列到序列(Seq2UMTree)
    在这里插入图片描述
    在这里插入图片描述

    文档级关系抽取

    如何有效的学习实体的多粒度表示?

    ·实体在多个句子提及
    ·实体指代

    如何建模文档内的复杂语义信息?

    ·逻辑推理、指代推理和常识推理
    在这里插入图片描述

    文档级关系抽取:GCNN

    使用图神经网络建模文档 (Word本身作为节点)

    ·Syntactic dependency edge:句法依赖,也就是使用每一个sentence中的word之间的句法关系建立edge;
    ·Coreference edge:指代,对于表示同一个含义的phrase,进行连接;
    ·Adjacent sentence edge:将sentence的根结点鱼上下文sentence的根结点进行连接;
    ·Adjacent word edge:对于同一个sentence,我们去连接当前word的前后节点;
    ·self node edge:word与本身进行连接;

    在构建好doucment graph的基础上,使 用 GCNN 来计算得到每一个 node representation

    多示例学习关系分类

    ·聚合target entity所有的mention
    在这里插入图片描述
    文档级关系抽取:GCNN实验结果
    在这里插入图片描述
    文档级关系抽取:EOG

    Motivation

    ·现有的方法使用基于图的模型,以实体作为节点,根据两个目标节点来确定实体间的关系。然而,实体关系 可以通过节点间路径形成的唯一的边表示来更好地表达。
    ·EoG在不同种类节点之间,建立不同类型的边来决定信息流入节点的多少,可以更好的拟合文档之间异构的 交互关系。

    在这里插入图片描述
    在这里插入图片描述
    EOG实验结果
    在这里插入图片描述
    文档级关系抽取:LSR

    Motivation

    以往的工作大都通过启发式的方法建立 文档图。
    该文提出的模型将图结构视为一个潜在 变量,并以端到端的方式对其进行归纳推理。
    在这里插入图片描述
    LSR实验结果
    在这里插入图片描述
    Double Graph
    在这里插入图片描述

    Double Graph实验结果
    在这里插入图片描述
    总结与展望

    联合抽取

    序列到序列方法 =》 序列到集合

    文档级别抽取

    ·Mention、实体、句子级别的信息传递=》实体对级别信息
    ·GNN过平滑、异构图

    展开全文
  • 实体关系抽取任务方法及SOTA模型总结

    万次阅读 多人点赞 2020-05-31 21:02:08
    1 实体关系抽取方法思路 实体关系抽取是从文本中的句子里抽取出一对实体并给出实体间关系的任务。该任务的输入是一句话,输出是一个spo三元组(subject-predicate-object)。 对于实体关系抽取任务,最容易想到的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,060
精华内容 14,424
关键字:

实体关系抽取

友情链接: love.zip