Files
backend/docs/11-数据质量报告.md
34047007@qq.com a6cd99a4ca
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
feat: initial commit - oncology literature search platform
OncoLit: a multi-tenant oncology literature search, feed, and
collaboration platform. Built with FastAPI + Vue 3 + PostgreSQL.
Includes PubMed pipeline, drug approvals, AI summaries, and
systematic review tools.
2026-07-27 07:59:18 +08:00

8.6 KiB
Raw Permalink Blame History

文献数据质量报告

最后更新:2026-07-23 · 来源:global_literature 表统计 · 基线导入后

数据总览

维度 数值 覆盖率 状态
总文献 1,222,688 100%
有摘要 1,110,080 90.8%
有 DOI 1,171,276 95.8%
有研究设计 436,748 35.7% 🟡 见下方说明
有引用次数 (>0) 1,744 0.1% 🟡 见下方说明
已打标(GlobalTag 928,830+ 76.0%
有 MeSH 头 899,275+ 73.6%
无 MeSH(文本过滤入库) 323,094+ 26.4%
有 PICO 0 0% 🔴 待处理
有 OA 全文 490 0.04% PMC 平台覆盖率预期值)
有 AI 摘要 1 ~0% 🔴 待处理
有格兰特信息 252,476 20.7% 🟡

数据来源分布

来源 文献数 占比
pubmed_ftp(基线导入) 1,219,536 99.7%
pubmed_api(日常精搜) 2,668 0.2%
europe_pmc 484 <0.1%

99.7% 来自基线导入,日常 API 管道目前在补充最新文献。

基线导入状态

PubMed 2026 基线共 1,334 个文件(n0001n1334)。其中:

