先看看TREC是什么
TREC 是 Text REtrieval Conference(文本检索会议)的缩写。它是一个由美国国家标准技术研究所(NIST)主办的年度会议,旨在推动信息检索领域的研究和发展。TREC 于 1992 年开始举办,是一个国际性的会议,每年都吸引着来自学术界、工业界和政府机构的研究人员参与。
TREC 的主要目标之一是提供一个平台,让研究人员能够评估和比较不同信息检索系统的性能。为此,TREC 组织了一系列任务和评测,参与者必须根据特定的数据集和评估标准来设计和评估他们的信息检索系统。这些任务通常涉及文本检索、文档分类、信息抽取等相关领域。
通过 TREC,研究人员可以共享他们的方法、工具和经验,促进信息检索技术的进步,并提高信息检索系统的性能和效果。
TREC 2023 深度学习赛道指南
今年,我们庆祝 TREC 深度学习课程的五周年纪念日和最终版本!🙏🏽
概述论文: https://trec.nist.gov/pubs/trec32/papers/Overview_deep.pdf
以前的版本
- 2019年网站和概述文件
- 2020 年网站和概述文件
- 2021 年网站和概述文件
- 2022 年网站和概述文件
时间表(暂定)
- 7 月 10 日:发布测试查询
- 7 月 31 日:提交段落和文档排名任务的截止日期
登记
要参加 TREC,请在以下网站预先注册:Text REtrieval Conference (TREC) Application
介绍
深度学习轨道研究大型训练数据体系中的信息检索。在这种情况下,具有至少一个正标签的训练查询的数量即使不是数十万或更多,也至少为数万。这对应于现实场景,例如基于点击日志的训练和基于浅池标签的训练(例如TREC Million Query Track中的池化或基于早期精度的搜索引擎评估)。
已知某些基于机器学习的方法,例如基于深度学习的方法,需要非常大的数据集来进行训练。缺乏如此大规模的数据集一直是开发用于常见信息检索任务(例如文档排名)的方法的限制。前几年组织的深度学习赛道旨在为 TREC 提供大规模数据集,并通过对段落排名和文档排名任务的排名器进行严格的盲评估来创建重点研究工作。
与前几年类似,2023 年该赛道的主要目标之一是研究在有大量训练数据可用时哪些方法效果最好。例如,适用于小数据的相同方法是否也适用于大数据?当提供更多训练数据时,方法会改进多少?在这个场景中可以引入哪些外部数据和模型,全面监管与其他形式的监管相结合有何用处?
深度学习跟踪任务
2023年深度学习赛道继续有段落排序和文档排序任务;每种情况都有两个子任务:完整排名和重新排名。您可以为每个子任务提交最多三个正式运行,这些子任务将由 NIST 评估并在汇集/评审过程中使用。参赛团体可以提交最多五轮额外的比赛进行评估,这些比赛不会包含在汇集/评审过程中。如果您为某个子任务提交了超过 3 次运行,请在提交过程中选择“Unpooled”作为额外运行的判断优先级。如果参赛小组提交的评审顺序不明确,NIST 将单方面选择评审哪个运行。与去年类似但与往年不同的是,该赛道的主要重点将放在文章排名任务上,而将文档排名任务保留为次要任务。文档排名任务的定义和评估的详细信息可以在本页后面找到。
每个任务都使用来自 MS MARCO 数据集的大量人工生成的训练标签。这两个任务使用相同的测试查询。他们还使用相同形式的训练数据,每个训练查询通常有一个积极的训练文档/段落。在段落排名的情况下,有一个直接的人工标签表明该段落可用于回答查询,而为了训练文档排名任务,我们从段落级别标签推断文档级别标签。
对于这两项任务,鼓励参与者研究迁移学习方法的有效性。我们当前的训练标签(来自 MS MARCO)的生成方式与测试标签(由 NIST 生成)不同,尽管过去几年的一些标签(映射到新语料库)也可能可用。参与者还可以(并被鼓励)使用外部语料库进行大规模语言模型预训练,或将针对轨道中一项任务(例如段落排名)构建的算法调整为另一项任务(例如文档排名)。这使得参与者能够研究各种迁移学习策略。下面更详细地描述这两个任务。
今年我们的查询包括“综合查询”,这些查询不适用于官方 NIST 评估。我们将使用综合数据评估提交的运行,以了解综合评估与官方评估的匹配程度。目标是开发一个综合评估,可以作为官方结果的领先指标(“开发集”)。官方评估不会使用合成查询或 qrel。
段落排序任务
今年深度学习赛道的主要焦点仍然是文章排名任务。我们有两个与此任务相关的子任务:完整排名和前 100 名重新排名。
在完整排名(检索)子任务的背景下,给定一个问题,您需要根据包含问题答案的可能性对完整集合中的段落进行排名。它模拟了一个场景,您正在构建一个用于检索段落的端到端检索系统。对于此端到端检索任务,您最多可以提交100 个段落。
在重新排名子任务中,我们为您提供来自简单 IR 系统的 100 篇文章的初始排名,您需要根据文章包含问题答案的可能性对文章进行重新排名。这是一个非常常见的现实场景,因为许多端到端系统都是通过检索和 top-k 重新排名来实现的。重新排名子任务允许参与者仅专注于重新排名,而不需要实施端到端系统。它还使这些重新排名运行更具可比性,因为它们都是从同一组 100 个候选者开始的。
文档排序任务
虽然文章排序任务再次成为今年深度学习赛道的主要焦点,但该赛道将继续有文档排序任务。与去年一样,文档排名任务的定义和评估与往年有所不同。前几年,文档排序任务的期望是根据文档与问题的相关性对文档进行排序。然而,与去年一样,今年的期望是根据文档包含与问题相关的段落的可能性对文档进行排名。
与段落排序任务类似,文档排序任务也有完整排序和重新排序子任务。在完整排名(检索)子任务中,可以从提供的完整文档集合中检索文档。您最多可以为此任务提交100 个文档。
在前 100 个重新排名子任务中,我们为您提供 100 个文档的初始排名,您需要根据这些文档包含与问题相关的段落的可能性对这些文档进行重新排名。在此子任务中,我们可以基于相同的 100 个候选候选集来比较不同的重新排序方法,其基本原理与段落重新排序子任务中描述的相同。
数据集
今年,我们将利用与去年赛道相同的数据集。
下载数据集
要更快、更可靠地下载大文件,请使用AzCopy(请参阅说明)。
azcopy copy https://msmarco.z22.web.core.windows.net/msmarcoranking/msmarco_v2_doc.tar msmarco_v2_doc.tar
我们还看到了一个在不使用 azcopy 的情况下加快下载速度的建议:
wget --header "X-Ms-Version: 2019-12-12" https://msmarco.z22.web.core.windows.net/msmarcoranking/msmarco_v2_doc.tar
通道排名数据集
Type | Filename | File size | Num Records | Format |
---|---|---|---|---|
Corpus | msmarco_v2_passage.tar | 20.3 GB | 138,364,198 | tar of 70 gzipped jsonl files |
Train | passv2_train_queries.tsv | 11.1 MB | 277,144 | tsv: qid, query |
Train | passv2_train_top100.txt.gz | 324.9 MB | 27,713,673 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
Train | passv2_train_qrels.tsv | 11.1 MB | 287,889 | TREC qrels format |
Dev 1 | passv2_dev_queries.tsv | 160.7 KB | 3,903 | tsv: qid, query |
Dev 1 | passv2_dev_top100.txt.gz | 4.7 MB | 390,300 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
Dev 1 | passv2_dev_qrels.tsv | 161.2 KB | 4,074 | TREC qrels format |
Dev 2 | passv2_dev2_queries.tsv | 175.4 KB | 4.281 | tsv: qid, query |
Dev 2 | passv2_dev2_top100.txt.gz | 5.1 MB | 428,100 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
Dev 2 | passv2_dev2_qrels.tsv | 177.4 KB | 4,456 | TREC qrels format |
Validation 1 (TREC test 2021) | 2021_queries.tsv | 24.0 KB | 477 | tsv: qid, query |
Validation 1 (TREC test 2021) | 2021_passage_top100.txt.gz | 590.4 KB | 47,700 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
Validation 1 (TREC test 2021) | 2021.qrels.pass.final.txt | 424 KB | 10,828 | qid, “Q0”, docid, rating |
Validation 2 (TREC test 2022) | 2022_queries.tsv | 21.0 KB | 500 | tsv: qid, query |
Validation 2 (TREC test 2022) | 2022_passage_top100.txt.gz | 615.3 KB | 50,000 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
Validation 2 (TREC test 2022) | 2022.qrels.pass.withDupes.txt | 15 MB | 386,416 | qid, “Q0”, docid, rating |
Test (TREC test 2023) | 2023_queries.tsv | 37.2 KB | 700 | tsv: qid, query |
Test (TREC test 2023) | 2023_passage_top100.txt.gz | 868.1 KB | 70,000 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
段落语料库也是jsonl格式。每一段都有:
- pid:段落标识符对语料库中段落的 jsonl 行的文件名和起始位置进行编码。例如,
msmarco_passage_41_45753370
位于文件msmarco_v2_passage/msmarco_passage_41
中的位置45753370
。 - 段落:段落的正文。
- spans:原始文档中段落句子的位置,例如
(17789,17900),(17901,18096)
。 - docid:段落原始文档的文档 ID,例如
msmarco_doc_35_1343131017
。
通过调整上面文档 ID 案例列出的 Python 代码,可以使用段落 id 访问段落语料库。
段落“spans”使用字节偏移量,但文档文本采用 UTF-8 格式,因此要从正文文本中提取跨度,(x,y)
您需要使用:
doc_json['body'].encode()[x:y].decode()
文档排名数据集
Type | Filename | File size | Num Records | Format |
---|---|---|---|---|
Corpus | msmarco_v2_doc.tar | 32.3 GB | 11,959,635 | tar of 60 gzipped jsonl files |
Train | docv2_train_queries.tsv | 12.9 MB | 322,196 | tsv: qid, query |
Train | docv2_train_top100.txt.gz | 404.5 MB | 32,218,809 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
Train | docv2_train_qrels.tsv | 11.9 MB | 331,956 | TREC qrels format |
Dev 1 | docv2_dev_queries.tsv | 187.5 KB | 4,552 | tsv: qid, query |
Dev 1 | docv2_dev_top100.txt.gz | 5.6 MB | 455,200 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
Dev 1 | docv2_dev_qrels.tsv | 173.4 KB | 4,702 | TREC qrels format |
Dev 2 | docv2_dev2_queries.tsv | 205.0 KB | 5,000 | tsv: qid, query |
Dev 2 | docv2_dev2_top100.txt.gz | 6.1 MB | 500,000 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
Dev 2 | docv2_dev2_qrels.tsv | 190.9 KB | 5,178 | TREC qrels format |
Validation 1 (TREC test 2019) | msmarco-test2019-queries.tsv.gz | 4.2 KB | 200 | tsv: qid, query |
Validation 1 (TREC test 2019) | (currently not available) | TREC submission: qid, “Q0”, docid, rank, score, runstring | ||
Validation 1 (TREC test 2019) | docv2_trec2019_qrels.txt.gz | 105 KB | 13,940 | qid, “Q0”, docid, rating |
Validation 2 (TREC test 2020) | msmarco-test2020-queries.tsv.gz | 8.2 KB | 200 | tsv: qid, query |
Validation 2 (TREC test 2020) | (currently not available) | KB | TREC submission: qid, “Q0”, docid, rank, score, runstring | |
Validation 2 (TREC test 2020) | docv2_trec2020_qrels.txt.gz | 60.9 KB | 7,942 | qid, “Q0”, docid, rating |
Validation 3 (TREC test 2021) | 2021_queries.tsv | 24.0 KB | 477 | tsv: qid, query |
Validation 3 (TREC test 2021) | 2021_document_top100.txt.gz | 603.7 KB | 47,700 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
Validation 3 (TREC test 2021) | 2021.qrels.docs.final.txt | 468 KB | 13,058 | qid, “Q0”, docid, rating |
Validation 4 (TREC test 2022) | 2022_queries.tsv | 21.0 KB | 500 | tsv: qid, query |
Validation 4 (TREC test 2022) | 2022_document_top100.txt.gz | 627.7 KB | 50,000 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
Validation 4 (TREC test 2022) | 2022.qrels.docs.inferred.txt | 13.1 MB | 369,638 | qid, “Q0”, docid, rating |
Test (TREC test 2023) | 2023_queries.tsv | 37.2 KB | 700 | tsv: qid, query |
Test (TREC test 2023) | 2023_document_top100.txt.gz | 881.0 KB | 70,000 | TREC submission: qid, “Q0”, docid, rank, score, runstring |
文档语料库采用jsonl格式。每个文档都有:
- docid:文档标识符对语料库中文档的 jsonl 行的文件名和起始位置进行编码。例如,
msmarco_doc_31_726131
位于文件msmarco_v2_doc/msmarco_doc_31
中的位置726131
。 - url:文档的 URL
- title:文档的标题
- headers:从文档中提取的以换行符分隔的标题列表,其中第一个标题可能是描述整个文档的生成标题(备用标题)。
- body:文档的正文
如果解压缩语料库,您可以使用以下命令快速访问文档:
import jsondef get_document(document_id):(string1, string2, bundlenum, position) = document_id.split('_')assert string1 == 'msmarco' and string2 == 'doc'with open(f'./msmarco_v2_doc/msmarco_doc_{bundlenum}', 'rt', encoding='utf8') as in_fh:in_fh.seek(int(position))json_string = in_fh.readline()document = json.loads(json_string)assert document['docid'] == document_idreturn documentdocument = get_document('msmarco_doc_31_726131')
print(document.keys())
生产输出:
dict_keys(['url', 'title', 'headings', 'body', 'docid'])
使用外部信息
通常允许您在开发运行时使用外部信息。当您提交运行时,请填写一份表格,列出您使用的资源。这可能包括外部语料库,例如维基百科或预训练模型(例如词嵌入、BERT)。这还可以包括提供的文档排名训练数据集,但也可以包括其他数据,例如段落排名任务标签或外部标签或预训练模型。这将使我们能够分析运行并将它们分解为类型。
重要提示:我们现在正在处理多个版本的 MS MARCO 排名数据以及所有其他 MS MARCO 任务。这个新的数据发布改变了可用和可用的内容。参与者应谨慎使用这些数据集,并且必须遵守以下准则:
- 现在您可以在运行中使用段落文档映射。例如,可以通过首先对文档进行排名,然后从前 k 个文档中识别所有段落,然后应用段落重新排名算法来生成段落排名。在以前的 MS MARCO 数据中,没有可用的段落-文档映射,并且我们不鼓励参与者生成此类映射,因此这种方法是不可能的。
- 今年禁止您再次使用ORCAS 数据。您还禁止使用任何其他信息来告诉我们今年的哪些文档(或段落)也出现在语料库的先前版本中。我们将研究使用此类信息是否会导致一些偏见或泄露真实情况,但目前是禁止的。我们可能会发布 OCAS 更新。
- 除了 ORCAS 之外,您还可以使用上面列出的任何数据以及该赛道前几年(2019 年、2020 年、2021 年和2022 年)的任何数据。
- 您可以使用下面“其他资源”部分列出的任何数据。
- 禁止您在提交的内容中使用来自msmarco.org的任何其他数据集,例如原始 QnA 和 NLGEN 任务。原始的 MS MARCO 数据集揭示了它们如何构建的一些小细节,而这些细节在现实世界的搜索引擎中是不可用的;因此,应该避免。
提交、评估和评审
请在以下位置提交您的运行: https: //ir.nist.gov/trecsubmit/deep.html
我们将遵循与大多数 TREC 提交所使用的类似格式,如下重复。空白用于分隔列。格式中列的宽度并不重要,但重要的是每行恰好有六列,并且列之间至少有一个空格。
1 Q0 pid1 1 2.73 runid1
1 Q0 pid2 2 2.71 runid1
1 Q0 pid3 3 2.61 runid1
1 Q0 pid4 4 2.05 runid1
1 Q0 pid5 5 1.89 runid1
, 在哪里:
- 第一列是主题(查询)编号。
- 第二列当前未使用,应始终为“Q0”。
- 第三列是在段落排序任务中检索到的段落的官方标识符,以及在文档排序任务中检索到的文档的标识符。
- 第四列是检索到的段落/文档的排名。
- 第五列显示生成排名的分数(整数或浮点)。该分数必须按降序(非递增)顺序排列。
- 第六列是您要提交的运行的 ID。
作为官方评估集,我们提供了一组测试查询,其中的一个子集将用于最终评估。相同的测试查询用于段落检索和文档检索。与前几年不同的是,将使用不同的方法来构建段落排名和文档排名任务的测试集。
用于段落检索任务的测试集构建的方法将与前几年相同:NIST 将使用深度池并为最终测试集中的查询构建池。然后,NIST 评估员将使用多级判断对这些池中的段落进行标记,使我们能够衡量 NDCG。
文档排名任务的评估将使用从段落排名任务推断出的标签来完成,不会为此任务收集 NIST 的额外判断。这与今年文档排名任务的定义一致,该任务的重点是根据文档包含相关段落的可能性对文档进行排名。
TREC 提交的主要类型是自动,这意味着运行测试查询时不需要手动干预。这意味着您不应在看到测试查询后调整运行、重写查询、重新训练模型或进行任何其他类型的手动调整。理想的情况是,您只查看测试查询以检查它们是否正常运行(即没有错误),然后提交自动运行。但是,如果您希望有人参与您的运行循环,或者执行任何其他使用测试查询来调整模型或排名的操作,您可以将运行标记为手动。手动运行很有趣,我们可能会学到很多东西,但这些与我们的主要场景不同,我们的主要场景是自动响应未见过的查询的系统。
其他资源
我们正在分享以下额外资源,希望这些资源对社区有用。
数据集 | 文件名 | 文件大小 | 记录数 | 格式 |
---|---|---|---|---|
分段文档集合 | msmarco_v2_doc_segmented.tar | 25.4GB | 124,131,414 | 柏油 |
增强的段落集合 | msmarco_v2_passage_augmented.tar | 20.0GB | 138,364,198 | 柏油 |
协调员
- 尼克·克拉斯韦尔(微软)
- 巴斯卡·米特拉(微软)
- Emine Yilmaz(伦敦大学学院、亚马逊)
- 丹尼尔·坎波斯(伊利诺伊大学厄巴纳-香槟分校)
- 吉米·林(滑铁卢大学)
条款和条件
MS MARCO 和 ORCAS 数据集仅用于非商业研究目的,旨在促进人工智能和相关领域的进步,并且免费提供,无需扩展任何许可或其他知识产权。数据集“按原样”提供,没有任何保证,并且数据的使用存在风险,因为我们可能不拥有文档中的基本权利。对于与使用数据集相关的任何损害,我们不承担任何责任。反馈是自愿提供的,并且可以在我们认为合适的情况下使用。通过使用任何这些数据集,您将自动同意遵守这些条款和条件。一旦违反任何这些条款,您使用数据集的权利将自动终止。
如果您拥有任何可用文档,但不希望它们出现在此数据集中,请通过 ms-marco@microsoft.com 与我们联系。我们将相应地删除数据。如果您对数据集的使用或您的产品或服务中的任何研究成果有疑问,我们鼓励您自行进行独立的法律审查。如有其他问题,请随时与我们联系。
贡献
该项目欢迎贡献和建议。大多数贡献都要求您同意贡献者许可协议 (CLA),声明您有权并且实际上授予我们使用您的贡献的权利。有关详细信息,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA 并适当地修饰 PR(例如,状态检查、评论)。只需按照机器人提供的说明进行操作即可。您只需使用我们的 CLA 在所有存储库中执行一次此操作。
该项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系opencode@microsoft.com提出任何其他问题或意见。
法律声明
Microsoft 和任何贡献者根据知识共享署名 4.0 国际公共许可证 向您授予此存储库中的 Microsoft 文档和其他内容的许可证,请参阅许可证文件,并根据MIT 许可证向您授予对存储库中任何代码的许可证,请参阅许可证代码文件 。
Microsoft 按“原样”许可 MS MARCO 标志,并且不就不侵权做出任何明示或暗示的陈述或保证。您必须根据 Microsoft 的要求立即删除对该标记的所有使用。
文档中引用的 Microsoft、Windows、Microsoft Azure 和/或其他 Microsoft 产品和服务可能是 Microsoft 在美国和/或其他国家/地区的商标或注册商标。此项目的许可证不授予您使用任何 Microsoft 名称、徽标或商标的权利。Microsoft 的一般商标指南可在http://go.microsoft.com/fwlink/?LinkID=254653上找到。
隐私信息可在https://privacy.microsoft.com/en-us/找到。
Microsoft 和任何贡献者保留所有其他权利,无论是根据其各自的版权、专利或商标,无论是通过暗示、禁止反言还是其他方式。