2019新冠肺炎知识图谱可视化(三)

上文我已经构建了知识图谱,接下面我想搭建一个前端网页,可供查询与展示。对此我找github上找了一个轮子,简单搭建了一下已经基本满足我的需求
在这里插入图片描述
在这里插入图片描述
选择的路线是d3.js+neo4j+python,写这个轮子的人给我留了一个bug,导致我不能跳转页面,害,有能力还是自己搭建,别懒
简单来说,就是通过查询,把查询到的数据转化成前端的数据格式

查询数据

def query(name):
    data = graph.run("match(p:my_entity {name:'%s'}) -[r]->(n) return p.name, r, n.name limit 50" % name)
    data = list(data)
    return get_json_data(data)

转化数据格式

def get_json_data(data):
    json_data = {'data': [], "links": []}
    d = []

    for i in data:
        # print(i["p.Name"], i["r.relation"], i["n.Name"], i["p.cate"], i["n.cate"])
        d.append(i['p.name']+"_")
        d.append(i['n.name']+"_")
        d = list(set(d))
    name_dict = {}
    count = 0
    for j in d:
        j_array = j.split("_")

        data_item = {}
        name_dict[j_array[0]] = count
        count += 1
        data_item['name'] = j_array[0]
        #data_item['category'] = CA_LIST[j_array[1]]
        json_data['data'].append(data_item)
    for i in data:
        string=str(i['r'])
        p = re.compile(".*?:`(.*?)`]->.*?", re.S)
        result = re.findall(p, string)
        link_item = {}

        link_item['source'] = name_dict[i['p.name']]

        link_item['target'] = name_dict[i['n.name']]
        link_item['value'] = result
        json_data['links'].append(link_item)


    return json_data

启动程序my_app.py

from flask import Flask, render_template, request, jsonify
from inquire_kg import query,get_answer_profile
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])

def index():
    return render_template('index.html')


@app.route('/search', methods=['GET', 'POST'])
def search():
    return render_template('search.html')
@app.route('/search_name', methods=['GET', 'POST'])
def search_name():
    name = request.args.get('name')
    json_data=query(str(name))
    return jsonify(json_data)
@app.route('/get_profile',methods=['GET','POST'])
def get_profile():
    name = request.args.get('character_name')
    json_data = get_answer_profile(name)
    return jsonify(json_data)

if __name__ == '__main__':
    app.debug=True
    app.run()

前端的轮子在github,那个轮子留了一个bug,我已经修改了
到这里,整个新冠肺炎知识图谱可视化已经构建完了
github传送门:https://github.com/Real-TomHy/novel-coronavirus-pneumoniaKG

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值