基于社区发现算法和图分析Neo4j解读《权力的游戏》下篇

基于社区发现算法和图分析Neo4j解读《权力的游戏》下篇,第1张

其中的分析和可视化是用Gephi做的,Gephi是非常流行的图分析工具。但作者觉得使用Neo4j来实现更有趣。

节点中心度

节点中心度给出网络中节点的重要性的相对度量。有许多不同的方式来度量中心度,每种方式都代表不同类型的“重要性”。

度中心性(Degree Centrality)

度中心性是最简单度量,即为某个节点在网络中的联结数。在《权力的游戏》的图中,某个角色的度中心性是指该角色接触的其他角色数。作者使用Cypher计算度中心性:

MATCH (c:Character)-[:INTERACTS]- RETURN cname AS character, count() AS degree ORDER BY degree DESC

character

degree

Tyrion

36

Jon

26

Sansa

26

Robb

25

Jaime

24

Tywin

22

Cersei

20

Arya

19

Joffrey

18

Robert

18

从上面可以发现,在《权力的游戏》网络中提利昂·兰尼斯特(Tyrion)和最多的角色有接触。鉴于他的心计,我们觉得这是有道理的。

加权度中心性(Weighted Degree Centrality)

作者存储一对角色接触的次数作为 INTERACTS 关系的 weight 属性。对该角色的 INTERACTS 关系的所有 weight 相加得到加权度中心性。作者使用Cypher计算所有角色的这个度量:

MATCH (c:Character)-[r:INTERACTS]- RETURN cname AS character, sum(rweight) AS weightedDegree ORDER BY weightedDegree DESC

character

weightedDegree

Tyrion

551

Jon

442

Sansa

383

Jaime

372

Bran

344

Robb

342

Samwell

282

Arya

269

Joffrey

255

Daenerys

232

介数中心性(Betweenness Centrality)

介数中心性:在网络中,一个节点的介数中心性是指其它两个节点的所有最短路径都经过这个节点,则这些所有最短路径数即为此节点的介数中心性。介数中心性是一种重要的度量,因为它可以鉴别出网络中的“信息中间人”或者网络聚类后的联结点。

图6中红色节点是具有高的介数中心性,网络聚类的联结点。

为了计算介数中心性,作者使用Neo4j 3x或者apoc库。安装apoc后能用Cypher调用其170+的程序:

MATCH (c:Character) WITH collect(c) AS charactersCALL apocalgobetweenness(['INTERACTS'], characters, 'BOTH') YIELD node, scoreSET nodebetweenness = scoreRETURN nodename AS name, score ORDER BY score DESC

name

score

Jon

12797533534055322

Robert

11656025171231624

Tyrion

11013849724234349

Daenerys

8748372110508583

Robb

7065572832464792

Sansa

7051985623519137

Stannis

5715247305125714

Jaime

5561852522889822

Arya

44301358430043337

Tywin

3647212195528086

紧度中心性(Closeness centrality)

紧度中心性是指到网络中所有其他角色的平均距离的倒数。在图中,具有高紧度中心性的节点在聚类社区之间被高度联结,但在社区之外不一定是高度联结的。

图7 :网络中具有高紧度中心性的节点被其它节点高度联结

MATCH (c:Character) WITH collect(c) AS charactersCALL apocalgocloseness(['INTERACTS'], characters, 'BOTH') YIELD node, scoreRETURN nodename AS name, score ORDER BY score DESC

name

score

Tyrion

0004830917874396135

Sansa

0004807692307692308

Robert

00047169811320754715

Robb

0004608294930875576

Arya

00045871559633027525

Jaime

0004524886877828055

Stannis

0004524886877828055

Jon

0004524886877828055

Tywin

0004424778761061947

Eddard

0004347826086956522

使用python-igraph

Neo4j与其它工具(比如,R和Python数据科学工具)完美结合。我们继续使用apoc运行 PageRank和社区发现(community detection)算法。这里接着使用python-igraph计算分析。Python-igraph移植自R的igraph图形分析库。 使用 pip install python-igraph 安装它。

从Neo4j构建一个igraph实例

