中文自然语言处理--文本分析Python网络图(networkx)

import jieba, networkx as nx, matplotlib.pyplot as plt
import jieba.posseg as jp

# 创建图
# G = nx.Graph()  # 无多重边无向图
G = nx.DiGraph()  # 无多重边有向图
# G = nx.MultiGraph()  # 有多重边无向图
# G = nx.MultiDiGraph()  # 有多重边有向图
# 添加节点
G.add_node('a')
# 添加边
G.add_edge('b', 'c')
# 绘图
nx.draw(G, with_labels=True)
plt.show()

# 无多重边无向图
# 分词
# #调节单个词语的词频,使其能被分出来。
# jieba.suggest_freq(('关系图', '法'), tune=True)
jieba.add_word('关系图法')
jieba.add_word('连线图')
jieba.add_word('关系图')
jieba.add_word('相互关系')
jieba.add_word('E-R')
text = '关系图法,是指用连线图来表示事物相互关系的一种方法。' \
       '最常见的关系图是数据库里的 E-R 图,表示实体、关系、属性三者之间的关系。'
words = jieba.lcut(text)
# 创建空的网络图
G = nx.Graph()
# 添加节点
for word in words:
    G.add_node(word)
# 添加边
for i in range(len(words) - 1):
    G.add_edge(words[i], words[i+1])
# 用黑体显示中文
plt.rcParams['font.sans-serif']=['SimHei']
# 绘图
nx.draw(G, alpha=1, with_labels=True, node_color='white', font_size=12)
plt.show()

# 有多重边有向图
words = jp.lcut(text)
G = nx.MultiDiGraph()  # 有多重边有向图
# 添加节点
for word in words:
    G.add_node(word.flag)
# 添加边
for i in range(len(words) - 1):
    G.add_edge(words[i].flag, words[i+1].flag)
# 绘图
nx.draw(G, alpha=0.8, with_labels=True, node_color='lightgreen', font_size=36, node_size=999, width=2)
plt.show()
'''
布局
参数                  解释
circular_layout    节点在一个圆环上均匀分布
random_layout    节点随机分布
shell_layout    节点在同心圆上分布
spring_layout    用Fruchterman-Reingold算法排列节点
'''
nx.draw(G, pos=nx.shell_layout(G), alpha=0.8, with_labels=True, node_color='lightgreen', font_size=36, node_size=999, width=2)
plt.show()



原文:
https://blog.csdn.net/yellow_python/article/details/83042748

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值