666. Make Data Count - Finding Data References | make-data-count-finding-data-references
副标题: 寻找数据源 :)
我们的竞赛解决方案可以分为 2 个阶段。
Primary(主要)还是 Secondary(次要)。此外,对于每个阶段,我们分别为 DOI 和登录号 ID 开发了解决方案。(对于分类,单一模型方法对我来说不起作用)
对提供的真实标签中的数据集引用的分析暗示了某种自动获取数据集的过程。例如,在许多情况下,同一表格和存储库中的一些登录号被选中,而另一些则没有。这里的推测是正在使用某种 NER 模型,对其进行阈值处理会遗漏一些相关的登录号。同样,Dryad 数据集的 DOI 版本被包含在内,但未出现在论文中。
于是,寻找数据源/代码的 hunt 开始了。
这里有 2 个相关数据源:
正如数据引用语料库描述中提到的,它使用来自 datacite 的事件数据来构建语料库。因此,datacite 公共数据文件可以被视为数据引用语料库的超集。将数据引用文件与训练 article_ids 连接,可获得 DOI 的 100% 召回率。
为了提高精确率,基于对训练数据的观察,应用了以下预处理。
figshare, cambridge crystallographic data centre, hepdata,因为它们在训练数据中被标记为 Missing。re.compile("".join([ch + r"[\s]*" for ch in base_dataset_id.replace("https://doi.org/", "")]).strip(), re.IGNORECASE)仅通过这些步骤,我们在训练数据上获得了 0.964 的验证分数(不考虑 type)。

登录号来自:https://europepmc.org/pub/databases/pmc/TextMinedTerms 如分支所示:https://github.com/Make-Data-Count-Community/corpus-data-file/tree/ks-data-dump-v4-eumpc。我认为有一个 PR 可以合并到主分支。
再次,将从这里下载的数据连接到训练数据可获得 100% 召回率。基于对训练数据的观察,似乎某些存储库被排除在训练标签之外 -> hgnc, gca, go, rrid。由于 hgnc, gca, go 的标识符中都有 :,其余带有 : 的存储库也被删除 ("chebi", "orpha", "rhea", "efo")。此外根据 PR,("ebisc", "hipsci", "omim", "eudract") 也被删除。我考虑根据 PR 删除 NCT,但没有这样做,因为它不是公共集的一部分。这会在私有集上带来 +0.003 的提升。
LB 探测实验表明它们对公共测试分数没有影响,但删除它们会使私有集提高 0.001。
当然,来自 eupmc 数据的 DOI 也被删除了。
最后,我们删除了存在 DOI 候选项的所有文章中的登录号,正如训练数据中所表明的那样。
这给我们带来了 29 个假阳性,其中 25 个是来自 10.1038_s41597-019-0101-y 的 SAMN**。仔细查看 XML 似乎它们是在线表格的一部分。因此,我为此添加了一条规则(这在公共测试中提升了 0.003,在私有集上也提升了 0.004)

这为第一阶段的登录号提供了 0.98 F1(不考虑 type)

在第一阶段规则之上,如果我们添加以下规则,我们在公共集上获得 0.869,在私有集上获得 0.739 (不需要模型即可获得金牌!)
isSupplementTo dataset_id 根据 datacite 公共数据文件 -> 主要大部分时间花在创建分类上下文上 (<2048 tokens)。我从 datacite 公共数据文件映射了数据集作者和摘要。然后我通过提取论文的以下部分来整理上下文:
模型 -> MedGemma-4B lora
添加此模型并删除除 isSupplementTo 之外的其他 DOI 规则,得到 0.880/0.784
上下文工程:如果在表格 tag 中匹配 -> 获取表格行和标题 -> 使用表格 ID 在论文中找到第一次引用并获取额外上下文 -> 添加数据可用性部分 -> 回退到搜索 PDF 文本。
虽然 OOF 分数为 0.91,但 LB 分数明显较低。这表明存在一些错误或严重的过拟合。无法进一步研究。
主要挑战是数据集大小限制导致严重的模型不稳定:
训练标签:
开发了两个专用模型:
microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract-fulltext
"other dataset id""Prediction {DATASET_ID}""More than 3 mentions"DOI Context = [Mention Token] + [Repository Token] + [Original Context]
示例:
"More than 3 mentions" + "Zenodo Repository" + [150 chars context]
感谢竞赛主持人、组织者和所有 Kaggle 社区!一如既往,参加竞赛真是太棒了。