Neo4j 构建简单农业知识图谱(Agriculture KnowledgeGraph)

\quad 我们来看一个基于开源语料的简单农业知识图谱,由于过程比较繁杂,数据和知识图谱数据预处理过程这里不详细叙述。我们重点看基于 Neo4j 来创建知识图谱的过程。项目地址见:https://github.com/qq547276542/Agriculture_KnowledgeGraph

1、环境准备
本文基于Ubuntu16.04构建农业知识图谱,所需环境:python3和Neo4j(任意版本)。安装一系列pip依赖:

Django>=1.11.7
thulac>=0.1.2
py2neo==4.1.0
Cython>=0.28.5
pyfasttext==0.4.5
pinyin>=0.4.0
pymongo>=3.6.1

2、语料准备及语料加载

1)导入节点HudongItem数据

\quad hudong_pedia.csv : 已经爬好的农业实体的百科页面的结构化csv文件,其数据格式为:

"title","url","image","openTypeList","detail","baseInfoKeyList","baseInfoValueList"

\quad 将hudong_pedia.csv与hudong_pedia2.csv放入neo4j安装目录下的/import目录。

// 将hudong_pedia.csv 导入
USING PERIODIC COMMIT 1000
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
USING PERIODIC COMMIT 1000
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})  
// 对titile属性添加UNIQUE(唯一约束/索引)
// 创建索引
CREATE CONSTRAINT ON (c:HudongItem)
ASSERT c.title IS UNIQUE

\quad 以上两步的意思是,将hudong_pedia.csv导入neo4j作为结点,然后对titile属性添加UNIQUE(唯一约束/索引)。

2)导入节点NewNode数据
\quad 进入/wikidataSpider/wikidataProcessing中,将new_node.csv放入neo4j的import文件夹中,数据格式为:

title,lable
药物治疗,newNode
膳食纤维,newNode
Boven Merwede,newNode
亚美尼亚苏维埃百科全书,newNode
Linge,newNode
男性人名,newNode
// 导入新的节点
USING PERIODIC COMMIT 1000
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

3)导入关系数据
\quad 导入hudongItem节点和NewNode节点之间的关系RELATION。进入/wikidataSpider/wikidataProcessing中,将wikidata_relation2.csv文件放入neo4j的import文件夹中,其数据格式为:

HudongItem,relation,NewNode
菊糖,instance of,药物治疗
菊糖,subclass of,膳食纤维
瓦尔,mouth of the watercourse,Boven Merwede
菊糖,described by source,亚美尼亚苏维埃百科全书
瓦尔,tributary,Linge
Arnold,instance of,男性人名
//导入hudongItem和NewNode之间的关系RELATION 
USING PERIODIC COMMIT 1000
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)

\quad 导入HudongItem1节点和HudongItem2节点之间的关系RELATION,进入/wikidataSpider/wikidataProcessing中,将wikidata_relation.csv文件放入neo4j的import文件夹中,其数据格式为:

HudongItem1,relation,HudongItem2
菊糖,instance of,化合物
菊糖,instance of,多糖
瓦尔,instance of,河流
菊糖,subclass of,食物
瓦尔,origin of the watercourse,莱茵河
纳木错,instance of,湖泊
//导入HudongItem1和HudongItem2之间的关系RELATION 
USING PERIODIC COMMIT 1000
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)

4)导入实体属性

\quad 进入/wikidataSpider中,将attributes.csv放入neo4j的import文件夹中,数据格式为:

Entity,AttributeName,Attribute
密度板,别名,纤维板
葡萄蔓枯病,主要为害部位,枝蔓
坎德拉,性别,男
坎德拉,国籍,法国
坎德拉,场上位置,后卫
转子莲,,植物界
USING PERIODIC COMMIT 1000
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);

USING PERIODIC COMMIT 1000                                                            
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);

USING PERIODIC COMMIT 1000                                                            
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);

USING PERIODIC COMMIT 1000
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)

5)导入节点Weather数据

\quad 将wikidataSpider/weatherData/static_weather_list.csv放在neo4j的import文件夹中,数据格式为:

title
亚热带季风气候
亚热带海洋性季风气候
暖温带半湿润性季风气候
海洋性温带暖热性气候
暖温带大陆性季风气候
中温带大陆性季风气候
//导入节点
USING PERIODIC COMMIT 1000
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

6)导入气候与植物的关系

\quad 将wikidataSpider/weatherData/weather_plant.csv放在neo4j的import文件夹中,数据格式为:

Weather,relation,Plant
亚热带季风气候,适合种植,冬寒
亚热带大陆性季风气候,适合种植,冬寒
亚热带季风气候为主,适合种植,冬寒
中亚热带季风气候区,适合种植,冬寒
北亚热带季风气候区,适合种植,冬寒
中亚热带季风气候,适合种植,冬寒
USING PERIODIC COMMIT 1000
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)

7)导入城市(city)和weather节点之间的关系

\quad 将city_weather.csv放在neo4j的import文件夹中,数据格式为:

city,relation,weather
珠海市,气候,亚热带季风气候
莆田市,气候,亚热带海洋性季风气候
日照市,气候,暖温带半湿润性季风气候
大连市,气候,海洋性温带暖热性气候
迁安市,气候,暖温带大陆性季风气候
深圳市,气候,亚热带海洋性季风气候
//导入城市对应的气候
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)

3、修改Neo4j用户

\quad 进入demo/Model/neo_models.py,修改第9行的neo4j账号密码,改成你自己的。
\quad 进入demo/demo/settings.py,修改DEBUG为False。

4、启动django服务

\quad 直接进入到demo所在目录,运行django服务器:

python manage.py runserver

\quad 若出现错误:

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

\quad 运行命令:

python manage.py migrate

\quad 浏览器中输入http://127.0.0.1:8000/,显示结果如下:
在这里插入图片描述
5、基本功能

\quad 实体识别
\quad 输入文本如下:

袁隆平是杂交水稻研究领域的开创者和带头人,致力于杂交水稻的研究,先后成功研发出“三系法”杂交 水稻、“两系法”杂交水稻、超级杂交稻一期、二期,与此同时,袁隆平提出并实施“种三产四丰产工程”,运用超级杂交稻的技术成果,出版中、英文专著6部,发表论文60余篇。20177月,任青岛海水稻学院首席教授。20179月,袁隆平宣布一项剔除水稻中重金属镉的新成果。2018414日,袁隆平在海南接受凤凰财经采访时发表了对转基因的看法。对于转基因大豆,袁隆平指出,只要是通过安全检测的转基因作物,都是没有问题的。袁隆平表示,转基因是农业的未来发展方向。

\quad 可以查看实体识别效果:
在这里插入图片描述
\quad 最后,展望一句,未来知识图谱会通过自然语言处理技术和搜索技术结合应用会越来越广,工业界所处的地位也会越来越重要。

参考文献
[1]https://blog.csdn.net/weixin_41104835/article/details/89213327

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值