4.7 KiB
Executable File
4.7 KiB
Executable File
V12.1 Fixed 修复总结报告
日期: 2026-04-10 11:19 GMT+8
状态: 部分成功,需要修复
执行结果
✅ 成功的部分
| 项目 | 结果 | 状态 |
|---|---|---|
| 章节提取 | 19个章节 | ✅ |
| 基因实体提取 | 25个基因 | ✅ |
| 章节文本保存 | 大部分成功 | ✅ |
| API Key读取 | 成功 | ✅ |
❌ 失败的部分
| 项目 | 问题 | 状态 |
|---|---|---|
| LLM关系抽取 | API 401错误 | ❌ |
| Results章节 | 只有11字符 | ❌ |
| 规则关系 | 0个关系 | ❌ |
问题分析
问题1: API 401错误
错误信息:
Error code: 401 - {'error': {'code': 'invalid_api_key', 'message': 'invalid access token or token expired'}}
可能原因:
- API Key格式问题(包含换行符或空格)
- 路径读取问题
- Token确实过期
验证:
# 测试脚本显示API调用成功
python3 test_api.py
# 输出: ✅ API调用成功
结论: API Key本身有效,问题在提取器代码中的读取逻辑
问题2: Results章节只有11字符
现象:
- Results (11 chars) ❌
原因分析: 章节边界识别算法有问题,Results章节的结束位置被错误设置
解决方案: 改进章节边界识别,使用更精确的模式匹配
问题3: 规则关系为0
原因:
- 正则表达式可能不够全面
- 表达关系描述方式多样
- 需要更多模式匹配
修复方案
修复1: API Key读取
# 改进的API Key读取
def load_api_key():
# 1. 环境变量
key = os.getenv('DASHSCOPE_API_KEY')
if key:
return key.strip()
# 2. .env文件
env_path = Path('/home/xia-lab/gene-family-mas-v2/.env')
if env_path.exists():
with open(env_path) as f:
for line in f:
if line.startswith('DASHSCOPE_API_KEY='):
return line.split('=', 1)[1].strip().strip('"\'')
return None
修复2: 章节边界识别
# 改进的章节识别
section_patterns = [
(r'^(\d+)\.\s+([A-Z][^\n]{2,100})$', 1), # 限制标题长度
(r'^(\d+\.\d+)\.\s+([A-Z][^\n]{2,100})$', 2),
]
# 更好的边界设置
for i, (title, level, start) in enumerate(matches):
end = matches[i+1][2] if i < len(matches)-1 else len(full_text)
# 确保最小长度
if end - start < 100:
print(f"警告: {title} 章节过短 ({end-start} chars)")
修复3: 关系抽取模式
# 更多表达关系模式
expression_patterns = [
(r'(SlSUT\d+)\s+was\s+highly\s+expressed\s+in\s+([\w\s,]+)', 'highly_expressed_in'),
(r'(SlSUT\d+)\s+showed\s+(?:high|low)\s+expression\s+in\s+([\w\s,]+)', 'expressed_in'),
(r'(SlSUT\d+)\s+is\s+expressed\s+in\s+([\w\s,]+)', 'expressed_in'),
(r'expression\s+of\s+(SlSUT\d+)\s+was\s+detected\s+in\s+([\w\s,]+)', 'expressed_in'),
(r'(SlSUT\d+)\s+was\s+expressed\s+in\s+([\w\s,]+)', 'expressed_in'),
]
测试结果对比
| 指标 | V12.1 Fixed | V12.1 Fixed V2 (预期) |
|---|---|---|
| 章节数 | 19 | 19 |
| 基因数 | 25 | 25 |
| Results章节 | 11 chars ❌ | >1000 chars ✅ |
| 规则关系 | 0 | >5 |
| LLM关系 | 0 (401错误) | >10 |
下一步行动
立即执行
-
修复API Key读取逻辑
- 添加.strip()去除空白字符
- 添加调试输出确认Key正确读取
-
修复章节边界识别
- 改进正则表达式
- 添加章节长度验证
-
增加关系抽取模式
- 添加更多正则表达式
- 针对Expression章节专门处理
测试验证
# 1. 测试API Key
cd /home/xia-lab/gene-family-mas-v2
python3 test_api.py
# 2. 运行修复版提取器
python3 test_v12_1_fixed_v2.py
# 3. 验证结果
cat /tmp/v12_1_v2_result.json | jq '.metadata'
关键发现
章节文本保存 ✅
成功验证:
{
"title": "Introduction",
"char_count": 3515,
"text_full": "1. Introduction\nSugar, which determines..."
}
百炼API配置 ✅
Base URL: https://coding.dashscope.aliyuncs.com/v1
Model: qwen3.6-plus
API Key: 已配置 (测试通过)
结论
修复状态
| 功能 | 状态 | 备注 |
|---|---|---|
| 章节文本保存 | ✅ 成功 | 核心修复完成 |
| 章节提取 | ⚠️ 部分成功 | Results章节有问题 |
| 基因提取 | ✅ 成功 | 25个基因 |
| LLM关系抽取 | ❌ 失败 | 需要修复API Key读取 |
| 规则关系 | ❌ 失败 | 需要增加模式 |
建议
- 短期: 修复API Key读取和章节边界识别
- 中期: 增加更多关系抽取模式
- 长期: 批量处理多论文构建知识图谱
报告时间: 2026-04-10 11:25 GMT+8
签名: 🧬🤖