Skip to content
li5435945-ship-itPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

CCL 2026 MGBIE — 不微调组别

农业科学/作物遗传学领域多粒度双语信息抽取。NER (12 实体类型) + RE (6 关系类型),字符级偏移量。

约束: 不微调,仅 Prompt Engineering / ICL / RAG。
Baseline (test_A): 0.448


评分公式

ScoreNER = 0.5×F1 + 0.25×P + 0.25×R
ScoreRE  = 0.5×F1 + 0.25×P + 0.25×R
Total    = 0.4×ScoreNER + 0.6×ScoreRE

RE 权重 60%,是主要优化方向。


实验总结

最佳方案排行

# 方案 分支 实体模型 关系模型 ScoreNER ScoreRE Total
1 v6 Pro+Flash v6-pro-thinking Pro T=0.3 Flash 思考+Fewshot 0.703 0.256 0.434
2 v5 多温度投票 multi-temp-voting Flash 4温 Flash 4温 0.644 0.251 0.408
3 v1 联合抽取 master Flash T=0 Flash T=0 0.614 0.216 0.376
4 v3 三阶段 master Flash Flash 0.596 0.228 0.375
5 v4 约束选择 v4-constrained-rel Flash Flash 约束 0.625 0.124 0.324

各方案详情


v1 — RAG-ICL 联合抽取(基线)

rag_extractor.py | 模型: deepseek-chat (Flash), T=0

Sentence-Transformers 检索 top-3 相似训练样本,单次 API 同时输出实体+关系。

ScoreNER ScoreRE Total
0.614 0.216 0.376

问题: 关系 Precision 18%(356 pred / 64 TP),自由生成导致严重过预测。


v3 — 三阶段流水线

advanced_pipeline.py | 模型: deepseek-chat

Stage1 实体 → Stage2 关系 → Stage3 offset 修正。

ScoreNER ScoreRE Total
0.596 0.228 0.375

结论: 分离 Prompt 未改善过预测。Stage1 多输出实体→Stage2 更多假关系。


v4 — 关系约束分类

rel_classifier.py | 分支: v4-constrained-rel

用训练数据统计合法 (head_type, rel, tail_type) 三元组,限制模型只能从合法标签中选择。

版本 ScoreNER ScoreRE Total 关系数
v4 强制选择 0.625 0.124 0.324 4590 pred / 246 gold
v4b 非强制 0.608 0.155 0.336 972 pred / 246 gold

结论: 约束池太大(80 种类型组合×N² 实体对),无论强制还是非强制都过预测。此路不通。


v5 — 多温度投票

分支: multi-temp-voting | 模型: deepseek-chat × 4 温度

同模型 4 个温度(0.01/0.1/0.3/0.6)独立抽取 → ensemble 投票。

温度 ScoreNER ScoreRE Total
0.01 0.628 0.253 0.403
0.1 0.622 0.192 0.364
0.3 0.636 0.253 0.406
0.6 0.616 0.247 0.394
投票 0.644 0.251 0.408

发现: 0.3 是最优单温度;NER 投票有效(+0.03);RE 投票几乎无效(同模型错误模式相似)。


v6 — Pro 实体 + Flash 思考关系

分支: v6-pro-thinking | 当前最佳

实体: deepseek-v4-pro (thinking=disabled, T=0.3) + 泛词排除 Prompt
关系: deepseek-v4-flash (thinking=enabled) + Few-shot + 方向定义 Prompt

ScoreNER ScoreRE Total 验证集
0.703 0.256 0.434 val20 (20条)

关键发现:

  • Pro 比 Flash 实体好一截(0.703 vs 0.644)
  • Flash 思考模式不加 Few-shot → RE=0.119;加 Few-shot → RE=0.256
  • 方向 Prompt 让 CON 关系从全部反转 → 全部正确

R1 推理模型实验(探索中)

分支: v6-pro-thinking | 模型: Pro/deepseek-ai/DeepSeek-R1 (硅基流动)

用 Pro 实体 + R1 做关系抽取,配三层防护:

层 内容 效果
1 实体泛词排除 (condition/pattern/response等) 实体 FP 接近 0
2 三步证据校验 (原文动词→结果vs背景→标签) 部分条目完美
3 生物约束矩阵 (每种关系限定head/tail类型) 后处理安全网

单条目最佳结果: 7/7 TP, 0 FP (100% Precision, 100% Recall)

5 条目实测: 1 条完美,1 条 21 FP 爆炸,1 条 0 输出,1 条超时,1 条未跑。
结论: R1 逻辑强但不稳定,且 2-5 分钟/条+频繁超时,暂不可批量使用。


模型能力矩阵

模型 平台 速度 thinking 适用
deepseek-chat (Flash) DeepSeek 2s 非思考 实体(NER 0.64)
deepseek-v4-pro DeepSeek 4s thinking=disabled 实体(NER 0.70)
deepseek-v4-flash DeepSeek 12-20s thinking=enabled 关系(需Fewshot)
deepseek-v4-pro DeepSeek 62s thinking=enabled 太慢+content空,不用
Pro/DeepSeek-R1 硅基流动 120-300s 推理 强但不稳定,待优化
Qwen3-30B-Thinking 硅基流动 190s 推理 太慢,不用

