本文摘要:

知识库作为许多下游NLP任务的资源基础,存在的一个普遍缺陷是它的不完整性。目前最好的知识库补全框架则缺乏足够的准确性,无法在脱离人工监督的情况下完全自动化的完成知识补全。因此,作为弥补方案,本文提出了IntKB,一种基于问答pipeline的交互式图谱补全框架。该框架的设计面向“人在回路”范式的特性需求:i. 该系统生成的事实与文本片段一致,可由人类直接验证。ii. 该系统设计为可在知识库补全过程中不断学习,因此能够使zero-或者few-shot的初始状态随着时间推移而显著提升性能。iii. 当且仅当存在足够信息进行正确预测的情况下,才会出发与人的交互。因此,作者采用负例和无答案的fold-option来训练系统。该框架在实验中取得较好的性能:对于初始状态下的未见关系,它实现了29.7%的Hits@1,并且在此基础上,这个结果逐渐提高到46.2%。

方法:

作者使用QA来完整整个框架的大部分内容,主要分为四个模块,分别是句子选择,关系抽取,答案重排序以及答案触发。输入是缺失尾实体的三元组。在每个阶段,作者都会根据补全后的知识库,重新构造训练数据和负样本对QA相关模块进行fine-tuning,并进行迭代多次。

IntKB:一种可以被证实的框架用于交互式知识库补全

  1. 任务定义

    主要任务是知识库全部,具体来讲,聚焦于尾实体的预测。

  2. 用户知识库补全的QA阶段性方法

    1. 句子选择:句子筛选模块的输入是一个不完整的三元组形如[h, r, _](同指查询),针对这个输入,返回一个经过排序的候选句子集(即可能涵盖尾实体(答案)的文本)。在这里,用于检索的文档被约束为与头实体h相关的文档子集,接着作者为每个句子建立基于tf-idf的向量表示(这里只考虑上述文档子集的idf而不是整个文档)。对于查询向量,论文使用关系类型的semantic names,并将每个关系类型转换为对应的tf-idf向量,而后计算每个句子和查询之间的相似性得分。该结果用于步骤2中的关系抽取。
    2. 关系抽取:关系抽取模型的输入是上一步中排序Top-n的句子,以及原始查询[h, r, _],每条句子都被转换成一条查询,而后输入BERT-QA模型,用于返回作为候选答案的文本区间。之后,作者将关系抽取视作阅读理解的一个特例(即“问”未知的尾实体),不同于过去需要构建问题模板的方式,这里通过关系类型的semantic names构建多个噪声关键词查询。因此,本文的知识库补全工作是在数据缺少的情况下进行的,且只使用知识库中的信息无需额外的人工监督。
    3. 答案重排序:从BERT-QA获取到若干候选答案之后,最后一步就是对它们进行重排序。排序前,作者首先汇总所有具有匹配文本的候选答案,例如预测中多次出现了某个关键词,则合并这些候选答案为一个。而后使用前两步得到的候选答案的特征信息做排序(使用Kratzwald et al., 2019提出的方法),最终,得到对于[h, r, _]的预测候选。
  3. 答案触发

    为了减轻人的工作量,因为在开放文本的知识库补全中,很难保证每个答案都存在语料集中。作者提出一种folder机制,首先对语料集中所有的真实答案都删除掉,然后在关系抽取模块设置答案为SEP。在预测阶段,如果[SEP]超出一个阈值,那么就调用folder机制丢掉,否则就交给人类处理。

  4. 实体链接

    作为完整的实现知识库补全,返回的答案必须与知识库中已有的实体匹配上,作者在这里测试了三种实体链接的策略。

