赞
踩
最近在研究知识图谱,想整理出一个基于知识图谱的问答系统
这篇文章就是记录我在将excel导入到neo4j里一些情况
我们需要先下载一些库,以便后续的操作
pip install pandas
pip install py2neo
提取准备好需要导入的excel,我这里是xlsx的工作表
这里补充Excel数据形式
name、alias、smell、cure和excel的命名,构成了节点
主体代码如下
def importRelation(): count=0 #这里最好使用决定路径 for root, dirs, files in os.walk(r'F:\知识图谱资料\中医药知识图谱\data'): for file in files: frame = pandas.read_excel(r"F:/知识图谱资料/中医药知识图谱/data/"+file) part = file.split('.')[0] for i in frame.index: #这里是我工作表的数据,也是我需要建立的节点 name = frame.get_value(i, 'name') alias = frame.get_value(i,'alias') smell = frame.get_value(i, 'smell') cure = frame.get_value(i, 'cure') career_dict = {'部类': part} part_node = Node('部类', name=part) g.merge(part_node) # 最后创建关系 med_node = Node('中药', name=name) # label为节点标签,name为节点名称,需要注意不要用label='label'否则label会成为节点的的属性 # '''如果把这个作为中药的属性,而不作为节点属性,不利于后面的问答系统''' alias_node=Node('别名',name=alias) smell_node=Node('气味品质',name=smell) cure_node=Node('主治方法',name=cure) # # med_node['别名'] = alias # 向node添加属性'property' # # med_node['气味品质'] = smell # # med_node['使用方法'] = cure # # g.merge(med_node) # 将节点加入图数据库与create不同之处在于若节点存在则不创 relat = Relationship(med_node, '属于', part_node) relat_one = Relationship(med_node, '别名是', alias_node) relat_two = Relationship(med_node, '气味品质是', smell_node) relat_three = Relationship(med_node, '使用方法是', cure_node) #g是我的neo4j账号,create可直接建立节点或者关系 try: g.create(relat_one) except: continue try: g.create(relat_two) except: continue try: g.create(relat_three) except: continue try: g.create(relat) except: continue count+=1 print(count) importRelation()
在运行之前打开cmd命令行,输入neo4j.bat console
在浏览器中打开网站这个url
这个小型的知识图谱,一共有5类节点,4条关系,以中草药为中心节点,涉及721个中草药,爬取用时0.5天,数据入库与图谱构建2天,问答系统现在已经用4天,问答系统依然存在问题,慢慢来吧
2019.12.8
参考:https://blog.csdn.net/qq_36618444/article/details/92383074
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。