# PlantConnectome 工作原理深度分析 ## 核心发现 ### PC的数据来源 **不是从chunks提取,而是从完整论文原文处理!** ``` 输入: 71,000篇论文 (abstracts + full-texts) ↓ GPT-4o处理 ├── 实体识别: 基因、代谢物、组织等 ├── 关系抽取: 调控、表达、运输等 └── 证据提取: 原文片段、实验方法 ↓ 输出 ├── all_dic.json: 320万关系三元组 ├── scientific_chunks.json: 实体索引的文本片段 └── gene_alias.json: 基因别名映射 ``` --- ## PC vs 我们的方案对比 ### 数据来源对比 | 维度 | PlantConnectome | gene-family-mas-v2 | |------|-----------------|-------------------| | **输入** | 71,000篇完整论文 | 1篇PDF + 附表 | | **文本来源** | PubMed abstracts + full-texts | PDF提取的章节 | | **预处理** | GPT-4o批量处理 | V12.1规则提取 | | **输出** | 320万关系 | 107关系 | ### 关键差异 #### 1. 文本长度 ``` PC的输入: - Abstract: 200-300词 - Full-text: 3,000-10,000词 - 每篇论文可抽取数十个关系 我们的输入: - Gene-centric chunk: 100-500字符 - 只有基因摘要,缺少详细描述 - 每个基因只能抽取0-3个关系 ``` #### 2. 信息完整性 ``` PC的信息: - 基因表达: "SUC5 is expressed in developing embryos" - 功能描述: "SUC5 transports biotin and sucrose" - 实验证据: "Uptake measurements of radiolabelled biotin" - 物种信息: "Arabidopsis thaliana" 我们的信息: - 基因表达: {"Root": "High"} (结构化数据) - 功能描述: 缺少详细文本 - 实验证据: 缺少方法描述 - 物种信息: "Litchi chinensis" (单一物种) ``` #### 3. 关系抽取方法 ``` PC的方法 (GPT-4o): 1. 读取完整论文文本 2. 识别所有基因实体 3. 理解上下文语义 4. 抽取关系三元组 5. 生成实体定义 6. 提取证据文本 我们的方法 (规则匹配): 1. 读取gene-centric chunk 2. 正则表达式匹配关键词 3. 基于模式抽取关系 4. 无法处理复杂语义 ``` --- ## PC的工作原理详解 ### 阶段1: 数据预处理 (离线) #### 1.1 论文获取 ```python # 从PubMed获取71,000篇论文 papers = fetch_pubmed_papers(query="Arabidopsis gene", limit=71000) for paper in papers: pmid = paper['pmid'] abstract = paper['abstract'] fulltext = paper['fulltext'] # 通过PMC获取 ``` #### 1.2 GPT-4o处理 ```python # 使用GPT-4o处理每篇论文 prompt = f""" 从以下论文中提取基因关系: PMID: {pmid} Title: {title} Abstract: {abstract} Full-text: {fulltext} 任务: 1. 识别所有基因实体 2. 提取关系三元组 (source, relationship, target) 3. 确定实体类型 (gene, protein, metabolite, tissue...) 4. 提取证据文本 5. 生成实体定义 输出格式: {{ "entities": [ {{ "name": "SUC5", "type": "gene", "definition": "A sucrose transporter gene...", "aliases": ["ATSUC5", "AT1G71890"] }} ], "relations": [ {{ "source": "SUC5", "source_type": "gene", "relationship": "transports", "target": "biotin", "target_type": "metabolite", "evidence": "SUC5 also transports biotin...", "basis": "Uptake measurements..." }} ] }} """ result = gpt4o.generate(prompt) ``` #### 1.3 数据存储 ```python # 存储到MongoDB db.all_dic.insert_many(relations) db.scientific_chunks.insert_many(chunks) db.gene_alias.insert_many(aliases) ``` ### 阶段2: 查询服务 (在线) #### 2.1 用户查询 ```python # 用户搜索 "SUC5" query = "SUC5" results = db.all_dic.find({"source": query}) ``` #### 2.2 关系验证 (GPT-4o-mini) ```python # 验证关系准确性 prompt = f""" 验证以下关系是否正确: 文本: {evidence_text} 关系: ({source}, {relationship}, {target}) 输出: - Validation Status: ✅ Correct / ❓ Uncertain / ❌ Incorrect - Supporting Evidence: [原文引用] - Explanation: [解释] """ validation = gpt4o_mini.generate(prompt) ``` #### 2.3 原文获取 ```python # 通过PMID获取原文 p_source = "23031218_abstract" pmid = p_source.split('_')[0] # 调用PubMed API original_text = pubmed_api.fetch(pmid) ``` --- ## 我们的改进方案 ### 方案A: 使用V12.1章节文本 (推荐) ```python # V12.1已经提取了章节文本 sections = { "Introduction": "...", "Expression Analysis": "...详细表达描述...", "Functional Characterization": "...功能描述...", "Subcellular Localization": "...定位描述...", "Discussion": "..." } # 使用章节文本进行LLM抽取 for section_name, text in sections.items(): relations = llm_extractor.extract(text, gene_id) ``` **优势**: - 已有完整文本 - 无需额外API调用 - 信息丰富 ### 方案B: 整合多数据源 ```python # 结合多个数据源 data_sources = { "gene_centric_chunks": chunks, "paper_sections": sections, "supplementary_tables": tables, "figures_captions": captions } # 综合抽取 all_relations = [] for source, text in data_sources.items(): relations = llm_extractor.extract(text, gene_id) all_relations.extend(relations) ``` ### 方案C: 批量论文处理 (长期) ```python # 类似PC的方法,但针对基因家族 papers = search_gene_family_papers(family="SUT", species="Litchi") for paper in papers: relations = gpt4o.extract(paper) store_to_kg(relations) ``` --- ## 关键结论 ### PC的优势 1. **规模大**: 71,000篇论文 2. **信息全**: 完整abstract + full-text 3. **智能高**: GPT-4o理解语义 4. **关系多**: 320万关系 ### 我们的优势 1. **深度深**: 单基因详细信息 2. **结构好**: 染色体、分组、多组学 3. **成本低**: 无需大量API调用 4. **可控强**: 规则+人工验证 ### 互补性 ``` PC: 广度优先 (多论文, 浅信息) GF: 深度优先 (少论文, 深信息) 结合: PC的广度 + GF的深度 = 完整知识图谱 ``` --- ## 实施建议 ### 短期 (本周) 1. 使用V12.1章节文本重新抽取 2. 实现简单的LLM抽取 (规则+轻量LLM) 3. 验证抽取质量 ### 中期 (本月) 1. 批量处理10-20篇相关论文 2. 构建基因家族专用知识图谱 3. 与PC数据对齐 ### 长期 (本季度) 1. 实现完整的GPT-4o抽取流程 2. 构建可扩展的抽取pipeline 3. 发布基因家族知识图谱API