查看原文
其他

只需 20 行代码,就能读懂复仇者联盟的人物关系!| 技术头条

beyondma CSDN 2019-05-05


作者 | beyondma,CSDN 博客专家

笔者虽不算是漫威迷,不过刚刚在看完了复仇者联盟4以后还是感觉非常非常震撼的,具体情节就不剧透了,可以负责的给出五星推荐指数。现在就让我怀着激动的心情,用R语言写观后感吧。

复联4中人物的基本关系

那么首先我们还是先来分析漫威宇宙中的人物关系,维基百科去下载相关人物关系,也可以用我直接整理好的文件:

  • 地址:https://pan.baidu.com/s/1uEbGDKNxgLTdvQVVktEiFw

  • 提取码:rqb3

将其中的net.1.csv和characters1.csv')读出来,就可以用visNetwork去建立人物关系图了,代码如下:

edges =read.csv('f:/avengers/net1.csv')
nodes=read.csv('f:/avengers/characters1.csv')
visNetwork(nodes, edges, width = "100%")

visNetwork是一款非常优秀的关系图渲染插件,在之前的博客中已经有所介绍了,详见https://blog.csdn.net/BEYONDMA/article/details/89431724,这里不加赘述了。我们可以看到,灭霸、钢铁侠、雷神均是各自阵营的核心节点,具体效果如下:读者大可以按照上面的代码自己试一下。

复联4中人物的深入分析

想要深入分析人物的性格与关系,还是需要有大量的影评及语料数据做为基础的,这里我们还是选取豆瓣上的影评数据,由于很多评论都涉及相关剧情了,为避免剧透,具体的爬虫过程就省略了,抓取到影评的文本数据后,我先做了个词云。具体过程详见博客文章:https://blog.csdn.net/BEYONDMA/article/details/85400923,可以看到“最后、最终、最好”成为了关键词,从这个角度也可以看出,这次的复联4的确是漫威的巅峰之作。

想了解一个人物,看他和身边的朋友就能了解个大概,而文本分析中的wordtovector就是这样一种算法,用一个长度固定window来用观察一个词经常和哪些其它词同时出现,来将词转为向量,详见博客文章https://blog.csdn.net/BEYONDMA/article/details/88074516的第四部分。那么这时候我们就可以将刚刚抓取到的影评文本,训练为词向量模型。

> model<-word2vec(layer1_size=200,train_file='f:/avengers/豆瓣1.txt',save_vocab_file='f:/avengers/beyondma.txt',binary=1,cbow=0,alpha=0,output_file='f:/avengers/beyondma.bin',window=5,sample=0.0001,min_count=6,num_threads=2)
Starting training using file f:/avengers/豆瓣1.txt
Vocab size: 512
Words in train file: 8417

当然读者也可以用我之前分享的beyondma.bin文件,就可以直接使用distance函数,那么就可以知道,比如“蜘蛛侠”这个词和哪些词的距离最近。其结果如下。

> dist<-distance(file_name='f:/avengers/beyondma.bin',search_word='蜘蛛侠',num=10)
Entered word or sentence: 蜘蛛侠

Word: 蜘蛛侠  Position in vocabulary: 45
> dist
     word              dist
1    奥创 0.194927796721458
2    霍华德 0.188055962324142
3    钢铁侠 0.169346332550049
4    英雄 0.160935759544373
5    他们 0.156465873122215

为避免剧透,本文其实删除了很多关键的数据展示,不过如果读者还没看过复联4,那么在观影前看看本文,就算补习一下相关背景吧。

本文已获CSDN 博客专家 beyondma 授权,如需转载,请联系作者。

原文:https://blog.csdn.net/BEYONDMA/article/details/89553279

【End】

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

 热 文 推 荐 

☞ 百度浏览器谢幕!

 不懂嵌入式,何谈物联网?

 Java 在「权力的游戏」里,能活到第几集?

☞ 19 岁当老板,20 岁 ICO 失败,编程少年的创业辛酸史

☞ 养生 996 的崛起:马云竟给他最痛恨的「兔子」站台?

☞ 打开阿兹海默之门:华裔张复伦利用RNN成功解码脑电波,合成语音 | Nature

☞ 澳洲生活7年, 前阿里程序员谈我们的区块链差距究竟在哪?

☞ 关于谷歌云,你应该知道的一切!| 技术头条

☞ 她说:为啥程序员都特想要机械键盘?这答案我服!

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存