← 返回栏目

论文搜到了,该怎么筛?

论文搜到了,接下来该保留哪些?Semantic Scholar 把网页检索、引文追踪和新论文推荐接在一起,也提供可编程调用的学术图谱接口。本文用四组可复用示例说明怎样逐步筛选、判读摘要与引用信号,并厘清免费 API 的限速和覆盖边界,避免把排序靠前或有 PDF 当成证据可靠。

网页检索与逐步筛选

示例 1:先宽查,再逐项收窄。 在 Semantic Scholar 输入 retrieval augmented generation,再单独检索 "retrieval augmented generation",比较候选论文是否更贴近目标概念。网页支持引号短语,不支持布尔运算和通配符;不要直接套用其他数据库的 AND、OR 或 *。用完整术语起步,比只输入 RAG 更便于控制歧义。官网检索说明

按下面顺序操作,每次只增加一项条件,方便发现是哪一步排除了论文。

筛选项 可复用设置 怎样判读
Field of Study(领域) 先看 Computer Science,再取消领域限制复查 适合排除明显无关学科;不能据此判定跨学科论文无关
日期范围 例如设为 2023–2026,查看近年的工作 这是本次检索条件,不是完整研究史;回溯基础方法时应放宽
Publication Type(出版物类型) 综述入门时选 Review;另查期刊或会议论文 类型用于组织阅读,不单独证明同行评审状态或方法质量
PDF 可得性 需要马上阅读时检查结果中的 PDF 入口 没有 PDF 入口也应保留相关记录,再查出版商或机构馆藏

领域、日期和出版物类型的操作依据是官方 Search 教程。PDF 要多留一步:本次未能读取实时搜索页,官方可读教程也未确认当前 PDF 筛选按钮的名称与位置,因此不把旧版“Has PDF”界面当成已核验的现行步骤;下文用 API 的公开 PDF 筛选给出确定可查的参数。论文详情页的全文入口可跳转 PDF 或出版商,能否访问取决于来源。全文访问说明

先按相关性挑候选,再按时间看看新论文是否被漏读。保存检索词、日期、筛选条件和排除理由;取消领域与 PDF 限制后再查一遍。领域标签来自模型且限英语论文,缺摘要、标题含糊或跨学科时尤其需要人工复核。领域分类说明

摘要与引用信号的判读

打开候选论文后,先用 TLDR 判断是否值得进一步读,再核对摘要、研究对象、方法和结论。TLDR 是 AI 生成的极短摘要,官网称目前覆盖计算机科学与生物医学;没有 TLDR 不表示论文不重要。它压缩了大量背景,不能直接拿来替代原文中的限定条件。TLDR 说明

“Highly Influential Citations”关注的是被引论文对施引论文的重要影响,模型利用引用上下文等信息作出识别。它依赖施引论文全文可得性,因此未标记不能推出“没有影响”。这个标记也不能告诉你施引作者是在支持、质疑还是修正原结论。官方影响引用说明

实际阅读时,可以优先打开一篇带标记的施引论文,找到引用段落,核对它究竟沿用了方法、扩展了结果,还是只讨论了背景。总引用数用于找到值得追踪的线索,影响标记用于安排阅读顺序;是否纳入自己的论证,仍要看原文与研究问题的关系。

还要区分“没搜到”和“不存在”:官方说明其内容主要面向英语学术论文与预印本,图书覆盖有限,不包含专利。中文议题、专著传统较强的领域和专利检索都需要其他来源补充,不能用这里的结果数代表全部文献。覆盖说明

用推荐持续追踪新论文

示例 2:把已筛好的论文变成追新种子。 登录后,将相关论文保存到 Library 中一个主题清楚的文件夹,例如“检索增强生成的评估”;在该文件夹页面开启 Research Feed。后续看到无关推荐时,标记为 not relevant,看到确实相关的论文则继续保存到对应文件夹。官方说明推荐每日刷新,新建后可次日再查看。创建 Research Feed

不要把所有兴趣混在同一文件夹:将方法评估、具体应用等主题分开,是本文建议的整理方式,便于判断推荐偏向了什么。如果推荐长期偏向某个应用场景,先检查种子论文是否也集中在该场景,再补入其他方向的代表作。

Research Feeds 推荐的是平台语料中近三个月发表的论文,适合持续追新,不能替代历史文献回溯。推荐范围 同时保留独立的关键词检索:算法没有推荐某篇论文,并不是排除它的理由。

API 调用与结果整理

API 适合把候选论文整理成可复查的记录。以下示例依据官方文档编写,未执行线上实测,不提供虚构的响应或命中数量。

先分清免费访问与限速。 多数端点可以不带密钥调用;官网所写的匿名 1000 requests/second 是所有匿名用户共享的池,高峰还可能进一步限流,并非每个人可独占的额度。API key 的初始限速是所有端点合计 1 RPS,即每秒一次请求。需要持续调用时,在官方 API 页面申请密钥,通过 x-api-key 请求头发送;部分端点本就要求认证。密钥应存入环境变量,不写进公开代码。

