共计 2942 个字符,预计需要花费 8 分钟才能阅读完成。
背景痛点
刚接触文献计量分析的科研新手,常常会在关键词聚类分析中遇到以下典型问题:

- 数据清洗困难 :直接从 Web of Science 导出的数据格式混乱,包含大量冗余信息
- 参数设置困惑 :面对 g -index、LLR 算法等专业术语无从下手
- 结果解读障碍 :生成的聚类图谱杂乱无章,难以提取有效信息
- 可视化效果差 :节点重叠、颜色混淆导致图谱可读性低
这些问题往往会耗费研究者大量时间在数据处理和软件调试上,而非真正的学术分析。
工具对比
在文献计量分析领域,CiteSpace、VOSviewer 和 HistCite 是三大主流工具,它们在关键词聚类分析上各有优劣:
- CiteSpace:
- 优势:时间序列分析能力强,支持动态可视化,聚类算法丰富
-
劣势:学习曲线较陡峭,界面相对复杂
-
VOSviewer:
- 优势:操作简单,可视化效果美观
-
劣势:缺乏时间维度分析功能
-
HistCite:
- 优势:引文分析功能强大
- 劣势:可视化能力弱,不支持高级聚类分析
对于需要深入分析研究前沿演变的研究者,CiteSpace 是最佳选择。
核心流程
1. 数据准备
从 Web of Science 导出数据时,请选择 ” 纯文本 ” 格式,并包含以下字段:
- 标题 (TI)
- 作者 (AU)
- 来源出版物 (SO)
- 摘要 (AB)
- 作者关键词 (DE)
- Keywords Plus(ID)
- 参考文献 (CR)
- 出版年 (PY)
使用 Python 进行数据清洗的示例代码:
import pandas as pd
# 读取 WoS 导出的文本数据
data = pd.read_csv('wos_data.txt', sep='\t', encoding='utf-8')
# 清洗关键词字段
data['Keywords'] = data['DE'].fillna('') +';'+ data['ID'].fillna('')
data['Keywords'] = data['Keywords'].str.replace(';', ';').str.replace(';', ';')
# 保存为 CiteSpace 可识别的格式
data.to_csv('citespace_input.txt', sep='\t', index=False, encoding='utf-8')
2. 网络构建
在 CiteSpace 中进行网络构建时,关键参数设置建议:
- 时间切片 (Time Slicing):根据研究领域发展特点设置,通常 2 - 3 年为一个切片
- 节点类型 (Node Types):选择 ”Keyword” 进行关键词分析
- 选择标准 (Selection Criteria):
- g-index:建议设置为 25,平衡网络密度和信息量
- 每个时间切片选择 Top N:通常选 50
- 修剪算法 (Pruning):
- Pathfinder:简化网络结构
- Pruning sliced networks:保持时间维度一致性
- 聚类算法 (Clusterig Algorithm):
- LLR(对数似然率):适合发现领域内的特色研究主题
- MI(互信息):适合发现跨学科的关联主题
3. 可视化调整
优化聚类图谱可读性的技巧:
- 节点大小 :反映关键词出现频次,可通过 ”Visualization”→”Node Size” 调整
- 颜色映射 :不同聚类使用对比色,在 ”Cluster”→”Color Mapping” 中设置
- 标签显示 :控制显示关键词的数量和字体大小,避免重叠
- 布局算法 :尝试不同的力导向布局,找到最清晰的网络结构展示方式
代码示例
使用 Python 辅助分析聚类结果的示例代码:
import matplotlib.pyplot as plt
import numpy as np
# 从 CiteSpace 导出聚类结果
cluster_data = pd.read_csv('cluster_results.csv')
# 绘制聚类大小分布
plt.figure(figsize=(10, 6))
cluster_sizes = cluster_data['Size'].value_counts().sort_index()
plt.bar(cluster_sizes.index, cluster_sizes.values, color='skyblue')
plt.xlabel('Cluster Size')
plt.ylabel('Frequency')
plt.title('Distribution of Cluster Sizes')
plt.show()
# 设置颜色映射
def get_cluster_colors(n_clusters):
"""Generate distinct colors for each cluster"""
cmap = plt.get_cmap('tab20')
return [cmap(i % 20) for i in range(n_clusters)]
# 可视化关键词共现关系
plt.figure(figsize=(12, 12))
for cluster in set(cluster_data['ClusterID']):
cluster_points = cluster_data[cluster_data['ClusterID'] == cluster]
plt.scatter(cluster_points['X'], cluster_points['Y'],
color=get_cluster_colors(10)[cluster],
label=f'Cluster {cluster}',
s=cluster_points['Frequency']*10)
# 添加标签
for _, row in cluster_data.iterrows():
plt.annotate(row['Label'], (row['X'], row['Y']),
fontsize=8, alpha=0.7)
plt.legend()
plt.title('Keyword Co-occurrence Clusters')
plt.axis('off')
plt.show()
避坑指南
- 时间切片设置不当 :
- 问题表现:网络出现断裂,时间维度信息丢失
-
解决方案:根据文献数量调整切片跨度,文献较少时增大切片宽度
-
网络过于稠密 :
- 问题表现:节点和连线过多,难以辨识
-
解决方案:增加 g -index 值,或使用 Pathfinder 算法修剪网络
-
聚类结果不稳定 :
- 问题表现:每次运行得到不同的聚类结果
- 解决方案:固定随机种子,或在 ”Preferences” 中设置 ”Deterministic” 模式
延伸思考
关键词聚类分析可以与其他文献计量技术结合,获得更深入的洞见:
- 突现词检测 :识别研究热点的时间演变
- 中介中心性分析 :发现领域内的关键桥梁文献
- 时区视图 :可视化研究主题的演变轨迹
建议尝试 CiteSpace 中的 ”Burstness” 和 ”Timezone” 功能,将静态的聚类分析与动态的前沿演化分析相结合。
资源推荐
- CiteSpace 官方文档
- 文献计量分析交流群 (示例链接,请替换为真实群组)
- Chen, C. (2017). Science Mapping: A Systematic Review of the Literature. Journal of Data and Information Science, 2(2), 1-40.
通过本指南的系统学习,相信您已经掌握了 CiteSpace 进行关键词聚类分析的核心方法。实践中遇到的具体问题,欢迎在学术社区交流讨论。
正文完
