DEKCOR:使用外部知识来进行常识QA任务

本文最后更新于:2022年12月5日 下午

DEKCOR:使用外部知识来进行常识QA任务

Fusing Context Into Knowledge Graph for Commonsense Question Answering

论文链接:2012.04808.pdf (arxiv.org)

论文代码:https://github.com/microsoft/DEKCOR-CommonsenseQA

本文进行常识问答任务(Commonsense Question Answering),利用了外部知识源ConceptNet和Wikitionary。

image-20221205103809712

如图,基本思路是通过ConceptNet检索出问题中concept到目标答案的edge,然后再通过Wikitionary检索出问题和答案的定义,最终拼在一起送给ALBERT。

这里用的数据集中会包含问题的Concept,如图,Q是Where would you find magazines alongside many other printed works,然后数据集还会告诉你这个Q的Concept是magazines

使用ConceptNet找edge的时候会使用一个KCR算法(csqa/Model_details.md at master · jessionlin/csqa (github.com)):

  1. 已知concept $e_q$和答案的concept $e_c$
  2. 假如两者有直接的边,那就选择那条边
  3. 假如没有,则从$e_c$出发,找到与他相邻的$N$条边。
  4. 由于ConceptNet会将边分类,所以可以得出每种边的数量$N_{r_j}$。每种边计算出权重$\frac{N}{N_{r_j}}$。(这种算法会基于更少的边更多的权重)
  5. 由于ConceptNet自带一个权重,于是将这个权重与上一步权重相乘得到最终的权重。

在提取Wikitionary定义的时候,也有一个算法:

  1. 先检索原始格式(例如taking notes)
  2. 通过Spacy得到lemma form进行检索(好像是把动词还原,例如take notes)
  3. 检索最后一个单词(例如notes)