用 Neo4j 快速构建明星关系图谱,你一定感兴趣

今天做一下你们感兴趣的事情,带你们用 neo4j 构建明星关系图谱,这次爬取一下娱乐圈专业的娱乐综合门户网站下载“明星”页的“更多明星”里所有9141条数据。

用 Neo4j 快速构建明星关系图谱,你一定感兴趣

 

筛选出个人主页中含“明星关系”的数据,进一步爬取并解析出后续关系图谱所需的数据。以“张国荣-个人主页”为例,其直接相关的明星并不多,可见数据质量不一定多高,仅供练手,所以不在此处过多纠缠。

用 Neo4j 快速构建明星关系图谱,你一定感兴趣

 

数据到手后,存成 csv,丢掉 neo4j 里,就能查询出“张国荣”的关系。

用 Neo4j 快速构建明星关系图谱,你一定感兴趣

 

如果想进一步查看“张国荣”扩散出去的关系,也很方便。

用 Neo4j 快速构建明星关系图谱,你一定感兴趣

 

因缘际会

有没有觉得很酷炫,很想赶紧学起来。不急,neo4j 部分很简单的,所以先照旧讲讲那些“因缘际会”的事。

细数过往,已经用 Gephi 搞过好几次关系图谱,相对于微博转发图谱和知乎大V关注图谱的中规中矩(见于:Gephi绘制微博转发图谱:以“@老婆孩子在天堂”为例、374名10万+知乎大V(一):相互关注情况),拿自己的日记进行分析就显得别出心裁、令人眼前一亮,算得上自己蛮中意的作品,虽然技术细节非常粗糙(见于:2017,那些出现在日记中的人:简单的文本挖掘)。不过回头看来,这几个的数据格式完全可以无缝应用到 neo4j 里,感兴趣的朋友可以去微博转发图谱一文里领取数据并实现一波。

用 Neo4j 快速构建明星关系图谱,你一定感兴趣

 

而说是“新近”其实也是半年前安利的红楼梦人物关系及事件的可视化图谱,才是正儿八经用到 neo4j 的,当初自己也曾兴致高昂地分析了下支撑该项目的json数据,手动写了稍显复杂的函数来提取“私通”相关的人物关系链,现在看来 neo4j 一行代码就能解决。(见于:安利一个惊艳的红楼梦可视化作品、左手读红楼梦,右手写BUG,闲快活)

def word2id(word):
    df = edges_df[edges_df.label== word]
    from_id = df['from'].values.tolist()
    to_id = df['to'].values.tolist()
    return from_id, to_id

def id2label(ids):
    tables = []
    for ID in ids:
        tables.append(person_df[person_df['id']==ID])
    labels = pd.concat(tables)['label'].values.tolist()
    return labels

def get_relation(from_id,to_id):
    for from_label, to_label in zip(id2label(from_id), id2label(to_id)):
        print(from_label, '--> {} -->'.format(word), to_label)

word = "私通"
from_id,to_id = word2id(word)
get_relation(from_id,to_id)
############################
# 以下为输出结果
贾蔷 --> 私通 --> 龄官
贾珍 --> 私通 --> 秦可卿
贾琏 --&
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值