【數據挖掘實操】用文本挖掘剖析近5萬首《全唐詩》

2022-01-04 Python愛好者社區

點擊上方圖片搶購全場5折優惠課程

作者:蘇格蘭折耳喵
個人公眾號: 運營喵是怎樣煉成的


溫馨提示:圖片顯示毛糙和不清楚,是解析度過高的緣故,點擊圖片,即可看到高清大圖


楔子


近些年來,弘揚中華傳統文化的現象級綜藝節目不斷湧現,如《中國漢字聽寫大會》、《中國成語大會》、《中國謎語大會》、《中國詩詞大會》等,其背後的社會成因,在於人們對中國文化中最精緻文字的膜拜心理,雖然浸淫於層出不窮的網絡語彙,時時面臨「語言荒漠」的窘境,仍心嚮往之。

上述節目中,筆者最感興趣的還是《中國詩詞大會》---通過對詩詞知識的比拼及賞析,帶動全民重溫那些曾經學過的古詩詞,分享詩詞之美,感受詩詞之趣,從古人的智慧和情懷中汲取營養,涵養心靈。

由於在新浪微輿情從事的是語義分析產品方面的工作,平時用到很多文本挖掘的方法。所以,筆者想從文本(數據)挖掘的角度去「探索」全唐詩,挑戰一些不同場景下(現代漢語和古漢語)文本處理和分析的異同點,錘鍊自己的分析技能;但更想做的是,結合數據之美和詩歌之雅,用跨界思維去發現一些有趣的東西。

在這裡,筆者分析的語料是《全唐詩》,它編校於清康熙四十四年(1705年),得詩四萬八千九百餘首。

接下來,筆者將使用多種文本挖掘方法,來分析《全唐詩》。以下是本文的行文脈絡:

對於現代漢語的分詞,開源/免費的解決方案或工具很多,開源的解決方案如Jieba、HanLp、StanfordNLP和IKAnalyzer等,「傻瓜式」的免費操作工具的也有新浪微輿情文本挖掘工具,如果直接採用這些現代漢語分詞工具對古詩詞進行分詞,結果會是這樣的:

然而,對於古漢語(文言文),尤其是詩詞的分詞處理可沒有這麼簡單,因為單字詞佔古漢語詞彙統計信息的80%以上,再加上古漢語微言大義,字字千鈞,所以針對現代漢語的分詞技術往往不適用於它。鑑於此種情況,筆者採取的是逐字切分的處理方式,同時去掉一些常見的虛詞,如「之」、「乎」、「者」、「也」。分詞和去停用詞處理如下所示:   

經過文本預處理後,就可以進行文本挖掘中最常規的分析---字頻統計,看看《全唐詩》中出現最多的字有哪些。

首先,讓我們來看看去掉這些虛詞之後的全局高頻字有哪些,筆者這裡展示的是TOP148。「人」字排行第一,這體現了《說文解字》裡所講的「人,天地之性最貴者也」,說明唐詩很好的秉承了「以人為本」的中華文化。而後續的「山」、「風」、「月」、「日」、「天」、「雲」、「春」等都是在寫景的詩句裡經常出現的意象

所謂「意象」,就是客觀物象經過創作主體獨特的情感活動而創造出來的一種藝術形象。簡單地說,意象就是寓「意」之「象」,就是用來寄託主觀情思的客觀物象。在比較文學中,意象的名詞解釋是---所謂「意象」簡單說來,可以說就是主觀的「意」和客觀的「象」的結合,也就是融入詩人思想感情的「物象」,是賦有某種特殊含義和文學意味的具體形象。簡單地說就是借物抒情。

比如,「月」這個古詩詞裡常見的意象,就有如下內涵:

筆者在這裡挑選的意象是關於季節和顏色的。


統計「春」、「夏/暑」、「秋」、「冬」這4個字在《全唐詩》中出現的頻次,「春」字排行榜首,「秋」字列第2位,「夏」和「冬」出現的頻次則要少1個量級,在唐詩裡,傷春、惜春是常見的春詩題材,代表性的作品有朱淑真《賞春》、杜甫《麗春》、韓愈《春雪》、張若虛《春江花月夜》等。也難怪,在商代和西周前期,一年只分為春秋二時,後世也常以春秋作為一年的代稱,約定俗成,由來已久,這兩個字的使用頻率很高也就不足為奇了。


筆者在這裡找了51個古語中常用的顏色的單字(注意是古漢語語境中的顏色稱謂),其中以紅色系(紅、丹、朱、赤、絳等)、黑色系(暗、玄、烏、冥、墨等)、綠色系(綠、碧、翠、蒼等)及白色系(白、素、皎、皓等)為主,這些顏色及其對應的字頻如下表所示:

