CiteSpace关键词聚类图谱深度解析:从数据预处理到知识发现
有人就在文章里写“#0 是核心聚类,#5 不重要”;拿到图谱后,第一眼就看节点大小,直接写“人工智能”最大,所以它是热点。实际上,节点直径只反映共现频次,没考虑中介中心性(betweenness centrality)与突现值(burst),容易把“老掉牙”的宽泛词当成新潮流。为了“图好看”,把切片调成 1 年,结果 2000—2023 年出现 24 个切片,网络稀疏得一塌糊涂。欢迎在评论区分享你
一、为什么读图总踩坑:三个真实场景
第一次把 CiteSpace 跑完,看到五颜六色的大球小球,很多人直接截图写“某领域研究热点如图”。结果审稿人一句“聚类命名依据何在?”就把人问住。这种尴尬背后,其实是计量学基础缺位带来的“图谱误读综合征”。我把自己和身边同事踩过的坑浓缩成三个场景,看完就能对号入座。
-
场景 A:把“高频关键词”当成“研究热点”
拿到图谱后,第一眼就看节点大小,直接写“人工智能”最大,所以它是热点。实际上,节点直径只反映共现频次,没考虑中介中心性(betweenness centrality)与突现值(burst),容易把“老掉牙”的宽泛词当成新潮流。 -
场景 B:聚类编号当排名
软件默认把聚类按规模标为 #0、#1、#2……有人就在文章里写“#0 是核心聚类,#5 不重要”。其实编号只是规模序,与学术价值无关;真正该看的是 silhouette 值(>0.7 才有说服力)和 LLR 算法提取的命名短语。 -
场景 C:时间切片错位
为了“图好看”,把切片调成 1 年,结果 2000—2023 年出现 24 个切片,网络稀疏得一塌糊涂;反过来设成 5 年,又把 2020 年后的爆发信号平均掉了。时间窗错位,演化路径直接失真。

二、CiteSpace vs VOSviewer:聚类算法与可视化差异
选工具前先问自己:到底想看“关系”还是“演化”?下面这张对照表把核心差异一次说清。
| 维度 | CiteSpace 6.2.R4 | VOSviewer 1.6.19 |
|---|---|---|
| 聚类算法 | 基于 LLR/LSI 的谱聚类 + Pathfinder 修剪 | 基于模块度(modularity)的 VOS 聚类 |
| 网络修剪 | 默认启用 Pathfinder,保持全局连通且去冗余边 | 主要靠共现阈值过滤,冗余边较多 |
| 可视化 | 时间线视图、突现视图、双图叠加 | 主要提供密度图、叠加图 |
| 交互性 | 可拖拽、节点可合并、可导出 NetDraw | 拖拽较弱,侧重出版级矢量图 |
| 上手曲线 | 参数多、需调优 | 默认参数即可出图 |
一句话总结:想讲“故事”——谁突然爆发、谁连接不同阵营——用 CiteSpace;只想快速出一张“漂亮关系云”交差,VOSviewer 更轻量。
三、核心实现拆解:从原始矩阵到聚类命名
下面流程图把“黑箱”拆成 5 步,每步都给出可操作的检查点,照着做至少能保证图不会跑歪。
-
数据预处理
从 Web of Science 导出“全记录与引文”纯文本,用 Python 去重、补全作者关键词,统一大小写,合并同义词(见下一节代码)。 -
构建共词矩阵
CiteSpace 内部会生成keyword_coocurrence.csv,行列都是关键词,值是共现次数。这里注意勾选“Term 来源”只选Author Keywords,避免被Keywords Plus的泛化词带偏。 -
Pathfinder 网络修剪
该算法保留最大生成树并删减冗余边,使网络密度自动降到 1% 左右,既保持连通又提高可读性。Silhouette 值若低于 0.5,可适当调高links strength阈值再跑一次。 -
LLR 算法聚类
对数矩阵做谱分解,提取特征向量后按 cosine 相似度分组。LLR(log-likelihood ratio)对每个聚类计算短语频率,输出前 5 个术语作为候选命名。记得手动核对,把“student* learn*”这类通配符短语改成自然语言。 -
可视化与解读
在“Timeline”视图里,横向坐标是年份,纵向是聚类;突现词用红色外圈标出。写论文时,先描述聚类演化,再对突现词做解释,最后把中介中心性 >0.1 的节点拎出来讨论“桥梁概念”。

