专栏首页逸迅科技技术分析 | 谁是终极大Boss?一张图看懂《长安十二时辰 》人物关系

技术分析 | 谁是终极大Boss?一张图看懂《长安十二时辰 》人物关系

编者按:

豆瓣评分高达8.6的国产剧《长安十二时辰》,终于在今晚迎来大结局——幕后BOSS究竟是谁?张小敬和李必命运如何,都一一揭开谜底。该剧改编自以“脑洞大”著称的作家马伯庸同名小说,悬疑反转的快节奏剧情,美轮美奂的长安城场景,唐朝韵味的妆法服装,刻画细致的人物角色,情节、灯光、道具、演技均比肩电影制作。

本文作者扎根数据挖掘、算法模型应用等领域多年,将从技术角度分析一下剧中的人物关系,用一张人物图谱呈现他们之间的关联,一起来猜猜谁才是终极大Boss?

图:《长安十二时辰》豆瓣评分高达8.6分

时下大热的《长安十二时辰》剧中"大案牍术"、"靖安司"频频出现,数据行业就有不少同学把大案牍术和当下最火热的“大数据”、“数据智能”联系起来,把 “靖安司”与“数据中台”相对比,笔者认为有点牵强附会。本文尝试结合自然语言处理(NLP)与图谱(Graph) 相关技术分析小说原文的人物图谱关系。

一、模型思路和流程

利用知识图谱构建人物关系,主要包括两点:节点信息和边界信息。

节点信息就是人物及权重,应用实体识别提取人物信息,权重结合TFIDF 等算法计算权重。边界信息的提取,可以结合行业处理经验:大部分是以小说章节或者段落为基本分析单元,将出现在同一分析单元的人物视为发生一次关联。

这种处理方法有其合理性,但也存在一定不足。结合《结合长安十二时辰》小说特征,将出现在同一段落的人物视为发生一次关联,以此为数据样本进行人物关系知识图谱的构建。

主要处理流程包括以下主要部分:

  • 文本预处理及分词
  • 人物提取及权重计算
  • 关系的构建及人物图谱展现

二、文本处理和分词

利用python jieba分词进行文本分词处理,jieba分词算法使用了基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能生成词情况所构成的有向无环图(DAG), 再采用了动态规划查找最大概率路径,找出基于词频的最大切分组合,对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法。

1.停用词与自定义词库,处理函数的定义

其中尝试词性标注(POS,Part-of-Speech Tagging)的方式只提取名词有关,发现POS 效果不好。

【Python 代码】

2.分词

【Python 代码】

分词结果

3.IFIDF 权重计算及提取

  • 将语料转换为词袋向量
    • 声明一个向量化工具vectorizer
    • 根据语料集统计词袋(fit)
    • 打印语料集的词袋信息
    • 将语料集转化为词袋向量(transform)
    • 还可以查看每个词在词袋中的索引
  • 根据词袋向量统计TF-IDF
    • 声明一个TF-IDF转化器(TfidfTransformer)
    • 根据语料集的词袋向量计算TF-IDF(fit)
    • 打印TF-IDF信息:比如结合词袋信息,可以查看每个词的TF-IDF值
    • 将语料集的词袋向量表示转换为TF-IDF向量表示
  • 根据TFIDF值排序取Top 50

【Python 代码】

由于前50有部分地名,手工删除得到完整人物列表;定义同义词列表,需要后期合并。

【Python 代码】

4.人物关系构建及剪枝

【Python 代码】

将DataFrame 对象转换为List 对象

将DataFrame 对象转换为List 对象

5.人物图谱展现

Out [36] :

那么问题来了,谁才是终极大Boss?

根据媒体报道,日前优酷站内发起“终极Boss大猜想”投票结果,权力最大但神秘莫测的“圣人”,演技精湛、义子何孚又提前暴露的“何监”以及身怀大数据分析绝技和复活buff的“徐宾”最为大家所怀疑,分列幕后Boss票选前三甲。其中,徐宾因刻意接近李必,利用职能捞出张小敬还屡次“复活”,是近期排名上升最快的“嫌疑人”。

根据人物图谱分析,可以看出徐宾的人物关系复杂,而且作为大唐第一AI徐宾死得莫名其妙死,而且整个尸体都烧焦了。笔者认为,按照影视剧的逻辑,这种死法不是本人的几率很高。

图:徐宾与其他人物关系图谱

备注:以上是《长安十二时辰》人物图谱构建的基本流程和代码,中间还有许多不足和优化的空间。关于《大案牍术》,纯属YY,没有算法理论、数据基础和处理算力支撑,属无本之木。还望各位大神轻拍。

今晚《长安十二时辰》即将大结局,快来留言写下你心中的终极大Boss吧!

【关于作者】

王新义,逸迅科技产品研发总监,近十年大数据和人工智能研发经验,具有丰富数据、算法模型、场景应用技术积累和实施经验,喜欢钻研以Hadoop和数据挖掘、机器学习为核心的数据应用经验、流程及知识。

原文链接:https://mp.weixin.qq.com/s?__biz=MzUzNDYyMDQzNA==&mid=2247484137&idx=1&sn=28107b75f89ad3abd26d375b652a8072&chksm=fa90b294cde73b8205dae673e10e88dec1cce963e5637723fced7f9ae53b88fa1d7a63a572bb&token=326674497&lang=zh_CN#rd

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一个焦虑的CIO的内心独白

    最近网络上流传着很多让人焦虑的事情,凌晨三点的年轻加班狗,35岁危机的华为IT男,放弃生命的万达女高管,以及输给时代的大润发董事长。焦虑开始从婚姻、房子等问题,...

    逸迅科技
  • 如何设计出优秀的Restful API?

    现在微服务真是火的一塌糊涂!大街小巷,逢人必谈微服务,各路大神纷纷忙着把自家的单体服务拆解成多个Web微小服务!而作为微服务之间通信的桥梁,Web API的设计...

    互扯程序
  • 大厂面试必备之设计模式:漫画单例模式

    饿汉模式中的类实例是当类被加载时就被初始化出来的,所以在应用初始化时,会占用不必要的内存。同时,由于该实例在类被加载的时候就创建出来了,所以他是线程安全的。因为...

    天才少年
  • Windows漏洞利用开发教程Part 5 :返回导向编程(ROP)

    本文主要介绍的是Windows软件漏洞的利用开发教程。我花了大量的时间来研究了计算机安全领域Windows漏洞利用开发,希望能和大家分享一下,能帮助到对这方面感...

    FB客服
  • 高仙完成A轮千万级美元融资,自主移动导航系统独角兽浮现

    新智元
  • Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用

    本地机器上需要有 Java 8 和 maven 环境,推荐在linux或者mac上开发Flink应用:

    王知无
  • Bootstrap的表单设计器

    如果是内部系统或是自己需要写个简单点的页面,可以直接使用Twitter的Bootstrap,而这个表单器也是非常好用,直接拖拽,设置属性,得到一个很漂亮的表单...

    meteoric
  • 【干货】基于SpringBoot2开发的Activiti引擎流程管理项目脚手架

    在工作中,难免会遇到需要开发基于流程管理的系统,例如一些OA/审批系统、工厂管理、ERP等等,新手入门工作流是有一定难度的,但假如你遇到今天这篇文章,那么,你幸...

    JAVA葵花宝典
  • GCAC68 13.7.5 forward secrecy and non-repudiation

    13.7.5 Additional desirable properties: forward secrecy and non-repudiation

    安包
  • TensorFlow GPU 版安装

    木东居士

扫码关注云+社区

领取腾讯云代金券