关建经验

  1. Prompt 改实体比改关系容易 — 泛词排除让实体 FP 降到 0
  2. Few-shot 对思考模式至关重要 — 无 Few-shot → RE 从 0.251 跌到 0.119
  3. 同模型投票对 RE 无效 — 错误模式雷同,需要不同架构模型
  4. 关系是推理任务 — R1 方向正确但速度和稳定性不行

数据

文件 条目 实体 关系
train.json 1000 6228 2345
test_A.json 400 — —
val20/val_gold.json 20 136 46
val50/val_gold.json 50 324 120
val_split/val_gold.json 100 615 246

Git 分支

分支 内容
master v1 联合 + v3 三阶段
multi-temp-voting v5 多温度投票 (Total 0.408)
v4-constrained-rel v4 约束分类
v6-pro-thinking v6 Pro实体+Flash思考 (Total 0.434)

环境

conda activate ccl  # Python 3.11 @ F:\ProgramData\anaconda3\envs\ccl
pip install requests openai sentence-transformers numpy tqdm scikit-learn

核心提示词

Pro 实体识别 Prompt (T=0.3, thinking=disabled)

用于 DeepSeek V4 Pro,配合 Few-shot 示例。该 Prompt 已加入"排除规则"以过滤泛化背景词。

农业作物科学命名实体识别专家。从文本中抽取具体的生物物理实体。

实体类型:
- CROP: 作物物种名
- QTL: 数量性状位点
- MRK: 分子标记
- BM: 生物方法/分析方法
- GENE: 基因名/基因家族名
- TRT: 具体的性状/表型(如株高、产量、抗性)
- VAR: 品种/品系/种质
- ABS: 非生物胁迫类型(如干旱、盐碱)
- CHR: 染色体
- BIS: 生物胁迫(如白粉病)
- GST: 生长阶段(如拔节期)
- CROSS: 杂交组合

排除规则 - 以下不属于实体:
- 描述性背景词: environmental conditions, stress factors, expression patterns, responses
- 泛指过程: growth, development, metabolism
- 实验条件: control group, treatment, normal conditions
实体必须是具体的、可被定位或测量的生物物理对象。

输出JSON: {"entities": [{"start": int, "end": int, "text": "...", "label": "TYPE"}]}

后处理: 正则过滤含 condition/expression/response/pattern/level/factor/treatment/control/growth/development 等泛词的实体。


R1 + BIRD 关系抽取 Prompt (T=0.1)

用于 Pro/deepseek-ai/DeepSeek-R1 (硅基流动)。核心思路:PROVE 关系而非 FIND 关系,三步证据校验 + 实体过滤 + 领域常识禁令。

你是《作物学报》审稿专家。你的任务是 PROVE 实体间关系,而非 FIND 关系。

关系类型:
- AFF: 一个实体影响/调控另一个
- LOI: 实体位于另一个上,需位置/定位证据
- CON: 两个实体相关/关联(基因家族成员用CON)
- HAS: 品种/作物拥有性状(NOT for 基因-基因)
- USE: 方法被用来研究实体
- OCI: 实体发生在条件/阶段下

三步证据校验 (对每个候选关系执行):

Step 1 - 直接语义链接:
  从原文中摘录连接两个实体的动词或短语。
  例: "conferred resistance to" -> AFF
  例: "located on chromosome" -> LOI
  如果找不到明确的连接词 -> 拒绝此关系。

Step 2 - 科学结果 vs 背景提及:
  如果原文只是说"在X条件下研究了Y" -> 这仅是实验背景,不是关系。
  如果原文说"X显著提高了Y" -> 这是科学结果,可以是关系。
  背景提及 -> 拒绝。科学结果 -> 继续Step 3。

Step 3 - 关系标签判定:
  根据找到的证据短语,分配最合适的关系标签。
  如果没有合适标签 -> 拒绝。

实体过滤层:
- 如果实体是泛指背景词(如 conditions, factors, expression patterns),不要为它创建任何关系。
- 只对具体的生物对象(基因、QTL、性状、品种等)之间创建关系。

关键禁令:
- 禁止领域常识推理。文本没说 = 没有关系。
- 禁止为"填补逻辑"而连线。每个关系必须有原文证据支撑。
- 宁可输出少,不可输出错。Precision over Recall。

输出JSON: {"relations": [{"id1": 0, "id2": 3, "label": "REL"}]}

生物约束矩阵 (Python 后处理):

关系 Head 类型 Tail 类型
LOI QTL, MRK, GENE CHR, TRT, QTL
HAS VAR, CROP TRT, QTL
AFF ABS, GENE, BIS, BM TRT, GENE
CON GENE, QTL, CROP, VAR GENE, QTL, VAR, CROP
USE BM GENE, QTL, TRT, MRK
OCI TRT, ABS, BIS GST

学术动词映射: controls/affects/influences→AFF, located/mapped→LOI, associated/correlated/linked→CON, has/exhibits/shows→HAS, uses/detected/analyzed→USE, occurs/expressed→OCI

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages