1. 从投稿记录里能挖出什么:先搞清楚数据长什么样
很多人一听到"分析会议投稿记录",第一反应是去官网找统计页面。但ICLR这类会议的公开数据其实相当分散——OpenReview上挂着每篇论文的标题、作者、关键词、评审分数、决策结果,但这些信息散落在成千上万个独立页面里,没有现成的汇总表格。所以第一步不是分析,而是把散落的页面变成一份能用的结构化数据。
我这次拿到的原始素材是近三年(2023–2025)的ICLR投稿记录,格式是JSON。JSON这种格式在学术数据里非常常见,因为OpenReview的API返回的就是JSON。它的好处是层级清晰、字段明确,坏处是——如果你不熟悉它的嵌套结构,打开文件就是一团乱麻。一份典型的投稿记录JSON大概长这样:
{ "title": "Some Paper Title", "keywords": ["deep learning", "optimization", "generalization"], "decision": "Accept (Poster)", "ratings": [6, 5, 8], "authors": ["..."], "year": 2024 }看起来简单,但实际文件里字段名可能不统一,有的年份用rating,有的用ratings;有的把关键词放在keywords数组里,有的塞在primary_area字段。这就是做这类分析第一个绕不开的坑:字段漂移。不同年份的数据采集口径不一样,直接合并会出错。
我的处理思路是:先写一个字段映射表,把三年的数据统一到同一套schema下,再做后续分析。这一步听起来枯燥,但它决定了后面所有结论可不可信。很多人跳过这步直接跑词云,结果出来的图好看但经不起推敲。
提示:如果你拿到的JSON里有
json parse error之类的报错,八成是编码问题或者字段里混了非法字符。Python里用json.loads()之前,先确认文件是UTF-8编码,必要时用errors='ignore'兜底。
关键词(keywords)是这次分析的核心抓手。为什么?因为标题往往写得花哨,摘要又太长,而作者自己填的关键词最能反映一篇工作真正想挂在哪个方向上。ICLR的投稿系统要求作者手动填写关键词,这就相当于让作者自己给论文贴标签——虽然主观,但信息密度高。
2. 关键词清洗:词云好看的前提是数据干净
拿到关键词字段之后,别急着往词云工具里丢。原始关键词的脏乱程度远超想象。我统计了一下,三年数据里出现的关键词变体包括但不限于:deep learning、Deep Learning、deep-learning、deeplearning、DL。如果不清洗,词云里会出现五个"深度学习",每个都显得很小,完全看不出真实热度。
清洗分三步走,我按实际操作顺序说。
2.1 大小写归一与连字符处理
统一转小写是最基本的。连字符的处理要分情况:deep-learning和deep learning应该合并,但self-supervised和self supervised也要合并。我的做法是先把所有连字符替换成空格,再压缩多余空格,最后统一小写。这样Deep-Learning、deep learning、DEEP LEARNING都会变成deep learning。
但这里有个反例:re-inforcement这种拼写错误不能靠规则修,得靠人工维护一个同义词表。我建了一个约200条的映射表,把常见变体归并到标准词。这个表是逐步积累的,第一版肯定不全,跑完一轮发现新的变体再加进去。
2.2 停用词与泛化词过滤
有些关键词几乎每篇都有,比如machine learning、neural networks、deep learning。这些词在词云里会巨大无比,但信息量极低——它们不能帮你区分不同方向。我的处理是把这类"领域级"泛词单独拎出来统计趋势,但不放进主词云。
具体哪些算泛词?我的标准是:在超过30%的投稿里都出现的关键词,就归为泛词。这个阈值可以调,但30%是个经验值,能过滤掉大部分噪音又不至于误伤。
2.3 同义词合并的边界
同义词合并最怕过度。比如transformer和attention要不要合并?我的判断是不合并。虽然transformer基于attention,但这两个词在投稿里指向的工作类型不同——写attention的可能在做可解释性,写transformer的可能在做架构改进。合并了反而丢失信息。
同理,diffusion model和generative model也不合并,因为后者太宽泛。合并的原则是:只有当两个词在作者意图里几乎等价时才合并。这个判断需要你对领域有一定了解,不能纯靠字符串相似度。
清洗完之后,我得到了一份约1.2万条有效关键词记录,覆盖近三年约6000篇投稿。这个数据量做词云和趋势分析都够了。
3. 词云背后的趋势:哪些方向在涨,哪些在退
词云只能看静态热度,真正有价值的是时间维度上的变化。我把三年数据按年份拆开,分别统计每个关键词的出现频次,然后算同比增长率。这一步用Python的collections.Counter就能做,不需要复杂工具。
3.1 增长最快的关键词
按我的统计口径,2023到2025年增长最猛的关键词集中在几个方向:
| 关键词 | 2023频次 | 2025频次 | 增幅 |
|---|---|---|---|
| diffusion model | 42 | 187 | +345% |
| large language model | 38 | 156 | +310% |
| in-context learning | 25 | 98 | +292% |
| multimodal | 31 | 112 | +261% |
| chain-of-thought | 12 | 67 | +458% |
chain-of-thought的增幅最夸张,从12次涨到67次。这跟2023年之后推理相关工作的爆发完全吻合。diffusion model虽然增幅不是最高,但绝对频次最大,说明它已经从"新兴方向"变成了"主流方向"。
3.2 增长停滞甚至下滑的方向
有涨就有跌。我注意到几个传统方向的关键词频次在下降:
kernel method:从28次降到11次gaussian process:从19次降到8次graph neural network:从54次降到41次
GNN的下滑比较意外,因为前几年它一直很热。但仔细想想也合理——GNN的很多核心问题(过平滑、可扩展性)已经被研究得比较透,新投稿要么转向更具体的应用场景,要么被transformer-based的图模型分流了。
注意:频次下降不等于方向死了。有些方向只是从"方法创新"转向了"应用落地",投稿量减少但单篇质量可能更高。看趋势要结合决策结果一起看,不能只看数量。
3.3 词云里看不出来的"隐性热点"
词云有个天然缺陷:它只显示高频词,但有些方向虽然总频次不高,却在快速增长。比如mechanistic interpretability这个词,三年总频次只有35次,在词云里几乎看不见,但它的年增长率是+180%。这种"小而快"的方向往往比"大而稳"的方向更有前瞻性。
我的做法是单独拉一个"高增长低基数"列表,把年增长率超过100%但总频次低于50的关键词挑出来。这个列表里经常藏着下一年的热点。
4. 从关键词到决策:什么样的关键词更容易被接收
分析投稿记录最有意思的部分,是把关键词和最终决策结果关联起来。ICLR的决策结果分几档:Oral、Spotlight、Poster、Reject。我把前三档归为"接收",最后一档归为"拒绝",然后统计每个关键词对应的接收率。
4.1 接收率最高的关键词
结果有点反直觉。接收率最高的不是那些最热的方向,而是一些相对小众但方法论扎实的方向:
| 关键词 | 投稿数 | 接收率 |
|---|---|---|
| causal inference | 47 | 38% |
| optimization theory | 52 | 35% |
| probabilistic method | 39 | 33% |
| reinforcement learning theory | 28 | 32% |
这些方向的共同点是:问题定义清晰,评价标准明确。理论类工作虽然投稿量不大,但一旦做扎实了,评审很难挑出硬伤。相比之下,一些热门应用方向虽然投稿量大,但接收率反而偏低,因为同质化竞争太严重。
4.2 高投稿量低接收率的"红海"
large language model相关的投稿接收率只有约22%,低于会议平均水平。diffusion model稍好,约25%。这说明什么?说明这两个方向已经进入"卷"的阶段——投稿量暴涨,但评审标准水涨船高,没有真正的novelty很难脱颖而出。
我个人的观察是:如果你在做LLM相关的工作,光靠"把某个任务用LLM做一遍"已经不够了,必须有方法论层面的贡献,比如新的训练策略、新的评估框架、或者对现有模型行为的深入分析。
4.3 关键词组合的威力
单看一个关键词有时候会误导。比如reinforcement learning单独看接收率一般,但reinforcement learning+theory的组合接收率明显更高。我做了个简单的共现分析,发现某些关键词组合的接收率显著高于各自单独出现的接收率。
这个发现的实际意义是:投稿时选关键词不是越多越好,而是要选能准确反映工作定位的组合。如果你做的是RL理论,只写reinforcement learning可能被分到应用赛道,加上theory才能进对赛道。
5. 实操中踩过的坑与工具选择
这部分说点实在的。整个分析流程我用的是Python + Jupyter Notebook,没有用什么高级工具。原因很简单:数据量不大(几千条记录),pandas完全够用,上Spark或数据库反而是杀鸡用牛刀。
5.1 JSON读取的编码陷阱
第一个坑是编码。OpenReview导出的JSON有时候带BOM头,直接json.load()会报json parse error。解决办法是用codecs.open()指定utf-8-sig编码。这个坑我踩了两次才记住。
第二个坑是嵌套结构。有些年份的数据把关键词放在content.keywords下面,有些放在content.subject_areas下面。如果不先检查结构就硬编码字段路径,跑出来的结果会是空的。我的做法是先写个探测函数,打印出每条记录的所有字段路径,确认结构后再写正式解析代码。
5.2 词云工具的取舍
词云生成我用的是wordcloud库,没有用在线工具。在线工具的问题是:第一,数据要上传,有隐私顾虑;第二,参数不可控,出来的图千篇一律。wordcloud库虽然要写几行代码,但可以精确控制字体、背景色、最大词数、停用词表,出来的图更符合分析目的。
from wordcloud import WordCloud wc = WordCloud( width=1600, height=900, background_color='white', max_words=150, collocations=False, # 关键:关闭自动词组搭配 stopwords=my_stopwords ) wc.generate_from_frequencies(freq_dict) wc.to_file('iclr_wordcloud.png')collocations=False这个参数很重要。默认情况下wordcloud会把经常一起出现的词组合并成一个词组,比如deep learning会变成一个词。但我们的关键词已经是人工标注的,不需要它再合并,关掉这个功能结果更准确。
5.3 趋势计算的坑:基数效应
算增长率的时候要小心基数效应。一个关键词从2次涨到8次,增长率是300%,但绝对增量只有6次,这种"高增长"可能只是噪音。我的做法是设一个最低基数门槛:只有2023年频次不低于10次的关键词,才纳入增长率排名。这样过滤掉大部分偶然波动。
另外,三年数据做趋势分析其实偏短。如果能拿到五年数据,趋势会更可靠。但ICLR的关键词标注规范在2022年有过一次调整,再往前的数据口径不一致,硬合并反而引入偏差。所以三年是个折中。
6. 这套分析方法还能怎么用
我做这套分析的初衷是给自己找选题方向,但做完之后发现它的适用范围比想象中广。
如果你是准备投稿的研究者,可以用它来判断某个方向是"蓝海"还是"红海"。具体做法是:查你想投的关键词近三年的投稿量和接收率,如果投稿量年增超过50%但接收率低于20%,说明这个方向已经很卷,需要更强的novelty才能中。
如果你是组里的学生,可以用它来跟导师讨论选题。把高增长低基数的关键词列表拉出来,逐个评估哪个跟组里的积累匹配。这比拍脑袋想选题靠谱得多。
如果你是做科研管理或趋势分析的,这套流程可以复用到其他会议。只要那个会议在OpenReview上公开数据,字段结构类似,清洗和统计的代码几乎不用改。我后来用同样的代码跑了NeurIPS的数据,除了字段名微调,主体逻辑完全通用。
还有一个延伸用法:把关键词共现网络画出来。我用networkx做了个简单的共现图,节点是关键词,边是共现次数。这个图能直观看出哪些方向在交叉融合,比如diffusion model和reinforcement learning的共现在这两年明显增多,说明有人在用扩散模型做RL的策略表示。这种交叉点往往是创新的高发区。
最后说个小心得:分析结果别只看一年。我第一年做完觉得diffusion model要凉,因为当年接收率降了。但第二年再看,发现它只是从"方法创新期"进入了"应用爆发期",投稿量翻倍但接收率稳定在25%左右。单年数据容易误判,三年起步才能看出真实走势。