2. 药物文本数据来源与获取

药物文本与分子联合建模的第一步,不是搭模型,而是把“文本从哪来、能不能用、怎么拿到手”这三件事定清楚。药物文本数据具有明显的多源异构特征:文献讲机制与实验,专利讲权利边界与实施例,临床试验登记讲方案与结果,药品说明书讲已获批的适应症、剂量与警示。四类文本在语言风格、结构程度、更新频率和授权条件上差异很大,直接混在一起采集,往往在后期清洗和标注阶段付出成倍代价。因此本节按“来源定位—接口与字段—合规边界—落地采集”的顺序展开,并给出可直接参考的采集清单。

四类核心来源的定位与获取方式

PubMed 文献。PubMed 是生物医学文献的主入口,底层是 MEDLINE 数据库,通过 NCBI E-utilities 提供程序化访问。检索时不要只用自由词,应组合 MeSH 主题词、字段限定和布尔逻辑。例如检索某靶点与耐药相关的文献,可用:

esearch.fcgi?db=pubmed&term=(EGFR[Title/Abstract]) AND (drug resistance[MeSH Terms]) AND ("2018"[PDAT] : "2024"[PDAT])&retmax=200&retmode=json
efetch.fcgi?db=pubmed&id=...&rettype=abstract&retmode=xml

esearch 返回 PMID 列表,efetch 按 PMID 取回摘要或全文元数据。摘要可自由用于内部研究,但全文受出版社版权约束,批量下载全文需通过 PMC 开放获取子集或机构订阅,不能绕过付费墙抓取。NCBI 要求请求频率不超过每秒 3 次(无 API key)或 10 次(有 key),超限会被限流。

专利文本。专利是药物分子结构、晶型、盐型、制剂和用途信息的重要来源。常用入口包括 Google Patents、Espacenet、WIPO PATENTSCOPE 以及各国专利局公开系统。专利文本的关键字段是标题、摘要、权利要求、说明书实施例和化学结构式。采集时优先使用公开的批量数据或官方 API,注意专利文献本身属于公开文献,但大规模镜像和再分发需遵守数据提供方条款。专利中的实施例常包含具体化合物编号、活性数据和制备方法,是分子—文本对齐的高价值样本。

临床试验登记。ClinicalTrials.gov 提供 API(如 https://clinicaltrials.gov/api/v2/studies),可按干预措施、适应症、分期、状态检索,返回 JSON 结构,字段包括 NCT 号、入排标准、主要终点、不良事件等。中国药物临床试验登记与信息公示平台、EU CTR 也是重要补充。登记信息属于公开披露内容,但引用时应注意版本与更新日期,因为方案会修订,同一 NCT 号在不同时间抓取结果可能不同。

药品说明书。说明书是已获批药品的权威文本,包含适应症、用法用量、禁忌、警告、不良反应和药理毒理。美国 FDA 的 DailyMed、欧洲 EMA 的药品信息、中国国家药监局数据库均可查询。说明书结构高度模板化,适合按“章节—段落—句子”切分并抽取实体。需注意说明书受版权保护,内部建模使用通常可行,但对外发布衍生文本需评估授权。

合规使用的三条底线

第一,授权边界:区分开放获取、机构订阅和需单独授权的内容,不把“能访问”等同于“能批量使用和再分发”。第二,访问方式:优先使用官方 API 和批量下载渠道,遵守 robots.txt、速率限制和用户协议,避免高频爬取造成服务压力。第三,数据治理:记录来源、抓取时间、版本、许可类型和字段映射,形成可追溯的数据血缘。对于含患者信息的文本,即使已去标识化,也应避免与可重识别信息关联。

合规不是事后补文件,而是采集设计的一部分。建议在采集脚本中直接写入来源标识、许可字段和抓取时间戳,避免后期无法回溯。

采集落地:从检索到入库

实际工程中,建议按“来源适配器”组织采集:每个来源一个适配器,负责认证、分页、限流、字段映射和错误重试,统一输出为带元数据的 JSONL。下面给出一个可参考的采集记录字段清单:

字段说明示例
source来源类型pubmed / patent / trial / label
source_id来源内唯一标识PMID:38210001 / NCT05123456
title标题EGFR 抑制剂耐药机制研究
text正文或摘要摘要全文
fetched_at抓取时间2024-06-01T10:20:00Z
license许可类型open / subscription / unknown
version版本或更新日期2024-05-20

以 PubMed 为例,一次完整采集可拆为:构造检索式 → esearch 取 PMID → efetch 取 XML → 解析标题、摘要、MeSH、发表年份 → 写入 JSONL 并记录 license 与 fetched_at。若某条记录解析失败,应保留原始 XML 并标记错误类型,而不是直接丢弃。对于专利和说明书,重点抽取结构化段落;对于临床试验,重点抽取入排标准和终点字段。采集完成后,用少量样本人工核对字段映射是否正确,再进入清洗与标注环节。

药物文本四类来源:采集通道与合规边界 PubMed 文献 E-utilities API esearch → efetch 摘要 / MeSH / PMID 限流 3~10 次/秒 专利文本 Google Patents / Espacenet 权利要求 / 实施例 化合物编号 / 活性数据 公开但再分发受限 临床试验登记 ClinicalTrials.gov API NCT 号 / 入排标准 终点 / 不良事件 注意方案版本更新 药品说明书 DailyMed / EMA / NMPA 适应症 / 剂量 / 禁忌 警告 / 不良反应 模板化,易切分 合规闸门:授权 · 访问方式 · 数据治理 许可类型 / 速率限制 / 来源与时间戳 统一采集输出:JSONL 记录 source · source_id · title · text · fetched_at · license · version 清洗 · 标注 · 分子—文本对齐