4.3 KiB
Executable File
4.3 KiB
Executable File
PlantScience.ai 技术深度分析
如何提高提取准确度
1. 核心技术栈
| 组件 | 技术 | 作用 |
|---|---|---|
| PDF解析 | Grobid | 将PDF转为结构化文本 |
| 知识提取 | GPT-4o-mini | NER + 关系提取 |
| 文本处理 | 滑动窗口 (1500 tokens + 200 overlap) | 处理长文本 |
| 知识存储 | Neo4j | 知识图谱存储 |
2. 提高准确度的关键技术
2.1 In-Context Learning (上下文学习)
方法: 在prompt中加入5个专家手工编写的示例
作用: 让LLM理解领域特定的实体类型和关系模式
效果: 提高NER和关系提取的准确性
2.2 多轮审查机制 (Multi-round Scrutiny)
第一轮: 提取所有生物实体
第二轮: 审查问题1 - "当前提取是否覆盖了原文中所有生物实体?"
第三轮: 审查问题2 - "当前提取是否包含了原文中不存在的生物实体?"
第四轮: 提取实体间的关系
2.3 滑动窗口 + 重叠
窗口大小: 1500 tokens
重叠: 200 tokens
作用: 确保跨窗口的实体和关系不被遗漏
2.4 文本预处理
- 标准化编码
- 修正特殊字符
- 过滤换行符
- 全部转为小写
3. 知识图谱构建流程
PDF → Grobid解析 → 文本分块 → GPT-4o-mini提取 → 多轮审查 →
实体标准化(同义词合并) → 生成描述 → 分类(预定义类别) → Neo4j存储
4. 数据规模
| 时间 | 实体数 | 关系数 |
|---|---|---|
| 2025年6月 | 120万 | 400万 |
| 2025年9月 | 180万 | - |
5. 评估结果
与通用LLM对比 (1770个问题,19个类别):
| 模型 | PlantScience.ai胜率 |
|---|---|
| Gemini Pro | 82.3% |
| Gemini Flash | 86.0% |
| Opus 4.5 | 87.6% |
| Haiku-4.5 | 73.1% |
| GPT-5 | 73.5% |
| GPT-4o-mini | 86.0% |
6. 关键技术对比
| 技术 | PlantScience.ai | Gene Family MAS |
|---|---|---|
| PDF解析 | Grobid | PyMuPDF |
| LLM提取 | GPT-4o-mini (必须) | 可选 (本地/远程) |
| In-Context Learning | ✅ 5个示例 | ✅ 可配置 |
| 多轮审查 | ✅ 显式审查问题 | ✅ 置信度评分 |
| 滑动窗口 | ✅ 1500+200 | ❌ 整篇处理 |
| 补充材料获取 | ❌ | ✅ v5 Universal |
| 系统发育提取 | ❌ | ✅ 专有提取器 |
| 可追溯性 | ✅ DOI链接 | ✅ 来源引用 |
7. PlantScience.ai的优势
- 大规模数据: 180万实体,400万关系
- 领域覆盖广: 整个植物生物学
- 持续学习: 增量更新机制
- 人工反馈: 150+科学家参与测试
8. PlantScience.ai的局限
- 依赖OpenAI: 必须使用GPT-4o-mini,成本高
- 通用性强但深度不足: 无基因家族特定功能
- 无补充材料获取: 无法获取PMC补充材料
- 无系统发育提取: 无法提取系统发育分组信息
9. 可以借鉴的技术
9.1 In-Context Learning
# 在v5提取器中添加示例
EXAMPLES = [
{
"text": "The CYP71 clan contains 43 genes...",
"entities": ["CYP71", "genes"],
"groups": {"Group_71": ["CYP71D1", "CYP71D2"]}
},
# 更多示例...
]
9.2 多轮审查机制
# 添加审查步骤
def scrutinize_extraction(text, extraction):
"""审查提取结果"""
questions = [
"Does the extraction cover all phylogenetic groups?",
"Does the extraction contain any non-existent genes?",
"Are all gene IDs in the correct format (e.g., CYP71D1)?"
]
# 使用LLM审查...
9.3 滑动窗口处理
# 添加滑动窗口
def sliding_window_extract(text, window_size=1500, overlap=200):
"""滑动窗口提取"""
chunks = []
for i in range(0, len(text), window_size - overlap):
chunk = text[i:i + window_size]
chunks.append(chunk)
# 合并结果...
10. 结论
PlantScience.ai通过以下方式提高准确度:
- In-Context Learning: 领域示例引导
- 多轮审查: 自我纠错机制
- 滑动窗口: 避免长文本遗漏
- 大规模验证: 150+专家反馈
Gene Family MAS可以借鉴:
- 添加In-Context Learning示例
- 实现多轮审查机制
- 添加滑动窗口处理长文本
- 保持v5提取器的补充材料获取优势
Gene Family MAS的差异化优势:
- 专精基因家族分析
- v5系统发育提取(独有)
- 补充材料智能获取(独有)
- 可选本地LLM(无OpenAI依赖)