arxiv-pulse 0.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- arxiv_pulse/.ENV.TEMPLATE +72 -0
- arxiv_pulse/__init__.py +26 -0
- arxiv_pulse/__version__.py +33 -0
- arxiv_pulse/arxiv_crawler.py +377 -0
- arxiv_pulse/cli.py +1608 -0
- arxiv_pulse/config.py +64 -0
- arxiv_pulse/models.py +255 -0
- arxiv_pulse/output_manager.py +235 -0
- arxiv_pulse/report_generator.py +768 -0
- arxiv_pulse/search_engine.py +367 -0
- arxiv_pulse/summarizer.py +356 -0
- arxiv_pulse-0.5.0.dist-info/METADATA +546 -0
- arxiv_pulse-0.5.0.dist-info/RECORD +17 -0
- arxiv_pulse-0.5.0.dist-info/WHEEL +5 -0
- arxiv_pulse-0.5.0.dist-info/entry_points.txt +2 -0
- arxiv_pulse-0.5.0.dist-info/licenses/LICENSE +674 -0
- arxiv_pulse-0.5.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: arxiv-pulse
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: An intelligent arXiv literature crawler and analyzer for physics research
|
|
5
|
+
Author-email: Yang Li <lyang.1915@gmail.com>
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/kYangLi/ArXiv-Pulse
|
|
8
|
+
Project-URL: Repository, https://github.com/kYangLi/ArXiv-Pulse.git
|
|
9
|
+
Project-URL: Documentation, https://github.com/kYangLi/ArXiv-Pulse#readme
|
|
10
|
+
Keywords: arXiv,literature,crawler,physics,materials science,machine learning,density functional theory,force fields,condensed matter physics
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
15
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Requires-Python: >=3.12
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: arxiv>=2.1.3
|
|
23
|
+
Requires-Dist: requests>=2.32.3
|
|
24
|
+
Requires-Dist: beautifulsoup4>=4.13.3
|
|
25
|
+
Requires-Dist: pandas>=2.2.3
|
|
26
|
+
Requires-Dist: sqlalchemy>=2.0.36
|
|
27
|
+
Requires-Dist: schedule>=1.2.2
|
|
28
|
+
Requires-Dist: python-dotenv>=1.0.1
|
|
29
|
+
Requires-Dist: openai>=1.70.0
|
|
30
|
+
Requires-Dist: tqdm>=4.67.1
|
|
31
|
+
Requires-Dist: markdown>=3.7
|
|
32
|
+
Requires-Dist: click>=8.1.0
|
|
33
|
+
Requires-Dist: aiohttp>=3.9.5
|
|
34
|
+
Requires-Dist: aiosqlite>=0.20.0
|
|
35
|
+
Requires-Dist: questionary>=2.0.0
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
38
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
39
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
40
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
41
|
+
Dynamic: license-file
|
|
42
|
+
|
|
43
|
+
# arXiv Pulse - 智能 arXiv 文献追踪系统
|
|
44
|
+
|
|
45
|
+

|
|
46
|
+

|
|
47
|
+

