20250801 本地论文阅读助手搭建

论文数据获取

arXiv 预印本论文资源

  • arXiv 是一个免费、开放获取的预印本仓储网站,主要收录物理学、数学、计算机科学、生物学、定量金融学、统计学等学科的学术论文预印本
  • 科学家和研究人员可以在正式发表论文之前,先在 arXiv 上分享研究成果;arXiv上的论文对所有人免费开放,任何人都可以访问和下载
  • arXiv 也提供了基本的查询和下载 API,其 Python 代码示例如下:
import urllib, urllib.request
url = 'http://export.arxiv.org/api/query?search_query=all:electron&start=0&max_results=1'
data = urllib.request.urlopen(url)
print(data.read().decode('utf-8'))

PubMed 生物医学文献资源

2025-08-29 update,Cool Paper 作为一个论文总结工具,也有 RSS 功能

论文数据解析

<code>paperetl</code> 是一个用于处理医学和科学论文的 ETL 库

  • paperetl 能够对论文进行信息的抽取、转换与存储
  • paperetl 支持 arXiv 和PubMed 的 XML 格式文件,也支持完整 PDF 文件、符合文本编码倡议(TEI)的 XML 文件和记录文章元信息的 CSV 文件
  • paperetl 支持的存储形式:SQLite、JSON、YAML 和 ES

Python 示例:

# jupyter notebook 环境准备
# pip install paperetl==2.5.1
# !python -c "import nltk; nltk.download('punkt')"

# 下载数据
!wget -N -P pubmed/ https://ftp.ncbi.nlm.nih.gov/pubmed/updatefiles/pubmed25n1535.xml.gz
# 数据处理
!python -m paperetl.file pubmed pubmed_clean

import sqlite3
import pandas as pd

from IPython.display import display, HTML

def execute(sql):
  db = sqlite3.connect("pubmed_clean/articles.sqlite")
  cursor = db.cursor()
  cursor.execute(sql)

  df = pd.DataFrame([list(x) for x in cursor], columns=[c[0] for c in cursor.description])
  display(HTML(df.to_html(index=False)))

# Show articles
execute("SELECT * FROM articles LIMIT 5")
# Show sections
execute("SELECT * FROM sections LIMIT 5")

论文数据分析

<code>paperai</code> 是一个用于处理医学和科学论文的 AI 应用程序

  • paperai 通过 AI 驱动的报告生成,为研究任务提供强力支持(支持 RAG)
  • paperai 能根据配置文件,以高效的方式执行批量 LLM 推理操作
  • paperai可以生成 Markdown、CSV 格式的报告,并可直接在 PDF 上标注答案

配置文件模板:

%%writefile report.yml
name: Report

Hypertension:
    query: COVID-19 and hypertension
    columns:
        - name: Date
        - name: Study
        - {name: Sample Size, query: number of people/patients, query: how many people/patients, type=int}
        - {name: Comorbidities, query: covid-19 and hypertension, question: what diseases}

Python 示例:

# jupyter notebook 环境准备
# pip install paperai==2.5.0
# !python -c "import nltk; nltk.download(['punkt', 'punkt_tab', 'averaged_perceptron_tagger_eng'])"

# 索引数据
!python -m paperai.index pubmed_clean/pubmedbert-base-embeddings 0 10000

# 查询数据,只显示Top2,最低匹配度为0.75
!python -m paperai.query "COVID-19 and hypertension" 2 paperai 0.75


# 根据配置文件的 RAG pipeline 调用大模型,完成简单的QA任务
python -m paperai.report report.yml 5 csv paperai

import pandas as pd
from IPython.display import display, HTML
# 展示结果
display(HTML(pd.read_csv("Hypertension.csv").to_html(index=False)))

根据配置文件的 RAG pipeline 不同,paperai 可以作为论文助手完成各种任务

往年同期文章