4.4 通用料件:机器学习数据集构建 本节摘要:没有明确 AI 任务标签的采集需求,要按"数据集思维"组织——用途、构成、许可、局限写进数据集卡片,字段按通用机器学习的口径规整,跨领域(金融、生物医药)的采集差异沉淀为卡片上的限制条款。本节给出卡片实现与构成检查,并盘点两个跨领域专线的关键差异。 探索期的数据集思维 前三条专线都有明确下游,第四种需求更常见也更隐蔽:"这个领域的数据先抓着,以后肯定有用。"没有下游的数据采集,浪费率极高——半年后翻出来,谁也说不清数据从哪来、什么口径、能不能商用。数据集思维是解法:把每次采集当作在构建一个"数据集",哪怕暂时没有消费者,卡片先立起来。
本节摘要:没有明确 AI 任务标签的采集需求,要按"数据集思维"组织——用途、构成、许可、局限写进数据集卡片,字段按通用机器学习的口径规整,跨领域(金融、生物医药)的采集差异沉淀为卡片上的限制条款。本节给出卡片实现与构成检查,并盘点两个跨领域专线的关键差异。
前三条专线都有明确下游,第四种需求更常见也更隐蔽:"这个领域的数据先抓着,以后肯定有用。"没有下游的数据采集,浪费率极高——半年后翻出来,谁也说不清数据从哪来、什么口径、能不能商用。数据集思维是解法:把每次采集当作在构建一个"数据集",哪怕暂时没有消费者,卡片先立起来。
一张卡片回答五个问题:这份数据是什么(领域、粒度、规模)、从哪来(来源与采集方式、时间范围)、能怎么用(授权状态、商用边界)、不能怎么用(已知局限:覆盖偏差、时效衰减)、谁维护(负责人与更新节奏)。前四问在采集完成时就要写得出答案,第五问决定它会不会变成"孤儿数据"。

from dataclasses import dataclass, field, asdict from datetime import date @dataclass class DatasetCard: name: str domain: str # 领域 granularity: str # 粒度:qa对 / 表格行 / 图像 scale: int # 规模 time_span: str # 时间跨度 sources: list = field(default_factory=list) # 来源域名清单 license_status: dict = field(default_factory=dict) # 各来源授权状态 limitations: list = field(default_factory=list) # 已知局限 owner: str = "unassigned" review_date: str = "" def is_usable(self, purpose: str) -> tuple[bool, str]: """按用途检查授权:商用要求全部来源明确可用""" if purpose == "商用": blocked = [s for s, st in self.license_status.items() if st != "明确可用"] if blocked: return False, f"来源待核验: {blocked}" return True, "通过" card = DatasetCard( name="法律问答语料", domain="法律", granularity="问答对", scale=51230, time_span="2016至2026", sources=["司法公开平台", "律所专栏"], license_status={"司法公开平台": "明确可用", "律所专栏": "待核验"}, limitations=["刑事类样本占比偏低", "2024年前数据未含最新修法"], owner="data-team", review_date="2026-09-30", ) print(asdict(card)["scale"]) # 输出:51230 print(card.is_usable("内部实验")) # 输出:(True, '通过') print(card.is_usable("商用")) # 输出:(False, '来源待核验: 律所专栏')
卡片跟着 3.4 节的版本走:数据发布新版本,卡片同步更新并保留历史——"这版数据当时声明的局限"在纠纷复盘时就是证据。
金融专线的特殊性在时效与准确性。行情数据的时间戳精度要到分钟级以上,晚到十分钟的数据对量化场景价值归零;准确性则要交叉验证——单一来源的错价在 2.4 节的蜜罐讨论里见过,金融场景错一个数字就是真金白银。这条专线的采集管线要内置"双源核对加差异告警",落地时也优先考虑官方行情接口而非页面解析。
生物医药专线的特殊性在术语与门槛。文献库(PubMed 一族)与专利库有官方检索接口,合规路径清晰;难点是把自由文本里的基因、蛋白、疾病实体抽成结构化字段——这已经不是采集问题而是抽取问题,管线后端要接命名实体识别。两条专线的共同点:数据源高度集中于几个权威平台,"评审数据源"(3.2 节)的工作量比通用场景小,"字段口径对齐"(3.1 节)的工作量比通用场景大。
常见坑:探索期数据只存内容不存上下文——没有抓取时间、来源 URL、页面版本的"裸数据",半年后授权核验无从谈起,只能整批作废。上下文字段(采何时、从哪页、哪一版)从第一天就要随行。
关键直觉:数据集卡片的价值在"没用上的时候"最大。用上了的数据有管线倒逼维护,没用的数据只有卡片能阻止它烂在仓库里——探索期攒数据,攒的其实是"带元数据的期权"。
探索期数据集最常见的失败不是丢失,而是腐烂,三种迹象要定期巡检。迹象一:review_date 过期未审——授权状态是动态的,某来源条款改版从"可用"变"禁用",卡片却停在旧结论;巡检脚本按 review_date 排期扫描,到期未审自动提醒负责人。迹象二:schema 漂移——来源页面改版后新抓字段的口径变了(金额单位从"万元"变"元"),混入旧批次后统计口径断裂;处置是按抓取批次分目录存储,合并前先跑一轮量纲抽查。迹象三:owner 字段变孤儿——维护人转岗后卡片长期无人认领,需安排交接评审:要么落到新维护人,要么显式标注冻结归档。三类迹象都能收进一张周巡检清单,成本远低于数据作废后重抓。