文本分析之制作网络关系图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文本分析之制作网络关系图Python

今天给大家带来我一个脚本,用来分析社会网络关系。

这个图我没有用到gephi或者其他的工具,是我用python纯脚本运行出来的。简单的实现了封装,大家有兴趣可以下载下脚本,运行下。原理知识

我就简单说下原理吧,先刻画一个简单的图A

1. import networkx as nx

2. import matplotlib.pyplot as plt

3. #有向图

4. DG = nx.DiGraph()

5. #添加一个节点

6. DG.add_node('A')

7. #作图,设置节点名显示,节点大小,节点颜色

8. nx.draw(DG,with_labels=True,node_size=900,node_color = 'green')

9. plt.show()

双节点,有方向A–>B

1. #有向图

2. DG = nx.DiGraph()

3. #添加一个节点

4. DG.add_node('A')

5. DG.add_node('B')

6. #添加边,有方向,A-->B

7. DG.add_edge('A','B')

8. #作图,设置节点名显示,节点大小,节点颜色

9. nx.draw(DG,with_labels=True,node_size=900,node_color = 'green')

10. plt.show()

添加更多节点

1. import networkx as nx

2. import matplotlib.pyplot as plt

3.

4. colors = ['red', 'green', 'blue', 'yellow']

5. #有向图

6. DG = nx.DiGraph()

7. #一次性添加多节点,输入的格式为列表

8. DG.add_nodes_from(['A', 'B', 'C', 'D'])

9. #添加边,数据格式为列表

10. DG.add_edges_from([('A', 'B'), ('A', 'C'), ('A', 'D'), ('D','A')])

11. #作图,设置节点名显示,节点大小,节点颜色

12. nx.draw(DG,with_labels=True, node_size=900, node_color = colors)

13. plt.show()

好了,同样的道理,咱们建立角色词典,插入节点列表,然后遍历插入有向边关系,就能做出这图:

《Python基于共现提取《釜山行》人物关系》

这篇文章写的很好(希望不要黑我,我也是觉得真心好)。我基本上借鉴了这篇文章思路写今天这个脚本,实现了自动生成关系网络图。

准备工作

1. 一、安装matplotlib、networkx

2.

3. 二、解决matplotlib无法写中文问题

4.

5. 1、找到pythonX\lib\site-packages\matplotlib\mpl-data\fonts\ttf文件夹

6.

7. 2、matplotlib默认调用的为DejaVuSans.ttf字体文件,网上下载个

8.

9. 微软雅黑.ttf

10.

11. 3、将微软雅黑文件名改为DejaVuSans.ttf粘贴到ttf文件夹下即可。

脚本文件简介

你下载后脚本文件夹名为:人民的名义

其中的relationship.py就是大邓写的库(直接能调用的哦)

实现功能:

1、读入小数数据和角色词典后,对数据分词后生成角色关系数据(有向关系数据)

2、无需gephi绘图即可制作绚丽角色关系网络图。

注意:

1、运行脚本前,文件夹中只保留角色名单.txt 人民的名义.txt 和relationship.py

2、要想图片好看点,一定要联网啊。里面我写了个爬虫,爬取一个配色网站的配色值。

如果你们想单机也可以画出好看的图,可以修改下代码,将代码爬虫部分改成读取本地颜色数据使用示例

1、建好小说数据中的角色字典,格式如下

2、在文件夹中放入小说txt文件(人民的名义.txt)

3、在脚本文件夹中新建一个test.py文件

1. #导入relationship库中的Relationship类

2. from relationship import Relationship

3.

4. #自定义节点词典(小说中人物角色)

5. dictpath = r'/Users/suosuo/Desktop/人民的名义/角色名单.txt'

6. #小说路径,只能是编码方式为utf-8的txt文件

7. datapath = r'/Users/suosuo/Desktop/人民的名义/人民的名义.txt'

8. #程序运行生成的角色关系图保存地址

9. pic = r'/Users/suosuo/Desktop/人民的名义/人物关系图.png'

10. Re = Relationship(dictpath, datapath)

11. relation = Re.relationship()

12. graph = work_digraph(relation, pic)

4、运行

相关文档
最新文档