0
点赞
收藏
分享

微信扫一扫

英雄联盟云顶之弈知识图谱构建


第二条为推广文章,阅读一次0.3kuai,

收入用于网站服务器及资源索取。


1.白板建模

1.1云顶之奕是什么?

云顶之奕是基于英雄联盟的一个回合制策略游戏模式每局比赛由八名玩家共同进行一对一决斗,直到场上只剩下最后一名玩家。获胜关键是在合理的战术策略下从随机化的英雄池中选择最佳的英雄阵容,用装备对阵容进行强化,并构架优势对战阵型。主要依靠棋子的属性(职业,元素)羁绊与装备的适配性和棋子的星级能力还有站位之间的相互作用

1.2白板建模

每个英雄都分别至少拥有一个职业与一个元素

以英雄、职业、元素为节点分别构建三者之间的关系网络。

英雄联盟云顶之弈知识图谱构建_最短路径英雄联盟云顶之弈知识图谱构建_最短路径英雄联盟云顶之弈知识图谱构建_建模_03

2.数据收集处理

英雄联盟云顶之弈知识图谱构建_建模_04英雄联盟云顶之弈知识图谱构建_html_05

import requests
from bs4 import BeautifulSoup

def getSoup(url):
response=requests.get(url)
response.encoding=response.apparent_encoding
html=response.text
soup=BeautifulSoup(html,\\'html.parser\\')
return soup

url=\\'https://gl.ali213.net/html/2019-7/347457_2.html\\'
main=\\'https://gl.ali213.net/html/2019-7/347457_\\'

for i in range(2,44):
urls=\\'{}{}.html\\'.format(main,i)
soup=getSoup(urls)
s=soup.find_all(\\'strong\\')
q=soup.find_all(\\'b\\')
t=soup.find_all(\\'p\\')
print(s[0].text,q,t[2].text)

英雄联盟云顶之弈知识图谱构建_最短路径_06

3.图谱创建

load csv with headers from \\'file:///Neo4j3.csv\\' as line
merge (element:元素{name:line.element})
merge (prefession:职业{name:line.prefession})
merge(hero:英雄
{name:line.name,money:line.money,tech:line.tech,attr:line.attr,sh:line.sh,sm:line.sm,hj:line.hj,mk:line.mk,wg:line.wg,gs:line.gs,bjl:line.bjl,gjjl:line.gjjl,csflz:line.csflz,fl:line.fl}
)
//merge(tech:技能{name:line.tech})
merge(zyxg:职业效果{name:line.zyxg})
merge(ysxg:元素效果{name:line.ysxg})
create (hero)-[:属于]->(element)
create (hero)-[:属于]->(prefession)
create (element)-[:拥有]->(ysxg)
create (prefession)-[:拥有]->(zyxg)
//create (hero)-[:拥有]->(tech)
return*

英雄联盟云顶之弈知识图谱构建_html_07

match (p:职业)-[r]-(q:英雄) with p,q,tail(collect(r)) as rr where size(rr)>0 foreach (r in rr|delete r)
match (p:职业)-[r]-(q:职业效果) with p,q,tail(collect(r)) as rr where size(rr)>0 foreach (r in rr|delete r)//删除重复冗余的关系
match (p:元素)-[r]-(q:元素效果) with p,q,tail(collect(r)) as rr where size(rr)>0 foreach (r in rr|delete r)

以上代码优化图谱

英雄联盟云顶之弈知识图谱构建_html_08

4.查询分析

查询部分代码

英雄联盟云顶之弈知识图谱构建_html_09英雄联盟云顶之弈知识图谱构建_html_10英雄联盟云顶之弈知识图谱构建_html_11英雄联盟云顶之弈知识图谱构建_最短路径_12英雄联盟云顶之弈知识图谱构建_最短路径_13

//查询属于多个元素/职业的英雄

英雄联盟云顶之弈知识图谱构建_建模_14

//刺客阵容英雄

英雄联盟云顶之弈知识图谱构建_最短路径_15

//查询伤害元素的英雄

英雄联盟云顶之弈知识图谱构建_建模_16

//1费用伤害效果英雄

英雄联盟云顶之弈知识图谱构建_最短路径_17

//前期过渡阵容

英雄联盟云顶之弈知识图谱构建_html_18

//前期过渡阵容

英雄联盟云顶之弈知识图谱构建_最短路径_19

前期最佳阵容 森林-德鲁伊

英雄联盟云顶之弈知识图谱构建_最短路径_20英雄联盟云顶之弈知识图谱构建_最短路径_21

2度关系查询

英雄联盟云顶之弈知识图谱构建_html_22

任意两英雄最短路径查询

英雄联盟云顶之弈知识图谱构建_html_23

4.5装备图谱

英雄联盟云顶之弈知识图谱构建_html_24

图谱构建

英雄联盟云顶之弈知识图谱构建_建模_25

任意两英雄最短路径查询

英雄联盟云顶之弈知识图谱构建_最短路径_26

查询拥有相同效果的英雄与装备

英雄联盟云顶之弈知识图谱构建_建模_27英雄联盟云顶之弈知识图谱构建_html_28

5.总结反思

  1. 通过查询语句分析,出多套阵容体系
  2. 将装备与英雄,特性组合适配
  3. 元素职业在不同人,口时期德强度分析

小编从未玩过这个游戏,只是通过数据进行了图谱分析。

有很多不足之处还请各位大佬见谅

很多内容也是询问了一下玩过这款游戏的人,对于小编这种小白来说做到这样已经满足了。

至于不少分析代码,还有原始数据,分析报告ppt小编会整理成压缩包后期发到上面。


Java帮帮

英雄联盟云顶之弈知识图谱构建_建模_29



举报

相关推荐

0 条评论