1. 这个速递栏目到底在解决什么问题
做AI方向研究或者工程落地的人都有一个共同的痛点:信息过载。arXiv每天新增的论文数量在三百到五百篇之间,顶会开完的那几周更是集中爆发。你不可能每篇都点开看,但你又怕漏掉真正重要的那几篇。我身边不少同行包括我自己,都经历过“过了两周才发现某篇关键工作”的懊恼。
“人工智能学术速递”这个栏目,本质上就是一个人工+半自动的论文筛选与摘要系统。它每天从公开的学术预印本平台上抓取最新提交的论文,按照预设的方向标签做初筛,再由人工快速过一遍摘要,挑出值得关注的那几篇,配上简短的解读和链接,形成一份可以直接扫读的清单。2.23这一期就是其中某一天的正常产出。
它解决的核心问题有三个:第一,降低信息获取的时间成本,把“大海捞针”变成“直接看筛好的”;第二,提供跨方向的视野,做视觉的人可能顺便看到NLP那边的新动态;第三,保留一个可回溯的记录,过一段时间回头看,能快速定位到某个时间段的热点方向。
适合看这个栏目的人包括:刚进组的研究生、需要跟踪前沿但时间有限的工程师、准备选题的高年级本科生,以及任何对AI进展保持好奇但不想被信息淹没的人。它不替代精读论文,但能帮你决定“哪几篇值得精读”。
2. 一期速递的完整生产流程拆解
2.1 数据抓取与去重
速递的起点是数据源。常见的做法是订阅几个主要的预印本平台的RSS或者用其公开API拉取当日新增。以arXiv为例,它的API支持按分类(cs.CV、cs.CL、cs.LG等)和时间范围查询,返回XML格式的结果。实际写脚本的时候,我会用Python的feedparser或者直接requests加xml解析,把标题、作者、摘要、提交时间、论文编号这些字段抽出来存到一个本地数据库里。
去重这一步很多人会忽略,但其实很关键。同一篇论文可能因为版本更新(v1到v2)被重复抓取,也可能因为跨分类提交出现在多个列表里。我的做法是用论文编号(不含版本号)作为唯一键,如果已经存在就跳过,只更新版本信息。这样能避免同一篇论文在速递里出现两次。
import feedparser import sqlite3 from datetime import datetime, timedelta def fetch_arxiv(category="cs.CV", days_back=1): base = "http://export.arxiv.org/api/query?" query = f"search_query=cat:{category}&sortBy=submittedDate&sortOrder=descending&max_results=200" feed = feedparser.parse(base + query) cutoff = datetime.now() - timedelta(days=days_back) results = [] for entry in feed.entries: published = datetime.strptime(entry.published[:10], "%Y-%m-%d") if published >= cutoff: results.append({ "id": entry.id.split("/")[-1].split("v")[0], "title": entry.title.replace("\n", " "), "summary": entry.summary.replace("\n", " "), "published": entry.published, "link": entry.link }) return results这段代码是简化版,实际用的时候要加异常处理和请求间隔,不然容易被限流。我一般设置每次请求间隔三秒,一天跑一次足够。
2.2 方向标签与初筛规则
抓下来的论文如果直接全看,那和没筛一样。所以需要一套标签体系。我的做法是维护一个关键词到方向的映射表,比如“diffusion model”“score-based”归到生成模型,“object detection”“segmentation”归到视觉感知,“transformer”“attention”这种通用词则根据上下文判断。
初筛规则可以很简单:标题或摘要命中某个方向的关键词超过一定阈值,就归入该方向。但纯关键词匹配会有误判,比如一篇讲“attention”的论文可能是认知科学方向的。所以我会再加一层:如果论文的主分类(primary category)和关键词方向一致,权重加倍;不一致则降权。这样能把准确率提到可接受的水平。
注意:不要追求100%的自动分类准确率,速递的定位是辅助筛选,不是替代判断。留10%到20%的“其他”类目,让读者自己扫一眼,反而能发现意外之喜。
2.3 人工摘要与解读的写法
自动筛选之后,我会快速过一遍每篇的摘要,挑出值得展开的。判断标准很主观,但大致有几条:方法有新意、实验规模大、来自活跃团队、或者和近期热点直接相关。挑出来之后,写一段两三句话的解读,说清楚它做了什么、为什么值得看、和已有工作的区别在哪。
写解读的时候我有个习惯:不用“本文提出了一种…”这种句式,而是直接说“这篇把X和Y结合起来了,在Z任务上比之前的方法好了多少”。这样读起来更像人在说话,而不是机器在复述摘要。另外,如果论文有开源代码,一定把链接附上,这是读者最关心的信息之一。
3. 2.23这一期的内容组织与呈现
3.1 栏目结构设计
一期速递通常分成几个固定板块:今日亮点、方向速览、值得精读、工具与资源。今日亮点放一到两篇我认为最重要的,给一段稍长的解读;方向速览按标签分组,每篇一句话概括;值得精读是那些需要花时间细看的,附上我的阅读笔记要点;工具与资源则是数据集、代码库、教程之类的非论文内容。
这种结构的好处是层次分明,读者可以根据自己的时间决定看到哪一层。只有五分钟就扫一眼亮点和速览,有半小时就看看精读部分。2.23这一期我印象比较深的是生成模型方向有几篇关于采样加速的工作,视觉那边有关于开放词汇分割的新方法,NLP方向则是一批关于长上下文处理的。
3.2 摘要写作的具体技巧
写一句话概括的时候,最容易犯的错是照抄摘要的第一句。摘要的第一句往往是背景铺垫,信息密度低。我的做法是直接跳到方法和结果部分,用“做了什么+怎么做的+效果如何”的三段式来压缩。比如不要写“近年来扩散模型在图像生成领域取得了显著进展”,而是写“用一致性蒸馏把扩散模型的采样步数从50步压到4步,FID只掉了0.3”。
另外,数字要具体。说“效果更好”不如说“在ImageNet 256上FID从2.1降到1.8”。说“速度更快”不如说“推理时间从1.2秒降到0.3秒”。读者扫一眼就能判断这个改进对自己有没有意义。
3.3 链接与引用规范
每篇论文必须附上原文链接,这是底线。如果有代码、项目主页、演示视频,也一并附上。我习惯把链接放在标题后面,用方括号标注类型,比如[论文]、[代码]、[项目页]。这样读者一眼就知道点进去能看到什么。
引用格式我倾向于简洁:作者名+年份+简短标题。不写完整的期刊格式,因为速递的读者不需要这个。如果同一篇论文之前出现过,会标注“更新”并说明改了什么,比如“v2增加了在更大数据集上的实验”。
4. 实际操作中遇到的坑与应对方案
4.1 抓取失败与数据缺失
最常见的问题是API限流或者临时不可用。我的应对策略是加本地缓存:每次抓取的结果存一份JSON到本地,如果当天抓取失败,就用缓存里的数据,并在速递开头注明“数据可能不完整”。另外,设置重试机制,失败后等三十秒再试,最多试三次。
还有一个坑是时区问题。预印本平台的提交时间用的是UTC,而我看的是本地时间。如果不做转换,可能会把昨天的论文当成今天的。我的做法是统一转成UTC+8再判断日期,这样和我的作息一致。
4.2 分类误判与漏筛
关键词匹配最大的问题是漏筛。一篇论文可能用了不同的术语来描述同一个东西,比如“扩散模型”和“去噪概率模型”其实是一回事,但关键词表里只写了前者就会漏掉。解决办法是定期更新关键词表,把同义词、缩写、变体都加进去。我一般每两周回顾一次漏筛的论文,把新出现的术语补进去。
另一个问题是跨方向论文的归属。一篇论文可能同时涉及视觉和语言,放哪个方向都行。我的做法是看它的主要贡献在哪边,如果实在分不清就放“交叉方向”标签下。不要强行归类,读者不会因为分类不完美而责怪你,但会因为漏掉重要论文而失望。
4.3 解读的主观性与偏差
写解读难免带入个人判断,这既是优点也是风险。优点是读者能获得一个“人”的视角,知道什么值得看;风险是可能过度推崇某些工作而忽略另一些。我的应对方法是:在解读里明确区分“事实”和“观点”。事实部分只陈述论文做了什么、结果如何;观点部分用“我认为”“个人觉得”来标注。这样读者能清楚地知道哪些是客观信息,哪些是我的主观判断。
另外,我会定期回顾自己之前的解读,看看有没有明显偏颇的地方。比如有一段时间我特别关注效率优化的工作,对理论分析类的论文关注不够,后来就有意识地平衡一下。
4.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 抓取结果为空 | API变更或限流 | 手动访问API地址看返回 | 更换接口或增加请求间隔 |
| 同一论文重复出现 | 版本更新或跨分类 | 检查论文编号是否相同 | 用编号去重,保留最新版本 |
| 分类明显错误 | 关键词表过时 | 查看论文实际内容 | 更新关键词表,增加同义词 |
| 解读被质疑不准确 | 摘要理解偏差 | 对照原文方法部分 | 修正解读,标注更正说明 |
| 读者反馈漏掉重要论文 | 初筛规则太严 | 回顾当日全部论文标题 | 放宽阈值,增加“其他”类目 |
提示:这张表是我自己遇到问题时快速定位用的,你可以根据自己的数据源和流程调整。关键是要有一个可查的记录,不然同样的问题会反复出现。
5. 让速递更有价值的几个进阶做法
5.1 趋势追踪与月度回顾
单看一天的速递是碎片化的,但如果把一个月的数据攒起来,就能看出一些趋势。比如某个方向连续多天有论文出现,说明它正在升温;某个方法被多篇论文引用或对比,说明它成了基线。我每个月会做一次回顾,把当月的高频关键词、高频作者、高频数据集列出来,形成一份月度观察。
这个回顾不需要很复杂,用简单的词频统计就能做。把每篇论文的标题和摘要拼在一起,去掉停用词,统计词频,排在前面的就是热点。再结合人工判断,就能写出一份有参考价值的月度总结。
5.2 读者反馈的收集与利用
速递发出去之后,读者的反馈是最宝贵的改进依据。我会在文末留一个简单的反馈入口,让读者告诉我哪篇论文他们觉得有用、哪篇被高估了、还希望看到什么方向。这些反馈直接指导我调整关键词表和筛选规则。
比如有读者说希望多看到一些关于模型可解释性的工作,我就在关键词表里加了“interpretability”“explainability”“attention visualization”这些词,后续的速递里这类论文的出现频率就上去了。读者的需求是多样化的,靠一个人拍脑袋想不全,但收集反馈能帮你覆盖到更多。
5.3 与社区工具的配合使用
速递不是孤立的,它可以和已有的社区工具配合。比如有些平台提供论文的引用关系图,你可以用它来判断一篇论文的影响力;有些平台有论文的讨论区,你可以看看同行在关注什么。把这些信息融入速递的解读里,能让内容更有深度。
我自己的做法是:对于值得精读的论文,去它的讨论区扫一眼,看看有没有人指出实验缺陷或者提出替代解释。如果有,就在解读里加一句“注意:有讨论指出…”。这样读者不仅知道论文说了什么,还知道社区对它的看法。
5.4 自动化与人工的平衡点
全自动的速递没有灵魂,全人工的速递做不长久。我的经验是:抓取、去重、初筛、格式化这些环节尽量自动化,把时间省下来花在解读和判断上。自动化部分用脚本跑,每天定时执行;人工部分集中在早上花半小时到四十分钟完成。
这个平衡点因人而异。如果你时间充裕,可以多花点时间在解读上;如果时间紧,就把自动化程度提高,人工只做最关键的筛选。关键是保持可持续性,不要因为某天太忙就断更,断了就很难捡起来。
6. 从零开始搭建自己的速递栏目
6.1 最小可行方案
如果你也想做一个类似的速递,不需要一开始就追求完美。最小可行的方案是:选一个你最关心的方向,每天抓取该方向的新论文,人工挑三到五篇,写一句话概括,发在一个固定的地方。工具用最简单的就行,Python脚本加一个Markdown文件,甚至手动复制粘贴都可以。
关键是先跑起来,形成习惯。我见过太多人把时间花在搭建复杂的系统上,结果系统还没搭好,热情就消退了。先用最笨的办法做起来,遇到问题再逐步优化,这样更容易坚持。
6.2 逐步迭代的路径
跑通最小方案之后,可以按这个顺序逐步迭代:第一步,加自动去重和格式化,减少手工操作;第二步,加关键词初筛,缩小人工筛选的范围;第三步,加多方向覆盖,从单一方向扩展到三到五个方向;第四步,加月度回顾和趋势分析;第五步,加读者反馈机制。
每一步都建立在前一步稳定运行的基础上,不要跳步。我自己的速递栏目跑了大概三个月才加到多方向覆盖,又过了两个月才做月度回顾。慢一点没关系,稳一点更重要。
6.3 长期维护的心态
做速递这件事,最大的挑战不是技术,是心态。每天都要花时间,短期内看不到明显的回报,很容易放弃。我的建议是把它当成一个学习工具而不是一个产品。你在做的过程中会被迫读很多论文的摘要,这本身就是一种积累。哪怕只有你一个读者,这个投入也是值得的。
另外,不要追求每期都完美。有时候论文质量普遍不高,那就少写几篇,标注“今日平淡”也没关系。读者能理解,你自己也不用有压力。长期来看,稳定输出比偶尔爆发更有价值。
7. 一些实操中的小技巧和注意事项
7.1 提高筛选效率的快捷键与工具
如果你用浏览器看论文列表,学会用快捷键能省不少时间。比如Ctrl+点击在新标签页打开,Ctrl+W关闭当前标签,Ctrl+Tab切换标签。我习惯一次性打开二三十个标签,然后快速扫读,不重要的直接关掉,重要的留下来细看。
另外,用RSS阅读器订阅几个关键来源,比每天手动访问网站要高效得多。阅读器会自动聚合更新,你只需要扫一眼标题,感兴趣的再点开。我用的阅读器支持全文搜索和标签分类,找之前的论文很方便。
7.2 摘要阅读的取舍标准
读摘要的时候,我一般看三个地方:第一句看它解决什么问题,中间看它怎么做的,最后看结果。如果第一句说的问题我不关心,直接跳过;如果方法部分有我不熟悉的术语,标记一下待查;如果结果只在一个小数据集上验证,降权处理。
还有一个经验:看作者单位。来自活跃团队的论文通常质量更有保障,但也不要迷信,小团队偶尔也会有惊艳的工作。我的做法是给每个团队维护一个内部评分,根据历史论文的质量动态调整,但只作为参考,不作为唯一标准。
7.3 避免信息茧房
做速递时间长了,容易陷入自己的舒适区,只关注熟悉的方向和作者。这对读者不利,因为他们的需求是多样的。我的应对方法是:每周至少花一天时间看一个自己不熟悉的方向,强迫自己跳出舒适区。哪怕看不懂细节,至少知道那边在发生什么。
另外,定期检查自己的关键词表,看看有没有长期没有更新的条目。如果一个关键词连续一个月没有命中任何论文,要么是这个方向冷了,要么是术语变了。前者可以保留观察,后者需要更新。
7.4 与同行交流的价值
一个人做速递,视野总是有限的。和同行交流能帮你发现盲区。我加入了一个小范围的讨论组,里面的人方向各异,每天有人分享自己看到的论文。这些分享不一定都适合放进速递,但能帮我判断哪些方向在升温、哪些方法在被淘汰。
交流的另一个好处是能获得反馈。你写的解读,同行一眼就能看出哪里不准确。这种反馈比读者的反馈更专业,也更有针对性。当然,交流的前提是你也愿意分享自己的发现,单向索取是维持不下去的。
7.5 数据备份与迁移
最后说一个容易被忽略的点:数据备份。你的论文数据库、关键词表、历史速递文件,这些都是积累下来的资产。如果只存在本地,硬盘坏了就全没了。我的做法是每周自动备份到云端,同时保留一份本地副本。迁移的时候,整个文件夹打包带走,在新机器上改一下路径就能继续跑。
另外,代码要写注释,配置文件要写说明。过三个月回头看,你很可能忘了某个参数是干什么的。花五分钟写清楚,能省后面半小时的困惑。这个习惯在 solo 做项目的时候尤其重要,因为没有人会提醒你。