共现网络原理与《釜山行》项目环境搭建(一)

发布时间:2026/7/9 2:19:02

共现网络原理与《釜山行》项目环境搭建(一) 共现网络原理与《釜山行》项目环境搭建一标签:Python3|共现网络|NLP|jieba|Gephi|人物关系提取实验环境: 华为云 FlexusX 4 节点 Ubuntu 24.04 / Python 3.12.31. 什么是共现网络Co-occurrence Network共现网络是文本挖掘和社交网络分析中的基础工具。它的核心思想非常直观如果两个词语或人物、实体在同一段文本“窗口”内一起出现就认为它们之间存在某种关系共同出现的次数越多关系越强。1.1 共现网络三要素要素含义本项目对应节点Node研究对象《釜山行》电影人物边Edge两个对象之间的关联两个人物在文本中共同出现权重Weight关联强度共现次数1.2 文本窗口的两种取法段落窗口同一自然段内出现的人物即视为共现适合宏观把握篇章结构。句子窗口同一句子内出现的人物才视为共现适合提取更紧密的语义关系。本系列第一篇使用段落窗口构建全图第二篇会对比不同窗口对网络结构的影响。2. 项目整体架构四台 8 vCPU / 16 GiB 的 FlexusX 服务器按如下方式分工既充分使用资源又把每个环节解耦192.168.0.195 (公网 1.94.202.19) ┌─────────────────────────────────┐ │ node-01 主力开发服务器 │ │ jieba 分词 文本处理 │ └────────────┬────────────────────┘ │ 192.168.0.215 (公网 120.46.159.92) │ ┌─────────────────────────────────┐ │ │ node-02 数据服务器 │ │ │ 电影文本 人物自定义词典 │ │ └────────────┬────────────────────┘ │ │ │ v v 192.168.0.147 (公网 124.70.105.142) 192.168.0.157 (公网 120.46.44.194) ┌─────────────────────────────────┐ ┌─────────────────────────────────┐ │ node-03 分析服务器 │ │ node-04 可视化服务器 │ │ NetworkX 构建图 │ │ matplotlib 静态图 │ │ 计算中心性 / 密度 / 路径 │ │ Gephi 安装与 GEXF 导入 │ └─────────────────────────────────┘ └─────────────────────────────────┘3. 服务器基本信息节点公网 IP私网 IP角色主要软件node-011.94.202.19192.168.0.195jieba 分词 / 文本处理Python 3.12.3, jieba 0.42.1node-02120.46.159.92192.168.0.215数据 / 自定义词典Python 3.12.3, jiebanode-03124.70.105.142192.168.0.147网络分析Python 3.12.3, networkx 3.6.1node-04120.46.44.194192.168.0.157可视化Python 3.12.3, matplotlib 3.11.04. 环境准备4.1 系统环境确认四台服务器均使用 Ubuntu 24.04 LTS已自带 Python 3.12.3rootecs-11e6-0001:~# hostname cat /etc/os-release | head -3 python3 --versionecs-11e6-0001PRETTY_NAMEUbuntu 24.04.4 LTSNAMEUbuntuVERSION_ID24.04Python3.12.34.2 安装 Python 依赖Ubuntu 24.04 启用了PEP 668直接pip3 install会被拒绝需要加--break-system-packages# 所有节点都安装 jiebapip3install--break-system-packages jieba# node-03 / node-04 额外安装 networkx 和 matplotlibpip3install--break-system-packages networkx matplotlib⚠️ 踩坑记录第一次批量安装时因网络较慢且多个pip进程并发导致 node-01 / node-04 出现死锁。处理办法先killall -9 pip3 python3然后每个节点单独用nohup后台安装并通过python3 -c import jieba; print(jieba.__version__)验证。4.3 依赖版本确认rootecs-11e6-0001:~# python3 -c import jieba; print(jieba.__version__)0.42.1 rootecs-11e6-0003:~# python3 -c import networkx; print(networkx.__version__)3.6.1 rootecs-11e6-0004:~# python3 -c import matplotlib; print(matplotlib.__version__)3.11.05. 中文字体准备可视化节点 node-04matplotlib 在无头服务器上默认找不到中文字体会导致中文乱码。需要安装fonts-noto-cjkrootecs-11e6-0004:~# apt-get install -y fonts-noto-cjk脚本中动态查找字体font_pathsfm.findSystemFonts()cn_fonts[]forfpinfont_paths:try:fontfm.FontProperties(fnamefp)namefont.get_name()ifcjkinname.lower()ornotoinname.lower():cn_fonts.append((fp,name))except:passifcn_fonts:fm.fontManager.addfont(cn_fonts[0][0])plt.rcParams[font.sans-serif][cn_fonts[0][1]]实际输出找到中文字体: Noto Serif CJK JP6. 数据准备node-026.1 电影文本在node-02上准备/root/busan_text.txt内容覆盖《釜山行》主要情节段落确保主要人物在同一段落中自然共同出现。文本结构示例《釜山行》人物关系分析文本 石宇是一个忙碌的基金经理工作狂人很少陪伴女儿秀安。秀安是个懂事的小女孩母亲住在釜山。石宇决定带秀安乘坐KTX列车前往釜山找母亲。 在首尔站石宇和秀安登上了前往釜山的列车。列车上还有许多人尚华和他的妻子盛京盛京怀着身孕。珍熙是一个活泼的女高中生和她的男朋友容国一起出行。容国是棒球队的主力队员。英国是一家公司的运营部长自私冷酷只顾自己。列车上还有一对老姐妹老姐姐和老妹妹以及一个流浪的乞丐。列车长负责本次列车的运行。 ...6.2 自定义 jieba 词典由于《釜山行》人名是音译默认jieba不会识别为专有名词必须自定义词典/root/busan_dict.txt石宇 999 nr 秀安 999 nr 尚华 999 nr 盛京 999 nr 珍熙 999 nr 英国 999 nr 容国 999 nr 老姐姐 999 nr 老妹妹 999 nr 乞丐 999 nr 列车长 999 nr每一行格式为词语 词频 词性nr表示人名Named Entity。词频999只是为了让 jieba 优先切出这些词。7. 文件清单项目涉及的文件及所在节点文件所在节点说明busan_text.txtnode-01 / node-02 / node-03原始电影文本busan_dict.txtnode-01 / node-02 / node-03自定义人名词典busan_segment.pynode-01jieba 分词与共现提取nodes.csv/edges.csvnode-01 / node-03节点与边stats.jsonnode-01 / node-03统计信息busan_network.pynode-03NetworkX 网络分析busan_network.gexfnode-03 / node-04Gephi 导入格式busan_network.graphmlnode-03GraphML 备用格式busan_visualize.pynode-04matplotlib 可视化busan_visualize_filtered.pynode-04过滤版核心网络可视化install_gephi.pynode-04Gephi 安装脚本8. 下一篇预告第二篇将在这套环境上运行jieba分词基于段落窗口提取人物共现矩阵并生成nodes.csv/edges.csv。会给出真实的服务器输出、完整的 Python 代码和每一行代码的注释。9. 参考jieba 官方仓库https://github.com/fxsjy/jiebaNetworkX 文档https://networkx.org/documentation/stable/Gephi 官方下载https://gephi.org/users/download/

相关新闻