编者按:
豆瓣评分高达8.6的国产剧《长安十二时辰》,终于在今晚迎来大结局——幕后BOSS究竟是谁?张小敬和李必命运如何,都一一揭开谜底。该剧改编自以“脑洞大”著称的作家马伯庸同名小说,悬疑反转的快节奏剧情,美轮美奂的长安城场景,唐朝韵味的妆法服装,刻画细致的人物角色,情节、灯光、道具、演技均比肩电影制作。
本文作者扎根数据挖掘、算法模型应用等领域多年,将从技术角度分析一下剧中的人物关系,用一张人物图谱呈现他们之间的关联,一起来猜猜谁才是终极大Boss?
时下大热的《长安十二时辰》剧中”大案牍术”、”靖安司”频频出现,数据行业就有不少同学把大案牍术和当下最火热的“大数据”、“数据智能”联系起来,把 “靖安司”与“数据中台”相对比,笔者认为有点牵强附会。本文尝试结合自然语言处理(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和数据挖掘、机器学习为核心的数据应用经验、流程及知识。
来源: 逸迅科技
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。