這裡面「白」字的字頻最高,本意是「日出與日落之間的天色」,筆者常見的有「白髮」、「白雲」、「白雪」,常渲染出一種韶華易逝、悲涼的氣氛,名句如「白頭搔更短,渾欲不勝簪」、「白雪卻嫌春色晚,故穿庭樹作飛花」、「君不見,高堂明鏡悲白髮,朝如青絲暮成雪」、 「白雲一片去悠悠,青楓浦上不勝愁」。

將上述主要的色系綜合統計一下,得到下面的環形佔比圖:

其中,綠色系的佔比居多,「綠」「碧」「蒼」「翠」等大都用於寫景,「綠樹」、「碧水」、「蒼松」、「翠柳」等,這些高頻字從側面反映出全唐詩中描寫景物、寄情山水的詩句佔比很大,透露出平靜、清新和閒適之感。

剛才筆者分析的是單字,而漢語的語素大都是由單音節(字)表示,即所謂的「一音一義」。當這些單音節語素,能夠獨立應用的話,就是詞。古漢語中存在著許多單音節詞,這也就是文言文翻譯中要經常把一個字翻譯成現代漢語中的雙音節詞的原因。

然而,有些單音節語素,不能夠獨立使用,就不是詞,只能夠是語素,如「第-「、」躊-「、」- 們「。

鑑於此,筆者想發現一些唐詩中的常用雙字詞,看看其中的成詞規律是怎樣的。筆者在這裡選取共現次數超過10次的詞彙,並列出TOP200的共現雙字詞。關鍵操作步驟如下所示:

以下是TOP200的共現雙字詞:

從上面的雙詞探測結果中,筆者可以發現如下6類成詞規律:

(1)複合式(A+B等於C):由兩個字組成,這兩個字分別代表意義,組成雙音節的詞,這類詞出現的頻次最多。比如,弟兄、砧杵、紀綱、捐軀、巡狩、犬吠。

(2)重疊式(AA等於A): 琅琅、肅肅、忻忻、灼灼。

(3)疊音(AA不等於A):琅琅(單獨拆開不能組其他詞)、的的(拆開後的單字的詞義不同)等。

(4)雙聲(聲母相同): 躊躇(聲母都是c,分開各自無法組詞)、參差(聲母都是c)、緬邈(聲母都是m)。

(5)疊韻(韻母相同):噫嘻(韻母是i)、繚繞(韻母是ao)、妖嬈(韻母是ao)等。

(6)雙音節擬聲詞:歔欷、咿啞等。

在這一部分,筆者抽取的是上述高頻字TOP148中的字的共現關係,詳細的原理介紹請參考筆者之前所寫的博文《以虎嗅網4W+文章的文本挖掘為例,展現數據分析的一整套流程》、《以<大秦帝國之崛起>為例,來談大數據輿情分析和文本挖掘》。

可以看到,上述的語義網絡可以分為3個簇群,即橙系、紫系和綠系,TOP148高頻字中,字體清晰可見字的近40個。圓圈的大小表示該字在語義網絡中的影響力大小,也就是「Betweenness Centrality(中介核心性),」學術的說法是「兩個非鄰接的成員間的相互作用依賴於網絡中的其他成員,特別是位於兩成員之間路徑上的那些成員,他們對這兩個非鄰接成員的相互作用具有某種控制和制約作用」。在詩句中,這些字常以「字眼」的形式呈現,也就是詩文中精要的字。3類中:

橙系:北、流、馬、草、閒、孤、逢、雲等;

紫系:遊、樹、雨、回、笑、言、幽、清、白、野、行等

綠系:知、金、柳、難、愁、舊、仙、望、客。

其中,根據字的構成來看,綠系簇群中的字大多跟送別(好友)有關。

四、 字向量分析:基於的Word2vec的關聯字分析

因為之前的文本預處理是按字來切分的,所以這裡進行的是基於Word2vec的字向量分析。

基於Word2vec的字向量能從大量未標註的普通文本數據中無監督地學習到字向量,而且這些字向量包含了字與字之間的語義關係,正如現實世界中的「物以類聚,類以群分」一樣,字可以由它們身邊的字來定義。

從原理上講,基於字嵌入的Word2vec是指把一個維數為所有字的數量的高維空間嵌入到一個維數低得多的連續向量空間中,每個單字被映射為實數域上的向量。把每個單字變成一個向量,目的還是為了方便計算,比如「求單字A的同義字」,就可以通過「求與單字A在cos距離下最相似的向量」來做到。相關案例可參看《作為一個合格的「增長黑客」,你還得重視外部數據的分析!》。下面是基於Word2vec的字向量模型原理示意圖。

