跳到内容

郑嘉2017/EXAQT

文件夹和文件

姓名姓名
上次提交消息
上次提交日期

最近一次提交

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

存储库文件导航

EXAQT+时间问题

更新

${\颜色{红色}注释}$:我们提供了一个更干净、完整的实施在这里。希望它能帮助您重现论文结果。它还可以用于评估其他KGQA基准。

描述

此存储库包含CIKM’21全文的代码和数据。在本文中,我们提出了EXAQT,这是第一个用于回答具有多个实体和谓词以及相关时间条件的复杂时间问题的端到端系统。EXAQT通过KG分两个阶段回答自然语言问题。第一步计算KG中与问题相关的紧致子图,并使用组Steiner树和微调BERT模型,用相关的时间事实明智地增强它们。第二步从第一步的输出构建关系图卷积网络(R-GCN),并用时间感知增强R-GCN实体嵌入和对时间关系的关注。

公斤

显示相关KG区域的Wikidata摘录关于“奥巴马的孩子在他上学的时候在哪里学习”的问题成为总统?”西德维尔朋友学校回答道。

有关更多详细信息,请参阅我们的论文:知识图上复杂时间问题的求解并访问我们的项目网站:网址:https://exaqt.mpi-inf.mpg.de.

如果您使用此代码,请引用:

@文章{贾2021综合体,标题={知识图上复杂时间问题的求解},作者={Jia、Zhen和Pramanik、Soumajit和Roy、Rishiraj Saha和Weikum、Gerhard},杂志={arXiv预打印arXiv:2109.08935},={2021}}

安装程序

需要以下软件:

  • Python 3.8版

  • Networkx 2.5

  • Numpy 1.19.2号

  • 维基百科全书1.0.5

  • Nltk 3.5版

  • 变压器4.4.2

  • 火炬1.8.1

  • 熊猫1.1.3

  • Tqdm 4.50.2分

  • 请求2.24.0

  • PyYAML第5.4.1节

要安装所需的库,建议创建虚拟环境:

python3-m venv ENV_exaqt源ENV_exaqt/bin/activatepip安装--升级pippip安装-r要求.txt

时间问题

可以从以下位置下载基准测试在这里TimeQuestions包含16181个问题。每个问题的内容包括:

  • “Id”:问题Id
  • “Question”:小写的问题文本
  • “时间信号”:重叠、之后、之前、开始、完成、顺序、无信号
  • “时间问题类型”:时间类别,包括显式、隐式、顺序、临时答案
  • “答案”:基本事实答案,包括答案类型、Wikidata Qid、Wikidata标签和Wikipedia URL
  • “数据源”:原始数据集
  • “问题创建日期”:原始数据集发布日期

数据

每个问题的预处理Wikidata事实、预处理模型、所有必需的中间数据和我们的主要结果都可以从以下网站下载在这里(解压缩并将其放在克隆的github repo的根文件夹中;总数据大小约为40GB)。

数据文件夹结构如下:

数据├── 紧凑的├── 列车25_25.json├── dev_25_25.json软件└── test_25_25.json测试├── 连通性└── seedpair问题测试连接路径记分.pkl├── 字典├── 文件夹├── 任务1├── 任务2├── ...└── 任务16181├── 模型├── 第1阶段模型.bin├── 阶段2_型号.bin└── wikipedia2vec培训├── 结果├── temcompactgst公司├── 列车25_25_温度.json├── 列车25_25_温度等级.pkl├── dev_25_25_温度.json├── dev_25_25_temp_rank.pkl软件├── test_25_25_温度.json└── 测试25_25_温度等级.pkl├── 时间问题├── 第1阶段相关因素选择训练集.csv├── 第2阶段临时实际选择训练集.csv└── 维基数据属性目录.json
  • ./compactgst:完成每个问题的GST子图
  • ./connectivity:预处理的连接数据,包括每个问题的种子对的最短连接路径
  • ./字典:用于答案预测的关系图、字典和预处理嵌入文件
  • ./files:每个问题的预处理Wikidata事实和中间数据,包括种子实体、得分事实、准问题图、基石和gst图文件
  • ./model:预处理微调BERT模型和wikipedia2vec模型
  • ./result:测试数据集上的答案预测评估结果
  • ./temcompactgst:使用时间事实和排名时间事实文件完成GST子图
  • ./phase1_relevant_fact_selection_trainset.csv:微调BERT模型的训练数据,用于查找与问题相关的KG事实
  • ./phase2_temporal_fact_selection_trainset.csv:微调BERT模型的训练数据,用于发现时间事实的问题相关性
  • ./wikidata_property_dictionary.json:具有类型、标签和别名的wikidata属性

代码

代码结构如下:

  • 书呆子

    • 获取种子实体以从ELQ和实体链接结果中获得种子实体。
    • 要运行程序,请查找的用法ELQ公司,并下载用于运行ELQ的预处理模型、索引和实体嵌入。
    • 获取实体标签.py从TagMe和实体链接结果中获取种子实体。
  • 答案图表

    • 应用微调BERT模型作为分类器

      • 相关_实际_选择_模型.py为事实打分,并按问题相关性可能性的降序排序。
      • 发动机.py微调BERT模型。
    • 计算紧致子图

      • 获取compact_subgraph.py计算GST并完成。
      • 获取GST.py是GST算法的函数集合。
    • 带时间事实的扩充子图

      • 临时_实际_选择_模型.py对时间事实进行评分,并按问题相关性可能性的降序排序。
  • 答案预测

    • 获取关系图.py创建关系图。
    • 获取图片.py生成字典,包括单词、实体、关系、类别、信号、时间事实等。
    • 获取再培训嵌入.py生成单词、实体、关系、时间事实等的预处理嵌入。
    • 列车_eva _rgcn.py训练R-GCN模型并对模型进行评估。
    • 模型.py是答案预测中的R-GCN模型类。
    • 时间编码器.py是位置时间编码函数。
    • 实用程序py是R-GCN答案预测中的常见函数集合。
    • 数据加载程序.py是答案预测中的数据加载函数。
    • 脚本列表.py是评估函数的集合。
    • 评估.py在测试数据集上评估模型。
  • 其他项目

    • 全球.py生成全局配置变量。

图形构建与答案预测

为了重现结果,(1)下载数据和预处理模型,并将其保存在克隆的github repo的根文件夹中,(2)确保config.yml文件中的路径变量在您自己的设置下。

然后运行以下命令:

第1步:NERD

python get_seed_entity_elq.py(注意,在构建elq环境后,程序应该在BLINK-master目录下运行)python获取种子实体标签.py

第2步:对问题相关事实进行评分和排名

python相关的_fact_selection_model.py-d序列python相关的_fact_selection_model.py-d开发python相关事实选择模型.py-d测试

步骤3:计算紧致子图

python get_compact_subgraph.py-d序列python get_compact_subgraph.py-d开发python get_compact_subgraph.py-d测试

第4步:对与问题相关的时间事实进行评分和排名

python temporal_fact_selection_model.py-d序列python temporal_fact_selection_model.py-d开发python temporal_fact_selection_model.py-d测试

第五步:训练答案预测模型并进行测试评估

python get_relational_graph.py-d序列python get_relational_graph.py-d开发python get_relational_graph.py-d测试python获取图片.pypython get_pretrained_embedding.pypython训练_eva _rgcn.py-p exaqt

关于

CIKM’21论文“知识图上的复杂时间问题解答”的代码

话题

资源

星星

观察者

叉子

发布

未发布版本

包装

未发布包

语言文字