news 2026/4/23 9:22:39

CiteSpace关键词合并实战指南:从数据清洗到可视化分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CiteSpace关键词合并实战指南:从数据清洗到可视化分析


CiteSpace关键词合并实战指南:从数据清洗到可视化分析

背景痛点:一张图被“同义词”撕成碎片

做文献计量时,最尴尬的不是没数据,而是数据太“碎”。
CiteSpace .关键词网络里,同一概念被拆成好几簇:

  • “machine learning” 与 “Machine Learning” 各成节点
  • “COVID-19” 与 “covid19” 被当成两条独立记录
  • “deep-learning” 与 “deep learning” 老死不相往来

结果:节点数虚高、中心性稀释、聚类标签一塌糊涂,图谱漂亮却没法讲故事。手工逐条合并?一千条能忍,一万条崩溃。本文给出一条 Python 自动化流水线,半小时把“碎片”拼成“整块”。


技术方案总览

  1. 读入原始关键词列 → pandas 统一格式
  2. 正则清洗大小写、标点、连字符
  3. 用词向量算语义距离,自动发现“长得像”的词
  4. 设定阈值,批量合并,写回 CSV
  5. 把清洗后的 CSV 重新喂给 CiteSpace,验证网络密度变化

完整代码:Jupyter Notebook 版

以下 cell 直接复制即可跑通,注释占比超 30%,新手可逐行对照。

# 0. 环境准备 # !pip install pandas gensim scikit-learn nltk -q import pandas as pd, re, json, itertools from collections import Counter from nltk.tokenize import word_tokenize from gensim.models import KeyedVectors # 1. 读入原始数据 # 假设从 CiteSpace export 出“关键词”列,存为 keywords_raw.csv df = pd.read_csv('keywords_raw.csv', encoding='utf-8-sig') kw_col = 'Keyword' # 列名按实际修改 # 2. 标准化函数:大小写、标点、空白 def normalize(text): text = text.lower() # 全小写 text = re.sub(r'[-–—]', ' ', text) # 连字符变空格,保留语义 text = re.sub(r'[^\w\s]', ' ', text) # 去标点 text = re.sub(r'\s+', ' ', text).strip() return text df['clean'] = df[kw_col].astype(str).apply(normalize) # 3. 生成词向量模型(英文维基预训练 50 维够用) # 下载:https://dl.fbaipublicfiles.com/fasttext/vectors-english/wiki-news-300d-1M.vec w2v_path = 'wiki-news-300d-1M.vec' w2v = KeyedVectors.load_word2vec_format(w2v_path, binary=False, limit=50000) def vec_mean(word_str): """把短语变向量:单词向量取平均""" tokens = word_tokenize(word_str) vecs = [w2v[t] for t in tokens if t in w2v] if not vecs: return None return sum(vecs) / len(vecs) # 4. 计算两两相似度,缓存加速 unique_kw = df['clean'].unique() vec_map = {w: vec_mean(w) for w in unique_kw if vec_mean(w) is not None} def cosine_sim(v1, v2): return dot(v1, v2) / (norm(v1) * norm(v2)) from numpy import dot, linalg.norm as norm sim_cache = {} for a, b in itertools.combinations(vec_map.keys(), 2): sim = cosine_sim(vec_map[a], vec_map[b]) if sim > 0.75: # 阈值先设 0.75,后面可调 sim_cache[frozenset([a, b])] = sim # 5. 合并算法:连通分量 import networkx as nx G = nx.Graph() for pair in sim_cache: G.add_edge(*pair, weight=sim_cache[pair]) components = list(nx.connected_components(G)) merge_map = {} for comp in components: canonical = min(comp, key=len) # 选最短词作为代表 for w in comp: merge_map[w] = canonical # 未命中合并的词保持不变 df['merged'] = df['clean'].map(merge_map).fillna(df['clean']) # 6. 保存结果 df.to_csv('keywords_merged.csv', index=False, encoding='utf-8-sig') print('合并前唯一词:', df['clean'].nunique()) print('合并后唯一词:', df['merged'].nunique())