面向知识库的渐进式学习(continuous learning,也被翻译成持续学习)

  1. 冷启动:从文本中进行知识补全

    1. 事实对齐:将知识库中事实与语料集中句子进行对齐用于后续的知识迁移。对于每一个三元组,检索语料集中包含头实体以及其同义词的文档并进行分句。筛选出其中包含尾实体或者其同义词的句子,对其中相同三元组进行整合并保留所有包含不同尾实体的句子。更多的,可以用关系或者其同义词进行一次强筛选,正式的来说,就是将所有的句子和关系以及其同义词进行分词,接着去除停用词,然后统计每个句子的重叠token数目,去掉哪些没有重叠的句子,对于每个事实来说,保留重叠数最高的句子。
    2. 负训练样本:我们使用如下方法产生负训练样本:对于每个三元组事实,检索所有的包含头实体的文档,然后去掉这些这些文档中的尾实体或者其同义词,接着使用前面的句子选择模型对保留句子进行重排序,最后匹配最高得分的句子和三元组,然后标记为无答案。
    3. 知识迁移:我们使用上述两个部分产生的事实-句子对送入我们的QA阶段性方法中。对于关系抽取模块,我们使用其预测的数据对Bert模型进行fine-tuning,我们构建如下输入格式数据:随意选的一个关系名称 + Question mark + 分隔符 + 句子本身,答案使用第一次出现的尾实体或者其同义词,对于负事实,就是都使用[SEP]进行标记。再对关系抽取模块进行fine-tuning后,我们可以将它与句子选择模块进行结合使用来对KB中已知的三元组事实进行预测,这个预测结果可以用于fine-tuning后续的第三个重排序模块。做法是:对知识库中的三元组,把他的尾实体进行mask,然后构造问题query送入整个系统,对于每个输入会产生一系列的答案,但是我们知道真正的答案,所以可以构造噪声(其属于尾实体中的某一个同义词但是不能进行实体链接)。最后这些构造的数据可以用于Re-ranking模块的微调。
  2. 从用户交互中持续提升

    预测训练过程从未出现过的关系类型是很困难的,所以我们使用交互机制来为这些从未出现的关系生成标注。所有得到用户正反馈的三元组事实都会立即加入到知识库中,同时,我们还基于上述的实体对齐产生正负训练样例。最终,在每个批次的成功标注结束后我们都会更新的我们模型。

实验:

  1. 数据集:因为现有的数据集都不能满足实验要求,作者在这里自己构造了数据集。数据集主要分为两个不同的子集:(1)known关系代表初始就在KB中。(2)Zero-shot代表初始时不可以见。同时构建副例。
  2. 实验:作者在这里进行四部分实验,我们着重关心渐进式实验。作者模拟了9000词用户交互,并使用KB中已知的部分作为训练集。接着使用KB中zero-shot那部分作为训练集,并预测到30个queries,同时将每种关系的queries限制到10个,再来调用人来预测。

参考:

https://www.colabug.com/2021/0312/8056676/ 东南大学谭亦鸣博士整理的笔记

原文:https://www.aclweb.org/anthology/2020.coling-main.490.pdf