示例 3:检索近期论文并按 token 翻页。 安装 Python 的 requests 包后运行下例;环境变量 S2_API_KEY 可选,未设置时以匿名方式请求。示例默认只取一页,确认条件合适后再调高 MAX_PAGES,避免无意发起大量下载。

import os
import time
import requests

BASE = "https://api.semanticscholar.org/graph/v1"
key = os.getenv("S2_API_KEY")
headers = {"x-api-key": key} if key else {}

def get_json(path, params):
    for attempt in range(5):
        # 单进程串行请求;如多进程共用 key,需统一调度
        time.sleep(1.1)
        r = requests.get(BASE + path, params=params,
                         headers=headers, timeout=30)
        if r.status_code == 429:
            delay = r.headers.get("Retry-After", "")
            time.sleep(float(delay) if delay.isdigit()
                       else 2 ** (attempt + 1))
            continue
        r.raise_for_status()
        return r.json()
    raise RuntimeError("持续限流,请稍后再试")

params = {
    "query": '"generative ai"',
    "year": "2023-",
    "fields": "title,url,publicationTypes,publicationDate,openAccessPdf",
}
MAX_PAGES = 1
seen = set()
first_id = None
for page in range(MAX_PAGES):
    result = get_json("/paper/search/bulk", params)
    if page == 0:
        print("估计匹配数:", result.get("total"))
    for paper in result.get("data", []):
        pid = paper["paperId"]
        if pid in seen:
            continue
        seen.add(pid)
        first_id = first_id or pid
        print(pid, paper.get("title"), paper.get("openAccessPdf"))
    token = result.get("token")
    if not token:
        break
    params = {**params, "token": token}

year=2023- 表示从 2023 年起;fields 选择返回字段,返回 openAccessPdf 字段本身不会排除没有公开 PDF 的论文。需要只看公开 PDF 时,在首次请求前加入 params["openAccessPdf"] = "";这是不接收取值的筛选参数,不写成 true。也可加入 params["publicationTypes"] = "Review" 或 params["fieldsOfStudy"] = "Computer Science",分别形成综述或领域子集,每次改条件都应重新开始分页。官方参数规范

bulk 返回的 total 是估计数,按返回的 token 续取;它用于批量匹配,不提供网页相关性排序。不要把第一页当成“最值得读”的论文名单。这里的查询端点与网页语法不同,不能相互照搬。API 教程

示例 4:沿真实 paperId 查看施引论文。 接着运行下面的代码,使用上一例实际返回的首个 ID;若没有结果就跳过,不填写猜测的 ID。

if first_id:
    citing = get_json(
        f"/paper/{first_id}/citations",
        {"fields": "title,year,contexts,intents,isInfluential",
         "limit": 10, "offset": 0},
    )
    for edge in citing.get("data", []):
        paper = edge.get("citingPaper") or {}
        print(paper.get("title"), paper.get("year"),
              edge.get("isInfluential"), edge.get("contexts"))
    print("下一批 offset:", citing.get("next"))

citingPaper 是引用目标论文的文章;contexts 是可得的引用上下文,isInfluential 是模型标记。空上下文不能解释成没有引用理由,标记也不等于对结论的赞成。此端点用 offset 分页,与 bulk 的 token 不同;如要继续,使用响应中的 next,不能将十条样本当成全部引用。施引查询规范

整理结果时,以 paperId 去重并记录查询时间、条件和页数。publicationDate、publicationTypes 或 PDF 字段为 null,表示相应数据缺失;不要补猜日期、把类型缺失写成未审稿,或把没有公开 PDF 写成没有全文。论文收录、引文提取和全文可得性都会影响覆盖,分页取完仍不等于穷尽全部研究。

遇到 429 应减速并退避,不用并发绕开限制。免费访问也受官方 API 许可约束,商业用途或超出许可范围的用途应联系官方确认;PDF 链接还需另查原文许可,公开可读不等于任意再分发。

图示说明:题图为 pushandplay 发布的 Eigenfactor: Visualizing Information Flow in Science,许可为 CC BY 2.0,仅用于说明学术信息联系,不是 Semantic Scholar 界面或本次检索结果。

Eigenfactor 科学信息流的可视化作品,以连线呈现学术文献之间的信息联系

关键词检索依次经过筛选、摘要与引文初判和原文核查,回路提示放宽领域与 PDF 限制

参考文献

  1. Semantic Scholar 官方 FAQ

  2. What are Highly Influential Citations?

  3. Semantic Scholar API - Overview

  4. Academic Graph API Tutorial

  5. Academic Graph API 接口规范

  6. 以上为官方原文,查阅日期为 2026-10-19;页面未明确标注发布日期,不将查阅日期视为发布日期。当前仅完成结构规划与资料查阅,代码尚未实测。

  7. 学术之门 · 学者的智能时代生活指南

  8. 信息由 Scholay 学术一站式平台 整理并发表,如有侵权请反馈下架。

  9. 信息同步发表于恩特学术,智能时代的学者社区