CiteSpace进阶指南:如何对聚类结果进行二次聚类分析

1次阅读
没有评论

共计 1897 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

为什么需要二次聚类?

初次使用 CiteSpace 进行文献计量分析时,很多新手会发现自动生成的聚类(clustering)结果存在主题混杂现象。比如一个名为 ”machine_learning” 的聚类里可能同时包含深度学习、传统算法、工业应用等不同方向的术语,这会掩盖更精细的知识结构。

CiteSpace 进阶指南:如何对聚类结果进行二次聚类分析

这种现象源于 CiteSpace 默认聚类算法(如 Louvain)的全局优化特性,它倾向于将网络划分为数量适中、内部连接紧密的社区。当研究领域存在多层次知识结构时,就需要通过二次聚类(re-clustering)进一步拆解。

技术实现全流程

第一步:导出首次聚类结果

在 CiteSpace 中完成基础分析后:

  1. 点击Export → Cluster Summary
  2. 选择 Save as CSV 格式
  3. 勾选 Include Node Attributes 以保留词频信息
[示意图:CiteSpace 导出界面]
| Menu Path       | Options Selected          |
|-----------------|---------------------------|
| Export → Cluster | CSV format ✔              |
|                 | Node attributes ✔         |

第二步:Python 数据预处理

使用 pandas 加载数据并过滤低频词:

import pandas as pd

# 读取导出的聚类数据
df = pd.read_csv('cluster_summary.csv')

# 过滤词频低于 5 的术语(根据数据集调整)filtered_terms = df[df['Frequency'] >= 5]['Term'].tolist()

# 构建文档 - 术语矩阵(示例用 ASCII 示意)'''
Doc1: [0, 1, 1, 0]  # 每个数字表示术语是否存在
Doc2: [1, 0, 0, 1]
...
'''

第三步:特征加权与聚类

采用 TF-IDF 加权和层次聚类(Hierarchical Clustering):

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import AgglomerativeClustering

# TF-IDF 向量化(注意处理短语术语)vectorizer = TfidfVectorizer(analyzer=lambda x: x.split('_'))
X = vectorizer.fit_transform(filtered_terms)

# 层次聚类(关键参数说明)cluster = AgglomerativeClustering(
    n_clusters=None,  # 不预设类别数
    affinity='cosine',  # 使用余弦相似度
    linkage='average',  # 平衡类内距离
    distance_threshold=0.7  # 根据轮廓系数调整
)
labels = cluster.fit_predict(X.toarray())

避坑指南

高频词过滤

  • 初始词频阈值建议设为总文档数的 1%~5%
  • 可用 df['Frequency'].describe() 查看分布
  • 警惕停用词(如 ”study”、”analysis”)干扰

相似度计算

常见误区包括:

  1. 直接使用共现次数而非标准化相似度
  2. 忽略术语长度对余弦相似度的影响
  3. 未处理稀疏矩阵导致的偏差

解决方案:

# 正确的相似度矩阵计算示例
from sklearn.metrics.pairwise import cosine_similarity
sim_matrix = cosine_similarity(X)  # 自动处理归一化

可视化优化

当标签(label)重叠时:

  1. 调整 matplotlib 的fontsize参数
  2. 使用 adjust_text 库自动避让
  3. 对小型聚类启用聚合显示

效果验证方法

量化评估

计算模块度(Modularity Q 值):

from sklearn.metrics import silhouette_score

# 轮廓系数评估(值越接近 1 越好)score = silhouette_score(X, labels)
print(f"聚类质量评分:{score:.3f}")

人工校验

  1. 随机抽取每个新聚类的代表性术语
  2. 邀请领域专家进行主题标注
  3. 计算 Kappa 系数评估一致性

实践心得

经过多个项目的验证,二次聚类能显著提升知识图谱的解读深度。特别是在交叉学科研究中,该方法可以帮助发现传统聚类忽略的微观知识结构。建议首次使用时保留完整的参数记录,方便后续对比优化。

最终结果可导回 CiteSpace 进行可视化对比,具体方法是在 Time Slicing 设置中加载新生成的聚类标签文件。这种『算法 + 人工』的混合工作流,特别适合研究生阶段的文献综述工作。

正文完
 0
评论(没有评论)