唐诗数据分析学者
1. 数据分析揭秘:唐朝诗人间有怎样的微妙社交关系
数据分析揭秘:唐朝诗人间有怎样的微妙社交关系数据侠前进四先生 03-20 11:08李白对杜甫的感情,远不及杜甫对李白的深?白居易才是唐诗圈里“大V”中的战斗机?除了吟诗作对,数据侠告诉你,关于唐诗我们还可以用数据分析来激扬文字,寻找那些流散在字里行间的人物关系。
用CBDB数据库,打开分析唐朝诗人关系的大门前段时间随着《中国诗词大会》的热播,全国人民掀起了读唐诗的浪潮。在我还念中学的时候,每当心情不好,就靠读诗词来排遣。
作为一名古典诗词爱好者,慢慢读得多了,就发现唐朝诗人之间存在着微妙的关系。比如杜甫非常喜欢李白,到了做梦都想见李白的地步:三夜频梦君,情亲见君意(《梦李白》)。
而李白向孟浩然表过白:吾爱孟夫子,风流天下闻(《赠孟浩然》)。孟浩然的好基友则是王昌龄:数年同笔砚,兹夕间衾裯(《送王昌龄之岭南》)。
出于好奇心,我一度想理清楚他们之间的关系。但是这件事主要有两个非常棘手的点:全唐诗数量太多了,一共有四万多首。
诗人的别称太多,比如杜甫:按字称为子美,按排行称为杜二,按官职称为杜工部。整理起来非常麻烦。
针对第一点,我现在用计算机来做,即使数量再多也无所谓。第二点则稍微费事一点,我们使用了哈佛大学编纂的《中国历代人物专辑资料库》(China Biographical Database Project 以下简称CBDB)。
CBDB记录了中国历代名人的传记资料,并保存在关系型数据库中。CBDB由很多张表组成,每张表记录了人物的不同信息。
在我们这次的分析中,只用到了其中两张表,人物的主要信息表:BIOG_MAIN和人物的别名表:ALTNAME_DATA。首先从BIOG_MAIN中查询出人物编号c_personid,接着用c_personid从ALTNAME_DATA中查询出别名,如下图所示:图中能够看到杜甫有三个别称:子美、杜二、杜工部。
当然也有很多重名的现象。比如我们查询王维时,会找出一堆叫王维的。
这个时候,我们就要使用生卒年来判定:这个人物到底是不是唐朝的。这次要从数据库中查询人物的生卒年。
唐朝建立于618年,灭亡于907年。对比后立刻发现,第二个王维才是我们要找的诗人王维。
查询别名核实一下:看到了熟悉的王右丞和摩诘,没错,这正是王维同学。由于CBDB收罗的历史人物太多,重名现象非常严重。
经过一番探索,我最终设置了如下的排除重名策略:如果人物生卒年俱全,那么只要生卒区间和唐朝持续时间有交集即可。如果存在这样的诗人,那么直接把这个人作为全唐诗中的作者。
如果人物只有生年或者卒年,那么生年或卒年必须在唐朝的持续时间内。将这样的人加入候选人列表。
如果人物生卒年都不详,那么舍弃之。经过这三条判断之后:如果候选人列表为空,那么说明CBDB中没有目标人选,舍弃这位诗人。
如果候选人多于一个,则说明排除重名失败,舍弃这位诗人。这种策略并不完美,存在部分注明诗人被舍弃的情况。
为此我手动添加了他们:还有部分诗人的别称比较尴尬,属于唐诗中的常用词,需要手动去除。如下:经过这一番筛选,全唐诗中原本的2609位作者,只剩下了762位。
这就够了,著名的诗人都在这个列表当中,接下来我们只关心这762位诗人之间的关系。李白不如杜甫重情义,白居易才是真“大V”利用上面的诗人及别称列表,我们在全唐诗中来搜索诗人之间的引用关系。
规则是:诗的标题和正文中只要提到过对方,那么两者之间的引用关系加1。一首诗如果提到多次对方,只算一次引用。
经过计算机一番运转,最终得到了引用关系表。首先来检查一下李白和杜甫之间的引用关系:不错,杜甫写了12首与李白有关的诗,李白则只有3首与杜甫有关的诗。
李白这种朋友,确实差劲了一点啊。
从这张图也可以看出,我们的程序能够识别出诗人的别名,比如杜甫的《寄李十二白二十韵》和李白的《鲁郡东石门送杜二甫》都没有直接提到对方的名字。除此之外,我还给诗人之间的引用关系排了个座次,下面显示了排名前三十的引用关系:我们看到,全唐诗中排名第一的好基友绝对是陆龟蒙和皮日休。
这两位互相提到对方的次数都在百次以上,这是因为陆龟蒙和皮日休特别喜欢唱和,你写一首送我,我再回一首赠你,跟现在微博大V之间的互动差不多。这两位常年唱和,最后将往来的唱和诗作编写了中国文学史上的第一本唱和诗集:《松陵集》。
为了不辜负他们之间的友谊,文学史上通常将两者合称为“皮陆”。并列第二的则是白居易和刘禹锡、白居易和元稹。
白居易和刘禹锡同年(772年)出生,从政道路都是各种被贬谪。两人都很长寿,刘禹锡71岁时去世,白居易则活了75岁。
白居易在得知刘禹锡去世的消息时,写下了千古名句:“四海齐名白与刘,百年交分两绸缪。同贫同病退闲日,一死一生临老头。”
白居易和元稹我不想多写了,大家只要知道二人在文学史上被合称为“元白”,就能想见二者的亲密关系了。从排名前三十的引用关系来看,白居易绝对是唐朝诗人朋友圈中的明星,是大V中的大V。
唐朝诗人引用关系的社交网络只有引用关系列表岂不是有些干巴巴的,接下来才是本文的重头戏。我将使用ECharts来可视化诗人。