最近看到张(微信公众号:Advance Log,先生)关于用代码画唐代诗人的关系,解决了当年学唐诗的小好奇心。这些诗人之间有什么关系-_-
接下来看原文
我还在上中学的时候,每当心情不好的时候,就靠读诗来缓解。当我读得更慢时,我发现唐代诗人之间有一种微妙的关系。例如,杜甫非常喜欢李白,他在梦里想李瑟娥白:三个晚上,我梦见你,温柔,亲密和真实,好像我是醒着的..然而,李白对孟浩然来说太白了:师父,我发自内心地向您致敬,您的名声也在天而降(给孟浩然的一条消息)。孟浩然的好基友是王长龄:几年来同笔同砚,现在在王长龄的南方消磨时光。
出于好奇,我一度想了解他们之间的关系。但是整个唐朝有四万多首诗,诗人之间经常以别称称呼对方,整理起来很麻烦,这种想法逐渐被摒弃。
前不久在网上看到这张很火的图片,让我想起了十五年前的这种担心。不再拖延,拖了这么多年的心愿,再也拖不下去了。
这一次,我会通过编程来完成。如前所述,这件事的主要麻烦在于以下两点:
唐诗太多,共计四万多首。
诗人有太多的绰号,如杜甫:子美按字,杜尔按等级,杜工部按官职。
至于第一点,我们现在用电脑做,多少都无所谓。第二,稍微麻烦一点。我们使用哈佛大学编制的中国传记数据库项目。CBDB记录了中国历代名人的传记资料,并将其保存在关系数据库中。
1.使用CBDB查找诗人的别名(可以适当阅读实现语句)
CBDB由许多表格组成,每个表格记录不同的字符信息。我们只使用两个表,字符的主信息表:BIOG _ MAIN和字符的别名表:ALTNAME_DATA
首先从BIOG _ MAIN中找出人物编号c _ personad,然后用c _ personad从ALTNAME_DATA中找出别名,如下图所示:
现在我将向您展示如何从CBDB查询杜甫的昵称。
可见杜甫有三个外号:子美、杜尔、杜工部。
当然也有很多重名的现象,比如我们质疑王伟。
我们会找一堆叫王伟的人。这时候我们就用生卒年来判断这个人物是不是唐朝的。这一次,我们应该从数据库中查询人的出生和死亡年份。
唐朝建立于618年,卒于907年。对比了一下,马上发现第二个王维就是我们要找的诗人王维。
检查别名以验证:
我看到了熟悉的王右丞和摩卡。是的,这是王伟的同学。
由于CBDB收集的历史人物太多,重名现象非常严重。经过一番探索,最终建立了以下消除重名的策略:
1.如果人物都有生卒年,只要生卒间隔和唐的时长有交集。如果真有这样的诗人,应该直接把他当成整个唐诗的作者。
2.如果人物只有出生年份或死亡年份,那么出生年份或死亡年份必须在唐朝的存续期内。将这样的人添加到候选人列表中。
3.如果一个人物的生卒年月不详,就放弃吧。
经过这三次判断:
如果候选人名单是空,说明CBDB没有目标候选人,诗人被放弃。
如果候选人不止一个,就意味着重名的失败被消除,诗人被抛弃。
这种策略并不完美,有些情况表明诗人被抛弃了。为此,我手动添加了它们:
有的诗人有别扭的外号,是唐诗中常用词,需要手动去除。如下:
经过这次筛选,唐诗原本的2609位作者只有762位。够了。所有的著名诗人都在这个名单上。接下来我们只关心这762位诗人之间的关系。
2.寻找诗人之间的引用关系
利用上面列出的诗人和昵称,我们搜索了整个唐诗中诗人之间的引用关系。
规律是:只要在一首诗的题目和正文中互相提到,它们之间的引用关系就会增加1。如果一首诗多次提到对方,那就只引用一次。
经过一定的计算机运算,最终得到参考关系表。
2.1李白与杜甫的借鉴关系
一、查李白与杜甫的引文关系:
是的,杜甫写了12首与李白有关的诗,而李白只有3首与杜甫有关的诗。李白这个朋友,真的有点不好。。
从这张图可以看出,我们的程序可以识别诗人的别名。比如杜甫的《送李十二白二十韵》和李白的《送杜于陆郡东石门》都没有直接提到对方的名字。
2.2参考关系排名
我对诗人之间的引用关系进行了排序。以下显示了前30个引用关系:
可以看出,陆桂梦和皮日休是唐诗中第一对好朋友。两人互提了100多遍。这是因为卢桂梦和皮日休特别喜欢唱和平。你给我写一首,我再给你写一首,类似微博v的互动,这两位歌手常年在一起唱歌,终于编出了中国文学史上第一部唱和诗集:《松岭集》。为了不辜负他们的友情,文学史上通常称他们为“皮鲁”。
并列第二的是白居易和刘禹锡,白居易和元稹。白居易和刘禹锡同年(772年)出生,都贬谪政坛。两人都活了很久。刘禹锡去世时71岁,白居易活了75岁。白居易得知刘禹锡死讯时,写下了千古名句:
四海与白、刘齐名,百年来分为两部分
由于贫穷和疾病,这位老人将终其一生
白居易和元稹我不想多写了。只要知道他们在文学史上被统称为“白元”,就能看出他们的密切关系。
从前30名的引用关系来看,白居易绝对是唐代诗人朋友圈里的明星,是大V里的大V。
3.参考关系可视化
只是引用关系列表有点干巴巴的,接下来就是本文的重点了。我会用ECharts把诗人之间的引用关系形象化,最后得到诗人的社交网络。
3.1唐诗人社会网络图
因为总共有762位诗人,为了避免画图过于拥挤和难以辨认,我只举例说明了前100个引用关系,如下图:
在图中:
箭头表示诗人之间的参照关系。比如白居易引用元稹,那么白居易的箭指向元稹,元稹引用白居易,对应的元稹的箭指向白居易。
箭头的粗细表示诗人之间引用关系的强弱。白居易引用元稹167次,元稹引用白居易88次,所以白居易指向元稹的箭头会更粗。
图中清晰可见除唐代诗人外的两大朋友圈:杜甫-李白朋友圈和白居易朋友圈。是的,他们分别是盛唐和中唐的核心诗人。
虽然只画了前100个引用关系,但还是很挤。在文学史上,唐诗按时间分为初唐、盛唐、中唐、晚唐四个阶段。接下来我们画出这四个阶段的社交网络图。
3.2初唐诗人社交网络图
从箭的粗细来看,初唐诗人宋文志与沈权的关系最好。这两位是宫廷诗人的代表。他们确定了现代诗歌的规则,如格律和对仗。大致来说,现代诗歌的规则都是他们发明的。对了,两者一般都是综合文学史上的“神曲”。似乎没有文学史的认证是不可能成为好朋友的。
3.3唐代诗人社交网络图
注:盛唐诗人的社会网络,为了使绘图清晰,只画了引用次数大于等于2的关系。
盛唐诗人的核心无疑是《杜丽篇》中提到的李白和杜甫。我们再看,杜甫指向李白的箭头比李白指向杜甫的箭头粗得多。而且盛唐诗人明显分为以李白杜甫为核心和以皇甫然、刘长卿为核心的两组。为什么会出现这种情况?不知道有没有比较了解文学史的朋友,请评论一下。
3.4中唐诗人社交网络图
注:中唐诗人的社会网络,为了使绘图清晰,只画了引用次数大于等于2的关系。
中唐诗人的社会网络特征明显。诗人紧密团结在以白居易、元稹、刘禹锡为核心的文坛政治局周围,为唐诗由浪漫主义向现实主义的伟大转折做出了历史性贡献。
3.5晚唐诗人社交网络图
晚唐诗人的社会网络比较分散,没有明显的核心。最重要的是李商隐和杜牧,他们在文学史认证中被授予“小杜丽”的好朋友称号。
4总结
当这篇文章写到这里的时候,我突然意识到,即使一个人对唐诗一无所知,他也能立刻发现哪个诗人是当代诗人的核心,哪个诗人的影响力最大。这些都是非常有用的信息。
而且我们可以用电脑分析任何时代的人与人之间的关系。中国恰好是历史文献最全的国家。如果能对这些文献做一个系统的分析,能否做出一个随时间变化的历史人物关系图?
这在过去是不可能的,但现在随着计算机技术的发展和古典文学的数字化,这是可能的。这当然是一个很大的工作量,没有一个人能做到。不知道有没有可能参考linux的开发过程,用开源的方法一起完成。
过两天我就把这一本和前一本比较一下,“我们读唐诗的时候,读的是什么?把python源代码上传到github,然后有兴趣的朋友可以叉在一起学习。我的github账号也是mrqianjinsi。请注意。
画面可能不太清晰。钱近似先生提供了一个简单的网站给大家看:。
此外,作者还将两篇唐诗分析文章的源代码上传至github。有兴趣的网友可以克隆自己的研究,欢迎推出PR,提问问题。即使不是程序员,也可以下载项目html目录下的网页文件,用浏览器查看诗人社交网络的高清大图,只要你的屏幕分辨率足够高,就可以想看多清晰就看多清晰~
1.《唐代诗人基情关系图 数据来说唐朝诗人之间的关系》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《唐代诗人基情关系图 数据来说唐朝诗人之间的关系》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/834075.html