Files
backend/docs/13-文献数据质量报告.md
T
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

204 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 文献数据质量报告
> 报告日期:2026-07-24
> 数据来源:本地 PostgreSQL 数据库(scilit_dev
> 总文献数:1,662 篇
> 数据来源分布:seed_data = 110, pubmed_api = 1,552
---
## 1. 字段覆盖率总览
### 基础字段
| 字段 | 覆盖数 | 覆盖率 | 数据类型 | 状态 |
|------|--------|--------|---------|------|
| `pmid` | 1,662 | **100.0%** | INTEGER | ✅ 完整 |
| `title` | 1,652 | **99.4%** | TEXT | ✅ 完整 |
| `abstract` | 1,550 | **93.3%** | TEXT | ✅ 充分 |
| `doi` | 1,548 | **93.1%** | VARCHAR(255) | ✅ 充分 |
| `journal` | 1,662 | **100.0%** | VARCHAR(255) | ✅ 完整 |
| `journal_issn` | 1,662 | **100.0%** | VARCHAR(20) | ✅ 完整 |
| `journal_iso` | **0** | **0%** | VARCHAR(100) | ❌ **缺失** |
| `pub_year` | 1,662 | **100.0%** | INTEGER | ✅ 完整 |
| `pub_date` | 1,148 | **69.1%** | DATE | ⚠️ 部分 |
| `volume` | 1,292 | 77.7% | VARCHAR(20) | ️ |
| `issue` | 1,247 | 75.0% | VARCHAR(20) | ️ |
| `pages` | 1,117 | 67.2% | VARCHAR(50) | ️ |
| `language` | 1,644 | **98.9%** | VARCHAR(10) | ✅ 充分 |
| `pmc_id` | **9** | **0.5%** | VARCHAR(20) | ❌ Bug |
| `is_oa` | 9 | 0.5% | BOOLEAN | ❌ Bug |
| `retracted` | 0 | 0% | BOOLEAN | ✅(全库无撤稿) |
### JSON 字段
| 字段 | 非空计数 | 覆盖率 | 数据类型 | 状态 |
|------|---------|--------|---------|------|
| `authors` | 1,659 | **99.8%** | json | ✅ 完整 |
| `pub_types` | 1,557 | **93.7%** | json | ✅ 充分 |
| `mesh_headings` | 845 | **50.8%** | json | ⚠️ 部分 |
| `study_design` | 1,552 | **93.4%** | json | ✅ 充分 |
| `chemical_list` | 508 | **30.6%** | json | ⚠️ 部分 |
| `grants` | 323 | **19.4%** | json | ⚠️ 部分 |
| `databank_list` | 29 | **1.7%** | json | ❌ 缺失 |
| `suppl_mesh_list` | 19 | **1.1%** | json | ❌ 缺失 |
| `keywords` | **0** | **0%** | json | ❌ **缺失** |
| `gene_symbols` | **0** | **0%** | json | ❌ **缺失** |
| `retraction_details` | 0 | 0% | json | ✅(全库无撤稿) |
| `full_text_sections` | 7 | **0.4%** | json | ❌ 仅 PMC OA 实验 |
### TSVECTOR 字段
| 字段 | 覆盖数 | 覆盖率 | 状态 |
|------|--------|--------|------|
| `search_tsv` | 1,662 | **100.0%** | ✅ 完整(但无 setweight |
### 日期间相关字段
| 字段 | 覆盖数 | 覆盖率 | 状态 |
|------|--------|--------|------|
| `pub_date` | 1,148 | 69.1% | ⚠️ 部分 |
| `article_date` | 1,148 | 69.1% | ⚠️ 部分 |
| `pubmed_revised` | 1,552 | 93.4% | ✅ 充分 |
| `date_completed` | 558 | 33.6% | ⚠️ 部分 |
| `publication_status` | 1,552 | 93.4% | ✅ 充分 |
| `citation_status` | 879 | 52.9% | ⚠️ 部分 |
---
## 2. 坏数据诊断
### 2.1 关键 Bug
| # | 问题 | 影响 | 根因 |
|---|------|------|------|
| 1 | `journal_iso` 0% | [TA] 缩写期刊搜索不可用 | XML 解析器已解析但 Europe PMC 路径未解析?实际检查代码第 533 行已解析,但 seed_data 无此字段 |
| 2 | `keywords` 0% | [OT] 关键词搜索不可用 | XML 解析器第 500-503 行已解析,需检查 seed_data 和 Europe PMC 路径 |
| 3 | `pmc_id` 仅 9 篇 | [PMC] 搜索不可用,PMC OA 全文抓取不可用 | XPath 上下文 Bug`article.findall` → 应改为 `article_elem.findall` |
| 4 | `tree_numbers` 0 行 | 所有 [MH]/[MAJR] 查询 0 结果 | NLM mtrees.bin 未导入,`import_mesh_tags.py` 未执行 |
| 5 | `suppl_mesh_list` 仅 1.1% | 补充 MeSH 搜索不可用 | 解析器已实现但 NLM 数据量小 |
### 2.2 数据异常
| 问题 | 详情 |
|------|------|
| 年份集中 | 1,604/1,662 (96.5%) ∈ 2026,早期文献极少(仅有 58 篇 2025 年) |
| 被引为 0 | 中位被引次数为 0,平均值 0.6 |
| 标签稀疏 | 每篇文献中位仅 1 个标签(P99=6),28/99 标签关联 0 篇文献 |
| 标签来源单一 | 99 个标签全部 `source=manual`,无 `mesh``auto` 来源标签 |
| 中文极少 | 35/1,662 (2.1%) 中文文献 |
---
## 3. 标签统计
### 标签来源分布
| 来源 | 数量 | Active |
|------|------|--------|
| manual | 99 | True |
`global_tag_tree_numbers`**0 行**(空表)
### 文献-标签关系
| 指标 | 值 |
|------|----|
| 总关联数 | 997 |
| is_major=True | 946 (94.9%) |
| is_major=False | 51 (5.1%) |
| 每篇标签 P50 | 1 |
| 每篇标签 P75 | 2 |
| 每篇标签 P90 | 5 |
| 每篇标签 P99 | 6 |
| 未使用标签 | 28 个(0 篇文献关联) |
### Top 10 标签覆盖率
| 标签 | 关联文献数 |
|------|-----------|
| 标签 #1 | 66 |
| 标签 #2 | 62 |
| 标签 #3 | 55 |
| 标签 #4 | 51 |
| 标签 #5 | 50 |
| 标签 #6 | 50 |
| 标签 #7 | 48 |
| 标签 #8 | 47 |
| 标签 #9 | 44 |
| 标签 #10 | 41 |
---
## 4. pubmed_api 来源字段质量
1,552 篇 `source=pubmed_api` 的字段覆盖:
| 字段 | coverage | 说明 |
|------|----------|------|
| publication_status | 1,552 (100%) | ppublish=544, epublish=530, aheadofprint=478 |
| citation_status | 879 (56.6%) | MEDLINE=502, Publisher=254, In-Process=64, PubMed-not-MEDLINE=59 |
| language | 1,534 (98.8%) | eng=1,496, en… 等 |
| study_design | 1,552 (100%) | 自动分类结果 |
| trial_reg | ~93% | 大部分有(即使空对象) |
| chemical_list | ~31% | 部分文献有化学列表 |
| grants | ~21% | 部分文献有基金信息 |
| databank_list | ~2% | 极少 |
| suppl_mesh_list | ~1% | 极少 |
| full_text_sections | 7 | 仅实验性抓取 |
---
## 5. 优先改进项
### P0(影响搜索基础功能)
| 改进项 | 当前 | 目标 | 方法 |
|--------|------|------|------|
| `journal_iso` 覆盖率 | 0% → **100%** | 修复 seed_data 和 Europe PMC 路径的 journal_iso 解析 |
| `tree_numbers` | 0 行 → **全量** | 运行 `import_mesh_tags.py` 导入 NLM mtrees2025.bin |
| `is_negative_result` | 仅 pubmed_api 有 → **所有** | 构造函数补全 + seed_data 回填 |
| 构造函数 5 字段 | 部分缺失 → **全部** | 代码修复 |
### P1(影响搜索能力)
| 改进项 | 说明 |
|--------|------|
| `keywords` 覆盖率 0% → 有数据 | 修复 keyword 解析器路径 |
| `pmc_id` 覆盖率提升 | XPath Bug 修复后运行 pipeline 回填 |
| `entrez_date` 新字段 | PubmedData/History 解析 |
| `grants` Europe PMC 路径补全 | grants 从 Europe PMC JSON 解析 |
### P2(影响搜索体验)
| 改进项 | 说明 |
|------|--------|
| 缺失索引(6 个) | B-tree + GIN + trigram |
| JSON 列 json → jsonb | 启用 `@>` 等运算符 |
| `GlobalTagTreeNumber` 导出 | 模型导出修复 |
---
## 6. 数据库索引现状
### 当前索引
```
ix_global_literature_pub_date B-tree (pub_date)
ix_global_literature_search_tsv GIN (search_tsv)
ix_global_literature_pmid UNIQUE B-tree (pmid)
ix_global_literature_doi UNIQUE B-tree (doi)
```
### 缺失索引
| 索引 | 类型 | 用途 |
|------|------|------|
| `ix_global_literature_journal_iso` | B-tree | `[TA]` 期刊缩写搜索 |
| `ix_global_literature_pub_types` | GIN jsonb_path_ops | 文献类型筛选 |
| `ix_global_literature_study_design` | GIN jsonb_path_ops | 研究设计筛选 |
| `ix_global_literature_retracted` | B-tree | 撤稿过滤 |
| `ix_global_literature_language` | B-tree | `[LA]` 搜索 |
| `ix_global_literature_grants` | GIN | `[GR]` JSONB 搜索 |
| `ix_global_literature_chemical_list` | GIN | `[NM]` JSONB 搜索 |