返回列表

22nd Place Solution | ML

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

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

第 22 名解决方案 | 机器学习

一种混合正则表达式 - 大语言模型管道,旨在让数据计数

作者: Ali_Haider_Ahmad
发布日期: 2025-09-10
竞赛排名: 第 22 名

感谢主办方和参与者。这是一场相当累人且复杂的比赛。

我们的解决方案如下:

DOI 管道

  1. 处理所有 PDF 以提取正文部分,并使用基于 ML 的特殊方法提取干净的 Header(获取作者姓名)和参考章节。
  2. DOI 提取:
    • 固定长度模式(安全使用正则表达式):
      pangaea_pattern = r"(?:1\s*0\s*\.\s*1\s*5\s*9\s*4\s*/\s*)?p\s*a\s*n\s*g\s*a\s*e\s*a\s*\.\s*(?:\s*\d\s*){6}"
      pasta_pattern = r"(?:1\s*0\s*\.\s*6\s*0\s*7\s*3\s*/\s*)?p\s*a\s*s\s*t\s*a\s*/\s*(?:\s*[a-f0-9]\s*){32}"
      doi_pattern = f"(?:{pangaea_pattern})|(?:{pasta_pattern})"
    • 可变长度模式(不安全使用正则表达式,需要大语言模型):
      • 我们首先使用正则表达式突出显示文章中可能的 DOI(基于此模式:r"1\s*0\s*\.\s*\d{4,9}\s*/")。
      • 然后我们创建一个 80 字符的右窗口,并要求 Qwen 7B 或 14B 提取它。
      • 对于特殊品牌模式(没有标准 DOI 前缀 10.xxxx/),我们单独处理并使用特殊提示。
      • 此阶段的交叉验证结果很强(我们主要关心召回率):
        ~doi - f1: 0.7597 [tp: 294 / fp: 157 / fn: 5] → 所以我们只漏掉了 5 个 DOI。
  3. 过滤非数据 DOI:
    • 为了减少假阳性(FP),我们使用微调后的 Qwen 14B 过滤非数据 DOI。
      ~doi - f1: 0.8985 [292 / 59 / 7]
  4. DOI 类型分类:
    • 我们使用微调后的 Qwen 14B 和 4 个提示,取决于可用信息(是否有干净的作者列表,是否有干净的参考文献等)。
      ~doi - f1: 0.8554 [278 / 73 / 21]

Accession ID 提取

我们使用正则表达式和公开解决方案进行分类。


我们提交了两个解决方案进行最终评估:

  1. 纯机器学习(主要解决方案):
    • 公共排行榜:0.80
    • 私有排行榜:0.613
  2. 机器学习 + MDC 语料库:
    • 公共排行榜:0.846
    • 私有排行榜:0.647

注意:
最后一天我们发现其他团队使用 MDC 语料库过滤假阳性。所以我们提交了另一个运行以保持同步。然而,我们觉得这不是一个干净的解决方案 @inversion,因为使用它提出了以下问题:
“当主机想要使用你的代码时,推理模式怎么样?”
他将一无所获,因为你将所有新 DOI 视为假阳性(非数据)。


同比赛其他方案