贪心学院第二个主题代码--Python岗位知识图谱
第二周作业是使用neo4j及Cypher语言制作一个如图所示的知识图谱。本周内容摘要如下。
我得到的图谱如下
以下为代码, 我的实现思路是先创建六类岗位的节点,再根据每类岗位需要依次学习的知识查询及创建节点与知识间的关系。
创建六类岗位
create (z : 岗位 {name : "自动化办公"}), (w : 岗位 {name : "Web开发"}), (p : 岗位 {name : "爬虫"}), (d : 岗位 {name : "大数据"}), (r : 岗位 {name : "人工智能"}), (s :岗位 {name:"数据分析"}) return z,w,p,d,r,s
查询(岗位 自动化办公),创建从事这个岗位需要的(知识)并根据学习这些知识的先后顺序创建【关系】
match (z :岗位 {name:"自动化办公"}) create (zP:知识 {name:"Python基础"}),(zW:知识 {name :"文件处理"}), (z)-[:自动化办公]->(zP),(zP)-[:自动化办公]->(zW) return z,zP,zW
如上创建 其余岗位 的图谱
match (w :岗位 {name:"Web开发"}),(zP:`知识` {name :"Python基础"}),(zW:知识 {name:"文件处理"}) create (zL:知识 {name:"Linux"}),(zF:知识 {name :"Flask"}), (zD:知识 {name :"Django"}), (zM:知识 {name :"MySQL"}), (w)-[:WEB开发]->(zL), (w)-[:WEB开发]->(zP), (zP)-[:WEB开发]->(zW), (zW)-[:WEB开发]->(zF), (zW)-[:WEB开发]->(zD), (zD)-[:WEB开发]->(zM),(zF)-[:WEB开发]->(zM) return w,zL,zF,zD,zM
match (p :岗位 {name:"爬虫"}), (zL:`知识` {name :"Linux"}) create (zHT:知识 {name:"HTML"}), (zCS:知识 {name :"CSS"}), (zX:知识 {name :"xpath"}), (zWA:知识 {name :"网络"}), (p)-[:爬虫]->(zL), (p)-[:爬虫]->(zHT), (zHT)-[:爬虫]->(zCS), (zHT)-[:爬虫]->(zX), (p)-[:爬虫]->(zWA) return p,zL,zHT,zCS,zX,zWA
match (p :岗位 {name:"爬虫"}), (zP:`知识`{name:"Python基础"}), (zM:`知识`{name:"MySQL"}) create (zRE:知识 {name:"Requests"}), (zBS:知识 {name :"bs4"}), (zSR:知识 {name :"Scrapy"}), (zMO:知识 {name :"MongoDB"}), (p)-[:爬虫]->(zP), (p)-[:爬虫]->(zRE), (zRE)-[:爬虫]->(zBS), (zBS)-[:爬虫]->(zSR), (zSR)-[:爬虫]->(zM),(zSR)-[:爬虫]->(zMO) return p,zP,zM,zRE,zBS,zSR,zMO
match (s :岗位 {name:"数据分析"}), (zP:`知识`{name:"Python基础"}), (zL:`知识`{name:"Linux"}),(zM:知识 {name :"MySQL"}), (zMO:知识 {name :"MongoDB"}) create (zWIN:知识 {name:"Windows办公软件"}), (zSO:知识 {name :"所属行业的业务知识!"}), (zT:知识 {name :"统计"}), (zHI:知识 {name :"Hive"}),(zHB:知识 {name :"HBase"}),(s)-[:数据分析]->(zL),(s)-[:数据分析]->(zSO),(s)-[:数据分析]->(zT), (s)-[:数据分析]->(zWIN),(s)-[:数据分析]->(zP), (zP)-[:数据分析]->(zM), (zP)-[:数据分析]->(zMO), (zP)-[:数据分析]->(zHI), (zP)-[:数据分析]->(zHB) return s,zP,zL,zM,zMO,zWIN,zSO,zT,zHI,zHB
match (r :岗位 {name:"人工智能"}), (zP:`知识`{name:"Python基础"}), (zL:`知识`{name:"Linux"}),(zT:知识 {name :"统计"}) create (zGS:知识 {name:"高数"}), (zJX:知识 {name :"机器学习"}), (zSX:知识 {name :"深度学习"}),(r)-[:人工智能]->(zP),(r)-[:人工智能]->(zGS),(zGS)-[:人工智能]->(zT), (zT)-[:人工智能]->(zJX), (zJX)-[:人工智能]->(zSX), (zJX)-[:人工智能]->(zL) return r,zP,zL,zT,zGS,zJX,zSX
create (LJ:岗位方向 {name:"离线计算"}), (SJ:岗位方向 {name:"实时计算"}),(VUE:岗位方向 {name:"视觉"}),(YY:岗位方向 {name:"语言"}),(NLP:岗位方向 {name:"NLP"}),(TJ:岗位方向 {name:"推荐"}) return LJ, SJ,VUE,YY,NLP,TJ
match (zSX:`知识`{name:"深度学习"}), (VUE:`岗位方向`{name:"视觉"}),(YY:`岗位方向`{name:"语言"}),(NLP:`岗位方向`{name:"NLP"}),(TJ:`岗位方向`{name:"推荐"}) create (zSX)-[:`人工智能`]->(VUE),(zSX)-[:`人工智能`]->(YY),(zSX)-[:`人工智能`]->(NLP),(zSX)-[:`人工智能`]->(TJ) return zSX, VUE, YY, NLP, TJ
创建 大数据 的关系图需要根据岗位方向分类创建
match (d :`岗位`{name:"大数据"}),(LJ:`岗位方向` {name:"离线计算"}),(SJ:`岗位方向`{name:"实时计算"}) create (d)-[:大数据]->(LJ),(d)-[:大数据]->(SJ) return d,SJ,LJ
match (LJ:`岗位方向`{name:"离线计算"}), (zHI:`知识` {name:"Hive"}),(zHB:`知识`{name:"HBase"}) create (zSL:`知识`{name:"Scala"}),(zSP:`知识`{name:"Spark"}), (zHD:`知识`{name:"Hadoop"}), (LJ)-[:`大数据`]->(zHI),(LJ)-[:`大数据`]->(zHB),(LJ)-[:`大数据`]->(zSL),(zSL)-[:`大数据`]->(zSP),(LJ)-[:`大数据`]->(zHD) return LJ,zHI,zHB,zSL,zSP,zHD
match (SJ:`岗位方向`{name:"实时计算"}), (zHD:`知识` {name:"Hadoop"}) create (zJV:`知识`{name:"Java"}),(zFL:`知识`{name:"Flink"}), (zFM:`知识`{name:"Flume"}),(zKK:`知识`{name:"Kafka"}),(zST:`知识`{name:"Storm"}), (SJ)-[:`大数据`]->(zJV),(zJV)-[:`大数据`]->(zHD),(zJV)-[:`大数据`]->(zFL),(zJV)-[:`大数据`]->(zFM),(zJV)-[:`大数据`]->(zKK),(zJV)-[:`大数据`]->(zST) return SJ,zHD,zJV,zFL,zFM,zKK,zST
刚才漏了大数据->Linux这条线,在此补充:
match (d :`岗位`{name:"大数据"}), (zL:`知识`{name:"Linux"}) create (d)-[:`大数据`]->(zL) return d,zL