文件 状态 处理结果
n0001pubmed26n0001.xml.gz gzip 损坏(invalid compressed data 已用 recover=True 修复,导入 195 篇肿瘤文献
n0002pubmed26n0002.xml.gz gzip 截断(unexpected end of file 已用 recover=True 修复,导入 124 篇肿瘤文献
n0003n1334 正常 原始导入已覆盖,跳过

技术修复import_xml_file()for _event, elem in context: 外层加了 try/except,确保 iterparse 因 XML 损坏抛出异常时,已解析的文章仍被 flush+commit,不会回滚。

已处理文件n0001+n0002(共 +319 篇),其余文件的肿瘤文献已在原始基线导入中正确入库,无需重跑。

各维度详解

1. 有摘要( 90.8%

1,110,080/1,222,688 篇文献有英文摘要。112,289 篇无摘要主要是 PubMed 基线中的会议摘要、信件、评论等短类型文献,在过滤规则下会因标题命中关键词而被收录。

2. 研究设计分类(🟡 35.7% → 目标 70%+

436,748 篇已通过 classify_study_design() 自动分类(基于 PubMed PublicationType)。Python 侧的 classify_study_design 对部分文献未返回结果,剩余文献的 study_design 为空。

提升途径:运行 POST /admin/pipeline/backfill-study-designs 回填。

3. MeSH 标签覆盖( 76.0% 已打标)

关键指标

指标 数值
有 MeSH 头 899,275+ (73.6%)
有 MeSH 且已打标 899,275+ (100%)
无 MeSH(文本过滤) 323,094+ (26.4%)
已打标总结 928,830+ (76.0%)

打标完整性 100%:所有有 MeSH Headings 的文献都已关联 global_literature_tags。这是因为 tag_service.py懒创建机制在打标时自动补建不存在的标签。

打标流程(自 2026-07-23 修复后):

  1. mesh_ui 精确匹配 → 命中存量标签(auto/manual/mesh
  2. 同时按 name_en 匹配 C04 导入标签2026-07-23 新增,确保无 mesh_ui 的 C04 标签也被关联)
  3. 仍未匹配 → 自动懒创建标签(source=auto, is_active=false

标签活跃度分布

来源 活跃 数量 说明
manual 活跃 99 手工维护的 116 个种子标签
mesh 活跃 505 C04 导入标签(level ≤ 3is_selectable
mesh 未激活 165 C04 导入标签(深层,仅用于搜索展开)
auto 未激活 20,150 懒创建标签,待人工审核

20,150 个懒创建标签来自打标时发现的不在 global_tags 中的 MeSH Descriptor。这些标签已标记 is_active=false,用户端不可见,但搜索时 [MH] 树号展开仍能匹配。

4. C04 肿瘤分类覆盖

指标 数值
已导入 C04 Descriptor 701 个
已注册 C04 树号 1,070 + 985(回填)条
C04 树号确认的文献 375,072 篇
按 tag_category=cancer 分类 573,751 篇
C04 占 cancer 类 65.3%

2026-07-23 修正:此前报告的 161,636 篇是仅通过 C04 导入标签(有 tree_number)确认的文献。实际 C04 覆盖为 375,072 篇,差距是时序问题导致的:

  • 基线导入先执行 → tag_service.py 懒创建了 auto 标签(有 mesh_ui,无 tree_number
  • import_mesh_tags.py 后执行 → C04 导入标签(有 tree_number,无 mesh_ui)成为孤儿
  • 两个修复已部署:
    1. tag_service.py 增加 name_en 并行匹配(不做 mesh_ui 独占)
    2. 给已在库的 auto 标签回填 tree_number985 条记录)

5. 引用次数(🟡 0.1% >0,待刷新)

1,744 篇文献有引用次数。当前引用数分布呈两极(仅 0 和 1001+),说明引用数据尚未经过全量刷新:

  • 基线导入时 cited_by_count=0(新文献)
  • cited_by_count > 1000 可能是 elink API 返回格式异常导致(参见第 6 节)

下一步:运行 POST /admin/pipeline/refresh-citations 全量刷新。每日定时任务 daily_citation_update 05:13 UTC 自动刷新。

6. 文本覆盖率

字段 覆盖率 数值
有摘要 90.8% 1,110,080
有 DOI 95.8% 1,171,276
有关键词 <0.1% 334
有基金信息 20.7% 252,476
有化学物质 <0.1% 885
有基因符号 0% 0

7. 年度分布

文献时间跨度合理:

年份范围 文献数
2026-2027 32,214
2024-2025 133,935
2022-2023 346,237
2020-2021 330,259
2016-2019 374,240

8. 语种分布

语种 文献数 占比
英语 1,187,243 97.1%
中文 13,118 1.1%
其他 22,008 1.8%

9. 标签分类覆盖

global_tags.tag_category 分类的文献覆盖:

分类 覆盖文献数 标签种类
cancer(癌种) 573,751 533
mesh_other(其他 MeSH 222,895 1,207
gene(基因/靶点) 204,264 18,956
treatment(治疗) 144,920 9
endpoint(终点) 144,409 9
scenario(场景) 117,041 10
study_type(研究类型) 56,127 7

注:gene 标签种类多(18,956)因 MeSH Chemical/Drug 条目被自动分类为 gene 类。

10. 期刊 Tier 分布

Tier 文献数 占比
4(默认,未匹配) 1,154,516 94.4%
3 597 <0.1%
2 5,955 0.5%
1 36 <0.1%
unknown(无 ISSN 记录) 61,265 5.0%

期刊 Tier 映射覆盖率极低global_journals 表只有 17 个预定义期刊。94.4% 的文献落入 tier 4 默认值。如需基于期刊质量的排序或过滤,需要扩充期刊索引。

已知问题

🟡 引用次数刷新滞后

基线导入后引用次数尚未全量刷新。可通过 daily_citation_update 定时任务逐步补全。

🟡 研究设计分类仅 35.7%

classify_study_design() 对基线导入的 XML 解析覆盖率不够。运行 backfill-study-designs 接口可提升。

🟡 PICO 要素未提取

0 篇文献有 PICO 数据。需执行 POST /admin/pipeline/extract-pico

🟡 AI 摘要仅 1 篇

尚未批量运行 AI 摘要生成。需执行 POST /admin/ai/summarize

🟡 懒创建标签待审核

20,150 个 source=auto, is_active=false 的标签需要人工审核是否归属到正确分类、补充中文名。

🟡 期刊 Tier 映射几乎为空

global_journals 需要从外部源(如 SCImago Journal Rank)批量导入期刊 Tier 数据。

🟡 两个基线文件 gzip 损坏

pubmed26n0001.xml.gzpubmed26n0002.xml.gz 在下载或解压过程中发生损坏。已通过 etree.XMLParser(recover=True) 在修复后的 import_xml_file() 中正确导入,共恢复 319 篇肿瘤文献。

生产环境监控

Dashboard 数据质量面板

管理后台 → 首页 Dashboard 已有数据质量卡片,展示 7 个进度条:

  • 有摘要 / 已打标 / 有引用次数 / 有研究设计 / 有DOI / 有OA全文 / 有PICO

建议的监控频率

指标 检查频率 预警阈值
总文献数 每日 连续 3 天增长 < 50 篇
已打标率 每周 < 70%
C04 树号覆盖率 每周 < 60% of tag_category=cancer
应用覆盖率 每月 < 85%
引用刷新成功率 每日 连续 3 天 error > 0
管道运行成功率 每日 任何失败
懒创建标签积压 每周 > 25,000