下面,筆者選取一些單字進行字向量關聯分析,展示如下:

與「梅」相關的字,大致分為兩類:同屬植物,如醾、杏、梨、桃、榴、楊、柳、楝等;和「梅」相關的意象,如春(梅)、酴(酒)、(梅)花、(梅)枝、殘(梅)、(梅)梢等。最相關的是「春」,吟詠春梅,在唐詩中極為常見,賢相宋璟在東川官舍見梅花怒放於榛莽中,歸而有感,作《梅花賦》,其中,"獨步早春,自全其天",讚賞梅花在早春中一枝獨秀,自己安於凌寒而開的天命。

「靜」字則跟它的同音字「淨(連帶繁體,一共出現三次,即「淨」、「淨」和「淨」)」的相關度最大,結合「坐」、「院」「梵」等字,可聯想到「淨院」(佛寺,亦稱「淨宇」)、凈覺(謂心無妄念,對境不迷),這也說明,在唐詩裡最能體現靜的,還是在寺廟裡參禪,感悟佛法。

筆者還想看看唐詩裡經常出現的情緒,即「悲」、「憂」、「愁」、「怒」、「懼」,看看它們的相關字有哪些。這裡就請讀者自行分析,筆者不做贅述。

注意,在這裡得到的情緒相關字,筆者將收集整理它們,製成情緒詞典,用於後面的詩詞情緒分類。

王國維在《人間詞話》裡曾提到:「境非獨謂景物也,喜怒哀樂,亦人心中之一境界。故能寫真景物、真感情者,謂之有境界」,講的是"境"與"境界"通用---寫景亦可成境界,言情亦可成境界,因為景物是外在的世界,情感是內在的世界。所以,在這裡,筆者想分析一下全唐詩中詩詞所表達出來的內在境界,也就是內在情感,為了豐富分析維度,不採用簡單的二元分析,即「積極」和「消極」2種情緒,而是7種細顆粒的情緒分類,即悲、懼、樂、怒、思、喜、憂。

根據上面獲取到的字向量,經過人工遴選後,得到可以用於訓練的「情緒字典」,根據詩歌中常見的主題類別,情緒類別分為:

悲:愁、慟、痛、寡、哀、傷、嗟…

懼:讒、謗、患、罪、詐、懼、誣…

樂:悅、欣、樂、怡、洽、暢、愉…

怒:怒、雷、吼、霆、霹、猛、轟…

思:思、憶、懷、恨、吟、逢、期…

喜:喜、健、倩、賀、好、良、善…

憂:恤、憂、痾、慮、艱、遑、厄…

筆者在這裡採用的是基於LSTM(LongShort-Term Memory,長短期記憶網絡)的情緒分析模型。

在這裡,我們會將文本傳遞給嵌入層(Embedding Layer),因為有數以萬計的字詞,所以我們需要比單編碼向量(One-Hot Encoded Vectors)更有效的表示來輸入數據。這裡,筆者將使用上面訓練得到的Word2vec字向量模型,用預先訓練的詞嵌入(Word Embedding)來引入的外部語義信息,做遷移學習(Transfer Learning)。

以下是簡要原理展示圖:

為了取得更好的效果,筆者採用最新的NestedLSTM+Conv1D的深度學習模型來做情緒判斷,它能較好的提煉文本裡的特徵和語序信息,記住更長的語義依賴關係,做出較為精確的情緒判斷。其網絡結構如下所示:

接著,來試試實際的效果:

筆者隨機測試了100句,判斷準確的有86條,粗略的準確率估計是86%。當然,這只是一次不太嚴謹的小嘗試,在真實的業務場景裡,這得花很多時間來做優化,提高模型的準確率。

下面是對《全唐詩》近5萬首詩的情緒分析結果,展示如下:

可能出乎很多人的意料,代表大唐氣象的唐詩應該以積極昂揚的情緒為主,怎麼會是「悲」、「思」、「憂」這樣的情緒佔據主流呢?而 「喜」、「樂」這樣的情緒卻佔據末流呢?

接下來,筆者著重來分析下「悲」這個情緒佔據主流的原因。

從常見的唐詩寫作題材上說,帶有「悲」字基調的唐詩較多,也多出名詩佳句,比如唐詩中常見的幾種情結,如」悲秋情結「」別離情結「」薄暮情結「」悲怨情結「,都體現出濃重的「悲情」色彩。

