实体间的联系存在着( )_少样本学习架构解决:实体关系抽取的重难点

实体关系抽取的背景

知识图谱作为“世界知识”的载体,支撑了很多行业中的具体应用。信息检索、推荐、自然语言理解等等场景下,个人认为目前很多应用的性能需要利用外部知识才能更上一层楼。所以知识图谱的构建和使用对于AI的发展是相当重要的!而为了更及时地扩展知识图谱自动从海量数据中获取新的世界知识已成为必由之路。“文本”作为最常见的知识载体,成为了自动提取知识的首选来源。那如何自动从文本中提取常见的’三元组‘知识呢?那就是实体识别和关系抽取,它的目标是从非结构化的文本中发现(实体1、关系、实体2)的三元组,它对知识库的构建和问答任务都很重要,是信息抽取的核心问题。近年来,以实体关系抽取为代表的知识获取技术已经取得了一些成果,特别是深度学习模型极大地推动了自动关系抽取的发展。该技术将实体关系的抽取看作是多分类问题,利用深度学习,输入文本,输出文本中实体对的关系。

技术演进思路小结
及时获取世界知识来扩展知识图谱 -> 自动从文本提取三元组知识 -> 让模型学会如何自动提取 -> 监督学习训练模型实现对文本中实体关系进行归类 -> 利用深度学习模型有限的泛化能力,将相似句子相似实体,归类为已知的某种关系(类似多示例问题?)

现存的5个问题

  1. 监督学习模型性能强大,但标注样本缺乏
  2. 由于标注训练样本只局限于某领域,所以模型适用范围小
  3. 实体间关系和实体对的出现是长尾分布,存在大量样例较少的关系和实体对。而端到端模型存在【举十反一】的问题。
  4. 由于任务被转化为了关系分类问题,所以无法从文本中有效抽取新型关系。如何利用深度学习模型自动发现实体间的新型关系?
  5. 现有模型只能从单个句子中抽取实体关系,而且要求句子必须同时包含两个实体。但大量实体间关系往往表现在一篇文档的多个句子中,甚至在多个文档中。如何在复杂语境下进行关系抽取

那如何解决这么多问题呢,可以看出5大问题前3个都可归根于 数据缺乏。

这就是简直就是小样本学习算法的完美应用场景,先给出上一篇文章中 我设计的小样本学习架构,下文我会基于此架构设计一个适用于实体关系抽取的小样本学习算法方案。

fa1b730ba6a69691c6d4a03ef51db766.png

架构中包含三个部分:抽象、归纳、强特征到目标的映射

算法总览

  1. 抽象:提出一种经验假设,得到名为“细分关系”的强特征。(人工特征工程)
  2. 归纳: 采用能高效提取文本信息的模型,学习原始文本到强特征的映射关系。(深度学习自动特征提取)
  3. 到目标关系分类的映射:由于强特征和目标关系之间的强相关性,此过程可以使用少样本就能得到映射。(实现小样本学习)

再重新强调一下我们的目标,是要实现从文本数据中自动提取实体的关系信息。

为了解决样本数量问题,很自然想到利用无标签文本。但是现实中文本数据千千万,不是所有文本都包含知识,很多文本里我们并不能提取到有效的实体关系,那么哪些文本存在“知识”可以供算法高效学习的呢?于是我提出了如下经验假设

两个实体间的所有底层【细分关系】放在一起,就能够表示这两个实体间的【完整关系】

就好比一个人所有历史行为,就构成了代表那个人特有的属性信息两个人之间进行过的所有交互,就能体现两者之间的关系。例如:某某老师在成电授课。‘授课’这种行为代表了老师和成电之间的关系。再比如,父母养育了孩子。 ‘养育’这种行为就是‘父子、父女、母子、母女’关系的直接代表。如此可见‘行为’与‘关系’具有强烈的相关性,在后文我将‘行为’称作‘细分关系’。这些‘细分关系’就是我们要找的强特征。只需要得到文本到细分关系的映射模型,再得到细分关系和目标关系的映射模型,两个模型相连我们就得到了文本抽取关系的模型。

如何构造细分关系特征?

行为关系的抽取很简单,可以利用NER和依存句法分析,加上经验规则,就可提取出实体和它们对应的‘细分关系’。而经验规则很简单,比如通过算法识别出了‘主谓宾’,那对应的三元组(实体1,关系,实体2) 就是(主语,谓语,宾语)。将每种谓语作为细分关系特征的一个维度,很多种细分关系就组成了实体间‘完整关系’的高维向量表示。

如何得到‘文本’到‘细分关系’的模型?

当然是大量样本进行监督学习训练。样本就是各种能够提取出主谓宾的文本,标签就是通过依存句法分析得到的谓语。如果嫌谓语太多,可以通过最小编辑距离或同义词等方法聚类,或者TFIDF进行关键词筛选。使用多少种细分关系由我们随便定,但是种类越多,就代表着我们的模型对不同领域的普适能力就越强。 有了样本之后,就是训练了,这很明显是一个分类问题,用常见的文本分类模型即可。 只是由于分的类别太多,可能有工程效率的问题。可以参照Word2vec给我们的启示,使用hierarchical softmax来提升训练效率。