为了在《权力的游戏》的数据的图分析中使用igraph,首先需要从Neo4j拉取数据,用Python建立igraph实例。作者使用 Neo4j 的Python驱动库py2neo。我们能直接传入Py2neo查询结果对象到igraph的 TupleList 构造器,创建igraph实例:

from py2neo import Graphfrom igraph import Graph as IGraph graph = Graph query = ''' MATCH (c1:Character)-[r:INTERACTS]->(c2:Character) RETURN c1name, c2name, rweight AS weight '''ig = IGraphTupleList(graphrun(query), weights=True)

现在有了igraph对象,可以运行igraph实现的各种图算法来。

PageRank

作者使用igraph运行的第一个算法是PageRank。PageRank算法源自Google的网页排名。它是一种特征向量中心性(eigenvector centrality)算法。

在igraph实例中运行PageRank算法,然后把结果写回Neo4j,在角色节点创建一个pagerank属性存储igraph计算的值:

pg = igpagerank pgvs = for p in zip(igvs, pg): print(p) pgvsappend({"name": p[0]["name"], "pg": p[1]}) pgvs write_clusters_query = ''' UNWIND {nodes} AS n MATCH (c:Character) WHERE cname = nname SET cpagerank = npg '''graphrun(write_clusters_query, nodes=pgvs)

现在可以在Neo4j的图中查询最高PageRank值的节点:

MATCH (n:Character) RETURN nname AS name, npagerank AS pagerank ORDER BY pagerank DESC LIMIT 10

name

pagerank

Tyrion

0042884981999963316

Jon

003582869669163558

Robb

003017114665594764

Sansa

0030009716660108578

Daenerys

002881425425830273

Jaime

0028727587587471206

Tywin

002570016262642541

Robert

0022292016521362864

Cersei

0022287327589773507

Arya

0022050209663844467

社区发现(Community detection)

图8

社区发现算法用来找出图中的社区聚类。作者使用igraph实现的随机游走算法( walktrap)来找到在社区中频繁有接触的角色社区,在社区之外角色不怎么接触。

在igraph中运行随机游走的社区发现算法,然后把社区发现的结果导入Neo4j,其中每个角色所属的社区用一个整数来表示:

clusters = IGraphcommunity_walktrap(ig, weights="weight")as_clustering nodes = [{"name": node["name"]} for node in igvs]for node in nodes: idx = igvsfind(name=node["name"])index node["community"] = clustersmembership[idx] write_clusters_query = ''' UNWIND {nodes} AS n MATCH (c:Character) WHERE cname = nname SET ccommunity = toInt(ncommunity) '''graphrun(write_clusters_query, nodes=nodes)

我们能在Neo4j中查询有多少个社区以及每个社区的成员数:

MATCH (c:Character) WITH ccommunity AS cluster, collect(cname) AS members RETURN cluster, members ORDER BY cluster ASC

cluster

members

0

[Aemon, Alliser, Craster, Eddison, Gilly, Janos, Jon, Mance, Rattleshirt, Samwell, Val, Ygritte, Grenn, Karl, Bowen, Dalla, Orell, Qhorin, Styr]

1

[Aerys, Amory, Balon, Brienne, Bronn, Cersei, Gregor, Jaime, Joffrey, Jon Arryn, Kevan, Loras, Lysa, Meryn, Myrcella, Oberyn, Podrick, Renly, Robert, Robert Arryn, Sansa, Shae, Tommen, Tyrion, Tywin, Varys, Walton, Petyr, Elia, Ilyn, Pycelle, Qyburn, Margaery, Olenna, Marillion, Ellaria, Mace, Chataya, Doran]

2

[Arya, Beric, Eddard, Gendry, Sandor, Anguy, Thoros]

3

[Brynden, Catelyn, Edmure, Hoster, Lothar, Rickard, Robb, Roose, Walder, Jeyne, Roslin, Ramsay]

4

[Bran, Hodor, Jojen, Luwin, Meera, Rickon, Nan, Theon]

5

[Belwas, Daario, Daenerys, Irri, Jorah, Missandei, Rhaegar, Viserys, Barristan, Illyrio, Drogo, Aegon, Kraznys, Rakharo, Worm]

6

[Davos, Melisandre, Shireen, Stannis, Cressen, Salladhor]

7

[Lancel]

角色“大合影”