古人云:「悲憤出詩人」,它點破了人的成就與所處的環境、心境有某種關係。就像司馬遷所說:「夫《詩》、《書》隱約者,欲遂其志之思也。昔西伯拘羑裡,演《周易》;孔子厄陳、蔡,作《春秋》…大抵賢聖發憤之所為作也。此人皆意有所鬱結,不得通其道也…」回顧古今中外的著名的詩人和作家,幾乎無一不是曾有一段被排擠,誹謗,不得志和身處逆境之經歷,有些甚至還很悲慘。正是在這種悲難,惡劣環境中,才使得其奮發圖強。

重要的是,唐詩中的「悲」不僅僅是做「兒女態」的悲,更是具有超越時空、憐憫蒼生以及同情至美愛情的大慈大悲。如下:

陳子昂的《登幽州臺歌》,「前不見古人,後不見來者。念天地之悠悠,獨愴然而涕下。」從時間與空間兩個角度把悲涼拉長了。      

李白的《將進酒》中「君不見明鏡高堂悲白髮,朝如青絲暮成雪」,以及《夢遊天姥吟留別》中「世間行樂亦如此,古來萬事東流水」讓人唏噓!還有《長相思》第一首中「天長路遠魂飛苦,夢魂不到關山難。長相思,摧心肝。」      

杜甫的《登高》中「無邊落木蕭蕭下,不盡長江滾滾來。萬裡悲秋常作客,百年多病獨登臺。」老病殘軀,孤苦無依獨登臺,心中悲涼陡然而生。《石壕吏》中「老嫗力雖衰,請從吏夜歸。急應河陽役,猶得備晨炊」等句語言樸實,但極具張力!      

白居易的《長恨歌》末尾「七月七日長生殿,夜半無人私語時。在天願作比翼鳥,在地願為連理枝。天長地久有時盡,此恨綿綿無絕期。」相愛而不能相聚,生死遺恨,沒有盡頭!


與上面情緒分析模型採用的內部原理一致,這裡採用的還是LSTM,2層網絡。

上圖是文本生成的簡要原理圖,是基於字符(字母和標點符號等單個字符串,以下統稱為字符)進行模型構建,也就是說我們的輸入和輸出都是字符。舉個慄子,假如我們有一個一句詩「胸中穩處即吾鄉」,我們想要基於這句詩來構建LSTM,那麼希望的到的結果是,輸入「胸」,預測下一個字符為「中」;輸入「中」時,預測下一個字符為「穩」…輸入「吾」,預測下一個字符為「鄉」,等等。

由於其中的原理過於繁複,涉及大量的code和數學公式,故筆者僅展示生成的結果,訓練的語料即經過預處理的《全唐詩》。

以「春雨」打頭,生成500字的詩詞,結果如下:

可以看見,其中的詩詞大都圍繞著「春」來展開,也就是打頭的兩個字引導了後續結果的生成,這多虧了LSTM超強的「記憶能力」---記住了詩歌文本序列中的時空依賴關係。

在生成的詩句中,某些詩句還是蠻有意思的,上下聯間的意象有很強的相關性。

下面是多次生成中產生的較優秀的詩句(當然,這是筆者認為的),其中有些學習到了高階的對仗技巧,如下:

白鷺驚孤島,朱旗出晚流。

筆者最喜歡的是這兩句,它們對仗工整:「白鷺」-「朱旗」,「孤島」-「晚流」,「驚」-「出」。這裡體現出《人間詞話》中的「無我之境」: 「無我之境,以物觀物,故不知何者為我,何者為物」,也就是意境交融、物我一體的優美境界,其中的 「驚」、「出」堪稱字眼,極具動感,鍊字絕妙!

最後,我們來看看詩歌的信息檢索問題,也就是筆者隨意輸入一句詩詞,然後機器會按照語義相似度在《全唐詩》中檢索出若干句符合要求的詩詞。

談到這裡,筆者不由得想起一個詞---「射覆」,射覆遊戲早期的耍法主要是制謎猜謎和用盆盂碗等把某物件事先隱藏遮蓋起來,讓人猜度。這兩種耍法都是比較直接的。後來,在此基礎上又產生了一種間接曲折的語言文字形式的射覆遊戲,其法是用相連字句隱寓事物,令人猜度,若射者猜不出或猜錯以及覆者誤判射者的猜度時,都要罰酒。唐浩明的長篇小說《張之洞》中有對射覆遊戲的精彩描寫:

寶竹坡突然對大家說,我有一覆,諸位誰可射中。不帶大家做聲,他立刻說,《左傳》曰:伯姬歸於宋。射唐人詩一句。大家都低頭想。

      ...

張之洞不慌不忙地念著,白居易詩曰:老大嫁作商人婦。

如果對古文生疏,大家可能很難將這兩句聯想起來,但《張之洞》裡接下來就有關於解謎的描述:

楊銳道:伯、仲、叔、季,這是中國兄弟姊妹得排行序列。伯姬是魯國的長公主,排行老大。周公平定武庚叛亂後,把商舊都周圍地區封給商紂王的庶子啟,定國名為宋,故宋國為商人後裔聚族之地。伯姬嫁到宋國,不正是'老大嫁作商人婦'嗎?

大家可能會想,如果是自己來思索的話,不僅需要自己具備淵博的學識,更要有疾如閃電的反應能力,這個非極頂聰明之人不可!

試想,機器來做,可以做好嗎?能的話,又會是如何操作?

這裡,筆者介紹基於WMD(Earth Mover’s Distance)的語義相似度算法,與上面的情緒分析類似,還有用到之前訓練得到的字向量模型,藉助外部語義信息來應對同義不同字的情形。

WMD(EarthMover’s Distance)是一種能使機器以有意義的方式(結合文本的語義特徵)評估兩個文本之間的「距離(也就是文本間的相似度)」的方法,即使二者沒有包含共同的詞彙。它使用基於word2vec的詞向量,已被證明超越了k-近鄰分類中的許多現有技術方法。以下是基於WMD的「射覆」的機器解:

上面兩個句子沒有共同的詞彙,但通過匹配相關單字,WMD能夠準確地測量兩個句子之間的(非)相似性。該方法還使用了基於詞袋模型的文本表示方法(簡單地說,就是詞彙在文本中的頻率),如下圖所示。該方法的直覺是最小化2段文本間的「旅行距離(traveling distance)」,換句話說,該方法是將文檔A的分布「移動」到文檔B分布的最有效方式。

簡要的解釋了相關原理後,筆者緊接著展現最後的分析效果。由於對《妖貓傳》中的那首線索式的《清平樂》印象深刻,筆者讓機器在《全唐詩》+《全宋詞》中查找與它相關性最大的TOP9詩詞。結果如下:

查找的結果排行第一的是原句,但有一個字不同(其實古語中「花」、「華」互通,華字的繁體是會意字,本意是「花」),略微差異導致相似度不為1.0。第二相似的是一首宋詞,林正大的《括酹江月(七)》,其實這整首詞可以作為李白《清平樂》的註解,因為全篇都是對它的化用:即將《清平樂》中的句、段化解開來,增加了新的聯想,重新組合,靈活運用,對原詩的表達進行了情感上的升華。隨後的兩句詩詞也是類似的情況,只是相似度上略有差異罷了。

緊接著,是剛才機器生成的詩句,看看與它內涵相近的詩句有哪些:

再看看筆者較為欣賞的2句名句,機器很好的捕捉到了它們之間的相似語義關係,即使詞彙不盡相同,但仍能從語義上檢索相似詩句。

寫到這裡,關於《全唐詩》單獨的文本挖掘已經完成,但筆者又想到一個有趣的分析維度---從文本挖掘的角度來比較《全唐詩》、《全宋詞》和《全元曲》之間用字的差異,藉助字這種基本符號來分析各自的文學藝術特徵

八、 文本對比:用Semiotic Squares比較《全唐詩》、《全宋詞》和《全元曲》

因為分析的對象涉及3個,常規的二元對比分析方法難以得出有效的結論。因此,筆者在這裡跨界採用來自符號學領域的研究成果--- Semiotic Squares

