CoolFace
Datasetpublic

Siyu2Zhou/ICKG-immunology-triple-extraction-sft

ICKG 免疫学知识三元组抽取 SFT 数据集 本数据集用于从 PubMed 免疫学摘要中抽取生物医学知识三元组的指令微调(SFT)。每条样本是一段对话(system / user / assistant),assistant 即为该摘要抽取出的三元组 JSON 数组。配套的微调 adapter 见 Siyu2Zhou/Baichuan-M2-32B-QLoRA-immunology-triples。 数据规模 切分 文件 样本数 train train.jsonl 4,500 validation val.jsonl 250 test test.jsonl 250 合计 5,000 篇摘要 三元组总数 52,597,平均 10.5 条/篇(最少 3、最多 30)。 5,000 篇按「关系覆盖 + 三元组密度」分层抽样(A/B/C 三档 = 2000/2000/1000),并做关系再平衡(associated_with ≥ 35%、increases ≤… See the full description on the dataset page: https://huggingface.co/datasets/Siyu2Zhou/ICKG-immunology-triple-extraction-sft.

sourceHugging Facecc-by-nc-4.0updated 3mo agoView on Hugging Face
0likes26downloads
Dataset Card

ICKG 免疫学知识三元组抽取 SFT 数据集

本数据集用于从 PubMed 免疫学摘要中抽取生物医学知识三元组的指令微调(SFT)。每条样本是一段对话(system / user / assistant),assistant 即为该摘要抽取出的三元组 JSON 数组。配套的微调 adapter 见 Siyu2Zhou/Baichuan-M2-32B-QLoRA-immunology-triples。

数据规模

切分文件样本数
traintrain.jsonl4,500
validationval.jsonl250
testtest.jsonl250
合计5,000 篇摘要
  • —三元组总数 52,597,平均 10.5 条/篇(最少 3、最多 30)。
  • —5,000 篇按「关系覆盖 + 三元组密度」分层抽样(A/B/C 三档 = 2000/2000/1000),并做关系再平衡(associated_with ≥ 35%、increases ≤ 30%),避免长尾关系缺失与头部关系过载。

数据来源与构建

  • —原文:PubMed 免疫学相关摘要(标题 + 摘要)。
  • —标注(教师模型蒸馏):用百川医疗推理模型 Baichuan-M3 API(开启思考)对每篇摘要抽取三元组,经清洗、关系/类型归一、去重后作为 assistant 目标。
  • —因此本数据集为模型蒸馏数据,使用时请同时遵守 PubMed 与 Baichuan 相关条款(详见文末「许可」)。

数据格式

JSONL,每行一个 JSON 对象:

json
{
  "PMID": "31005041",
  "messages": [
    {"role": "system", "content": "# Biomedical Knowledge Triple Extraction Prompt ... (固定的抽取提示词,含实体类型表与关系表)"},
    {"role": "user", "content": "<文章标题> <文章摘要>(连续空白压成单空格)"},
    {"role": "assistant", "content": "[{\"head\": ..., \"head_type\": ..., \"relation\": ..., \"tail\": ..., \"tail_type\": ..., \"source_sentence\": ..., \"score\": ...}, ...]"}
  ]
}
  • —system:固定的「精简版」抽取提示词(约 1,919 token),内含 19 类实体与预定义关系表,约束模型只能用表内的类型与关系。三份切分的 system 完全一致。
  • —user:title.strip() + 空格 + abstract.strip(),再把连续空白压成单空格。
  • —assistant:一个 JSON 数组,每个三元组含 8 个字段:
字段含义
head / head_type头实体及其类型
relation关系(表内预定义,有向:head → relation → tail)
tail / tail_type尾实体及其类型
source_sentence该三元组在原文中的依据句(可溯源)
score模型给出的置信度(0–100)

19 类实体类型

disease(疾病)、phenotype(表型)、chemical(化学物质/代谢物)、cell_type(细胞类型)、cell_line(细胞系)、species(物种)、method(实验/分析方法)、physiology(正常生理过程/状态)、pathology(异常病理过程/状态)、protein(蛋白/细胞因子/受体/酶/转录因子)、anatomy(解剖部位/组织)、gene(基因)、RNA(RNA 分子)、variant(变异/突变/多态/异构体)、intervention(药物/疗法/操作/生活方式干预)、time(时间)、health_factors(生活方式/环境/人口学因素)、pathway(分子/信号通路)、relationship(用作特定关系尾部的复合关联短语)。

关系类型为有向,包含 associated_with(默认兜底)、results_in、promotes、activates、inhibits、increases、decreases、exacerbates、differentiates_into、abbreviation_for 等数十种(完整列表见样本 system 字段中的关系表)。实体类型分布(三元组中)大致为 phenotype 18,353 / disease 14,598 / protein 13,906 ……(详见 sampling_stats)。

加载方式

python
from datasets import load_dataset

ds = load_dataset("Siyu2Zhou/ICKG-immunology-triple-extraction-sft")
print(ds)                      # train / validation / test
ex = ds["train"][0]
print(ex["PMID"])
print(ex["messages"][1]["content"])      # user:标题+摘要
print(ex["messages"][2]["content"])      # assistant:三元组 JSON

逐行读取也可:

python
import json
with open("train.jsonl", encoding="utf-8") as f:
    for line in f:
        obj = json.loads(line)
        triples = json.loads(obj["messages"][2]["content"])

复现微调

配套 QLoRA adapter 与「如何用本数据集 + Baichuan-M2-32B 复现」的完整说明见模型仓库: Siyu2Zhou/Baichuan-M2-32B-QLoRA-immunology-triples。

要点(对齐铁律):训练/推理时不要传 `thinking_mode`,保持 prompt 末尾为 <|im_start|>assistant\n(即「不思考、直接输出 JSON」的分布)。

许可

  • —代码与数据组织:CC BY-NC 4.0(非商业,研究用途;如需调整请自行修改本卡片)。
  • —数据为 Baichuan-M3 蒸馏产物,请遵守 Baichuan 模型相关条款;原文摘要版权归 PubMed/各出版方所有。

引用

如使用本数据集,请注明出处(作者:Siyu Zhou;项目:ICKG 免疫学知识图谱)。