Spaces:
Sleeping
Sleeping
File size: 4,667 Bytes
583741e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
# Papers Database 使用说明
## 概述
现在系统已经支持将arXiv文章和评价内容存储到SQLite数据库中,而不是保存在JSON文件中。这样可以更好地管理论文数据,支持查询、统计和标签管理。
## 数据库结构
### papers 表
| 字段 | 类型 | 说明 |
|------|------|------|
| arxiv_id | TEXT PRIMARY KEY | arXiv论文ID |
| title | TEXT NOT NULL | 论文标题 |
| authors | TEXT NOT NULL | 作者列表 |
| abstract | TEXT | 论文摘要 |
| categories | TEXT | 论文分类 |
| published_date | TEXT | 发布日期 |
| evaluation_content | TEXT | 评价内容(JSON格式) |
| evaluation_score | REAL | 总体自动化评分 |
| evaluation_tags | TEXT | 评价标签 |
| is_evaluated | BOOLEAN | 是否已评价 |
| evaluation_date | TIMESTAMP | 评价日期 |
| created_at | TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | 更新时间 |
## 使用方法
### 1. 插入论文
```python
from src.database.db import db
# 插入新论文
db.insert_paper(
arxiv_id="2508.05629",
title="Your Paper Title",
authors="Author 1, Author 2",
abstract="Paper abstract...",
categories="cs.AI, cs.LG",
published_date="2024-08-01"
)
```
### 2. 更新评价
```python
# 更新论文评价
db.update_paper_evaluation(
arxiv_id="2508.05629",
evaluation_content='{"overall_automatability": 3, "three_year_feasibility": 75}',
evaluation_score=3.0,
evaluation_tags="3yr_feasibility:75%,overall_automatability:3/4"
)
```
### 3. 查询论文
```python
# 获取单个论文
paper = db.get_paper("2508.05629")
# 获取所有已评价的论文
evaluated_papers = db.get_evaluated_papers()
# 获取所有未评价的论文
unevaluated_papers = db.get_unevaluated_papers()
# 搜索论文
search_results = db.search_papers("AI")
```
### 4. 统计信息
```python
# 获取论文统计
count = db.get_papers_count()
print(f"总论文数: {count['total']}")
print(f"已评价: {count['evaluated']}")
print(f"未评价: {count['unevaluated']}")
```
## API 接口
### 获取评价列表
```
GET /api/evals
```
### 检查论文是否已评价
```
GET /api/has-eval/{paper_id}
```
### 获取论文评价
```
GET /api/eval/{paper_id}
```
### 获取论文统计
```
GET /api/papers/status
```
### 插入新论文
```
POST /api/papers/insert
Content-Type: application/json
{
"arxiv_id": "2508.05629",
"title": "Paper Title",
"authors": "Author 1, Author 2",
"abstract": "Abstract...",
"categories": "cs.AI",
"published_date": "2024-08-01"
}
```
### 评价论文
```
POST /api/papers/evaluate/{arxiv_id}
```
## CLI 工具使用
### 评价论文并保存到数据库
```bash
# 使用arxiv_id参数将评价保存到数据库
python cli.py https://arxiv.org/pdf/2508.05629 --arxiv-id 2508.05629
# 同时保存到文件和数据库
python cli.py https://arxiv.org/pdf/2508.05629 --arxiv-id 2508.05629 -o /path/to/output
```
## 迁移现有数据
如果你有现有的JSON评价文件,可以编写脚本将它们导入到数据库中:
```python
import json
import os
from src.database.db import db
def migrate_json_to_db(json_dir="workdir"):
"""将JSON文件迁移到数据库"""
for filename in os.listdir(json_dir):
if filename.endswith('.json'):
filepath = os.path.join(json_dir, filename)
with open(filepath, 'r') as f:
data = json.load(f)
# 提取arxiv_id(假设文件名包含arxiv_id)
arxiv_id = filename.split('_')[0] # 根据实际文件名格式调整
# 更新数据库中的评价
if 'response' in data:
db.update_paper_evaluation(
arxiv_id=arxiv_id,
evaluation_content=data['response'],
evaluation_score=None, # 需要从内容中解析
evaluation_tags=None
)
print(f"Migrated {filename} for paper {arxiv_id}")
```
## 优势
1. **结构化存储**: 论文信息和评价内容分开存储,便于查询
2. **标签系统**: 支持为评价添加标签,便于分类和筛选
3. **统计功能**: 可以轻松获取论文统计信息
4. **搜索功能**: 支持按标题、作者、摘要搜索论文
5. **状态管理**: 通过`is_evaluated`字段跟踪评价状态
6. **API支持**: 提供完整的RESTful API接口
## 注意事项
1. 确保在评价论文前先插入论文基本信息
2. 评价内容建议使用JSON格式,便于解析和展示
3. 定期备份数据库文件
4. 可以使用`evaluation_tags`字段存储关键评分信息,便于快速筛选
|