Code Monkey home page Code Monkey logo

cpaulyz / co-in Goto Github PK

View Code? Open in Web Editor NEW
81.0 2.0 28.0 9.41 MB

知识图谱定义及可视化系统&基于可编辑知识图谱的菜肴问答系统:构建一个能通过在线编辑基本图元,以可视化的方式构建知识图谱的系统 平台,并能对构建后的知识图谱进行智能化知识图谱应用,实现知识图谱语义搜索、知识图谱智能问答等。

Python 6.16% Java 16.46% JavaScript 56.40% HTML 8.97% Vue 12.01%

co-in's Introduction

System for Constructing and Visualizing Knowledge Graph

[TOC]

功能

  • 知识图谱项目创建
  • 知识图谱可视化定义
    • 节点创建、编辑、删除
    • 关系创建、编辑、删除
  • 知识图谱布局编辑
    • 力导向图模式
    • 排版模式
    • 自由模式
    • 支持不同布局下的独立调整及持久化
  • 知识图谱导出
    • 导出为png
    • 导出为xml(可用于创建)
  • 知识图谱问答(食谱领域)
  • 关系查询
  • 节点查询
  • 中心识别
    • neo4j page rank

演示效果见用户手册

启动相关见部署文档

总体架构

arch

服务端设计

在服务端,分为知识图谱服务和智能应用服务两个微服务

  • 知识图谱服务:包括用户管理、项目管理、图谱管理、微服务管理四个模块,主要负责知识图谱定义部分,使用 Spring Boot 搭建,是前端调用的总入口。
  • 智能应用服务:提供知识图谱智能问答的算法支持,作为微服务,请求由知识图谱服务统一转发。

知识图谱服务

依赖包图3

用户管理模块

用户管理模块主要负责授权、认证,核心技术使用了

  • 对称加密与非对称加密
  • Spring Security

sec3_secury

微服务调用模块

微服务调用模块,但由于在系统中仅有两个微服务,且为异构的服务(分别基于 Java 和 Python),这里并没有引入 Spring Cloud 作为微服务的框架,而是借用其**自己实现了服务的注册、发现与调用。

配置文件:

# python微服务
pyserver:
  url: http://127.0.0.1:5000
  • 服务调用

    在服务调用上,使用RestTemplate进行统一的转发

  • 服务发现

    在服务发现上,使用心跳机制来与微服务通信。

    在 Flask 服务中,提供接口/health 返回微服务状态

    在 Spring Boot 服务中,启动一个线程对该接口进行监听,如果发现微服务异常,则对所有将转发到 Flask 服务的请求进行熔断。

microservice

Helper模块

helper模块用于根据用户的自然语言,找到符合条件的项目

sec3-helper

项目管理模块

项目管理中,很多数据的是读多写少的,在这里引入 Spring Cache 进行缓存管理。

图谱管理模块

图谱管理模块中,持久层的使用方案如下:

  • MySQL: 存储布局信息
  • Neo4j: 存储图节点、关系信息
  • Redis: 缓存及图id生成

智能应用服务设计

KBQA

图谱构建

我们从美食天下中爬取了每菜系的100种菜谱,根据菜谱名字的规律,进行了数据清洗,并导入到neo4j数据库中。

清洗后并导出的数据已放在/load/export文件夹下,导入neo4j的流程如下

  • 进入到neo4j文件夹,cd /opt/neo4j-community-3.5.28

  • 将/load/export下的文件拷贝到imports目录中

  • bin/stop 停止服务

  • rm -rf data/databases/graph.db/ 删除原数据(注意备份有用数据!)

  • bin/neo4j-admin import --nodes=import/caixi.csv --nodes=import/shicai.csv --nodes=import/caipu.csv --relationships=import/belong.csv --relationships=import/zhushicai.csv --relationships=import/fuliao.csv --multiline-fields=true 导入

  • bin/start 启动服务

  • 由于数据类型的原因,需要进行id的类型转换

     match ()-[r]->() set r.relationId=toInteger(r.relationId) return r;
     match (n) set n.nodeId=toInteger(n.nodeId) return n;