《权力的游戏》的权力图。节点的大小正比于介数中心性,颜色表示社区(由随机游走算法获得),边的厚度正比于两节点接触的次数。现在已经计算好这些图的分析数据,让我们对其进行可视化,让数据看起来更有意义。

Neo4j自带浏览器可以对Cypher查询的结果进行很好的可视化,但如果我们想把可视化好的图嵌入到其它应用中,可以使用Javascript可视化库Visjs。从Neo4j拉取数据,用Visjs的neovisjs构建可视化图。Neovisjs提供简单的API配置,例如:

var config = { container_id: "viz", server_url: "localhost", labels: { "Character": "name" }, label_size: { "Character": "betweenness" }, relationships: { "INTERACTS": }, relationship_thickness: { "INTERACTS": "weight" }, cluster_labels: { "Character": "community" } }; var viz = new NeoVis(config); vizrender;

其中:

节点带有标签Character,属性name;

节点的大小正比于betweenness属性;

可视化中包括INTERACTS关系;

关系的厚度正比于weight属性;

节点的颜色是根据网络中社区community属性决定;

从本地服务器localhost拉取Neo4j的数据;

在一个id为viz的DOM元素中展示可视化。

quest items就是任务物品

rare items就是杰出物品(黄金的)

其他比如craft items就是手工艺品(橙色物品),magic items就是魔法物品(蓝色物品),superior items就是那些白色和和灰色(有空)的“超强”物品,unique items就是暗金装备,rune words就是符文之语,runes gems就是符文和各种宝石

弓的话,magic items, superior items, unique items, rune words里都有弓,都在各自的weapons(武器)-bows crossbows(弓和十字弓)子目录里

社角久子(Kuko Shakaku)-杉木弓(Cedar Bow)是一件暗金装备,按unique items - weapons-bows crossbows - Kuko Shakaku就能找到

装备:amulets是项链,armor是盔甲,belts是腰带,boots是鞋,charms是护身符,gloves是手套,helms是头盔,jewels是珠宝,rings是戒指,shields是盾牌

武器:Assassin#39;s Katars是刺客的爪,Axes是斧(单手斧和双手斧都有,以下同),Bows Crossbows是弓和十字弓,Daggers是匕首,Javelins是标q,Mace是钝器(包括锤类:Hammer,棍棒类:Club,钉锤类:Mace),Polearms是长柄武器,Scepters是圣骑士的权杖,Sorceress#39;s Orbs是女法师的单手杖,Spears是长矛,Staves是女法师的双手杖,Swords是剑,Throwing Weapons是投掷武器,Wands是死灵法师的手杖

亚马逊:Amazon,刺客:Assassin,死灵法师:Necromancer,野蛮人:Barbarian,圣骑士:Paladin,女法师:Sorcerss,德鲁依:Durid

英文的意思是任务物品,稀有的物品就是稀有的物品。

其他物品如工艺物品是手工艺品(橙色物品),魔法物品是魔法物品(蓝色物品),高级物品是那些白色和灰色的物品(空的)。

超级物品,独特的物品是隐藏的黄金物品,如尼文字是如尼的语言,如尼和宝石是如尼和各种宝石,弓有魔法物品,高级物品,独特物品,和符文文字在他们各自的武器-弓和弩子目录。

扩展资料:

雪松弓是一种黑色的黄金装备,可以在独特的装备中找到——武器-弓和十字弓-雪松弓。

装备:项链是护身符,盔甲是盔甲,腰带是腰带,靴子是鞋子,护身符是护身符,手套是手套,头盔是头盔,珠宝是珠宝,戒指是戒指,盾牌是盾牌。

武器:刺客的武士是刺客的利爪,斧头是斧头(单手斧和双手斧都有,下同),弓和弩是弓和弩,匕首是匕首,标q是标q,狼牙棒是钝的(锤子,棍棒,锤子)。

长柄武器是长柄武器,权杖是圣骑士的权杖,女巫的球体是女巫的单棍,矛是矛,杖是女巫的双棍,剑是剑,投掷武器是投掷武器,而魔杖是巫师的手杖。

亚马逊:亚马逊,一个刺客:刺客,死灵法师:死灵法师,野性漂亮的人:野蛮人,圣骑士:圣骑士,女法师:巫术,德鲁伊:都瑞德。