如何得到‘细分关系’特征到‘目标关系’的模型?

这是工作量最小的一步,也就是少样本学习架构展现实际效果的一步。如上面举的例子,既然能够知道文本中实体的细分关系,而细分关系和目标关系又有很强的关联。在不追求强泛化性和精确度的情况下,只需要少量样本就能够得到细分关系到目标关系的应用模型了。比如我们有一些标注了的代表父子关系的文本,通过我们的模型得到了多个输出向量,在某些细分关系,比如‘抚养’‘陪伴’‘教育’上的概率很高,那么,就可以直接将这些细分关系映射到“父子”关系上。当以后遇到类似的文本,我们就能够分辨出它是否可能具有父子关系。

08e304bb494a17e3603a0fb7ec75f737.png

看看此模型是如何解决现存问题的

一、对于数据缺乏的问题

目的是从大量文本信息中去获取知识,手段是用深度学习模型学习如何提取知识。深度学习模型的训练是一个在过拟合和泛化中进行权衡的过程,当训练数据只属于某个领域时,必然是对该领域的实体关系抽取规则进行拟合。不同领域需要抽取的关系有所不同,实体也不同,这就导致了如果没有使用各种领域的数据进行训练,模型对其它领域关系抽取就没有泛化能力(开放域识别问题)。

为解决数据缺乏问题,我使用了迁移学习的思想,涉及两个技术:自动标注+预训练。

通过把目标关系抽取的一部分工作转移到预训练处,从而减少对标注数据的需求。不同于常见的预训练模型(bert等),此处的预训练任务是专为关系抽取设计,所以能够进一步减小对样本量的需求。

由于任务中的目标关系和文本的“距离”太远,我们无法直接用这些目标关系标签来对数据进行标注。因为如果能这样标,这不就代表了你已经能够识别关系了吗?于是出现了像远程监督这种如此自相矛盾的做法哈哈。我们退而求其次,既然不能一口吃个大胖子,那么只需要稍微从‘文本’向‘关系’迈一小步就好。文本中最能体现实体关系的地方就是“主谓宾”,谓语就是主语和宾语的“关系”。看起来这种关系视乎又不像是关系,它实际是动作。动作能代表关系吗?如上文做出的假设,参照现实世界中知识产生的过程:“一个实体的所有行为合一起,就能代表那个实体本身的特性。两个实体之间进行的所有交互,能够体现实体间的完整关系。实体间进行的交互越多,我们对他们关系的了解也就越详细全面。从所有的交互中,可以进一步归纳出他们间的更为笼统的关系。”所以,主语和宾语间的动作,确实可以反映出实体的关系。那么我们就有了一个自动标注的方法:采用依存句法分析抽取主谓宾,构建样本(句子,主语,宾语),标签为谓语动词。至此,我们能够从很多领域的文本中去造样本了。我将“主谓宾”中的谓语命名为“细分关系”标签。通过这些自动标注样本数据,能够训练一个细分关系分类模型。(注意:对于不同领域的数据,很可能不是谓语来体现关系,可以根据数据的实际情况进行调整。 在chatbot和用户的对话中,关键往往是谓语,所以此处使用的是谓语作为细分关系。)

虽然“细分关系”蕴含了实体关系信息,但是它并不是实体的完整关系,肯定不能够直接用它来进行关系分类。我想了两种办法,一种是参考Embedding和bert的思想,将细分关系分类模型当做是预训练模型。模型的倒数第二层就是关系的Embedding向量。而在训练的过程中,具有相似语义相同细分关系的向量更加接近,相当于完成了浅层次的关系分类特征提取,利用迁移学习的思想,后面再加上一个模型,进行fine-tune,整个模型就能够工作了。预训练模型只是为了实现迁移学习减少对标注数据的需求而已。(这种做法需要的数据量并不能减少多少,因为要进行finetune,此方法被pass)

另一种办法,也是我选择使用的办法。既然一个细分关系无法表示完整关系,而实体间的所有细分关系能反映完整关系,那么我将实体间所有可能的细分关系组合为一个向量特征(属于特征集成的做法)。不同的细分关系分布不就是对实体间完整关系的向量表示吗!细分关系模型的输出向量,就是样本(句子,实体1,实体2)中实体对完整关系的向量表示。有了文本中实体对的完整关系向量后,使用已有的有标数据集,训练分类模型,实现”完整关系向量“到目标关系的归纳映射。由于只需要MLP即可完成归纳映射,对样本数量的需求得以降低。而且完整关系的向量表示的每个维度都有具有物理含义——“细分关系”,所以在模型使用时,可以不需要fine-tune,直接使用目标关系来对细分关系进行聚类。而且很多细分关系只对应一种目标关系,所以可以直接通过句子中的主谓宾,判断细分关系,就可得到目标关系。由此可见,此模型对于标注样本的需求大大减少了。(这也是和bert等预训练模型最大的区别之处)

ea8b2433ef27ffea6949b21bd95f9af4.png

