查看原文
其他

程序猿眼中的《全唐诗》,竟然是这般模样!!!

2017-03-22 舆情观察


前段时间随着《中国诗词大会》的热播,全国人民掀起了读唐诗的浪潮。作为一名古典诗词爱好者,我也从网上找到了一份《全唐诗》。统计了一下,一共42974首诗,顿时有了一种“天下好诗,尽入吾硬盘矣”的错觉。



这么多的好诗,白白放在硬盘上岂不浪费。

作为一名程序员,我打算站在科技与文艺的交叉口(模仿老罗的语气),写程序来分析唐诗,看看唐朝的诗人都写了什么?

1 基于字的分析

我们从最简单的,基于字的分析来入手。

1.1 作品数量

首先来看看作品数量排名。排名前十的作者如下:


前三名是众望所归,小学到高中语文课本中的选诗,也应该是这三位最多吧。第四名NA表示无名氏。后面的几位除了齐己和贯休,也都是大名鼎鼎的高手。我查了一下,齐己和贯休居然都是和尚。齐己生卒年为863年—937年,贯休生卒年为832年-912年,而唐朝亡于907年,猜测是因为他们处于唐朝末期,所以流传下来的诗歌比较多。

1.2 常用字

再看看常用字排名


除去前两名的逗号和句号,唐诗中出现最多的字是“不”字,这可能会让很多人吃惊。其实这不意外,朱自清先生在《<唐诗三百首>指导大概》说过:后人从唐诗七绝中推选了十一首经典之作,其中有八首都用了否定语:

劝君更尽一杯酒,西出阳关无故人。(王维《渭城曲》)
玉颜不及寒鸦色,犹带昭阳日影来。(王昌龄《长信怨》)
但使龙城飞将在,不教胡马度阴山。(王昌龄《出塞》)
醉卧沙场君莫笑,古来征战几人回?(王翰《凉州曲》)
两岸猿声啼不住,轻舟已过万重山。(李白《下江陵》)
羌笛何须怨杨柳?春风不度玉门关。(王之涣《凉州词》)
不知何处吹芦管,一夜征人尽望乡。(李益 《夜上受降城闻笛》)
商女不知亡国恨,隔江犹唱后庭花。 (杜牧《泊秦淮》)

这也许是因为否定句表达的语气更强,比较适合传唱,所以,“不”字才能得到诗人们的青睐吧。

1.3 季节

看看诗人们最喜欢哪个季节。


毫不意外,春天和秋天呈现出压倒性的场面。这就是一个伤春悲秋的群体啊。

1.4 颜色

再看看诗人们都喜欢啥颜色。


居然最喜欢白色,为什么??有没有懂乐嘉色彩心理学的,给分析分析吧。。

1.5 植物


松树和竹子最受诗人们喜爱,建议这两种植物作为文青届的图腾,一年四季不落叶,都是青色,多好。

1.6 动物

有了植物,当然也不能少了动物。


首先看了十二生肖的数量,后来我想到猿和猴,狗和犬是同义词,把这两个也加上了。然而并不能撼动龙和马的第一梯队地位,难道唐朝也讲龙马精神吗?

2 基于词的分析

只对字的分析当然满足不了我们,接下来我将以词为单位来分析,这就涉及到了分词的问题。我们使用清华大学NLP实验室(http://thulac.thunlp.org/)提供的分词工具thulac来作为分词工具。这个工具在返回分词结果的同时,还能提供词性标记,很是方便。


以上面为例:“我”后面跟’r’表示代词,“爱”为动词(v),北京和天安门都为地名(ns)。
由于thulac是用现代语文语料训练的,对唐诗的分词效果总有些差强人意。不过没有办法,现阶段还没有针对古典文献的分词工具,将就用吧。
用这个分词工具对《全唐诗》分词之后,就可以看到一些更好玩的结果了。

2.1 地名

首先看看唐诗中最常出现的地名。


江南和长安还是最吸引人啊,毕竟一个地方环境好,一个地方是首都,想必这两个地方的房价一定也很贵。其他如洛阳,黄河,长江,洞庭,长沙,江城(泛指水边的城市)都是游玩的好地方,古代诗人们的生活太潇洒了。
起初我把“沧洲”看错成了“沧州”,还想着怎么“沧州”这种小地方出镜率这么高。后来仔细一查“沧洲”在古文献中借指隐者居住的地方,立刻就明白为啥排名这么靠前了。看来古代的诗人除了游玩,就想着隐居,写诗误国,编程兴邦啊。

2.2 时间

再来看看时间词。


前五名居然都是一个意思,有点意外,我还想着诗人们都比较怀旧呢。看来古人也讲究活在当下啊。

2.3 场景

再来看看什么场景能引发诗人们的兴致。


门前,海上,江边,楼上,这都是写诗的好地方啊。这就跟我们现在到景区门前要合影留念,到海边、河边、高楼上都要拍照发朋友圈是一个意思吧。唐朝到现在已经过了一千多年了,发朋友圈这习惯一直没有变啊。

3 基于词向量的分析

利用thulac的分词结果,我们接下来分析词之间的关联。为了分析词之间的联系,首先要将词转换到向量空间(我之前的文章有讲向量空间哦,不记得的同学快去复习)里,用word2vec这个工具实现词到向量的转换。word2vec的原理就是利用词之间的相对位置关系,求出词的向量表示。后续有时间的话,我会写几篇文章讲解word2vec,记得关注我哦。
经过word2vec的转换,我们将一个个词转换为了向量,比如“今日”这个词被表示为很长的一串数字。


所有的词被表示为数字之后,再来分析词的关系就很简单啦。比如我们看看和“天子”这个词和什么词的意思比较近,程序会列出意思最相近的十个词。


看看,我们发现了什么。天子首先是懂礼的,其次还是圣贤的,还长寿,既儒雅又雄才。天啊,唐朝诗人拍马屁的功夫比我们强多了,以后我要多读唐诗啦。
再看看和“寂寞”意思比较接近的十个词。


能看出来,诗人们往往在春日的深夜里,在树叶摇落的季节里,在旅途中,怀念故国的时候,最容易寂寞。这也难怪,我写完上个句子,都感觉有点寂寞了呢。

本文转载自微信公众号:前进日志

原标题《当我们在读唐诗时,我们在读什么?》

现标题为“舆情观察”公众号所加


往期热文链接:

黑科技来袭‖人心真的难测吗?谁是互联网的仆人?互联网究竟进入了什么时代?123分钟的视频告诉你答案!

舆情观察:反萨德中的舆论战

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存