KBQA

问题类型设计

问题类型 中文含义 问题举例
food_query✔ 查询菜谱属性 烤肠怎么做
food_constraint✔ 查询符合约束的菜 微辣的炒菜有哪些
desc_recipe ✔ 描述菜谱 红烧肉
desc_cuisine ✔ 描述菜系 闽菜
desc_material ✔ 描述食材 五花肉
ingredients✔ 食材查询 红烧肉用什么做
ingredients_prime✔ 主食材查询 红烧肉的主食材是什么
ingredients_sub✔ 辅料查询 红烧肉的辅料是什么
ingredients_num✔ 查询所需食材的量 红烧肉要用多少五花肉
ingredients_include✔ 某个菜是否用了某个东西 红烧肉要用五花肉吗?
food_belong✔ 查询菜的菜系 红烧肉属于什么菜系?
cuisine_food✔ 查询菜系有哪些菜 闽菜有哪些美食?
cuisine_query ✔ 查询菜系 有哪些菜系的菜
unknown✔ 不知道 我帅吗

注:food_query实际上分为:

  • food_query_zuofa
  • food_query_kouwei
  • food_query_gongyi
  • food_query_leixing
  • food_query_kouwei

回答设计

  • 无法识别问题:抱歉,小助手听不懂您的问题。
  • 找不到答案:抱歉,小助手暂时无法回答您的问题。

Centrality Algorithm

使用 neo4j-gds 自带的中心算法,这里选用 Page Rank 进行实现

数据库设计

数据库 存储内容
MySQL 存储布局信息
Neo4j 存储图节点、关系信息
Redis 缓存及图id生成

前端设计

前端整体架构

  • 页面主要模块
    • 用户入口 User:登录/注册
    • 主页 Home:用户项目管理、其他模块入口
    • 知识图谱展示 Graph:知识图谱的展示、编辑、导出
    • 图谱智能助手 SmartHelper:图谱问答、实体/关系查询、中心识别
  • 页面核心中间件、三方库工具
    • 前端开发框架基础 Vue
    • 页面路由 Vue Router
    • 全局状态管理 Vuex
    • 页面样式组件库 ElementUI
    • 图谱可视化 D3
    • 数据统计可视化 EChart
    • 智能助手问答页面 JwChat

图谱页面设计

  • 核心模块
    • 图谱展示核心 GraphBoard
    • 图谱操作面板 GraphEditor
      • 图谱搜索 GraphEditorSearch
      • 实体/关系的新增、修改、删除、细节查看 GraphEditorItem
      • 图谱数据统计 GraphStatistics
    • 侧边操作栏 GraphSideBar
      • 布局模式、布局保存/恢复 GraphLayout
      • 新增实体/关系、图谱缩放重置、图谱导出 GraphAction
      • 智能服务
      • 项目设置

图谱页面数据流

  • 事件驱动模型
    • 由 GraphBoard 保存核心图数据
    • 其他模块引用图数据进行展示
    • 其他模块向 GraphBoard 发起事件修改视图

详细设计模块

  • 底层代码模块划分
    • api 后端交互封装
    • assets 静态资源(图片)
    • common 全局共用模块
    • views 主要视图
    • modules 主要视图模块
    • router 页面路由
    • store 全局状态管理

视图模块细节

  • 每个主要视图在 modules/ 下拥有一个包、每个包包含下列结构
    • components 子视图/组件
    • utils 视图内部工具函数
    • store 视图内共享全局数据

后端交互封装

  • APIDispatcher 后端 API 封装成内部 DSL
  • 对后端接口进行划分并分别向 APIDispatcher 进行注册

  • 透过 axios 接口对后端请求/响应进行拦截

  • 实际调用形式:使用统一 APIDispatcher 进行转发

co-in's People

Contributors

cpaulyz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

co-in's Issues

编译器错误

后端代码运行显示java: 编译失败: 内部 java 编译器错误

大佬求救

后端能运行,前端无法创建项目,写不进数据库

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.