|
|
48
|
+
|
|
49
|
+
> 🌐 **语言说明**:本文档为中文版本。
|
|
50
|
+
|
|
51
|
+
**arXiv Pulse** 是一个 Python 包,用于自动化爬取、总结和跟踪 arXiv 在凝聚态物理、密度泛函理论(DFT)、机器学习、力场和相关计算材料科学领域的最新研究论文。提供简化的命令行界面,通过 **8 个核心命令** 提供专业级的文献管理体验。
|
|
52
|
+
|
|
53
|
+
## ✨ 核心功能
|
|
54
|
+
|
|
55
|
+
- **📦 极简设计**:**8 个核心命令**覆盖完整文献管理流程
|
|
56
|
+
- **🔍 智能搜索**:支持自然语言查询,AI 自动解析为学术关键词
|
|
57
|
+
- **🔬 高级搜索**:多字段精细过滤(分类、作者、时间范围等)
|
|
58
|
+
- **🔗 相似推荐**:基于分类重叠查找相似论文,拓展研究视野
|
|
59
|
+
- **📋 搜索历史**:记录和重用成功搜索,提高检索效率
|
|
60
|
+
- **🤖 AI 总结**:使用 OpenAI 兼容 API(如 DeepSeek、Paratera AI 等)生成简洁摘要和中文翻译
|
|
61
|
+
- **💾 数据库存储**:SQLite 数据库存储完整论文元数据
|
|
62
|
+
- **📊 智能报告**:自动同步最新论文后生成报告,确保数据时效性
|
|
63
|
+
- **🔄 自动同步**:搜索和报告前自动更新数据库,保持数据最新
|
|
64
|
+
- **💰 成本透明**:准确跟踪 API 使用费用,优化成本控制
|
|
65
|
+
- **🎯 专注科研**:专为凝聚态物理、DFT、机器学习、力场等研究领域优化
|
|
66
|
+
- **🎛️ 交互式配置**:引导式配置向导,支持 30+ 研究领域选择(v0.5.0)
|
|
67
|
+
- **🧠 智能建议**:基于选择领域数量自动推荐优化配置(v0.5.0)
|
|
68
|
+
- **🚩 个性化横幅**:根据研究领域显示定制化启动横幅(v0.5.0)
|
|
69
|
+
- **🌐 通用 AI API**:支持所有 OpenAI 兼容服务(DeepSeek、Paratera AI 等)(v0.5.0)
|
|
70
|
+
- **📅 工作日计算**:按工作日计算时间范围,排除周末(v0.5.0)
|
|
71
|
+
|
|
72
|
+
## 🚀 快速开始
|
|
73
|
+
|
|
74
|
+
### 安装方式
|
|
75
|
+
|
|
76
|
+
**方式一:从 PyPI 安装**
|
|
77
|
+
```bash
|
|
78
|
+
pip install arxiv-pulse
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**方式二:从源码安装(开发模式)**
|
|
82
|
+
```bash
|
|
83
|
+
git clone https://github.com/kYangLi/ArXiv-Pulse.git
|
|
84
|
+
cd ArXiv-Pulse
|
|
85
|
+
pip install -e .
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 基本使用流程
|
|
89
|
+
|
|
90
|
+
1. **初始化工作目录并同步历史论文**
|
|
91
|
+
```bash
|
|
92
|
+
mkdir my_papers && cd my_papers
|
|
93
|
+
pulse init . # 自动创建目录并同步5年历史论文
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
2. **交互式配置(推荐)**
|
|
97
|
+
```bash
|
|
98
|
+
pulse init . # 首次运行时会启动交互式配置向导
|
|
99
|
+
```
|
|
100
|
+
首次初始化时,配置向导将引导您完成:
|
|
101
|
+
- 🔧 **AI API 配置**:设置 API 密钥、模型和 Base URL(支持所有 OpenAI 兼容服务)
|
|
102
|
+
- 📊 **爬虫配置**:调整初始/每日最大论文数、回溯年数
|
|
103
|
+
- 🎯 **研究领域选择**:从 30+ 专业领域中选择您关注的领域
|
|
104
|
+
- 📈 **智能建议**:基于选择领域数量自动推荐优化配置
|
|
105
|
+
- 📄 **报告配置**:设置报告最大论文数和摘要句子限制
|
|
106
|
+
|
|
107
|
+
**重新配置**:如果需要修改配置,可以删除 `.env` 文件后重新运行 `pulse init .`。
|
|
108
|
+
|
|
109
|
+
3. **随时更新数据库**
|
|
110
|
+
```bash
|
|
111
|
+
pulse sync . # 仅同步最新论文,不生成报告
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
4. **智能搜索论文**
|
|
115
|
+
```bash
|
|
116
|
+
pulse search "机器学习在材料科学中的应用" . --years-back 1
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
5. **生成最近论文报告**
|
|
120
|
+
```bash
|
|
121
|
+
pulse recent . --days-back 30 --limit 20
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 📋 核心命令参考
|
|
125
|
+
|
|
126
|
+
### 8个核心命令
|
|
127
|
+
|
|
128
|
+
| 命令 | 说明 | 关键特性 |
|
|
129
|
+
|------|------|----------|
|
|
130
|
+
| **`pulse init`** | 初始化目录并自动同步历史论文 | ✅ 一键创建目录结构<br>✅ 自动同步5年历史论文<br>✅ 创建 `.env` 配置模板 |
|
|
131
|
+
| **`pulse sync`** | 同步最新论文到数据库 | ✅ 专注于数据更新<br>✅ 可选择是否总结新论文<br>✅ 不自动生成报告 |
|
|
132
|
+
| **`pulse search`** | 智能搜索论文(支持自然语言查询) | ✅ AI解析自然语言查询<br>✅ 自动前置同步确保数据最新<br>✅ 生成详细Markdown/CSV报告<br>✅ 包含中文翻译和PDF链接 |
|
|
133
|
+
| **`pulse search-advanced`** | 高级搜索论文(支持多字段过滤) | ✅ AI解析自然语言查询<br>✅ 多字段精细过滤(分类、作者、时间等)<br>✅ 多种排序选项和匹配逻辑<br>✅ 生成详细报告 |
|
|
134
|
+
| **`pulse similar`** | 查找与指定论文相似的论文 | ✅ 基于分类重叠计算相似度<br>✅ 可调节相似度阈值<br>✅ 发现相关研究方向<br>✅ 生成详细报告 |
|
|
135
|
+
| **`pulse search-history`** | 显示搜索历史(按使用频率排序) | ✅ 查看最常用的搜索查询<br>✅ 统计使用频率和最后使用时间<br>✅ 快速重用成功搜索 |
|
|
136
|
+
| **`pulse recent`** | 生成最近论文报告 | ✅ 先同步再报告,数据时效性强<br>✅ 自定义报告时间范围和论文数量<br>✅ 生成Markdown和CSV格式报告 |
|
|
137
|
+
| **`pulse stat`** | 显示数据库统计信息 | ✅ 查看论文总数和总结率<br>✅ 分析论文分类和领域分布<br>✅ 查看时间分布和趋势 |
|
|
138
|
+
|
|
139
|
+
### 命令详细说明
|
|
140
|
+
|
|
141
|
+
#### `pulse init` - 初始化目录并同步历史论文
|
|
142
|
+
**功能**:创建必要的目录结构、配置模板,并自动同步指定年数的历史论文。
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
pulse init [目录路径] --years-back 5
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**参数**:
|
|
149
|
+
- `--years-back`:初始同步回溯的年数(默认:5年)
|
|
150
|
+
|
|
151
|
+
**创建的文件结构**:
|
|
152
|
+
```
|
|
153
|
+
[工作目录]/
|
|
154
|
+
├── data/ # 数据库存储目录
|
|
155
|
+
├── reports/ # 报告输出目录
|
|
156
|
+
├── logs/ # 日志目录
|
|
157
|
+
├── .env # 环境配置文件模板
|
|
158
|
+
└── important_papers.txt # 重要论文列表
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**设计理念**:一键完成所有初始化工作,无需额外步骤。
|
|
162
|
+
|
|
163
|
+
#### `pulse sync` - 同步最新论文
|
|
164
|
+
**功能**:仅同步最新论文到数据库,不生成报告。
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
pulse sync [目录路径] --years-back 1 --no-summarize
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**参数**:
|
|
171
|
+
- `--years-back`:同步回溯的年数(默认:1年)
|
|
172
|
+
- `--summarize/--no-summarize`:是否总结新论文(默认:否)
|
|
173
|
+
|
|
174
|
+
**设计理念**:专注于数据更新,让用户控制是否总结论文。
|
|
175
|
+
|
|
176
|
+
#### `pulse search` - 智能搜索论文
|
|
177
|
+
**功能**:在数据库中搜索论文,支持自然语言查询和AI解析。
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
pulse search "查询内容" [目录路径] --years-back 1 --use-ai --limit 20
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**参数**:
|
|
184
|
+
- `--years-back`:搜索前同步回溯的年数(默认:1年,0表示不更新)
|
|
185
|
+
- `--use-ai/--no-ai`:是否使用AI理解自然语言查询(默认:是)
|
|
186
|
+
- `--limit`:返回结果的最大数量(默认:20)
|
|
187
|
+
|
|
188
|
+
**AI搜索示例**:
|
|
189
|
+
```bash
|
|
190
|
+
# AI会将自然语言查询解析为学术关键词
|
|
191
|
+
pulse search "我想找关于机器学习在材料科学中的应用" . --use-ai
|
|
192
|
+
# 可能解析为:["machine learning materials science", "AI for materials", "computational materials design"]
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**设计理念**:搜索前自动同步确保数据最新,AI增强提高搜索精度。
|
|
196
|
+
|
|
197
|
+
#### `pulse recent` - 生成最近论文报告
|
|
198
|
+
**功能**:先同步最新论文,然后生成指定时间范围内的报告。**从 v0.5.0 开始,时间范围按工作日计算(排除周六和周日)**。
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
pulse recent [目录路径] --days-back 7 --limit 50 --years-back 1
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**参数**:
|
|
205
|
+
- `--days-back`:包含最近多少天的论文(默认:7天,按工作日计算)
|
|
206
|
+
- `--limit`:报告中包含的最大论文数(默认:50)
|
|
207
|
+
- `--years-back`:报告前同步回溯的年数(默认:1年)
|
|
208
|
+
|
|
209
|
+
**工作日计算**:由于 arXiv 在周末(周六和周日)不发布新论文,系统会自动排除周末,仅计算工作日。例如,`--days-back 7` 会返回最近 7 个工作日(约 9-10 个日历天)的论文。
|
|
210
|
+
|
|
211
|
+
**设计理念**:先同步再报告,确保报告基于最新数据,避免滞后。工作日计算更符合 arXiv 的实际发布周期。
|
|
212
|
+
|
|
213
|
+
#### `pulse stat` - 显示数据库统计信息
|
|
214
|
+
**功能**:查看arXiv Pulse数据库的详细统计信息,包括论文数量、分类分布、时间趋势和总结进度。
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
pulse stat [目录路径]
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**显示的统计信息**:
|
|
221
|
+
1. **基本统计**:总论文数、今日论文数、已总结论文数、总结率
|
|
222
|
+
2. **搜索查询分布**:按不同搜索查询的论文分布情况
|
|
223
|
+
3. **分类统计**:前10个热门分类的论文数量
|
|
224
|
+
4. **时间分布**:最近5年的论文数量趋势
|
|
225
|
+
5. **AI总结统计**:已总结、待总结论文数量和总结率
|
|
226
|
+
|
|
227
|
+
**设计理念**:提供全面的数据库洞察,帮助用户了解文献分布和研究趋势。
|
|
228
|
+
|
|
229
|
+
#### `pulse search-advanced` - 高级搜索论文
|
|
230
|
+
**功能**:支持多字段精细过滤的高级搜索,满足复杂文献检索需求。
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
pulse search-advanced "查询内容" [目录路径] --categories 分类1 --categories 分类2 --date-from 2026-01-01 --summarized-only
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**参数**:
|
|
237
|
+
- `--categories, -c`:包含的分类(可多次使用)
|
|
238
|
+
- `--exclude-categories, -ec`:排除的分类(可多次使用)
|
|
239
|
+
- `--primary-category, -pc`:主要分类
|
|
240
|
+
- `--authors, -a`:作者姓名(可多次使用)
|
|
241
|
+
- `--author-match`:作者匹配方式(contains/exact/any,默认:contains)
|
|
242
|
+
- `--date-from`:起始日期(格式:YYYY-MM-DD)
|
|
243
|
+
- `--date-to`:结束日期(格式:YYYY-MM-DD)
|
|
244
|
+
- `--days-back`:回溯天数(例如:30表示最近30天)
|
|
245
|
+
- `--summarized-only/--no-summarized-only`:仅显示已总结的论文
|
|
246
|
+
- `--downloaded-only/--no-downloaded-only`:仅显示已下载的论文
|
|
247
|
+
- `--sort-by`:排序字段(published/relevance_score/title/updated/created_at,默认:published)
|
|
248
|
+
- `--sort-order`:排序顺序(asc/desc,默认:desc)
|
|
249
|
+
- `--match-all/--match-any`:匹配所有条件(AND逻辑)或任一条件(OR逻辑)
|
|
250
|
+
|
|
251
|
+
**设计理念**:为科研工作者提供专业级的文献检索工具,支持复杂查询和精细过滤。
|
|
252
|
+
|
|
253
|
+
#### `pulse similar` - 查找相似论文
|
|
254
|
+
**功能**:基于分类重叠查找与指定论文相似的论文,帮助发现相关研究。
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
pulse similar [arXiv ID] [目录路径] --threshold 0.5 --limit 10
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**参数**:
|
|
261
|
+
- `--threshold`:相似度阈值(0.0-1.0,默认:0.5)
|
|
262
|
+
- `--limit`:返回结果的最大数量(默认:10)
|
|
263
|
+
- `--years-back`:搜索前同步回溯的年数(默认:0,不更新)
|
|
264
|
+
|
|
265
|
+
**算法**:计算分类重叠相似度 = 共同分类数 / 总分类数,返回相似度≥阈值的论文。
|
|
266
|
+
|
|
267
|
+
**设计理念**:帮助研究者拓展文献视野,发现相关研究方向,避免信息孤岛。
|
|
268
|
+
|
|
269
|
+
#### `pulse search-history` - 显示搜索历史
|
|
270
|
+
**功能**:显示最常用的搜索查询及其使用频率,便于快速重用成功搜索。
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
pulse search-history [目录路径] --limit 10
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
**参数**:
|
|
277
|
+
- `--limit`:显示的搜索查询数量(默认:10)
|
|
278
|
+
|
|
279
|
+
**显示信息**:
|
|
280
|
+
1. **搜索查询**:查询内容
|
|
281
|
+
2. **使用次数**:该查询的使用频率统计
|
|
282
|
+
3. **最后使用**:最近一次使用该查询的时间
|
|
283
|
+
4. **最后论文ID**:最近一次使用该查询找到的论文ID
|
|
284
|
+
|
|
285
|
+
**设计理念**:提高搜索效率,通过历史记录快速重用成功搜索,避免重复构建复杂查询。
|
|
286
|
+
|
|
287
|
+
## ⚙️ 配置说明
|
|
288
|
+
|
|
289
|
+
### 环境变量(`.env` 文件)
|
|
290
|
+
|
|
291
|
+
初始化目录时会自动创建 `.env` 模板文件,或首次运行 `pulse init .` 时通过交互式配置生成:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# AI API 配置 (支持所有 OpenAI 兼容服务,如 DeepSeek、Paratera AI、OpenAI 等)
|
|
295
|
+
AI_API_KEY=your_api_key_here
|
|
296
|
+
AI_MODEL=DeepSeek-V3.2-Thinking
|
|
297
|
+
AI_BASE_URL=https://llmapi.paratera.com
|
|
298
|
+
|
|
299
|
+
# 数据库配置
|
|
300
|
+
DATABASE_URL=sqlite:///data/arxiv_papers.db
|
|
301
|
+
|
|
302
|
+
# 爬虫配置
|
|
303
|
+
MAX_RESULTS_INITIAL=100 # init命令每个查询的论文数
|
|
304
|
+
MAX_RESULTS_DAILY=20 # sync命令每个查询的论文数
|
|
305
|
+
|
|
306
|
+
# 搜索查询(分号分隔,允许查询中包含逗号)
|
|
307
|
+
# 通过交互式配置选择研究领域后自动生成
|
|
308
|
+
SEARCH_QUERIES=condensed matter physics AND cat:cond-mat.*; (ti:"density functional" OR abs:"density functional") AND (cat:physics.comp-ph OR cat:cond-mat.mtrl-sci OR cat:physics.chem-ph); (ti:"machine learning" OR abs:"machine learning") AND (cat:physics.comp-ph OR cat:cond-mat.mtrl-sci OR cat:physics.chem-ph); (ti:"force field" OR abs:"force field") AND (cat:physics.comp-ph OR cat:cond-mat.soft OR cat:physics.chem-ph); (ti:"first principles" OR abs:"first principles" OR ti:"ab initio" OR abs:"ab initio") AND (cat:physics.comp-ph OR cat:cond-mat.mtrl-sci); (ti:"molecular dynamics" OR abs:"molecular dynamics") AND (cat:physics.comp-ph OR cat:cond-mat.soft OR cat:physics.chem-ph); (ti:"quantum chemistry" OR abs:"quantum chemistry") AND (cat:physics.chem-ph OR cat:physics.comp-ph); cat:cond-mat.mtrl-sci AND (ti:"computational" OR abs:"computational" OR ti:"simulation" OR abs:"simulation")
|
|
309
|
+
|
|
310
|
+
# 报告配置
|
|
311
|
+
REPORT_DIR=reports
|
|
312
|
+
SUMMARY_MAX_TOKENS=2000 # 总结和翻译的最大token数
|
|
313
|
+
SUMMARY_SENTENCES_LIMIT=3
|
|
314
|
+
TOKEN_PRICE_PER_MILLION=3.0
|
|
315
|
+
REPORT_MAX_PAPERS=50
|
|
316
|
+
|
|
317
|
+
# 同步配置
|
|
318
|
+
YEARS_BACK=3 # 同步回溯的年数
|
|
319
|
+
IMPORTANT_PAPERS_FILE=important_papers.txt
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
**注意**:从 v0.5.0 开始,所有 AI 相关配置统一使用 `AI_*` 前缀变量。旧的 `DEEPSEEK_*` 变量已不再支持。建议首次运行 `pulse init .` 时使用交互式配置向导完成所有设置。
|
|
323
|
+
|
|
324
|
+
### 研究领域
|
|
325
|
+
|
|
326
|
+
系统支持 30+ 个专业研究领域,通过交互式配置向导选择:
|
|
327
|
+
|
|
328
|
+
#### 🧪 物理学领域
|
|
329
|
+
- **凝聚态物理**:电子结构、超导、磁性、强关联系统
|
|
330
|
+
- **天体物理**:宇宙学、恒星物理、星系形成
|
|
331
|
+
- **高能物理**:粒子物理、量子场论、标准模型
|
|
332
|
+
- **核物理**:核结构、核反应、重离子碰撞
|
|
333
|
+
- **广义相对论**:引力波、黑洞、宇宙学
|
|
334
|
+
- **量子物理**:量子信息、量子计算、量子光学
|
|
335
|
+
- **统计物理**:相变、临界现象、非平衡统计
|
|
336
|
+
- **软凝聚态物理**:生物物理、胶体、聚合物
|
|
337
|
+
- **材料物理**:电子材料、光学材料、磁性材料
|
|
338
|
+
- **光学物理**:非线性光学、量子光学、光子学
|
|
339
|
+
|
|
340
|
+
#### 💻 计算材料科学
|
|
341
|
+
- **密度泛函理论(DFT)**:第一性原理计算、电子结构
|
|
342
|
+
- **第一性原理计算**:ab initio 方法、从头计算
|
|
343
|
+
- **量子化学**:电子结构方法、波函数理论
|
|
344
|
+
- **分子动力学**:经典分子动力学、反应力场
|
|
345
|
+
- **力场开发**:原子间势、反应力场、机器学习力场
|
|
346
|
+
- **多尺度建模**:从原子到宏观的跨尺度模拟
|
|
347
|
+
- **计算化学**:化学反应、催化、分子设计
|
|
348
|
+
- **计算生物物理**:蛋白质折叠、分子对接、药物设计
|
|
349
|
+
|
|
350
|
+
#### 🧮 数学与计算机科学
|
|
351
|
+
- **数学物理**:数学方法在物理中的应用
|
|
352
|
+
- **数值分析**:数值方法、计算算法
|
|
353
|
+
- **人工智能**:机器学习、深度学习、强化学习
|
|
354
|
+
- **计算机视觉**:图像处理、模式识别
|
|
355
|
+
- **自然语言处理**:文本分析、语言模型
|
|
356
|
+
- **数据科学**:数据分析、可视化、统计学习
|
|
357
|
+
- **计算机科学**:算法、系统、网络
|
|
358
|
+
|
|
359
|
+
#### 🌐 跨学科领域
|
|
360
|
+
- **定量生物学**:系统生物学、计算生物学
|
|
361
|
+
- **定量金融**:金融建模、风险管理
|
|
362
|
+
- **电子工程**:半导体、微电子、光电子
|
|
363
|
+
- **经济学**:计量经济学、经济建模
|
|
364
|
+
|
|
365
|
+
通过首次运行 `pulse init .` 交互式选择您关注的领域,系统会自动生成优化的搜索查询和配置建议。
|
|
366
|
+
|
|
367
|
+
## 📁 项目结构
|
|
368
|
+
|
|
369
|
+
```
|
|
370
|
+
arxiv_pulse/ # Python 包源码
|
|
371
|
+
├── __init__.py # 包初始化
|
|
372
|
+
├── arxiv_crawler.py # arXiv API 交互
|
|
373
|
+
├── cli.py # 命令行接口(主入口点)
|
|
374
|
+
├── config.py # 配置管理
|
|
375
|
+
├── models.py # 数据库模型
|
|
376
|
+
├── output_manager.py # 统一输出管理
|
|
377
|
+
├── report_generator.py # 报告生成器
|
|
378
|
+
├── search_engine.py # 增强搜索引擎
|
|
379
|
+
└── summarizer.py # 论文总结器
|
|
380
|
+
|
|
381
|
+
项目根目录/
|
|
382
|
+
├── pyproject.toml # 包配置和依赖
|
|
383
|
+
├── README.md # 本文档
|
|
384
|
+
├── LICENSE # GPL-3.0 许可证
|
|
385
|
+
|
|
386
|
+
└── .gitignore # Git 忽略文件
|
|
387
|
+
|
|
388
|
+
工作目录(用户使用)/
|
|
389
|
+
├── .env # 环境配置
|
|
390
|
+
├── data/ # 数据库存储
|
|
391
|
+
├── reports/ # 生成的报告
|
|
392
|
+
├── logs/ # 应用日志
|
|
393
|
+
└── important_papers.txt # 重要论文列表
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
## 🗂️ 输出文件
|
|
397
|
+
|
|
398
|
+
### 数据库
|
|
399
|
+
- 位置:`data/arxiv_papers.db` (SQLite)
|
|
400
|
+
- 包含:论文元数据、摘要、AI 总结、处理状态
|
|
401
|
+
|
|
402
|
+
### 报告文件
|
|
403
|
+
- **搜索结果报告**:`reports/search_YYYYMMDD_HHMMSS.md` 和 `.csv` (通过 `pulse search` 生成)
|
|
404
|
+
- **最近论文报告**:`reports/recent_YYYYMMDD_HHMMSS.md` 和 `.csv` (通过 `pulse recent` 生成)
|
|
405
|
+
- **报告内容**:论文详情、AI总结、中文翻译、相关度评级、费用统计、PDF链接
|
|
406
|
+
|
|
407
|
+
### 日志
|
|
408
|
+
- `logs/arxiv_pulse.log` - 主要应用日志
|
|
409
|
+
- `logs/summarizer.log` - 总结器日志
|
|
410
|
+
|
|
411
|
+
## 🔧 高级使用
|
|
412
|
+
|
|
413
|
+
### 自动化调度
|
|
414
|
+
|
|
415
|
+
#### 使用 Systemd(Linux)
|
|
416
|
+
创建 `/etc/systemd/system/arxiv-pulse.service`:
|
|
417
|
+
```ini
|
|
418
|
+
[Unit]
|
|
419
|
+
Description=arXiv Pulse Literature Crawler
|
|
420
|
+
After=network.target
|
|
421
|
+
|
|
422
|
+
[Service]
|
|
423
|
+
Type=simple
|
|
424
|
+
User=your_username
|
|
425
|
+
WorkingDirectory=/path/to/your/papers
|
|
426
|
+
ExecStart=/usr/local/bin/pulse sync .
|
|
427
|
+
Restart=always
|
|
428
|
+
RestartSec=10
|
|
429
|
+
|
|
430
|
+
[Install]
|
|
431
|
+
WantedBy=multi-user.target
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
启用服务:
|
|
435
|
+
```bash
|
|
436
|
+
sudo systemctl enable arxiv-pulse
|
|
437
|
+
sudo systemctl start arxiv-pulse
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
#### 使用 Cron
|
|
441
|
+
添加到 crontab(`crontab -e`):
|
|
442
|
+
```
|
|
443
|
+
0 8 * * * cd /path/to/your/papers && pulse sync .
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### 自定义搜索查询
|
|
447
|
+
|
|
448
|
+
编辑 `.env` 文件中的 `SEARCH_QUERIES` 变量:
|
|
449
|
+
- 使用分号(`;`)分隔多个查询
|
|
450
|
+
- 查询中可以包含逗号
|
|
451
|
+
- 支持标准的 arXiv 搜索语法
|
|
452
|
+
|
|
453
|
+
示例:
|
|
454
|
+
```bash
|
|
455
|
+
SEARCH_QUERIES=condensed matter physics AND cat:cond-mat.*; quantum computing AND cat:quant-ph; machine learning AND cat:cs.LG
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
### 重要论文追踪
|
|
459
|
+
|
|
460
|
+
在 `important_papers.txt` 文件中添加 arXiv ID(每行一个):
|
|
461
|
+
```
|
|
462
|
+
# 重要论文列表
|
|
463
|
+
2401.12345v1
|
|
464
|
+
2402.67890v2
|
|
465
|
+
cond-mat/24030001
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
系统会自动跟踪这些论文的更新和引用。
|
|
469
|
+
|
|
470
|
+
## 🐛 故障排除
|
|
471
|
+
|
|
472
|
+
### 常见问题
|
|
473
|
+
|
|
474
|
+
#### 数据库连接错误
|
|
475
|
+
```bash
|
|
476
|
+
# 检查数据库文件
|
|
477
|
+
ls -la data/
|
|
478
|
+
sqlite3 data/arxiv_papers.db ".tables"
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
#### AI API 错误
|
|
482
|
+
1. 确认 `.env` 文件中设置了 `AI_API_KEY`
|
|
483
|
+
2. 检查 API 密钥是否有效且有余额
|
|
484
|
+
3. 检查 `.env` 文件中的配置是否正确(Base URL、模型名称等)
|
|
485
|
+
4. 确认 API 服务支持 OpenAI 格式的调用
|
|
486
|
+
|
|
487
|
+
#### 路径问题
|
|
488
|
+
如果遇到文件未找到错误,确保:
|
|
489
|
+
1. 在工作目录中运行命令(或指定完整路径)
|
|
490
|
+
2. 已运行 `pulse init .` 初始化目录
|
|
491
|
+
3. 数据库路径为绝对路径(自动处理)
|
|
492
|
+
|
|
493
|
+
#### arXiv 周末无更新
|
|
494
|
+
**现象**:周末运行 `pulse recent` 或 `pulse sync` 时可能找不到新论文。
|
|
495
|
+
**原因**:arXiv 在周末(周六和周日)不发布新论文。
|
|
496
|
+
**解决方案**:
|
|
497
|
+
- 这是正常现象,不是系统错误
|
|
498
|
+
- 工作日计算功能会自动排除周末
|
|
499
|
+
- 建议在工作日(周一至周五)使用系统获取最新论文
|
|
500
|
+
|
|
501
|
+
### 调试和验证
|
|
502
|
+
|
|
503
|
+
#### 验证基本功能
|
|
504
|
+
```bash
|
|
505
|
+
# 初始化一个新目录测试基本功能
|
|
506
|
+
mkdir test_pulse && cd test_pulse
|
|
507
|
+
pulse init . --years-back 0
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
#### 查看日志文件
|
|
511
|
+
```bash
|
|
512
|
+
# 查看最近的操作日志
|
|
513
|
+
ls -la logs/
|
|
514
|
+
tail -f logs/summarizer.log
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
## 📄 许可证
|
|
518
|
+
|
|
519
|
+
本项目采用 GPL-3.0 许可证 - 详见 [LICENSE](LICENSE) 文件。
|
|
520
|
+
|
|
521
|
+
## 🤝 贡献
|
|
522
|
+
|
|
523
|
+
欢迎贡献!请遵循以下步骤:
|
|
524
|
+
|
|
525
|
+
1. Fork 仓库
|
|
526
|
+
2. 创建特性分支
|
|
527
|
+
3. 进行更改
|
|
528
|
+
4. 如果适用,添加测试
|
|
529
|
+
5. 提交 pull request
|
|
530
|
+
|
|
531
|
+
## 🙏 致谢
|
|
532
|
+
|
|
533
|
+
- [arXiv.org](https://arxiv.org) 提供 API
|
|
534
|
+
- [DeepSeek](https://www.deepseek.com) 提供 AI 模型
|
|
535
|
+
- 计算材料科学社区
|
|
536
|
+
|
|
537
|
+
## 📞 支持
|
|
538
|
+
|
|
539
|
+
如有问题或建议:
|
|
540
|
+
1. 查看 [GitHub Issues](https://github.com/kYangLi/ArXiv-Pulse/issues)
|
|
541
|
+
2. 检查 `.env` 文件配置和日志文件
|
|
542
|
+
3. 查看 `logs/` 目录中的日志文件
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
**arXiv Pulse** - 让 arXiv 文献追踪变得简单高效!
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
arxiv_pulse/.ENV.TEMPLATE,sha256=_MnlkK2RyVTSqQVqlKK2ngnCzTvzbydJ6RcVbsecpd4,2833
|
|
2
|
+
arxiv_pulse/__init__.py,sha256=BBNwoE-pmiSqc3_X_Sr3Ao9bceygkhsDof1QuXCEfHs,608
|
|
3
|
+
arxiv_pulse/__version__.py,sha256=AlKnb6hfRSNCL8vS1N77-D9fwh6hE_PiY_S_2uhM6lM,961
|
|
4
|
+
arxiv_pulse/arxiv_crawler.py,sha256=KBRyrtjRjiGcdWifroHwO8QJ2a5YJ97pjflp7UaUzuM,14401
|
|
5
|
+
arxiv_pulse/cli.py,sha256=ivrPQio8rS-m54uFUNoYejRGnOmEk9lUYrtZXEh7KAs,64449
|
|
6
|
+
arxiv_pulse/config.py,sha256=3oCOE75FVc8i-aQNNYYrrJGzClkXX33DHXbaJN0Zb7o,2489
|
|
7
|
+
arxiv_pulse/models.py,sha256=RhckE7dqU4OL27hcm94wdfpsFIKAMTJnKwz4-DSV8hI,9680
|
|
8
|
+
arxiv_pulse/output_manager.py,sha256=__15l1ge5ok6oVvUCfxHiGPMrJkzQh1GltGk6DkLBHk,7341
|
|
9
|
+
arxiv_pulse/report_generator.py,sha256=ZV-HPK1x3bEHvJcWYyivzExLq4-5iVpv2uBJMV8aQnw,31775
|
|
10
|
+
arxiv_pulse/search_engine.py,sha256=F6V6kWgnGsOeIFtkyIRdLtj12MWfiYgpGnV9aalVUrc,13079
|
|
11
|
+
arxiv_pulse/summarizer.py,sha256=dZgjSSl5phU8g-hOubtyVWIZ3mZilVuS7VbYdRWZocc,12867
|
|
12
|
+
arxiv_pulse-0.5.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
13
|
+
arxiv_pulse-0.5.0.dist-info/METADATA,sha256=SNvMjBiJ36CpNZjo1lSxoi-u8GwRjqZl_8YBRy0Q-4Y,22126
|
|
14
|
+
arxiv_pulse-0.5.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
15
|
+
arxiv_pulse-0.5.0.dist-info/entry_points.txt,sha256=ld4XAcWJDyHM1i5RKs0r22LdzhgFcNilNoU1dbf5r6E,46
|
|
16
|
+
arxiv_pulse-0.5.0.dist-info/top_level.txt,sha256=CKAnBbV76S-15CP-m3rfia1VNSdZOocr5MhVxXzH-Vw,12
|
|
17
|
+
arxiv_pulse-0.5.0.dist-info/RECORD,,
|