跳到内容
/ 公民 公共

我们SIGIR 2022论文的代码。CONVINSE是一个跨异构信息源的对话式问答(ConvQA)框架。

许可证

通知 您必须登录才能更改通知设置

PhilippChr/CONVINSE公司

文件夹和文件

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

最新提交

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

链接到我们在SIGIR 2023中的后续工作:解释.

CONVINSE:关于异构资源的对话问答

说明

此存储库包含我们的SIGIR 2022论文关于异质来源的会话问答。在这项工作中,我们为这项任务提供了一个通用管道:

  1. 问题理解(QU)——创建传入问题及其对话上下文的明确表示
  2. 证据检索和评分(ERS)——利用这种框架式表示统一捕获来自不同来源的最相关证据
  3. 异质回答(HA)——从这些证据中得出答案。

我们建议公民作为这个3阶段流水线的实例化,并设计结构化表示(SR)来明确捕获本工作中问题理解期间的用户信息需求,作为QU阶段的实例化器。在新收集的数据集上进行了实验ConvMix公司,发布于CONVINSE网站(或者在实例化此repo时作为下载)。

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

@正在进行中{2022年圣诞节,标题={异质源对话问答},作者={菲利普·克里斯特曼(Philipp Christmann)和萨哈·罗伊(Saha Roy)、里希拉吉(Rishiraj)和格哈德·威库姆(Gerhard Weikum)},书名={SIGIR公司},={144--154},={2022}}

代码

系统要求

所有代码都只在Linux上进行了测试。

安装

通过以下方式克隆回购:

git克隆https://github.com/PhilippChr/CONVINSE.git光盘公民/公民_根=$(密码)conda create--name convense python=3.8conda激活罪犯pip安装-e.

    #不带CUDA安装PyTorch康达公司安装pytorch torchvision torchaudio-c pytorch#为CUDA 10.2安装PyTorch(使用GPU)conda install pytorch torchvision torchhavetcudatoolkit=10.2-c pytorch#为CUDA 11.3安装PyTorch(使用GPU)conda安装pytorch torchvision torchaudio cudatoolkit=11.3-c pytorch

安装依赖项

公民利用CLOCQ公司检索相关证据,以及FiD公司回答。CLOCQ可以通过公开可用的API,使用来自的客户端回购。如果效率是主要问题,建议直接在本地机器上运行CLOCQ代码(详细信息见报告)。
无论哪种情况,都可以通过以下方式安装:

git克隆https://github.com/PhilippChr/CLOCQ.git光盘CLOCQ公司/pip安装-e.

FiD是为PyTorch 1.6.0版构建的,因此本机代码与最新版本的变压器库。因此,我们提供了一个包装器,使用子流程.您可以从存储库安装:

    光盘 $CONVINSE_ROOT(目录_根)git克隆https://github.com/PhilippChr/FiD.git说服/异构应答/fid_module/fid光盘说服/异构应答/fid_module/fid/conda create--名称fid python=3.6conda激活fidpip安装-e.conda激活罪犯

可选:如果要使用或比较QuReTeC公司要解决问题,可以运行以下命令:

    光盘说服/问题理解/问题解决/git克隆https://github.com/nickwosk/sigir2020-查询-解决方案.gitquretec公司

初始化回购(下载数据、基准、模型):

    光盘 $CONVINSE_ROOT(目录_根)bash脚本/initialize.sh

复制纸张结果

您可以在表6中重现CONVINSE的所有结果,也可以只重现特定源(组合)的结果。

要重新生成所有结果,请运行:

bash脚本/pipeline.sh--主结果

如果只想重现特定源组合的CONVINSE结果,请运行:

bash脚本/pipeline.sh--gold-answers config/convmix/convense.yml kb_text_table_info

最后一个参数(kb文本表格信息)指定要使用的源。
请注意,CONVINSE默认会即时检索证据。考虑到信息源中的证据可能会很快发生变化(例如,维基百科每天都有很多更新),结果很容易改变。实现了一个缓存来提高可复制性,我们提供了一个与基准相关的维基百科子集(参见详细信息在下面).

结果将记录在输出/转换混合目录,以及写入的指标_结果/convmix/convense.res.

培训管道

要训练管道,只需选择表示要训练的管道的配置,然后运行:

bash脚本/pipeline.sh—训练[<路径_配置>] [<来源_STR>]

例子:

bash脚本/pipeline.sh—训练配置/convmix/convense.yml kb_text_table_info

管道的HA部分将使用您作为参数提供的信息源集进行训练。

测试管道

如果您创建自己的管道,建议在一个示例上对其进行一次测试,以验证所有操作是否顺利运行。
您可以通过以下方式实现:

bash脚本/pipeline.sh——示例[<路径_配置>]

并查看中的输出文件输出/<基准>潜在错误。

对于标准评估,您可以简单地运行:

bash脚本/pipeline.sh--黄金应答[<路径_配置>] [<来源_STR>]

例子:

bash脚本/pipeline.sh--gold-answers config/convmix/convense.yml kb_text_table_info

要使用所有源组合进行评估,例如与CONVINSE进行比较,请运行:

bash脚本/pipeline.sh--主结果[<路径_配置>] [<来源_STR>]

例子:

bash脚本/pipeline.sh--主结果config/convmix/convense.yml kb_text_table_info

如果要使用前几圈的预测答案进行评估,可以运行:

bash脚本/pipeline.sh--预先应答[<路径_配置>] [<来源_STR>]

例子:

