全文约 2806 字 · 阅读约 7 分钟
项目信号:★297 stars、34 forks、9 人关注、2 个未解决 issue,主要语言 Python,创建于 2024-12-31,最近一次更新在 2025-08-04,仓库未声明开源协议(License: None)。它是阿里团队 NAACL 2025 论文《Unfolding the Headline》的配套代码,另附一个 ModelScope 上的中文网页 demo。数字不算大,但有正式论文和公开评测集撑着,属于能读懂原理的研究型代码。
关键词及解析:
- 时间线摘要(TLS):从一堆关于同一事件的报道里,抽出关键时间节点、按先后排好,每个节点配一句概括。
- 迭代自问(iterative self-questioning):让模型对着已经检索到的材料反复提出新问题,用这些问题决定下一轮该搜什么。
- 开放域检索(open-domain):不预先圈定一个封闭语料,直接联网搜实时新闻当证据,对应仓库里的 RAG(检索增强生成)思路。
- Open-TLS 数据集:作者随仓库放出的一份开放域时间线评测集,规模和时间跨度都比过去的公开数据集大。
它把"人肉翻报道、按时间排事件"这套体力活,拆成了一个能自动跑的检索加提问循环。 你给它一个新闻主题词,模型先把主题改写成检索式,联网搜回相关报道,读取网页正文或摘要,再对着读到的内容提出新的追问,用追问驱动下一轮检索,如此往复到设定的轮数,最后把所有证据整理成一条带日期的时间线,并跑一遍评测打分。

项目结构
对着这张结构图能看清它的分工。`src/` 下每个文件负责循环里的一环,`rewriter.py` 改写查询、`searcher.py` 联网搜新闻、`reader.py` 读取页面、`questioner.py` 生成下一轮追问、`timeline_generator.py` 汇总成时间线,`model.py` 统一对接大模型(可选通义千问或 GPT),最外层的 `evaluation.py` 拿 `data/` 里的标准答案给结果打分。数据流是一条线走下来的,主题词进去,一条排好序的事件时间线出来。
这套设计真正聪明的地方,是让上一轮读到的东西去生成下一轮的追问,每一轮的检索式都跟着已经读到的内容往下走。 一个事件早期的报道往往只提到冒头的线索,模型读完再追问"这件事后来怎样、涉及哪些方",顺着追问补搜,才能把跨越很长时间的脉络接起来。
上手难度评中,它是一份研究型代码,没有做成装好即用的成品。仓库没有做成能 pip 安装的包,跑之前得先把几个 API key 手动填进源码文件,`src/model.py` 里填通义千问或 OpenAI 的 key,`src/searcher.py` 里填 Bing 搜索的 key,想让它抓取网页全文(默认只用摘要)还要在 `src/reader.py` 填 Jina 的 key。

关键配置 requirements.txt
依赖本身很轻,`requirements.txt` 只有六项,`dashscope` 接通义千问、`openai` 接 GPT、`tilse` 是时间线评测库、其余是 transformers、tqdm 和 scikit-learn。装完依赖,先跑 `question_exampler.py` 生成提问样例(也可以直接用仓库自带的 `question_examples.json`),再用 `main.py` 带上模型名、最大轮数、数据集、输出目录等参数启动,输出目录里会得到检索到的新闻、生成的时间线和评测分数三样东西。
代码本身免费公开,但真正的成本在跑起来之后。 每一轮都要调大模型和联网搜索,通义千问或 GPT 的 token 费、Bing 搜索的调用费、可选的 Jina 费都得自付。会 Python、能读懂并改动源码、愿意去申请几个搜索和模型 API 的研究者,半天能跑通;完全不写代码的人会卡在填 key 和拿 Bing key 这两步。另外要留意仓库未声明开源协议,二次分发或改造用于正式项目前,权利边界并不清楚。
它帮到的是研究里"梳理事件来龙去脉"这一环,对做案例研究、区域研究、政策追溯或事件重建的人最实用。给一个主题,它能快速产出一版事件时间线草稿,把你可能漏掉的时间节点先摆到台面上,用来给一个不熟悉的案例快速建立时间感,这一步做得不错。
但它省的是搭草稿的力气,省不掉逐条回原始出处核对的力气,后者才是学术真正的部分。 有三条不能可靠交给它。它的证据全部来自 Bing 搜回的网络新闻,属于二手报道,没有经过同行评审,新闻本身会出错、会带立场。大模型做摘要有编造日期和张冠李戴的风险,某个节点的日期或事件描述可能是模型编出来的,这正是学术写作里引用幻觉与编造文献的高风险区。它的覆盖面等于 Bing 能搜到什么,非英文、被屏蔽或藏在付费墙后的内容会留下空洞。
所以务实的用法是拿它当一份待核对的线索清单,而不是可以直接引用的结论。它是为新闻时间线做的、也照新闻时间线评测,别把它当成能替你做文献综述的工具。
对研究者最要紧的一条,它每一次运行都要联网。你的主题词会发给大模型(通义千问走阿里云、GPT 走 OpenAI),检索请求发给 Bing(微软),读全文时还会经过 Jina,README 里没有提供离线或本地模型的选项。
不过它和把整篇稿子喂进去问答的工具不一样,你交给它的只是一个新闻主题词,草稿、数据、访谈记录都不进入它的流程。 暴露出去的只有你的检索主题。如果你研究的是公开事件,敏感度很低;如果你的选题方向本身还没公开、不想让人知道你在查什么,那么把主题词发给这几家云端接口,就等于把这个方向透露给了它们。
有风险的用法是把未发表的数据或受访者信息当作"新闻"塞进去,而它又没有本地模式可退,这类内容不该经过它。
来源:CHRONOS,Alibaba-NLP/CHRONOS,https://github.com/Alibaba-NLP/CHRONOS,297 stars,未声明开源协议(License: None)。
夜雨聆风