前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用word2vec解读延禧攻略人物关系

用word2vec解读延禧攻略人物关系

作者头像
mixlab
发布2018-10-09 11:27:22
1.8K0
发布2018-10-09 11:27:22
举报

阅读难度:★★☆☆☆

技能要求:机器学习、python、分词、数据可视化

字数:1500字

阅读时长:6分钟

本文结合最近热播的电视剧《延禧攻略》,对其人物的关系在数据上进行解读。通过从网上收集相关的小说、剧本、人物介绍等,经过word2vec深度学习模型的训练,构建人物关系图谱,并通过可视化的方式进行展示。

1

图谱

先看看全剧人物的关系图谱:

节点越大、越靠近中心,在剧中与其他角色的关系越错综复杂

我们把图放大,观察下:

可以发现:

璎珞、尔晴、吉祥、明玉、锦绣、傅恒

这6位人物是全剧中推动剧情发展的关键所在。从这个角度看《延禧攻略》是一部关于多名宫女与一位侍卫的故事。

这个图谱还可以看各个人物与其他人物的关联度

再看下乾隆与其他人的关系:

当然我们也可以通过代码查询:

图谱体验地址:

https://shadowcz007.github.io/text2kg/

上面的图谱是怎么得出的呢?

2

构建思路

需要的数据:

延禧攻略小说

延禧攻略剧本

延禧攻略人物名称

算法:

word2vec

前端:

echart

开发环境:

python

在处理数据的时候,我们需要把数据里的标点符号,以及一些没用的词语去掉(例如第xx章之类的)。配合结巴分词,做一轮分词后,再把一些字符长度为1的去掉(例如各种语气词、数量词等)。

最后处理成:

数据准备好之后。主要使用gensim进行word2vec的训练。gensim是一个Python NLP的包,封装了google的C语言版的word2vec。安装gensim是很容易的,使用"pip install gensim"即可。

3

word2vec

word2vec,也叫word embeddings,中文名“词向量”,作用就是将自然语言中的词语转为计算机可以理解的稠密向量。词语转化为向量的关系如下图所示:

word2vec可以学习到词语之间的关系,原理是在文本中相关的词总是大概率的同时出现。再看下图:

从图上看,word2vec可以学习到各种有趣的关系。例如,单词“king”经常和“quee”出现在一起,而“man”经常和“woman”出现在一起。

通过word2vec分析,我们可以发现代表“king”的矢量可以跟代表“queen”,“man”和“woman”的矢量有如下简单的关系:

king=queen-woman+man

通过词到向量的转化,我们可以基于向量进行各种运算。

除了应用于语言学里,还可以应用到化学里,例如Atom2Vec,它能够从不同元素组合而成的化合物名称(如NaCl, KCl, H2O )来学习区分不同的原子,从而发现一些可能的新化合物。这个程序借鉴了自然语言处理中的简单概念:

一个词语的特性是可以从它周围出现的其他单词来得出的;对应的把化学元素根据它们所处的化学环境进行聚类得出相关的化学元素。

从这些数据的分析中,人工智能程序可以发现钾和钠有着类似的性质,因为它们都可以跟卤素结合成化合物,“就像king和queen很类似一样,钾和钠也是类似的。”

训练后的模型,可以输入不同原子组成的化合物进行各种向量运算,帮助我们发现新的化合物。

4

gensim word2vec指南

简单一行代码就可以开始训练模型:

代码语言:javascript
复制
model = Word2Vec(line_sent, size=100,window=5,min_count=1)

训练好之后,可以查询找出某一个词向量最相近的词集合:

代码语言:javascript
复制
model.wv.similar_by_word('璎珞', topn =10)

还可以看两个词向量的相近程度,这里给出了剧中两组人的相似程度:

代码语言:javascript
复制
print(model.wv.similarity('璎珞', '尔晴'))
print(model.wv.similarity('皇后', '弘历'))

相似度:

代码语言:javascript
复制
0.9175463897110617
0.8206695311318175

又或者找出不同类的词,这里给出了人物分类:

代码语言:javascript
复制
model.wv.doesnt_match("璎珞 皇后 弘历 傅恒 尔晴".split())

结果: 弘历

从结果来看,弘历是皇帝,当然跟这些人都不是一类的。

再看一组:

代码语言:javascript
复制
model.wv.doesnt_match("璎珞 皇后 傅恒 尔晴".split())

结果: 傅恒

傅恒是男的,也跟这些人不同类。

以上为全文内容,word2vec还有其他好玩的应用,例如我们可以分析每个人物的性格,找出描述人物的性格词语;应用于设计语言的挖掘,我们可以提取出某种设计风格的特点;应用于文章写作,我们可以分析某种文章的风格,让机器协作我们进行写作创作;等等。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无界社区mixlab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档