Python來襲,教你用Neo4j構建「復聯4」人物關係圖譜!沒有劇透!【文末贈書】
- 2019 年 10 月 8 日
- 筆記
講技術之前先引個好玩的熱點話題,帶你與時代接軌~
漫威系列電影《復仇者聯盟4》上映
你去看了嗎?
小編就盼着周末去好好享受
誰劇透,跟誰急!

復仇者聯盟 之 絕對不劇透
漫威英雄們為了不讓自己劇透也是使出了渾身解數。在洛杉磯全球首映禮上記者費盡心機想要從各位演員身上套點信息:「如果你活下來就眨一下眼睛,死了就眨兩下」。
「綠巨人」 :我就是不眨,看你怎麼樣!

「雷神」:我眨了23下,你猜我活沒活着~

「蟻人」:我不睜眼就不用眨眼了~

希望大家可以像奇異博士學習
做個合格的影迷哦

都誰看了復聯4?
據說,看復聯4的,分三種人:
(1)骨灰粉
看完曬票根發感慨的
(2)路人粉
還沒看,但是怕被劇透的
(3)純屬小白跟風
被漫威錯綜複雜的人物線,搞得一頭霧水


敲黑板,講技術重點了~!
來,先放一張成品圖,
幫你理清核心人物
一張圖帶你讀懂「婦聯4」人物關係!

人物節點和關係數據
人物節點數據:姓名和角色
name,role
霍華德·斯塔克,斯塔克工業創始人
佩姬·卡特,神盾局創始人
美國隊長,復仇者聯盟成員
鋼鐵俠,復仇者聯盟成員
巴基,復仇者聯盟成員
雷神,復仇者聯盟成員
蟻人,復仇者聯盟成員
綠巨人,復仇者聯盟成員
黑寡婦,復仇者聯盟成員
洛基,火神
鷹眼,復仇者聯盟成員
戰爭機器,復仇者聯盟成員
蜘蛛俠,復仇者聯盟成員
幻視,復仇者聯盟成員
紅骷髏,九頭蛇組織創始人
黑豹,瓦坎達國王
澤莫男爵,美國隊長宿敵
人物關係:姓名1,姓名2,關係類型
start,end,relation
鋼鐵俠,美國隊長,內戰
美國隊長,鋼鐵俠,內戰
蜘蛛俠,鋼鐵俠,師傅
鋼鐵俠,戰爭機器,好友
幻視,鋼鐵俠,AI管家
鋼鐵俠,霍華德·斯塔克,兒子
鋼鐵俠,綠巨人,搭檔
美國隊長,紅骷顱,宿敵
紅骷顱,美國隊長,宿敵
黑豹,美國隊長,庇護
澤莫男爵,美國隊長,敵對
美國隊長,澤莫男爵,敵對
美國隊長,佩姬·卡特,二戰戀人
美國隊長,巴基,好友
巴基,美國隊長,好友
洛基,雷神,弟弟
綠巨人,雷神,結識
黑寡婦,鷹眼,曖昧


@
導
入
數
據
啟動neo4j服務,打開http://127.0.0.1:7474
文件存放位置:neo4j安裝目錄的import文件夾下
導入節點數據,先不添加標籤
LOAD CSV WITH HEADERS FROM "file:///data_node.csv" AS line MERGE ({name:line.name,role:line.role})

給不同的角色添加不同的標籤
以「復仇者聯盟成員」為例:
MATCH (n { role: '復仇者聯盟成員' }) SET n :復仇者聯盟成員 RETURN n

MATCH (n { role: '神盾局創始人' })SET n :神盾局創始人 RETURN n

MATCH (n { role: '斯塔克工業創始人' })SET n :斯塔克工業創始人 RETURN n

MATCH (n { role: '火神' }) SET n:火神 RETURN n

MATCH (n { role: '九頭蛇組織創始人' })SET n :九頭蛇組織創始人 RETURN n

MATCH (n { role: '瓦坎達國王' }) SET n :瓦坎達國王 RETURN n

MATCH (n { role: '美國隊長宿敵' })SET n :美國隊長宿敵 RETURN n

查看所有節點
match (n) return n

點擊節點,可以設置節點顏色和大小。

導入關係數據,由於導入節點的時候,並沒有設置標籤,所以導入關係數據的時候,也不需要設置節點標籤。
正確語法:
LOAD CSV WITH HEADERS FROM 'file:///data_relation.csv'as line
MATCH (start {name: line.start})
MATCH (end {name: line.end})
MERGE (start) -[:r{relation:line.relation}]-> (end)

用以下語法,添加節點標籤Person,雖然語法不報錯,但是並沒有把關係添加進去:
LOAD CSV WITH HEADERS FROM 'file:///data_relation.csv'as line
MATCH (start:Person {name: line.start})
MATCH (end:Person {name: line.end})
MERGE (start) -[:r{relation:line.relation}]-> (end)

再查看所有節點和關係
match (n) return n

查看所有復仇者聯盟成員的名字
match (n:復仇者聯盟成員) return n

點擊標籤,也可以設置顏色和大小。

查看鋼鐵俠的全部關係
match p=({name:'鋼鐵俠'})-[:r]->()return p

點擊關係,也可以設置顏色和大小。

查看鋼鐵俠的2層內的關係
match p=({name:'鋼鐵俠'})-[*..2]->()return p

查看鋼鐵俠的好友關係
match p=({name:'鋼鐵俠'})-[:r{relation:'好友'}]->()return p

這波操作超酷~
重點來了!
這個技術,在哪裡可以學到?
Python如何連接Neo4j進行社交網絡分析,書中會有介紹哦!

好 書 推 薦 @上榜理由

超 值 推 薦

一本書帶你學會Python
+ 270分鐘授課視頻 = 49.00元
識別下方官方京東購買鏈接,還可享限時折扣哦!

特別提示:此書每本書均配有防盜版二維碼,請從官方渠道購買,否則視頻、源碼等資源全部無效。