四、Python 数据清洗代码片段
以下脚本在 Python 3.10 下通过,依赖 pandas、nltk 和 pyspellchecker。核心任务三件套:去停用词、合并同义词、统一单复数。
# pip install pandas nltk spellchecker
import pandas as pd
from nltk.corpus import stopwords
from spellchecker import SpellChecker
stop = set(stopwords.words('english'))
spell = SpellChecker(language='en')
def normalize(word):
word = word.lower().strip()
# 单复数归并示例
if word.endswith('ies'):
word = word[:-3] + 'y'
elif word.endswith('s'):
word = word[:-1]
return word
def clean_keywords(keyword_str):
if pd.isna(keyword_str):
return ''
kw_list = [normalize(k) for k in keyword_str.split(';')]
kw_list = [k for k in kw_list if k and k not in stop and len(k) > 2]
# 同义词映射表,按需扩充
synonym = {'machine learning': 'ml', 'artificial intelligence': 'ai'}
kw_list = [synonym.get(k, k) for k in kw_list]
return ';'.join(list(set(kw_list)))
df = pd.read_csv('wos_raw.csv')
df['Author_Keywords_Clean'] = df['Author Keywords'].apply(clean_keywords)
df.to_csv('wos_clean.csv', index=False)
跑完脚本再把 wos_clean.csv 喂给 CiteSpace,共词网络会干净不少。
五、参数调优实战:g-index、时间切片与阈值
-
g-index(引文增益指数)
默认 k=25,意思是只保留年度被引前 25 的文献节点。若领域小众,可把 k 降到 15;热门领域则可提到 50。判断标准:跑完后节点数控制在 300–500,既保证覆盖又避免过拟合。 -
时间切片(Time Slicing)
跨度 20 年以上建议 2–3 年一切片;10 年以内可 1 年一切片。每一切片最少文献量(Select Citers)≥ 50 篇,否则网络太稀疏。可在Project参数里勾选Prune slice networks与Prune merged network双保险。 -
共现阈值(Top N/Top L%)
关键词网络常用 Top N=50 或 Top 10%,按出现频次截断。若出现“孤岛”节点过多,改用 g-index 模式,让引文权重介入,网络连通度会明显提升。 -
网络修剪强度
如果 silhouette <0.5,把Pathfinder关掉再跑一次,对比两图,选聚类更紧凑的一张。多数情况下 Pathfinder 能提升 0.1–0.2 的 silhouette,但极端稀疏数据会适得其反。
六、避坑指南:五个高频报错与急救方案
-
节点重叠到看不清
在Visualizations→Layout里把Repulsion从 0.1 提到 0.3,或导出.net文件到 Gephi 用 ForceAtlas2 重新布局。 -
聚类命名全是“algorithm、model、system”
说明 LLR 没抓到短语。解决:回数据源检查是否只勾了Keywords Plus,改回Author Keywords;或在Cluster→Label Clusters用LSI再跑一遍,通常能挖出长短语。 -
silhouette 值全灰
聚类内部相似度不足,网络还太粗。提高links阈值,或把Pruning选为Minimum Spanning Tree先简化。 -
突现词(Burst)检测为零
年份跨度太短或切片内文献量太少,导致 Poisson 检验不显著。把最小持续时间(Minimum Duration)从 2 降到 1,再试。 -
导出图片发虚
CiteSpace 默认 PNG 分辨率 96 dpi。正式出版请File→Save As→SVG,再丢进 Illustrator 改 600 dpi。
七、延伸思考:时序网络与突变检测的进阶玩法
当你已经能熟练解释“聚类 #3 在 2018 年突然爆发”之后,可以往两个方向再深挖:
-
时序网络(Temporal Network)
把共词边加上“首次共现时间戳”,用 Python 的networkx构建动态图,计算边权重随时间衰减,看哪些连接从短暂爆红到长期沉淀,从而区分“炒作”与“基石”概念。 -
突变检测(Burst Detection)
不只做关键词,还可以对期刊、机构、国家做 burst。结合突现强度与持续时间,能发现“哪些国家在 2020 年后突然加大投入”,为团队选址或合作提供情报。
欢迎在评论区分享你遇到的奇葩聚类命名,或者晒出你用 Python 处理的动态网络截图,一起把“看图说话”升级成“看图说故事”。
参考文献
[1] Chen C. Science mapping: A systematic review of the literature[J]. Journal of Data and Information Science, 2017, 2(2): 1-28.
[2] Van Eck N J, Waltman L. Software survey: VOSviewer, a computer program for bibliometric mapping[J]. Scientometrics, 2010, 84(2): 523-538.
[3] 李杰, 陈超美. 科技文本挖掘及可视化[M]. 北京: 科学出版社, 2022.
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)