一篇关于渐进式机器学习的文章《IntKB: A Verifiable Interactive Framework for Knowledge Base Completion》相关推荐

  1. 转载 干货 | 1400篇机器学习的文章中,这10篇是最棒的!

    [导读]在过去的一个月中, 作者从近 1400 篇有关机器学习的文章中挑选了最有可能帮助职业生涯发展的 10 篇推荐给大家(入选比率为0.7%). (此前发布过多篇收藏党喜欢的文章,也是来自Mybri ...

  2. Boosted Tree:一篇很有见识的文章

    Boosted Tree:一篇很有见识的文章 6,125 次阅读 - 文章 作者:陈天奇,毕业于上海交通大学ACM班,现就读于华盛顿大学,从事大规模机器学习研究. 注解:truth4sex  编者按: ...

  3. 【机器学习基础】太棒了!这里有385篇自然语言处理和机器学习领域的综述总结...

    文章来源于python遇见NLP,作者自然语言er 综述论文对于初学者来说,可以方便其在研究初期尽快掌握该方向的发展趋势.目前我在GitHub上发现一个开源项目,上面总结了385篇自然语言处理和机器学 ...

  4. 使用机器学习预测天气_如何使用机器学习根据文章标题预测喜欢和分享

    使用机器学习预测天气 by Flavio H. Freitas Flavio H.Freitas着 如何使用机器学习根据文章标题预测喜欢和分享 (How to predict likes and sh ...

  5. 如何利用ChatGPT-4完成一篇爆款引流文章

    ChatGPT4已经来了,今天小编就带大家学习学习,如何利用ChatGPT4完成一篇爆款引流的文章:本文将详细介绍如何使用先进的人工智能语言模型ChatGPT-4来撰写一篇爆款流量文章.我们将探讨选择 ...

  6. 介绍一篇关于session的好文章,写的很详细

    介绍一篇关于session的好文章,写的很详细 目录: 一.术语session 二.HTTP协议与状态保持 三.理解cookie机制 四.理解session机制 五.理解javax.servlet.h ...

  7. 关于php的文章,一篇关于 PHP 性能的文章

    一篇关于 PHP 性能的文章 昨晚清理浏览器收藏夹网址时, 发现了 http://www.phpbench.com/, 想起来应该是 2015 年发现的一个比较性能的文章, 我就点进去看了看, 发现还 ...

  8. 这是一篇路由器踩坑的文章

    这是一篇路由器踩坑的文章 ​ 想用路由器遂咸鱼了一台路由器,基于极路由2改的第三方路由,但是硬件配置都一样,所以本文就是针对极贰的踩坑记录. 目标 老毛子固件 自动登录校园网(drcom客户端) 校园 ...

  9. 推荐一篇微服务硬核文章 6 张图带你搞懂微服务

    我是非典型理科男号主.点击上方蓝字关注. 关注后你可以收获最硬核的知识分享, 最有趣的互联网故事 推荐老王的一篇关于微服务的文章. 通过文章你可以了解到 单体架构到微服务架构的变化,ServiceMe ...

最新文章

  1. Soul网关发布里程碑的2.3.0版本,新增支持GRPC,Tars,Sofa协议
  2. proguard的简单配置说明
  3. c语言 1或0 结果,C语言中,在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”。()...
  4. python3模拟键盘输入_Python模拟键盘输入
  5. k8s 服务发现:通过CoreDNS域名访问service服务
  6. OpenGL抗锯齿实例
  7. 安装Python第三方库的常用方法和注意事项
  8. iPhone 九、十月份在中国销量曝光:真的卖疯了!
  9. 【PostgreSQL-9.6.3】设置log参数
  10. java 整数相乘_Java中两个int相乘的结果是怎么算的?
  11. Linux内核多线程——补充(各种平台下的多线程)
  12. 凸优化第四章凸优化问题 4.6广义不等式约束
  13. 1.13《推荐系统实践》笔记(上)
  14. 河南计算机对口升学题,河南省计算机对口升学专基模拟试题(四)[1]
  15. bt服务器搭建 linux_linux系统架设BT服务器的详细教程
  16. PHP:Fatal error: Class 'COM' not found in … 的处理办法
  17. tf10: 谷歌Deep Dream
  18. 计算机有哪些知识,电脑基本操作知识有哪些
  19. 一次解决Kubernetes集群内无法访问服务的问题过程
  20. 《Linux操作系统-系统移植》第12章 5G模组移植-第1节 中移物联5G移植(PPP拨号)

热门文章

  1. 汽车汽配行业经销商协同系统:实现汽配经销商销售管理全流程数字化
  2. CAN现场总线基础知识总结,看这一篇就理清了(CAN是什么,电气属性,CAN通协议等)
  3. 代码随想录Day09:28. 实现 strStr()、459.重复的子字符串、字符串总结 、双指针回顾
  4. buck电路boot电容短路和断路实测波形
  5. Python辅助作业批改
  6. 谷得网诈骗 看了之后真的很震惊啊
  7. 零基础如何学数据恢复
  8. (转)IT人士群聚喝酒
  9. 奇点大学公开课到底都讲了啥?
  10. Error: Command ‘[‘/home/das/Desktop/learn/my_venv/bin/python3‘