简单说说EmbedKGQA
论文:Improving Multi-hop Question Answering over Knowledge Graphs using Knowledge Base Embeddings 地址:aclanthology.org/2020.acl-ma… 源码:github.com/malllabiisc…
子图构建搜索答案的问题
如果因为KG的不完整,导致边has_genre(Gangster No.1, Crime)的缺失。那么推理的过程中答案Crime在4跳的位置,如果子图搜索只限制在3跳,那么构建的子图中就没有答案可以回答。
EmbedKGQA方法
-
KG Embedding Module:从输入的KG中学习所有entites的embedding,实际代码里用的是ComplEx方法,不过其他的一些KGE方法也实现了,可以替换
-
Question Embedding Module:学习问题的embedding,即将一句问题提取语义信息转化为向量
- 论文中写的在Roberta后面加上4层MLP后ReLU激活函数转成768维的向量
- 代码中实际写的在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
-
首先计算q(question)和所有关系的一个得分,大于0.5就加入到候选关系集R_a中
-
然后计算head entity 到 候选实体集每个entity的最短路径,保存经过路径的关系,生成关系集R_a'(该关系集是针对特定候选entity的关系集)
-
两个关系集取交集
-
如果取交集后不为空集,那么这个候选实体就是答案
-
-