学校网站建设内容,婴儿辅食中企动力提供网站建设,wordpress不显示引用图片不显示,重庆制作网站模板建站公司1、前言
我们在上篇文章中介绍了知识图谱的简单实现#xff0c;最后使用neo4j进行了展示#xff0c;对于有些情况我们可能并不想为了查看知识图的结果再去安装一个软件去实现#xff0c;那么我们能不能直接将三元组画出来呢/
接下来我们就介绍一个可视化的工具pyvis#…1、前言
我们在上篇文章中介绍了知识图谱的简单实现最后使用neo4j进行了展示对于有些情况我们可能并不想为了查看知识图的结果再去安装一个软件去实现那么我们能不能直接将三元组画出来呢/
接下来我们就介绍一个可视化的工具pyvis来实现知识图谱的可视化
2、简单介绍pyvis
2.1 安装pyvis
安装其实很简单直接pip就可以
pip install pyvis2.2 创建节点
from pyvis.network import Network
net Network(notebookTrue)net.add_node(1, label张三)
net.add_node(2, label李四)net.nodes
#查看节点
[{color: #97c2fc, id: 1, label: 张三, shape: dot},{color: #97c2fc, id: 2, label: 李四, shape: dot}]展示
net.show(basic.html)2.3 创建边
net.add_edge(1,2, label好朋友, colorblue, width2)这里的节点是可以拖动的跟neo4j非常相似 3、知识图谱构建
实体和三元组还是来自于上一节的内容
3.1 创建节点
col [orange,blue,red,green,purple]def pyvis_node_create(net,ner_list_Nh,ner_list_Ni,ner_list_Ns,predicate):if len(ner_list_Nh)!0:for i in range(len(ner_list_Nh)):#graph.create(Node(人名, namener_list_Nh[i]))net.add_node(i, labelner_list_Nh[i],title 人名, colorcol[0])if len(ner_list_Ni)!0:for i in range(len(ner_list_Ni)):#graph.create(Node(机构名, namener_list_Ni[i]))net.add_node( labelner_list_Ni[i],title 机构名, colorcol[1])if len(ner_list_Ns)!0:for i in range(len(ner_list_Ns)):#graph.create(Node(地名, namener_list_Ns[i]))net.add_node(100i, labelner_list_Ns[i],title 地名, colorcol[2])if len(predicate)!0:for i in range(len(predicate)):#graph.create(Node(标签, namepredicate[i]))net.add_node(1000i, labelpredicate[i],title 标签, colorcol[3])
代码只需要将之前在neo4j创建节点的稍微改下就行 3.2 创建边
我们首先要创建一个节点名称和节点ID对应的字典 pyvis创建边必须是id–id的所以我们需要根据实体名称得到其在当前的节点ID我们在进行创建边 def create_node_id_dic(net):dic_node_id{}for i in net.node_ids:#print(i)dic_node_id[str(net.node_map[i][label])] ireturn dic_node_id得到的字典如下
{苏轼: 0,黄庭坚: 1,常州: 100,宋朝的著名文学家: 1000,他的好朋友: 1001,写词: 1002,写诗: 1003}创建边
def pyvis_relationship_create(net,kg_list,node_id_dic):for m in range(len(kg_list)): try:net.add_edge(node_id_dic[kg_list[m][0]], node_id_dic[kg_list[m][2]], labelkg_list[m][1], colorblue, width2)except AttributeError as e:print(e, m)结果跟在neo4j中是一样的