當我們在讀唐詩時,我們在讀什麼?

前段時間隨著《中國詩詞大會》的熱播,全國人民掀起了讀唐詩的浪潮。作為一名古典詩詞愛好者,我也從網上找到了一份《全唐詩》。統計了一下,一共42974首詩,頓時有了一種「天下好詩,盡入吾硬碟矣」的錯覺。

這麼多的好詩,白白放在硬碟上豈不浪費。

作為一名程序員,我打算站在科技與文藝的交叉口(模仿老羅的語氣),寫程序來分析唐詩,看看唐朝的詩人都寫了什麼?

1 基於字的分析

我們從最簡單的,基於字的分析來入手。

1.1 作品數量

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

前三名是眾望所歸,小學到高中語文課本中的選詩,也應該是這三位最多吧。第四名NA表示無名氏。後面的幾位除了齊己和貫休,也都是大名鼎鼎的高手。我查了一下,齊己和貫休居然都是和尚。齊己生卒年為863年—937年,貫休生卒年為832年-912年,而唐朝亡於907年,猜測是因為他們處於唐朝末期,所以流傳下來的詩歌比較多。

1.2 常用字

再看看常用字排名

除去前兩名的逗號和句號,唐詩中出現最多的字是「不」字,這可能會讓很多人吃驚。其實這不意外,朱自清先生在《<唐詩三百首>指導大概》說過:後人從唐詩七絕中推選了十一首經典之作,其中有八首都用了否定語:

勸君更盡一杯酒,西出陽關無故人。(王維《渭城曲》)

玉顏不及寒鴉色,猶帶昭陽日影來。(王昌齡《長信怨》)

但使龍城飛將在,不教胡馬度陰山。(王昌齡《出塞》)

醉卧沙場君莫笑,古來征戰幾人回?(王翰《涼州曲》)

兩岸猿聲啼不住,輕舟已過萬重山。(李白《下江陵》)

羌笛何須怨楊柳?春風不度玉門關。(王之渙《涼州詞》)

不知何處吹蘆管,一夜徵人盡望鄉。(李益 《夜上受降城聞笛》)

商女不知亡國恨,隔江猶唱後庭花。 (杜牧《泊秦淮》)

這也許是因為否定句表達的語氣更強,比較適合傳唱,所以,「不」字才能得到詩人們的青睞吧。

1.3 季節

看看詩人們最喜歡哪個季節。

毫不意外,春天和秋天呈現出壓倒性的場面。這就是一個傷春悲秋的群體啊。

1.4 顏色

再看看詩人們都喜歡啥顏色。

居然最喜歡白色,為什麼??有沒有懂樂嘉色彩心理學的,給分析分析吧。。

1.5 植物

松樹和竹子最受詩人們喜愛,建議這兩種植物作為文青界的圖騰,一年四季不落葉,都是青色,多好。

1.6 動物

有了植物,當然也不能少了動物。

首先看了十二生肖的數量,後來我想到猿和猴,狗和犬是同義詞,把這兩個也加上了。然而並不能撼動龍和馬的第一梯隊地位,難道唐朝也講龍馬精神嗎?

2 基於詞的分析

只對字的分析當然滿足不了我們,接下來我將以詞為單位來分析,這就涉及到了分詞的問題。我們使用清華大學NLP實驗室(THULAC:一個高效的中文詞法分析工具包)提供的分詞工具THULAC來作為分詞工具。這個工具在返回分詞結果的同時,還能提供詞性標記,很是方便。

以上面為例:「我」後面跟』r』表示代詞,「愛」為動詞(v),北京和天安門都為地名(ns)。

由於THULAC是用現代語文語料訓練的,對唐詩的分詞效果總有些差強人意。不過沒有辦法,現階段還沒有針對古典文獻的分詞工具,將就用吧。

用這個分詞工具對《全唐詩》分詞之後,就可以看到一些更好玩的結果了。

2.1 地名

首先看看唐詩中最常出現的地名。

江南和長安還是最吸引人啊,畢竟一個地方環境好,一個地方是首都,想必這兩個地方的房價一定也很貴。其他如洛陽,黃河,長江,洞庭,長沙,江城(泛指水邊的城市)都是遊玩的好地方,古代詩人們的生活太瀟洒了。

起初我把「滄洲」看錯成了「滄州」,還想著怎麼「滄州」這種小地方出鏡率這麼高。後來仔細一查「滄洲」在古文獻中借指隱者居住的地方,立刻就明白為啥排名這麼靠前了。看來古代的詩人除了遊玩,就想著隱居,寫詩誤國,編程興邦啊。

2.2 時間

再來看看時間詞。

前五名居然都是一個意思,有點意外,我還想著詩人們都比較懷舊呢。看來古人也講究活在當下啊。

2.3 場景

再來看看什麼場景能引發詩人們的興緻。

門前,海上,江邊,樓上,這都是寫詩的好地方啊。這就跟我們現在到景區門前要合影留念,到海邊、河邊、高樓上都要拍照發朋友圈是一個意思吧。唐朝到現在已經過了一千多年了,發朋友圈這習慣一直沒有變啊。

3 基於詞向量的分析

利用THULAC的分詞結果,我們接下來分析詞之間的關聯。為了分析詞之間的聯繫,首先要將詞轉換到向量空間(我之前的文章有講向量空間哦,不記得的同學快去複習)里,用word2vec這個工具實現詞到向量的轉換。word2vec的原理就是利用詞之間的相對位置關係,求出詞的向量表示。後續有時間的話,我會寫幾篇文章講解word2vec,記得關注我哦(公眾號搜索「mrqianjinsi」)。

經過word2vec的轉換,我們將一個個詞轉換為了向量,比如「今日」這個詞被表示為很長的一串數字。

所有的詞被表示為數字之後,再來分析詞的關係就很簡單啦。比如我們看看和「天子」這個詞和什麼詞的意思比較近,程序會列出意思最相近的十個詞。

看看,我們發現了什麼。天子首先是懂禮的,其次還是聖賢的,還長壽,既儒雅又雄才。天啊,唐朝詩人拍馬屁的功夫比我們強多了,以後我要多讀唐詩啦。

再看看和「寂寞」意思比較接近的十個詞。

能看出來,詩人們往往在春日的深夜裡,在樹葉搖落的季節里,在旅途中,懷念故國的時候,最容易寂寞。這也難怪,我寫完上個句子,都感覺有點寂寞了呢。

好了,這次的分析就都這裡啦,是不是很有意思呢。後續我還將對唐詩進行更深層次的挖掘,歡迎大家關注~

注1:題圖來自ctext.org/zh,這是我見過的最好的古文獻閱讀網站。

注2:本文首發於我的微信公眾號(mrqianjinsi),歡迎大家搜索關注。

推薦閱讀:

猴子 的 Live - 如何零基礎從事數據分析
簡單兩步,大幅提高python數據處理速度
大數據那些事(21):腰斬的大象之Hortonworks
數據分析學習計劃
這麼輕鬆學會桑基圖製作,小夥伴都驚呆了!

TAG:唐诗 | 大数据 | 自然语言处理 |