小规模数据量下的关系抽取和实体抽取

写在前面

  • 最近老师派给了我一个任务,让我在短时间内迅速建立起一个电力领域知识图谱,结点与结点之间的关系只有“包含”。
  • 我例行使用平台的一系列算法,即使我把词库换成了我们自己手工标的词库,但是抽到的结果仍然是真的不好~ 不好 ~不好(算法流程因为有一定的隐私性不能透露,大概来讲就是抽取只专注词义而不看语义)。且抽完之后用模板抽关系真的是…………原因其实是平台算法不太适合电力领域,而更适合于人力资源领域。所以我就自己搞了一套流程,效果可以说还不错。

原因分析

  • 先分析领域词抽取不好的原因:相对于人力资源领域,电力领域的领域词更加多种多样,且情况也多种多样(比如有些句子里甚至“榔头”都算是一个领域词,比如有句子……由榔头、电磁板、电机组成),但是有的句子里“榔头”就不是一个领域词了人力资源领域的词大多都偏向概念,形式较为固定,而电力领域词有好一部分都偏向于现实里的物体。这就决定光凭词义是没办法很好的领域词抽取的。
  • 关系抽取不好的原因:像电力领域,比如有句子:“摆脱电流值与人体生理特征、与带电体接触方式以及电极形状等有关。”,现在领域词库里有“电流”、“电流值”、“摆脱电流值”,用模板匹配的时候就会把这些都给算成实体,抽关系的时候就会出来三个元组。可能有人会说用最长匹配不就行了?但实际上没那么简单,比如:“摆脱电流值……电流包含物理电流、化学电流……”正常抽出来的是(电流,包含,物理电流)(电流,包含,化学电流),模板抽出来却变成了(摆脱电流值,包含,物理电流)和(摆脱电流值,包含,化学电流)了。

自己设计方案中遇到的问题

基于这些原因,我思考认为还是要用crf来从句子里抽领域词,可是我们没有现成的标注数据,所以我想的是先标一小部分句子,去预测另一些句子,然后再人工简单对这些句子抽出来的领域词做修正。
但是这就会有两个问题:
数据量太小:时间紧张,当时还有两科考试,我不可能手动标特别多实体。但是只简单的标一点实体去预测,得到的效果一定是稀烂的。
②关系抽取的问题:用平台的算法就会出现上面说的那个问题。
例如“定磁转子是发电机的磁场部分,由励磁线圈、磁极和集电环组成。”,领域词库里有转子和定磁转子,那么就会同时抽出来(转子,包含……)和(定磁转子,包含,……)。

解决这两个问题,就需要:
想一个能在小数据量下获得很好ner效果的方法
要对每一个句子进行针对性的关系抽取(即关系抽取要针对到每一个句子),而不能仅仅停留在用领域词库中的所有词对句子进行“大锅炖”式的匹配,比如“定磁转子是发电机的磁场部分,由励磁线圈、磁极和集电环组成。”,匹配主要实体的时候不能用“转子”和“定磁转子”同时来匹配,而应只用“定磁转子”来匹配

我的解决办法:
引入位置信息(后来打比赛也懂了,这个可以称作模式匹配):我把所有带有 “A由……组成” “A由……构成”的句子都拿出来了。例如“最简单的电压型变频器由可控整流器和电压型逆变器组成,用不可控整流器调压,逆变器调频,如图3-3所示。,”我标注的时候只标
“最简单的电压型变频器由可控整流器和电压型逆变器组成“这句话里的“最简单的电压型变频器由可控整流器和电压型逆变器组成”中的“电压型变频器”、‘可控整流器’、‘电压型逆变器’,而像‘不可控整流器’和‘逆变器’我都不标注出来。即只标 由……组成 中间的领域词以及 它所对应的主语。这样无形之中就引入了位置信息。
并且对测试集进行预测
由①就可以得到 由……组成之间的实体(假设有a、b、c、d),以及它所对应的主语(A)
那么就可以直接组成三元组(A,包含,a),(A,包含,b)……

引入位置信息之后,我仅仅花了十几分钟的时间标注了100条句子,然后用5分钟的时间训练bert(10轮),对4000多条句子做预测,得到的结果竟然70%都是正确的。然后我又从预测结果里挑出来了几条模型预测不好的句子,重新人工标注,最终使训练集达到了200条,去预测4000多条句子,正确率竟然能达到90%。

总结:

  • 在没有标注数据的情况下,多找找实体词的分布规律(比如 由……组成之间的词大都是实体词),把这些标注之后,模型能在利用这些词的“词义”的同时,也能利用这些词位置分布的信息。这样即使只有小的标注数据量,模型依然能出色完成任务。
  • 使用词义而不使用句子的语义(即做词分类(判断词是不是是领域词)而不做ner),在大多数情况下是行不通的。最好还是用crf来结合句子信息做ner。
  • “又从预测结果里挑出来了几条模型预测不好的句子”:这个是很重要的一个点,数据没有加密,所以我们很容易知道预测结果哪里好哪里不好。尤其是我这种预测方法,很容易就能观察到预测结果哪里出现了问题,这时候把这些出现的问题改正,放回到原数据集里,给予模型正确的导向就可以了
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值