返回列表

7th place solution

666. Make Data Count - Finding Data References | make-data-count-finding-data-references

开始: 2025-06-11 结束: 2025-09-09 文献与知识发现 数据算法赛
第 7 名解决方案

第 7 名解决方案

作者: Baiph
发布时间: 2025-09-10
竞赛排名: 7

感谢我的队友们的辛勤工作 @zxc123cc, @simingtan, @xuanmingzhang777, @tonyarobertson

关键点

1. 召回 (Recall)

1.1 DOI

(1) 对于 V4 数据,基于 article_id 从 V4 获取 DOI,并根据是否出现在文章中进行过滤,以识别 DOI 数据。

(2) 如果不在 V4 中,遵循正常流程。

1.2 ACC

外部数据:https://europepmc.org/pub/databases/pmc/TextMinedTerms/

训练集中的所有 ACC ID 都包含在此数据集中。我们基于 exist ID 列获取文章 ID 和 ACC ID 之间的关系,然后基于 article_id 从外部数据检索 ACC ID,并根据是否出现在文章中进行过滤,以识别 ACC ID 数据。以下数据被排除,仅提交 ACC,类型 SAMN 设置为 P,其他设置为 S, resulting in lb=0.783。

print('原始数据:', sub_df.shape)
sub_df = sub_df[~sub_df['dataset_id'].str.startswith('GCA_')].reset_index(drop=True)
sub_df = sub_df[~sub_df['dataset_id'].str.contains('/')].reset_index(drop=True)
sub_df = sub_df[~sub_df['dataset_id'].str.startswith('GO:')].reset_index(drop=True)
sub_df = sub_df[~sub_df['dataset_id'].str.startswith('HGNC:')].reset_index(drop=True)
sub_df = sub_df[~sub_df['dataset_id'].str.startswith('RRID:')].reset_index(drop=True)
sub_df = sub_df[~sub_df['dataset_id'].str.contains(':')].reset_index(drop=True)
sub_df = sub_df[~sub_df['dataset_id'].str.match(r'^\\d+$')].reset_index(drop=True)
sub_df = sub_df[~sub_df['dataset_id'].str.startswith('NCT')].reset_index(drop=True)

print('过滤后数据:', sub_df.shape)

(2) 如果不在外部数据中,遵循正常流程。

2. 类型分类 (Type Classification)

2.1 DOI

(1) 获取所有文章 ID 和数据 DOI 的作者,并使用作者信息进行判断。

(2) 对于无法获取作者信息的数据:

  1. 使用 V4 构建数据以训练大模型,其中 V4 使用 Gemini 进行标注,从而蒸馏出一个 7B 模型。使用上下文来确定类型类别。

2.2 ACC

  1. 使用 V4 和训练集构建数据以训练大模型,其中 V4 使用 Gemini 进行标注,从而蒸馏出 7B 和 14B 模型。
  2. 组合这三个模型。

组合策略 1:固定 SAMN 和 EPI 分别为 P 和 S,其余由多数投票规则决定。

策略 2:对于 SAMN,如果任何模型预测为 P,则设为 P;对于 EPI,如果任何模型预测为 S,则设为 S;其余由多数投票规则决定。

LB 策略 1 表现更好,而 PB 策略 2 显示出更大的提升。

  1. (未选用,lb=0.850, pb=0.771)

获取 EPI_ 的作者信息,并使用作者信息来确定类型。

同比赛其他方案