~ / tech / projects / poem-analytics
poem-analytics/index.mdx
cat index.mdx
📊

诗迹 · 社员诗歌年度报告

每年给国学社出一份年度报告:1646 首诗词的体裁分布、月度创作曲线、四季意象词云、年度热诗、作者风格画像。从 ECharts 图表到 Poetry-Prism 灵魂画像,把数据变成社员之间传播最广的内容。

status: ● Active
date: 2023-12
category: data
Python ECharts NLP Visualization 诗词 Data Analysis
README.md

这个项目是什么

诗迹是国学社的年度诗歌数据报告。每年底从南洋吟游的数据库里提取当年所有社员创作数据,做统计分析和可视化,输出一份交互式的年度报告网页。已连续做了三期:

年份总量活跃作者
202358640018614
202472141730421
2025164696867849

2025 年度报告是最完整的一期:

0
2025 创作总量
0
0
0
活跃作者

三年翻了接近三倍——从 586 到 1646,作者数从 14 到 49。报告说 1646 首大约是杜甫传世诗作的 1.12 倍——虽然质量上有亿点差距,但产量上我们赢了。

报告包含什么

体裁分布:诗以七律为绝对主力(524 首,54%),其次是七绝(320 首,33%)。词牌里临江仙最受欢迎(100 首),鹧鸪天和浣溪沙紧随其后。

月度笔耕:用 ECharts 画月度创作量曲线。灵感迸发日是 2025 年 3 月 23 日——那天 19 篇,大家在写「次韵碧城三首」。

四季流转:用语义分析提取每个季度的高频意象词,做成四张季节卡片:

  • 春:春风 · 东风 · 天涯 · 相思 · 春寒
  • 夏:身后事 · 广寒宫 · 苦雨黄梅 · 登临意
  • 秋:梧桐 · 浮生 · 随逝水 · 又归零
  • 冬:人间 · 奈何桥上 · 万里 · 江南梦

年度词云:全量用字统计生成的词云图。2025 年度关键词:人间 · 天涯

2025 年度词云

年度热诗:按阅读量排序的最受欢迎作品,附原文。

作者风格画像:每位活跃作者一张海报卡片——个人词云(一人一代表色)、创作统计、入社时间。这是社员之间互相比较、转发传播最多的内容。

为什么做这个

最早是 2023 年底的一个想法:社团每年产出这么多诗,但没有人从数据的角度去看”我们这一年在写什么”。大家对自己的创作有感性的认知——觉得今年写了很多关于秋天的词——但没有数据验证。

做了第一期之后发现,报告本身成了社团最好的传播内容。社员会截图自己的画像发朋友圈,会比较彼此的关键词差异,会惊讶于”原来今年全社最高频的意象是天涯不是月亮”。这种数据驱动的自我发现感,比任何宣传文案都有效。

后来 Poetry-Prism(诗风棱镜)就是从这个基础上长出来的——如果年度报告是集体画像,Poetry-Prism 就是个人灵魂画像。

我做了什么

报告是纯静态 HTML + ECharts + CSS 动画,通过公众号推送发布。每位作者的个人词云则嵌入在南洋吟游的作者个人资料页里,这部分是部署了的。数据管线是 Python:从 SQLite/JSON 提取 → Pandas 统计 → 生成 JSON 数据 → 注入 HTML 模板。词云用 Python wordcloud 库 + 精调参数生成 PNG,每位作者的个人词云用不同代表色渲染。

最花时间的不是代码,是设计。报告的视觉风格要和南洋吟游整体一致——毛玻璃卡片、温暖的配色、衬线字体。每一期都会迭代 UI,2025 年用了方正轻刻本雅宋作为标题字体,整体质感提升了很多。

Q&A

Q: 1646 首是杜甫的 1.12 倍,这个彩蛋是怎么来的?

杜甫传世诗作约 1470 首(不同版本有出入)。这个对比纯粹是好玩——每年选一位古人来 benchmark。之前还 benchmark 过李清照(约 60 首词,我们是她的 11 倍)。社员看到这个数字会觉得很有成就感,虽然大家都知道产量和质量是两回事。

Q: 四季意象分析是怎么做的?

做法比较朴素:按创作日期把作品分到春夏秋冬四个季度,对每个季度做分词和词频统计,去掉停用词和高频虚词后取 Top 10。不是语义分析,就是词频——但效果出奇地好,因为古典诗词的季节意象本身就很集中(写春天必提东风,写秋天必提梧桐)。人工看了一遍确认没有反直觉的结果后就直接用了。

Q: 个人词云为什么要”一人一代表色”?

最初是实用原因:多张词云放在一起,如果都是同一个颜色就分不清谁是谁。后来这个设计和主站统一了——代表色是每位社员身份的一部分,入驻南洋吟游的时候自己选的,贯穿在个人主页、作品列表、词云等所有场景里。社员会说”我是那个紫色的”、“鹅黄色那个是溪烟”。颜色成了一种身份标识,比用户名更有辨识度。

cd .. · ← back to tech
~ — press / to open terminal