简单说说EmbedKGQA

1,188 阅读2分钟

简单说说EmbedKGQA

论文:Improving Multi-hop Question Answering over Knowledge Graphs using Knowledge Base Embeddings 地址:aclanthology.org/2020.acl-ma… 源码:github.com/malllabiisc…

子图构建搜索答案的问题

fig1.PNG

如果因为KG的不完整,导致边has_genre(Gangster No.1, Crime)的缺失。那么推理的过程中答案Crime在4跳的位置,如果子图搜索只限制在3跳,那么构建的子图中就没有答案可以回答。

EmbedKGQA方法

fig2.PNG

  • KG Embedding Module:从输入的KG中学习所有entites的embedding,实际代码里用的是ComplEx方法,不过其他的一些KGE方法也实现了,可以替换

  • Question Embedding Module:学习问题的embedding,即将一句问题提取语义信息转化为向量

    1. 论文中写的在Roberta后面加上4层MLP后ReLU激活函数转成768维的向量
    2. 代码中实际写的在Roberta后面只有1层MLP并且无ReLU激活函数转成768维的向量
  • Answer Selection Module:结合问题和关系的相似度分数选择最终的答案

    • 两种情况:不论是KG大还是KG小,都是从answer scoring里面生成候选实体中选择答案,而answer scoring计算KG中所有entity的得分,然后选择top k个作为候选entity

    • KG小的情况,因为KG里面所有的Entity都做了embedding,所以通过answer scoring选择得分最高的那个entity,即top1

    • KG大的情况,pruning候选实体集能够提升表现,所以有一种Pruning策略,代码中选择得分top200

      1. 首先计算q(question)和所有关系的一个得分,大于0.5就加入到候选关系集R_a中 fig3.png fig4.png

      2. 然后计算head entity 到 候选实体集每个entity的最短路径,保存经过路径的关系,生成关系集R_a'(该关系集是针对特定候选entity的关系集)

      3. 两个关系集取交集fig5.png

      4. 如果取交集后不为空集,那么这个候选实体就是答案