二、少样本/单样本学习问题

现在的关系抽取模型都使用给定数据集来训练,这限制了他们跨领域提取知识的能力。就算是使用bert这种预训练架构的关系抽取模型减少了样本需求量,也需要学习‘语义向量表达’到‘目标分类‘的映射,两者关联性不强,所以训练过程还是需要很多标注样本。

而通过细分关系分类模型,得到文本的“完整关系”特征,这是一个强特征。由“关系形成的规律假设”,我们知道此特征具备信息完备性(即能够用来区分所有样本),而且和目标关系分类任务有强关联性。我们可以使用最简单的模型来得到该特征和目标类别的映射,甚至由于细分关系可以直接映射到目标关系,我们可以进行单样本学习,得到某些细分关系和目标关系A的映射规则,当下一个属于关系A的样本输入时,判断出它具有A所对应的细分关系,即判断出该样本的目标关系为A。模型具有举一反三的能力!

三、实体识别问题

我一直都觉得这个问题在算法上面是一个问题,但在应用层面却不是一个问题。为什么这么说?因为我们在获取知识来构建知识图谱的时候往往是有所侧重的,我们会在具体的应用中特别关注某些实体。所以我们可以人为去设计,或者构建当前场景下的我们需要正确提取的实体识别样本,进行有针对性的NER模型训练,而不用去追求一个普适性强且精度很高的模型。我们可以结合多种技术,分词、复合名词合并、NER等全方位认识各种实体。不同邻域的知识形式会有区别,所以需要在实体抽取时进行调整。可以使用不同规则或模型,实现不同邻域的实体提取机制。这种方法灵活多样,完全可以根据业务需求进行调整。如果嫌分词工具等精度不够。可以直接用领域内的实体标注数据集训练一个实体识别模型。

三、自动发现新型关系的问题

文本中往往存在多个实体,而并不是所有实体之间都是有关系的,这阻碍了自动发现新型关系的实现。训练好的模型只能进行有限个关系的分类,所有不在这些类别中的都被归为“其它”。‘其它’里包含了“新关系”和“没有关系”。只有将这两者区分开,我们才能自动发现新关系。

根据上文中我们对于实体间关系形成过程的分析,关系是由实体间发生的交互动作形成的。既然如此,如果一个句子的“主语”和"宾语"被判断为“其它”关系。同时,因为他们之间发生了交互,必然产生了关系。存在某种关系,而又识别不出来,这就是“新关系”!

具体怎么应用发现的新关系,就看之后有什么任务了,比如知识图谱扩展呀,实体的异常行为检测呀等等。

四、复杂语境下关系抽取的问题

对细分关系进行一定的抽象和概扩,得到与宽泛的目标关系的映射,以此来构建知识图谱。采用已经构建好的这种具有复杂关系的知识图谱作为推理工具。先找出复杂语境文本中的各个实体,然后对应到知识图谱上的子图。由于建立的知识图谱利用了大量文本,每个实体间可能存在多种关系,实体间连接紧密,必然有一些关系已经足以代表这个复杂文本的语义(基于假设:通过对短文本的学习学到的知识和事实,会涵盖长文本中的知识)。

或者可以基于知识图谱进行机器推理,图结构上的推理能够联系到短文本中较远的两个实体,这样也能实现对复杂长文本的关系抽取。


以上便是对佳雨提出的少样本学习架构的一个应用。篇幅过长,很多细节就没有讲了。以后有机会再说吧。

现在我们回过头想想这个细分关系分类模型,它其实是输入文本及其实体,输出最相关的动作概率。是不是和语言模型很像?语言模型是通过统计来预测接下来最可能匹配的一个词。那细分关系分类模型是不是也能根据输入的文本来预测用户最可能的行为呢?只不过相比语言模型,这种动作预测只考虑了一个文本,即是具有马尔科夫性的。其实预测都可以用分类模型做,具体要实现什么,怎么实现,需要关注使用的数据,目标函数的设计等等。

74d1f8b1be36976cb8b45fcd080ed95e.png

3dfd318f976aa764d07018870ce44b07.png

此外,由于输入相似的句子相似的实体会输出类似的动作,由于可能会有多个动作具有较大概率,模型相当于具有一种推荐系统中“协同过滤”的功能。我觉得这是实体关系抽取模型能识别新知识的一个重要原因,而根源在于深度学习模型的泛化能力。泛化能力和拟合之间的关系如何平衡?个人认为是实体关系抽取应用中需要关注的问题。 在我的模型中,由于是分了两层,对不同文本的泛化能力是由预训练模型实现的,而上层是小样本学习,偏向过拟合,这相当于将模型的泛化和拟合任务分到了两个解耦的模型中,这样能够更好的控制模型泛化和拟合的程度,算是一种对模型泛化能力和精确度进行合理调控的一种方法吧。 这涉及到了神经网络表达能力、归纳推广能力的分析,目前的可参考理论很少,大家都还不是很清楚为什么神经网络具有比较强的归纳能力。这里我只能从应用的角度来说说自己对于泛化的认识。之后会专门写一篇文章谈一谈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值