78 lines
5.2 KiB
Markdown
78 lines
5.2 KiB
Markdown
# 使用指南
|
|
|
|
先在已确认的远程环境安装项目,使用 `paper-atlas`。从源码运行时,将命令前缀替换为 `python3 -B -m paper_atlas`,其余参数相同。数据目录位于仓库外。
|
|
|
|
## PostgreSQL 查询
|
|
|
|
在远程环境安装 `.[postgres]`,通过权限为 `0600` 的 libpq service 文件连接,不把密码放入 URL、命令行或仓库。
|
|
|
|
```sh
|
|
export PGSERVICEFILE=/etc/paper-atlas/pg_service.conf
|
|
paper-atlas query --pg-service foundry-research --stats
|
|
paper-atlas query --pg-service foundry-research --query '"language model"' --tag arxiv:category=cs.CL
|
|
paper-atlas query --pg-service foundry-research --status rejected --outcome accepted --limit 20
|
|
paper-atlas query --pg-service foundry-research --paper 123
|
|
```
|
|
|
|
使用只读一致性事务,支持论文 ID、会议别名、年份、轨道、标签、最新决定和跨会议录用筛选。全文检索使用 PostgreSQL `websearch_to_tsquery('english', ...)`,支持引号短语、`OR` 和减号排除;与 SQLite FTS5 的语法及分词结果不完全相同。JSON 来源列保留原始文本;转成 `jsonb` 前须确认原始值符合该类型的限制。
|
|
|
|
CLI 自动还原迁移中的 NUL/SOH 文本转义,详情中的来源摘要和筛选参数保留原字符。直接 SQL 读取可能看到 `U+0001` 转义序列;跨项目 ETL 应按迁移元数据中的 `text_codec` 使用 `paper_atlas.postgres.text.encode/decode`。存储格式和无损哈希验收见[运行维护](operations.md#postgresql-迁移)。
|
|
|
|
迁移与切换见[运行维护](operations.md#postgresql-迁移)。下述 SQLite 导入命令仅用于未切换的索引或独立样本;切换后的生产源拒绝旧写入。尚未适配的覆盖审计可只读检查冻结备份,不能当作 PostgreSQL 当前状态。
|
|
|
|
## 1. 下载固定快照
|
|
|
|
`paper-atlas download --help` 说明大小、校验和与续传参数。各来源的固定版本与具体命令见[数据源说明](data-sources.md)。下载成功只表示原始文件已核验。
|
|
|
|
## 2. 采集并核对清单
|
|
|
|
```sh
|
|
paper-atlas collect pmlr --cache /data/paper-index/raw/http-cache --out /data/paper-index/collected
|
|
paper-atlas collect cvf --cache /data/paper-index/raw/http-cache --out /data/paper-index/collected
|
|
paper-atlas collect ecva --cache /data/paper-index/raw/http-cache --out /data/paper-index/collected
|
|
paper-atlas catalogue dblp --help
|
|
paper-atlas audit iclr --help
|
|
paper-atlas collect public-openreview --help
|
|
paper-atlas collect icml-public-archive --help
|
|
paper-atlas audit public-openreview --help
|
|
```
|
|
|
|
采集输出 JSONL、manifest 和逐卷或逐年 catalogue。逐项检查 blocked、partial、缺失摘要及目标会议归属。DBLP 候选目录还需核验届次和 track,不能直接当作主会录用名单。
|
|
|
|
其他会议的公开拒稿使用 `collect public-openreview`,再以 `audit public-openreview` 核对既有投稿身份和决定冲突。来源版本、逐文件状态盘点和未解决记录分别保存在 inventory 与 held 清单中,具体命令见[数据源说明](data-sources.md#其他会议的公开拒稿)。这类公开子集不能当作会议完整投稿名单。
|
|
|
|
## 3. 串行导入
|
|
|
|
首次 arXiv 导入使用 `paper-atlas import arxiv --db ... --archive ...`。现有数据库合并已核验的会议文件使用:
|
|
|
|
```sh
|
|
paper-atlas maintain merge --db /data/paper-index/papers.sqlite \
|
|
--archive /data/paper-index/raw/arxiv-metadata.zip \
|
|
/data/paper-index/collected/selected-file.jsonl
|
|
```
|
|
|
|
上例的 selected-file 须换成实际通过核验的文件。协调器会维护本项目的 arXiv 断点、序列化写入并检查外键;已完成的 arXiv 批次不会重启。持久批次应作为一次性 systemd 任务运行,详见[运行维护](operations.md)。
|
|
|
|
## 4. 查询与分析前检查
|
|
|
|
```sh
|
|
paper-atlas query --db /data/paper-index/papers.sqlite --query '"language model"' --limit 20
|
|
paper-atlas query --db /data/paper-index/papers.sqlite --tag arxiv:category=cs.AI
|
|
paper-atlas query --db /data/paper-index/papers.sqlite --venue ICLR --year 2025 --status rejected
|
|
paper-atlas query --db /data/paper-index/papers.sqlite --paper 123
|
|
paper-atlas coverage --db /data/paper-index/papers.sqlite --out /data/paper-index/collected/coverage.json
|
|
```
|
|
|
|
`--status rejected` 筛选某次投稿的最新已知决定。它并不表示论文在所有会议均未录用;分析转投情况时查看该论文的完整投稿历史。年份表示会议届次,观察时间和决定日期分别保留。
|
|
|
|
例如,查找在 ICLR 有拒稿记录、但在其他已知投稿中已有录用的论文:
|
|
|
|
```sh
|
|
paper-atlas query --db /data/paper-index/papers.sqlite \\
|
|
--venue ICLR --status rejected --outcome accepted
|
|
```
|
|
|
|
`known_acceptances` 列出目前仍为录用状态的各次投稿及会议、年份、track 和决定证据,`publication_outcome` 汇总为 accepted 或 no_known_acceptance。汇总会检查所有会议和 track,不把某次拒稿覆盖到整篇论文;同一次投稿的后续撤稿也会更新该次状态并保留原决定。no_known_acceptance 只表示现有来源中没有查到录用,不能称为“从未录用”。
|
|
|
|
`--stats` 中 papers 是当前规则下的论文实体数;source_records 是来源记录数;decisions 是决定观察数。一个投稿可能有多个来源和多条观察,不能相加当作论文数。
|