近些年澳洲艺术留学的同学越来越多,不仅教育体系完善,人文气息浓厚深得艺术生的青睐。下面让我们一起看一下澳洲艺术留学院校排名,希望对你有帮助。

澳洲艺术大学排名

TOP1皇家墨尔本理工大学Royal Melbourne Institute of Technology University

申请难度:40;优势专业:建筑设计、工业设计、数字媒体、摄影;院校地址:澳大利亚墨尔本

澳洲十大名校之一,该校设计与艺术专业是澳洲领先的专业。RMIT为国际学生开设了多个1+3本科项目:预科(艺术、设计和建筑)、预科(媒体与传播)、应用科学学士(服装和纺织品销售)、建筑设计学士、文学学士(动画和互动媒体)、文学学士(美术—摄影、首饰、绘画、雕塑、音效等)、文学学士(游戏平面设计)、文学学士(摄影)、设计学学士(传播设计)等热门专业。

TOP2新南威尔士大学The University of New South Wales

申请难度:45;优势专业:建筑设计、工业设计;院校地址:新南威尔士州首府悉尼

澳洲最著名的艺术设计学院,位于悉尼市区,开设课程有艺术(绘画,素描,雕塑);前卫艺术(展示艺术,**,多媒体艺术,平面设计,环境艺术设计,服装设计,陶艺,实用物品设计,动画设计)等30多个本科课程。

TOP3澳大利亚国立大学The Australian National University

申请难度:42;优势专业:数字媒体、平面设计、展示设计;院校地址:澳大利亚首都特区的堪培拉

澳大利亚国立大学(The Australian National University),简称ANU,是一所世界著名的公立研究型大学,澳洲第一所研究型大学,也是国际研究型大学联盟、环太平洋大学联盟、澳大利亚八校联盟的创始校之一。它是唯一由澳大利亚联邦议会创立,全澳唯一享有国立大学资格的最高学府。

澳大利亚国立大学以高质量的研究主导型的教学而著称。2017/18年QS世界大学排名世界第20,连续13年蝉联澳洲第一。根据QS世界大学排名专业排名,澳大利亚国立大学的艺术与人文位列澳洲第一,世界前十;2018年QS世界大学政治学与国际研究专业排名世界第六,超过耶鲁,普林斯顿等在此领域位于领先地位的大学;2018年QS世界大学哲学专业与经济专业分别为澳洲第一与第二,也是全澳洲唯二开设PPE(哲学、政治与经济) 专业的学校,成为其的王牌专业之一。

TOP4莫纳什大学Monash University

申请难度:40;优势专业:工业设计、数字媒体、平面设计;院校地址:澳大利亚墨尔本

莫纳什艺术与设计学院是该大学一个创造性中心,是一个创造性艺术汇集的地方。 该大学是澳大利亚仅有的几家教育机构,在一个系中提供所有主要艺术和设计专业的课程学习,从应用艺术到工业设计、内部建筑、平面设计和多媒体数字化艺术等,相当全面)

TOP5迪肯大学Deakin University

申请难度:42;优势专业:景观设计、视觉传达;院校地址:澳大利亚维多利亚州首府墨尔本市

迪肯大学(Deakin University)位于澳大利亚维多利亚州,是一所建立于1974年的由政府资助的澳大利亚顶尖级大学,以澳大利亚联邦运动的***和全国第二任总理阿尔弗雷德·迪肯(Alfred Deakin)命名。

迪肯大学是一所大型的综合性学府,尤其在教育学、心理学、信息技术、环境学、传媒学、建筑学等领域在澳大利亚处于领先地位。迪肯大学的研究重在发展与工业及各专业协会的联系,并且鼓励发展教职工与从事研究的学生之间的建设性伙伴关系,同时也将学生的研究项目纳入到学校的研究活动中。迪肯大学在艺术、教育、健康和行为科学、经济和法律、科学和技术等专业提供一系列课程研究。

以上就是关于基于社区发现算法和图分析Neo4j解读《权力的游戏》下篇全部的内容,包括:基于社区发现算法和图分析Neo4j解读《权力的游戏》下篇、atma装备库文件夹中的英文谁告诉我是什么意思、atma 装备库文件夹中的 英文 谁告诉我是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9494148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存