系统参考的项目地址:https://github.com/qq547276542/Agriculture_KnowledgeGraph
使用pycharm创建django项目。项目结构:
得到前端输入的实体,预处理,match语句进行匹配,返回和该实体相关的节点信息等。
def search_entity(request):
ctx = {
}
#根据传入的实体名称搜索出关系
if(request.GET):
entity = request.GET['user_text']
entity = entity.strip()
entity = entity.lower()
entity = ''.join(entity.split())
actor_name_dict, movie_name_dict = name_dict[0], name_dict[1]
if entity in actor_name_dict.keys():
entity = actor_name_dict.get(entity)
if entity in movie_name_dict.keys():
entity = movie_name_dict.get(entity)
entityRelation = neo4jconn.get_entity_info(entity)
if len(entityRelation) == 0:
#若数据库中无法找到该实体,则返回数据库中无该实体
ctx= {
'title' : '<h2>知识库中暂未添加该实体</h1>'}
return render(request,'entity_search.html',{
'ctx':json.dumps(ctx,ensure_ascii=False)})
else:
return render(request,'entity_search.html',{
'entityRelation':json.dumps(entityRelation,ensure_ascii=False)})
#需要进行类型转换
return render(request, 'entity_search.html', {
'ctx':ctx})
match语句,写在model中的。使用py2neo连接neo4j图数据库。返回json数据,echarts解析并绘制节点关系图。
def connectNeo4j(self):
self.graph = Graph("http://127.0.0.1:7474", username="neo4j", password="root")
self.matcher = NodeMatcher(self.graph)
# 一.实体查询
def get_entity_info(self, name) -> list:
'''
查找该entity所有的直接关系
:param name:
:return:
'''
data = self.graph.run(
"match (source)-[rel]-(target) where source.name = $name " +
"return rel ", name=name).data()
json_list = []
for an in data:
result = {
}
rel = an['rel']
relation_type = list(rel.types())[0]
start_name = rel.start_node['name']
end_name = rel.end_node['name']
result["source"] = start_name
result['rel_type'] = relation_type
result['target'] = end_name
json_list.append(result)
return json_list
和实体查询类似,关系查询仅查询直接1度关系。考虑不同的情况,仅包含头实体1,仅包含尾实体2,实体1+关系,关系+实体2,实体1+实体2,实体1+关系+实体2
# 6.关系查询:实体1+关系+实体2(实体-关系->实体)
def findEntityRelation(self,entity1,relation,entity2):
answer = self.graph.run(
"match (source)-[rel:" + relation + "]->(target) where source.name= $name1 and target.name = $name2 " +
"return rel ", name1=entity1, name2=entity2).data()
answer_list = []
for an in answer:
result = {
}
rel = an['rel']
relation_type = list(rel.types())[0]
start_name = rel.start_node['name']
end_name = rel.end_node['name']
result["source"] = {
'name': start_name}
result['type'] = relation_type
result['target'] = {
'name': end_name}
answer_list.append(result)
return answer_list
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! Could not c
访问者模式 (最复杂的)笔记①定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。②代码://抽象访问者,声明访问者可以访问哪些元素public abstract class Visitor{ public abstract void VisitConcreteElementA(Concret_21模式访问
Metal SyntaxMetal语法从C++14派生而来 支持其中的大部分特效(部分特性如lambda等不支持)同时在C++的基础上增加了部分的矩阵等GPU编程常用特性的支持。Vector向量类型基础类型+数字后缀: 1. float4 四维向量 假设用float4向量来表示rgba的一个像素 float4 pixel(1.0,2.0,3.0,4.0...
简介:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。应用场景:web应用的自动化打包和发布自动化测试和持续集成、发布在服务型环境中部署和调整数据库或其他的后台应用从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境安装ubuntu17 #1、使用存储库安装docker ...
java日志:四、slf4j使用1 介绍:日志门面当系统变得更加复杂的时候,日志就容易发生混乱。随着系统开发的进行,可能会更新不同的日志框架。造成当前系统中存在不同的日志依赖,难以统一管理和控制。即便强制要求所有模块使用相同的日志框架,系统难免使用其它类似spring,mybatis等其它的第三方框架,它们依赖于我们规定不同的日志框架,且它们自身的日志系统就有着不一致性,依然会出现日志体系的混乱。所以我们需要借鉴JDBC思想,为日志系统提供一套门面,就可以面向这些接口规范来开发,避免了直接依赖具体的日_java slf4j
一.GDB命令详解在linux程序调成中gdb是最常用的工具。关于gdb的说明可以在linux下直接 man gdb或者gdb --help。GDB man手册翻译如下(英文水平有限,只能表达大体的意思):名称:gdb-gnu调试器概要:gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile..._gdb 进程
没有U盘、没有光盘怎么安装Win7系统?最简单、最方便的就是用硬盘安装了。在保证能进入系统的前提下,本地硬盘安装Win7系统,能够让你快速重装win7系统。以下是小编给大家整理的用硬盘如何直接在电脑上重装系统的方法,希望能帮到你!一、安装前没有U盘、没有光盘怎么安装Win7系统?最简单、最方便的就是用硬盘安装了。在保证能进入系统的前提下,本地硬盘安装Win7系统,能够让你快速重装win7系统。以下..._电脑不进入系统用磁盘里的重装
第一种:1、所需jar包2、config/memcached.properties配置文件memcached.servers=192.168.1.201:12000memcached.weights=1memcached.failureMode=fasle3、java代码实现package com.memcache.pool;import java.util.A..._怎么查看memcached client 连接
网上百度很多集成到项目里的数据库备份方法,大多数需要通过调用 mysqldump.exe和mysql.exe来完成备份和恢复的工作,所以只能项目和mysql在同一台服务器上才能实现备份还原,不符合我的需求,且支持的数据库类型太单一,于是,自己设计了一个数据备份工具。设计思路实际应用中,项目一旦部署,数据库表结构就不会发生变化,我们事先整理好了建表sql文档,只需要备份,表里面的数据就可以。所以我的思路是查询所有表的数据,转化成sql的插入语句。一句话,代表整篇文章的核心思想怎._异地备份数据库工具 csdn
关键词:表单引擎从表数据导入 Java工作流引擎表单设计 开源工作流引擎数据导入应用背景当发起某些流程的时候需要本地批量上传一些数据到表单的列表中,这时候我们就需要创建从表,通过从表批量的导入数据,从而提高工作效率。配置方式创建从表打开表单设计器创建一个从表如下图关于从表的详细创建文档,请查看我们的说明手册设置从表属性里的数据上传方式设置本地的Excel导入模板,模板的表头对应表单设计器里从表的表头,外键和枚举字段直接在从表里输入有效的值就行运行流程表单点..._jflow 导入功能
C#访问SqlServer设置链接超时的方法本文实例讲述了C#访问SqlServer设置链接超时的方法。分享给大家供大家参考。具体实现方法如下:下面这段代码设置超时时间为60秒,默认为30秒using (connection) {SqlCommand sqlcommand = connection.CreateCommand();sqlcommand.CommandTimeout = 60;//默..._sqlserver 超时
本篇记录一下 Coqui TTS 的安装测试以及(重点)踩坑经历。Coqui-TTS 的主要作者是德国人,这个库似乎之前和 Mozilla 的 TTS ()有千丝万缕的关系,但是现在后者的 TTS 已经停止更新,而 Coqui TTS 更新一直很稳定,是目前少数几个更新比较稳定的开源语音库。_coqui-ai