Semiotic Squares(筆者譯作『符號方塊』)」,是由知名符號學大師Greimas和Rastier發明,是一種提煉式的對比分析(Oppositional Analyses)方法,通過將給定的兩個相反的概念/事例(如 「生命(Life)」和「死亡(Death)」)的分析類型(通過『或』、『與』、『非』的邏輯)拓展到4類(如「生命(Life)」、「死亡(Death)」、「生死相間(也就是活死人,The Living Dead)」、「非生非死(天使,Angels)」,有時還可以拓展到8個或10個分析維度。以下是符號方塊的結構示意圖:

說明:「+」符號將2個詞項組合成一個「元詞項(Metaterm)」(複合詞,Compound Term),例如,5是1和2的複合結果。

 Semiotic Squares主要包含以下2種元素(我們正在避開方塊的組成關係:對立,矛盾、互補或包含):

(1)詞項(Terms):

Semiotic Square 由4個詞項組成::

Term A和TermB是相反的兩個概念,二者是對立關係,這是「符號方塊」的基礎,另外兩項是通過對Term A和Term B取反而獲得。

(2)元詞項 (Metaterms)

Semiotic Square囊括6個元詞項。這些元詞項由上面的4個基礎詞項組合而成,其中的絕大部分元詞項已被命名。

位置5 (Term 1 + Term 2):複合詞項(Complex Term)

位置6 (Term 3 + Term 4):中立詞項(Neutral Term)

位置7 (Term 1 + Term 3):正向系(Positive Deixis)

位置8 (Term 2 + Term 4):負向系(Negative Deixis)

位置9(Term 1 + Term 4):未命名(Unnamed)

位置10(Term 2 + Term 3):未命名(Unnamed)

下面以「男性」和「女性」這兩個相對的概念來舉個例子,注意其中錯綜複雜的邏輯關係/類型。

說完了分析的大致原理,筆者這裡就來實戰一番,與上述原始模型不同的是,筆者在這裡除了基本的二元對立分析外,還新增了一個分析維度,總體是關於《全唐詩》、《全宋詞》和《全元曲》的三元文本對比分析。

預處理前的文本是這樣的:

預處理後是這樣的形式:

用Semiotic Squares進行分析的結果如下圖所示(點擊即可放大顯示):

從上面呈現的TOP10高頻字和象限區塊(左上角「唐詩」、右上角「宋詞」和正下方「元曲」)來看,唐詩、宋詞、元曲中出現的獨有高頻字依次是:

唐詩:唯、餘、始、鳥、含、爾、昔、茲、忽、棲、川、旌、戎、秦…

宋詞:闌、沈、匆、簾、濃、約、淡、觴、蕊、屏、凝、笙、瑤、柔…

元曲:哥、俺、咱、孩、姐、吃、哩、科、廝、拿、你、叫、呀、呵…

從上面的關鍵字來看,唐詩、宋詞和元曲各自的特徵很鮮明:

唐詩:用字清澹高華、含蓄,詩味較濃,寄情山水和金戈鐵馬的特徵明顯,可以聯想到唐詩流派中典型的山水田園派盛唐邊塞詩,它們大都反映大唐詩人志趣高遠、投效報國的情懷。

宋詞:所用的字體現出婉約、宛轉柔美,表現的多是兒女情長,生活點滴,這也難怪,由於長期以來詞多趨於宛轉柔美,人們便形成了以婉約為正宗的觀念。

元曲:所用的字生活氣息濃重,通俗易懂、接地氣、詼諧、灑脫和率真,充分反映了其民間戲曲的特徵,這與蒙元治下的漢族知識分子被打壓,很多文人鬱郁不得志、轉入到民間戲曲的創作中來有關。

此外,正上方的「複合」中,表徵的是三者皆常用的字,即共性特徵,主要涉及寫景(如 「晴」、「幽」、「溪」、「洲」、「霜」、「浦」、「露」、 「碧」、「帆」、「峰」等)和抒情(等「悵」、「憶」、「寂」、「悠」等)。

下方的兩個象限,「Not 唐詩」和「Not 宋詞」分別代表的「宋詞+元曲」、「唐詩+元曲」,三者之二的共性高頻字,中的兩項也以此類推,筆者在這裡就不贅述了,請讀者朋友們親自去挖掘裡面的玄妙吧。

 

結語

筆者非專業的詩歌研究者,上面的分析也未必準確,如果有分析不恰當的地方,還請斧正。但是,筆者是想通過分析唐詩,來說下自己對於文本(數據)挖掘的看法:

 在數據分析中,得出的數據結果只是「引子」和「線索」,最重要的還是要靠人腦去分析結果,藉助所掌握的背景/業務知識和分析模型,從文本的表層鑽取到其深層,去發現那些不能為淺層閱讀所把握的深層意義,挖掘其價值。

參考資料:

1 數據來源:《全唐詩》、《全宋詞》、《全元曲》

2 使用工具:Excel、python及其相關庫(Gensim、Tensorflow、Keras、Jieba)、Gephi

3 維基百科「唐詩」詞條,https://zh.wikipedia.org/wiki/%E5%94%90%E8%AF%97

4 維基百科「意象」詞條,https://zh.wikipedia.org/wiki/%E6%84%8F%E8%B1%A1

5 漢語中字與詞的關係?,知乎,https://www.zhihu.com/question/23593755

6 王國維,《人間詞話》

7 The Unreasonable Effectiveness of Recurrent Neural Networks,Andrej Karpathy blog, http://karpathy.github.io.

8 Understanding LSTM Networks,Colah,http://colah.github.io/posts/2015-08-Understanding-LSTMs

9 長篇小說《張之洞》,唐浩明

10 Semiotic-Square ,http://www.signosemio.com/greimas/semiotic-square.asp

今日4折優惠課程,掃碼下圖立即搶購

閱讀原文加入SVIP免費學習以上課程

相關焦點

  • 文本挖掘實操|用文本挖掘剖析54萬首詩歌,我發現了這些
    在本文中,筆者循著這個思路,將運用若干文本挖掘方法對手頭的詩歌語料庫(該詩歌原始語料庫地址為https://github.com/Werneror/Poetry)進行深入挖掘和分析,該詩歌語料庫的基本統計數據如下:從上表可以看到,該詩歌語料庫中共計近85萬餘首詩歌,詩歌作者數量達29377位之多;其中,欄位包括「題目」、「朝代」、「作者」和「內容(詩歌)」。
  • ​文本挖掘從小白到精通(二十一)如何使用造好的輪子快速實現各項文本挖掘任務
    達觀數據通過機器學習的方法智能識別各種變形變換的內容,同時根據最新的樣本數據實時更新運算模型,自動學習更新,保證檢測的效果。實時的彈幕能夠做處理嗎?可以,達觀數據文本挖掘系統支持高並發大數據量實時處理,完全可以支持實時彈幕的處理,實現對彈幕文本做篩除涉黃、涉政、垃圾評論、廣告內容等的檢測。標籤自動提取對於非熱門行業適用嗎?
  • 一篇可以讓你學會寫詩的推文——基於大數據的《全唐詩》文本分析
    ,弘揚中華傳統文化的現象級綜藝節目不斷湧現,如《中國漢字聽寫大會》、《中國成語大會》、《中國謎語大會》、《中國詩詞大會》等,其背後的社會成因,在於人們對中國文化中最精緻文字的膜拜心理,雖然浸淫於層出不窮的網絡語彙,時時面臨「語言荒漠」的窘境,仍心嚮往之。
  • 當5萬首《全唐詩》遇到大數據分析,驚現出來的秘密你絕對想不到!
    你知道,唐詩中描寫最多的季節是哪一個?你知道,唐詩描寫最多的感情是哪一種?唐詩、宋詞、元曲又有哪些區別呢?今天,帶著這些問題,通過基於人工智慧的語義分析技術,對《全唐詩》進行深度的文本數據分析,發現了一些有趣的秘密。
  • 數據挖掘用什麼軟體_商業數據挖掘案例
    所謂的數據挖掘其實就是在大量的的非結構化數據裡搜索可用的數據,並提取隱含在其中、人們事先不知道的、但又有潛在應用價值的過程。Smartbi數據挖掘工具揭示的是未知的、將來的數據關係。>5、訓練自動化、模型自學習,提供企業級模型工廠適應普通用戶1、直觀易上手的流式建模,極簡風格的節點配置界面2、支持可視化探索,輕鬆理解數據質量和數據關聯3、流程節點在線幫助,隨用隨查4、模型超參數自動調整
  • 商業分析中,如何進行文本挖掘
    我的好友吳亦凡在這篇文章中,提供了一種通過文本挖掘得出商業洞察的方法,簡單易上手,又極具價值。本文將從商業分析的視角來介紹文本挖掘的實際應用場景,以及一項完整的文本挖掘流程。本篇的重點以「器」的角度,介紹我珍藏的幾款文本挖掘工具,手把手教你製作一個精美的個性化詞雲。
  • CCAI2018 | 韓家煒:大規模文本數據挖掘的新方向
    韓家煒認為,數據挖掘的研究工作可以總結為三部曲:(1)從文本數據中挖掘隱藏的結構。文本數據中隱藏著大量的結構,這步工作就是將這些數據挖掘出來(2)將文本數據轉化為有類型的 Network/Text Cube。
  • 小叮噹數據挖掘(一):初識數據挖掘
    ---數據歸約與變換:發現有用的特徵, 維/變量歸約, 不變量的表示---選擇數據挖掘函數: 匯總, 分類, 回歸, 關聯, 聚類---選擇挖掘算法---數據挖掘: 搜索有趣的模式---模式評估和知識表示:可視化, 變換, 刪除冗餘模式等.
  • 數據挖掘要用什麼軟體呢?商業數據挖掘案例
    所謂的數據挖掘其實就是在大量的的非結構化數據裡搜索可用的數據,並提取隱含在其中、人們事先不知道的、但又有潛在應用價值的過程。 Smartbi數據挖掘工具揭示的是未知的、將來的數據關係。數據挖掘的知識領域涵蓋了資料庫技術、統計學知識、機器學習、可視化等多學科知識的綜合應用。
  • 基於文本挖掘的學習分析應用研究
    非結構化數據包括所有格式的辦公文檔、即時信息、e-Mail、聲音、圖像和音頻等等。Gartner和IDC稱:近80%的網絡數據都是非結構化[1][2][22],這些數據蘊藏了大量有價值的信息,但是目前人們還很難管理和分析。非結構化數據是不符合預定義的數據模型的內容,難以實現自動化識別,並且不完全符合資料庫的存儲標準與規範。毫無疑問,文本是非結構化數據中最典型、顯性的實例來源[2][20]。
  • 英文文本挖掘預處理流程總結
    英文文本挖掘預處理一:數據收集這部分英文和中文類似。獲取方法一般有兩種:使用別人做好的語料庫和自己用爬蟲去在網上去爬自己的語料數據。英文文本挖掘預處理二:除去數據中非文本部分這一步主要是針對我們用爬蟲收集的語料數據,由於爬下來的內容中有很多html的一些標籤,需要去掉。少量的非文本內容的可以直接用Python的正則表達式(re)刪除, 複雜的則可以用beautifulsoup來去除。
  • 一文看懂什麼是文本挖掘
    文本挖掘指的是從文本數據中獲取有價值的信息和知識,它是數據挖掘中的一種方法。文本挖掘中最重要最基本的應用是實現文本的分類和聚類,前者是有監督的挖掘算法,後者是無監督的挖掘算法。文本挖掘是一個多學科混雜的領域,涵蓋了多種技術,包括數據挖掘技術、信息抽取、信息檢索,機器學習、自然語言處理、計算語言學、統計數據分析、線性幾何、概率理論甚至還有圖論。
  • 手把手教你做文本挖掘
    一、文本挖掘定義文本挖掘指的是從文本數據中獲取有價值的信息和知識,它是數據挖掘中的一種方法。
  • 智能時代的教育文本挖掘模型與應用
    與結構化數據相比,文本數據以言語數據為主,可以更加真實地反映學習者的學習動機、認知發展、情感態度、學習體驗等(Witten et al.,2016)。利用文本挖掘技術獲取教育文本中蘊藏的有用信息並發現複雜教育系統的規律,給教育研究者帶來了新的研究視角。
  • 程式設計師用代碼寫的《全唐詩》,竟然是這樣的……
    在這個大數據時代有人發明了《全唐詩》的另類讀法想知道《全唐詩》裡出現最多的字是哪一個嗎?後來又經過歷代學者的增補、校正,目前比較通行的版本是「中華書局」《全唐詩(增訂本)》,一共十五冊,收錄了《全唐詩補編》等研究成果,可以說是「最全的一部《全唐詩》」。」《全唐詩》中出現頻率最高的字:人對《全唐詩》採取逐字切分的處理方式,同時去掉一些常見的虛詞,如「之」、「乎」、「者」、「也」。經過文本預處理後,就可以進行文本挖掘中最常規的分析——字頻統計。
  • 乾貨丨文本挖掘二三式
    文本挖掘是指從大量文本數據中發現知識,抽取隱含的、未知的、潛在有用的模式的過程。文本挖掘是數據挖掘中的一個研究領域,只是數據挖掘的研究對象大多是結構化的數據,而文本挖掘的研究對象是非結構化或半結構化的信息。
  • 機器學習實例 | 淺談文本挖掘應用
    「摘要」在以網際網路為核心,信息不斷發展的今天,文本信息作為最重要的網絡資源,其中隱含著大量的模式與知識亟待發現與利用。雖然在廣泛的數據資源中充斥著大量非結構化或者半結構化的數據資源,但是通過信息標註技術處理後,大部分數據均可結構化,形成文本資源。
  • 被廣泛使用的文本挖掘,為什麼值得學習?
    導讀:文本挖掘就是通過分析文本,把其中的信息壓縮後提取出來的一種技術。  在以網際網路為核心,信息不斷發展的今天,文本信息作為最重要的網絡資源,其中隱含著大量的模式與知識亟待發現與利用。雖然在廣泛的數據資源中充斥著大量非結構化或者半結構化的數據資源,但是通過信息標註技術處理後,大部分數據均可結構化,形成文本資源。
  • 深入淺出:如何從0開始學習大數據挖掘分析?
    二、用何種工具實操大數據挖掘能實現數據挖掘的工具和途徑實在太多,SPSS、SAS、Python、R等等都可以,但是我們需要掌握哪個或者說要掌握哪幾個,才算學會了數據挖掘?這需要看你所處的層次和想要進階的路徑是怎樣的。第一層級:達到理解入門層次了解統計學和資料庫即可。
  • [軟體] Text Mining5.9一款用於文本挖掘的軟體!
    Text Mining一款用於文本挖掘的軟體[CP/OL].[2020-08-16].https://github.com/2088904822.無需編程也可以進行文本挖掘,面向純小白【1】Text Mining5.9中文版軟體核心功能:(1)多個文本自定義分詞頻次統計詞雲圖繪製主題聚類(2)單個大文本自定義分詞頻次統計詞雲圖繪製