部署农业知识图谱开源项目
前言
项目是上海市《农业信息服务平台及农业大数据综合利用研究》子课题《上海农业农村大数据共享服务平台建设和应用》的研究成果。
该课题是由上海市农业委员会信息中心主持,以“致富农民、服务市民、提高行政管理效能”为目标,充分发挥大数据在农业农村发展中的重要功能和巨大潜力,重点建设上海市级农业农村大数据中心,促进信息资源的共建共享和创新应用。
华东师范大学数据科学与工程学院(以下简称华师大数据学院)作为课题主要参与单位以实现智慧农业为目标,探索农业大数据分析、挖掘和综合应用。华师大课题组在前期国家重点研发计划《大数据知识工程基础理论及其应用研究》研究基础上,在本项目中,基于碎片化农业大数据,构建面向智慧农业的知识图谱及其应用系统。
项目地址见:https://github.com/qq547276542/Agriculture_KnowledgeGraph
本文介绍整个项目的部署过程,记录和总结部署过程中存在的问题。
1. 环境准备
- 创建python虚拟环境
conda create -n kg python=3.6
- 激活环境
conda activate kg
退出环境(可选)
conda deactivate
2. 安装依赖包
cd至项目根目录,有一个requirement.txt。requirement.txt文件里面记录了当前程序运行所需要的所有安装包和其版本号,作用是方便程序在其他机器上重新构建项目安装所有依赖。
打开requirement.txt文件可以看到里面需要安装的包:
Cython>=0.28.5
Django>=1.11.7
thulac>=0.1.2
py2neo4.1.0
pyfasttext0.4.5
pinyin>=0.4.0
pymongo>=3.6.1
requirement.txt的使用方式如下所示,即可自动下载requirement 中的安装包。
pip install -r requirement.txt
但需要注意的是我在安装过程中发现使用上述方式安装pyfasttext 安装失败。
参考这篇文章:https://pypi.org/project/pyfasttext/
首先直接安装cysignals和pyfasttext.
pip install cysignals
pip install pyfasttext
然后修改requirement.txt ,删除掉已经安装的pyfasttext. 再安装安装命令
pip install -r requirement.txt
3. 安装Jdk1.8
下载 Java
Java 8 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
解压
tar -xzvf jdk-8u131-linux-x64.tar.gz
配置环境变量
这里通过修改/etc/project文件来配置环境变量
vim /etc/project
在文件末尾添加如下信息
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
执行以下命令,使之生效
source /etc/profile
检查 Java 版本
java -version
4. 安装neo4j
下载
从官网下载neo4j 的3.5.2版本,下载地址为neo4j社区版
注意: neo4j 4.1版本要求jdk11 ,neo4j 3.5版本要求jdk8。 所以neo4j 选择3.5的版本。
解压
tar zxvf neo4j-community-3.5.22-unix.tar.gz
修改目录
mv neo4j-community-3.5.22 neo4j
配置环境变量
vi /etc/profile
添加:
export NEO4J_HOME=/opt/neo4j
export PATH=$PATH:$NEO4J_HOME/bin
执行以下命令,使之生效
source /etc/profile
修改配置文件
vi /etc/security/limits.conf
neo4j soft nofile 40000
neo4j hard nofile 40000
vi /opt/neo4j/conf/
#设置远程访问
dbms.connectors.default_listen_address=0.0.0.0
#设置数据库名称
dbms.active_database=agriculture_kg.db
启动服务
neo4j start
查看状态
neo4j status
停止服务
neo4j stop
导入数据(这部分内容和Github中Readme文件一样)
将hudong_pedia.csv导入neo4j:开启neo4j,进入neo4j控制台。将hudong_pedia.csv放入neo4j安装目录下的/import目录。在控制台依次输入:
// 将hudong_pedia.csv 导入
LOAD CSV WITH HEADERS FROM "file:///hudong_pedia.csv" AS line
CREATE (p:HudongItem{title:line.title,image:line.image,detail:line.detail,url:line.url,openTypeList:line.openTypeList,baseInfoKeyList:line.baseInfoKeyList,baseInfoValueList:line.baseInfoValueList}) // 新增了hudong_pedia2.csv
LOAD CSV WITH HEADERS FROM "file:///hudong_pedia2.csv" AS line
CREATE (p:HudongItem{title:line.title,image:line.image,detail:line.detail,url:line.url,openTypeList:line.openTypeList,baseInfoKeyList:line.baseInfoKeyList,baseInfoValueList:line.baseInfoValueList})
// 创建索引
CREATE CONSTRAINT ON (c:HudongItem)
ASSERT c.title IS UNIQUE
以上两步的意思是,将hudong_pedia.csv导入neo4j作为结点,然后对titile属性添加UNIQUE(唯一约束/索引)
(如果导入的时候出现neo4j jvm内存溢出,可以在导入前,先把neo4j下的conf/neo4j.conf中的dbms.memory.heap.initial_size 和dbms.memory.heap.max_size调大点。导入完成后再把值改回去)
进入/wikidataSpider/wikidataProcessing中,将new_node.csv,wikidata_relation.csv,wikidata_relation2.csv三个文件放入neo4j的import文件夹中(运行relationDataProcessing.py可以得到这3个文件),然后分别运行
// 导入新的节点
LOAD CSV WITH HEADERS FROM "file:///new_node.csv" AS line
CREATE (:NewNode { title: line.title })//添加索引
CREATE CONSTRAINT ON (c:NewNode)
ASSERT c.title IS UNIQUE//导入hudongItem和新加入节点之间的关系
LOAD CSV WITH HEADERS FROM "file:///wikidata_relation2.csv" AS line
MATCH (entity1:HudongItem{title:line.HudongItem}) , (entity2:NewNode{title:line.NewNode})
CREATE (entity1)-[:RELATION { type: line.relation }]->(entity2)LOAD CSV WITH HEADERS FROM "file:///wikidata_relation.csv" AS line
MATCH (entity1:HudongItem{title:line.HudongItem1}) , (entity2:HudongItem{title:line.HudongItem2})
CREATE (entity1)-[:RELATION { type: line.relation }]->(entity2)
导入实体属性(数据来源: 互动百科)
将attributes.csv放到neo4j的import目录下,然后执行
LOAD CSV WITH HEADERS FROM "file:///attributes.csv" AS line
MATCH (entity1:HudongItem{title:line.Entity}), (entity2:HudongItem{title:line.Attribute})
CREATE (entity1)-[:RELATION { type: line.AttributeName }]->(entity2);LOAD CSV WITH HEADERS FROM "file:///attributes.csv" AS line
MATCH (entity1:HudongItem{title:line.Entity}), (entity2:NewNode{title:line.Attribute})
CREATE (entity1)-[:RELATION { type: line.AttributeName }]->(entity2);LOAD CSV WITH HEADERS FROM "file:///attributes.csv" AS line
MATCH (entity1:NewNode{title:line.Entity}), (entity2:NewNode{title:line.Attribute})
CREATE (entity1)-[:RELATION { type: line.AttributeName }]->(entity2);LOAD CSV WITH HEADERS FROM "file:///attributes.csv" AS line
MATCH (entity1:NewNode{title:line.Entity}), (entity2:HudongItem{title:line.Attribute})
CREATE (entity1)-[:RELATION { type: line.AttributeName }]->(entity2) //我们建索引的时候带了label,因此只有使用label时才会使用索引,这里我们的实体有两个label,所以一共做2*2=4次。当然,可以建立全局索引,即对于不同的label使用同一个索引
导入气候名称:
将wikidataSpider/weatherData/static_weather_list.csv放在指定的位置(import文件夹下)
//导入节点
LOAD CSV WITH HEADERS FROM "file:///static_weather_list.csv" AS line
MERGE (:Weather { title: line.title })//添加索引
CREATE CONSTRAINT ON (c:Weather)
ASSERT c.title IS UNIQUE
导入气候与植物的关系
将wikidataSpider/weatherData/weather_plant.csv放在指定的位置(import文件夹下)
//导入hudongItem和新加入节点之间的关系
LOAD CSV WITH HEADERS FROM "file:///weather_plant.csv" AS line
MATCH (entity1:Weather{title:line.Weather}) , (entity2:HudongItem{title:line.Plant})
CREATE (entity1)-[:Weather2Plant { type: line.relation }]->(entity2)
导入城市的气候将city_weather.csv放在指定的位置(import 文件夹下)
(这步大约需要15分钟左右)
//导入城市对应的气候
LOAD CSV WITH HEADERS FROM "file:///city_weather.csv" AS line
MATCH (city{title:line.city}) , (weather{title:line.weather})
CREATE (city)-[:CityWeather { type: line.relation }]->(weather)
以上步骤是导入爬取到的关系
2.下载词向量模型:(如果只是为了运行项目,步骤2可以不做,预测结果已经离线处理好了)
http://s3-us-west-1.amazonaws.com/fasttext-vectors/wiki.zh.zip
将wiki.zh.bin放入 KNN_predict 目录 。
3.修改Neo4j用户
进入demo/Model/neo_models.py,修改第9行的neo4j账号密码,改成你自己的
4.启动服务
进入demo目录,然后运行脚本:
sudo sh django_server_start.sh
这样就成功的启动了django。我们进入8000端口主页面,输入文本,即可看到以下命名实体和分词的结果(确保django和neo4j都处于开启状态)
部署农业知识图谱开源项目相关推荐
- 华师农业知识图谱(Agriculture_KnowledgeGraph)项目环境构建指南
本次项目所用到的资源包括pyhon3,java11,neo4j以及一系列pip依赖.下面按照顺序进行项目的安装说明. 1. Python3 (该部分参考:Anaconda安装教程(超详细)_anaco ...
- 技术动态 | 人工智能开源软件发展现状连载——知识图谱开源软件
本文转载自公众号:中国人工智能开源软件发展联盟,欢迎大家点击文末二维码关注. 知识图谱 (Knowledge Graph)是一种基于图的数据结构,由节点(Point)和边(Edge)组成.在知识图谱里 ...
- 知识图谱开源社区_您需要了解的关于开源社区中的倦怠的知识
知识图谱开源社区 今年年初,我筋疲力尽. 碰巧的是,当时我也在研究倦怠的话题. 我花了一些时间将自己的研究和经验总结出来. 最近,国际疾病分类将倦怠归类为职业现象. 它把倦怠定义为"概念化的 ...
- 知识图谱开源开放及生态 | 7月12日TF65
本期会议邀请到来自阿里巴巴等头部企业的代表,以及来自北京大学.南京大学和浙江大学的研究人员,一起深入探讨开放知识图谱.知识图谱开源工具等所面临的机遇和挑战,并进一步了解知识图谱开放和开源工具构建的应用 ...
- 会议交流 | 知识图谱开源开放及生态——7月12日TF65
转载公众号 | 中国计算机学会 本期会议邀请到来自阿里巴巴等头部企业的代表,以及来自北京大学.南京大学和浙江大学的研究人员,一起深入探讨开放知识图谱.知识图谱开源工具等所面临的机遇和挑战,并进一步了解 ...
- neo4j构建农业知识图谱
neo4j构建农业知识图谱 农业知识图谱(Agriculture_KnowledgeGraph)项目环境构建 前言 1.环境构建 2.导入数据 2.1导入节点HudongItem数据 2.2导入节点N ...
- 基于Neo4j与js制作的农业知识图谱
主要提供农作物.农产品相关的知识.本项目以扶贫助农.加速全面建成小康社会为主要目的,从农业知识图谱着手,以扶持农业发展为起点,致力于帮助当地农民的电商发展.采用人工智能与大数据相结合的方式,前端与后端 ...
- 手把手教学构建农业知识图谱:农业领域的信息检索+智能问答,命名实体识别,关系抽取,实体关系查询
项目设计集合(人工智能方向):助力新人快速实战掌握技能.自主完成项目设计升级,提升自身的硬实力(不仅限NLP.知识图谱.计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实战掌握技能,助力用户 ...
- 农业知识图谱搭建和遇到的问题
Agriculture_KnowledgeGraph demo:http://ecnukg.vicp.io github:https://github.com/qq547276542/Agricult ...
最新文章
- C++ Rand()各种实现
- Beetlex之websocket/tls服务压测工具
- 宣告推出.NET Core 3.0 Preview 7
- 阿里P8架构师谈:从单体架构、到SOA、再到微服务的架构设计详解
- oracle怎么查询模式名,oracle怎么查询数据库实例的三种方式
- unity3D与网页的交互---做项目的一点总结
- mysql 覆盖索引 简书_mysql覆盖索引与回表
- 判断能否组成三角形(水题)
- matlab padarray
- oracle+in+多,Oracle in子句过多的硬编码引发的故障
- pdf格式压缩大小,pdf如何压缩大小?
- maven常用命令大全(附详细解释)
- 全球主要气象气候研究部门及其共享数据集介绍
- Python教学案例 - 三天打渔、两天晒网
- 数学之美(Beauty Of Mathematics)
- Numpy中take的用法
- 斗罗大陆斗神再临服务器维修,斗罗大陆斗神再临攻略汇总:FAQ常见问题解答[多图]...
- 灵魂画师全都出来了,都怪昨天那个AI画猫的应用……
- adobe xd 白屏闪退 终极拯救方法
- 华为路由器交换机常用命令(随时补充更新)