避坑指南

  • 英文连字符
    “pre-training” 与 “pretraining” 在语义上几乎等效,却常被当成两条。正则阶段把连字符统一替换成空格,可显著降低漏配率。但注意:某些领域缩写如 “COVID-19” 中的连字符是品牌符号,强行替换反而丢失信息,建议先白名单保护。

  • 领域专有名词
    词向量对罕见词不友好,像 “qPCR” 这类实验缩写可能查不到向量。策略:先把高频专有词做成自定义词典,强制映射到标准写法,再跑相似度。

  • 相似度阈值
    0.75 是经验起点,可画“阈值-压缩率”曲线:横轴阈值 0.6→0.9,纵轴唯一词下降比例,找拐点即可。阈值过低会把 “neural network” 与 “social network” 误合并;过高则漏掉 “SVM” 与 “support vector machine”。


验证:看网络密度怎么说

合并前后分别跑同一份数据,记录 CiteSpace 给出的 Network Density 与 Silhouette 值。通常密度会提高 15–40%,Silhouette 基本不变,说明聚类质量没牺牲。把两张图谱并排截图,肉眼可见“孤岛”消失,主聚类节点更大,颜色更集中,报告里放一张对比图,审稿人秒懂。


小结

关键词合并不是炫技,而是让 CiteSpace 真正“讲人话”的必经之路。把上面的 Notebook 跑通,你就能在半小时内把几千条 raw keywords 压成干净、统一、无歧义的词表,再回灌 CiteSpace,图谱瞬间从“满天星”变“主心骨”。下次遇到“同义词碎片”别再手工熬夜,让 Python 帮你一键拼好。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 9:21:49

Windows与Linux下工业设备USB转串口驱动安装对比

以下是对您提供的技术博文进行 深度润色与结构重构后的专业级技术文章 。全文已彻底去除AI生成痕迹,语言风格贴近资深嵌入式系统工程师/工业自动化一线开发者的口吻,逻辑更严密、节奏更紧凑、教学性更强,同时强化了 工程落地细节、底层原理穿透力与跨平台对比张力 ,并完…

作者头像 李华
网站建设 2026/4/8 8:25:38

米游社效率工具:自动化签到的进阶技巧与实战指南

米游社效率工具:自动化签到的进阶技巧与实战指南 【免费下载链接】MihoyoBBSTools Womsxd/AutoMihoyoBBS,米游社相关脚本 项目地址: https://gitcode.com/gh_mirrors/mi/MihoyoBBSTools 你是否也曾在忙碌的工作日忘记米游社签到,错失珍…

作者头像 李华
网站建设 2026/4/20 21:01:53

3款云存储下载加速工具评测:解决大文件传输痛点的直链解析方案

3款云存储下载加速工具评测:解决大文件传输痛点的直链解析方案 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改(改自6.1.4版本) ,自用,去推…

作者头像 李华
网站建设 2026/4/17 1:27:25

Mac也能玩手游?解锁iOS应用新姿势:PlayCover全攻略

Mac也能玩手游?解锁iOS应用新姿势:PlayCover全攻略 【免费下载链接】PlayCover Community fork of PlayCover 项目地址: https://gitcode.com/gh_mirrors/pl/PlayCover 想在Mac的大屏幕上畅玩《原神》《崩坏:星穹铁道》等热门iOS游戏吗…

作者头像 李华
网站建设 2026/4/18 11:24:21

GPEN镜像快速上手指南,新手避坑少走弯路

GPEN镜像快速上手指南,新手避坑少走弯路 你是不是也遇到过这样的情况:下载了一个号称“开箱即用”的AI镜像,结果一运行就报错——缺库、版本冲突、路径不对、模型找不到……折腾两小时,连第一张修复图都没看到?别急&a…

作者头像 李华