bash脚本/pipeline.sh--预先应答config/convmix/convense.yml kb_text_table_info

默认情况下,将使用CONVINSE配置和所有源。

结果将记录在以下目录中:输出/<数据>/<CMD>-<功能>-<配置名称>.out,
并且将指标写入:_结果/<DATA>/<CONFIG_NAME>.res.

使用管道

对于使用管道(例如,为了改进管道的各个部分),您可以简单地实现从管道相应部分继承的自己的方法,创建相应的配置文件,并将模块添加到pipeline.py文件。然后,您可以使用上面概述的命令来训练和测试管道。有关更多详细信息,请参阅各个模块的文档:

ConvMix公司

加载ConvMix

ConvMix数据集可以通过以下方式下载(如果尚未通过initialize-script下载):

bash脚本/下载.sh confmix

然后,可以通过以下方式加载单个ConvMix数据分割:

导入json打开(“_benchmarks/convmix/train_set_ALL.json”,“r”)作为fp:列车数据=json.load(fp)打开(“_benchmarks/convmix/dev_set_ALL.json”,“r”)作为fp:dev_data=json.load(fp)将open(“_benchmarks/convmix/test_set_ALL.json”,“r”)作为fp:test_data=json.load(fp)

您还可以加载特定于域的版本,方法是将“ALL”替换为“books”、“movies”、“music”、“soccer”或“tvseries”。
数据格式如下:

[//第一次对话{	“conv_id”:“<INT>”,“域”:“<STRING>”,“问题”:[//问题1(完成){“转弯”:0,“question_id”:“<STRING:question-id>”,“问题”:“<STRING:question>”,“答案”:[{“id”:“<STRING:Wikidata答案id>”,“标签”:“<STRING:答案的项目标签>},]“answer_text”:“<STRING:答案的文本形式>”,“answer_src”:“<STRING:source worker found the answer>”,“实体”:[{“id”:“<STRING:问题实体的Wikidata id>”,“label”:“<STRING:问题实体的项目标签>},],“改写”:“<STRING:改写当前问题>”},//问题2(不完整){“转弯”:1,“question_id”:“<STRING:question-id>”,“问题”:“<STRING:question>”,“答案”:[{“id”:“<STRING:Wikidata答案id>”,“标签”:“<STRING:答案的项目标签>},]“answer_text”:“<STRING:答案的文本形式>”,“answer_src”:“<STRING:source worker found the answer>”,“实体”:[{“id”:“<STRING:问题实体的Wikidata id>”,“label”:“<STRING:问题实体的项目标签>},],“释义”:“<STRING:当前问题释义>”,“已完成”:“<STRING:当前未完成问题的已完成版本>”]},//第二次对话{...},// ...]

ConvMix的比较

请确保。。。

  • …您可以使用我们专门的维基百科转储,以获得类似的维基百科版本(请参阅下面的更多详细信息)。
  • …您使用相同的Wikidata转储(2022-01-31),可以使用CLOCQ API方便地访问该转储,网址为https://clocq.mpi-inf.mpg.de(详见下文)。
  • …您使用与CONVINSE相同的评估方法(如convense/evaluation.py中的定义)。

数据

维基数据

对于CONVINSE论文,使用了时间戳为2022-01-31的Wikidata转储。也可以通过CLOCQ API公司.有关如何从Wikidata检索证据的更多信息,请参阅ERS文件.

维基百科

维基百科证据可以使用Wikipedia检索器包裹。然而,我们提供了一个ConvMix相关子集,可以通过以下方式下载:

bash脚本/下载.sh维基百科

请注意,默认情况下也会下载此数据初始化脚本).
转储以.pickle文件的形式提供,并提供从Wikidata项ID(例如Q38111)到Wikipedia证据的映射。

此ConvMix相关子集已创建如下。我们添加了2022-03/04年从维基百科检索到的以下维基数据项的证据:

  1. ConvMix基准中的所有应答实体,
  2. ConvMix基准中的所有问题实体(由众工作者指定),
  3. CLOCQ检测到的每个实体提及的前20个歧义消除,输入字符串是CONVINSE管道为ConvMix数据集生成的意图明确形式,或基于“Prepend all”QU方法构建的基线,
  4. 每当出现新的Wikidata实体时(例如,对于运行预测答案的管道的动态设置),我们都会将相应的证据添加到转储中。

我们的目标是最大限度地增加实体的数量(从而增加证据的数量),以便与密集检索方法进行公平(尽可能)的比较。搜索整个维基百科转储信息超出了范围(维基媒体也强烈反对这样做)。我们总共收集了约23万个实体,并尝试检索维基百科证据。注意,对于其中一些,结果是空的。

有关如何从维基百科检索证据的更多信息,请访问ERS文件

反馈

我们尽了最大努力来记录这个项目的代码,使其易于使用,并测试各个管道组件的自定义实现。然而,我们的优势不在于软件工程,文档和代码中很可能会有次优部分。如果您觉得文档/代码的某些部分可以改进,或有其他反馈,请不要犹豫,让我们知道!例如,您可以通过邮件联系我们:pchristm@mpi-inf.mpg.de.非常感谢您的任何反馈(也是积极的;)!

许可证

CONVINSE项目菲利普·克里斯特曼,里希拉吉·萨哈·罗伊格哈德·维库姆根据麻省理工学院许可证.

关于

我们SIGIR 2022论文的代码。CONVINSE是一个跨异构信息源的对话式问答(ConvQA)框架。

话题

资源

许可证

星星

观察者

叉子