Python小說文本挖掘正則表達(dá)式分析案例
原文鏈接:http://tecdat.cn/?p=5673
?
?
約瑟夫·海勒的《第二十二條軍規(guī)》是我最喜歡的小說。我最近讀完了 ,并喜歡整本書中語言的創(chuàng)造性使用和荒謬人物的互動。對于我的可視化類,選擇文本作為我的最終項目“數(shù)據(jù)集”是一個簡單的選擇。
?
?數(shù)據(jù)集
該文有大約175,000個單詞,分為42章。我在網(wǎng)上找到了這本書的原始文本版本并開始工作。
我使用正則表達(dá)式和簡單字符串匹配的組合在Python中解析文本。
我shiny在R中以交互方式可視化這些數(shù)據(jù)集。
地中海旅行

這種可視化映射了整本書中提到的地中海周圍位置的提及。?
人物形象

該圖基本上代表了書中提到不同字符的時間序列。?
我將數(shù)據(jù)繪制為標(biāo)準(zhǔn)散點圖,章節(jié)為x軸(因為它與時間相似),字符為離散y軸,垂直條為標(biāo)記。
?
人物共同出現(xiàn)
?

用于構(gòu)建此可視化的數(shù)據(jù)與前一個中使用的數(shù)據(jù)完全相同,但需要進行大量轉(zhuǎn)換才能將其轉(zhuǎn)換為可表示這些模式的形式。?
聚類為此圖添加了另一個維度。在整本書上應(yīng)用分層聚類方案,以嘗試在角色中找到社區(qū)。再次,使用章節(jié)(1表示現(xiàn)在,0表示不存在)和42維歐幾里德距離用于使用完整鏈接AGNES算法對字符進行聚類。對不同聚類方案和距離測量的樹狀圖進行人工檢查發(fā)現(xiàn),這是最“水平”,因為更頻繁出現(xiàn)的角色占主導(dǎo)地位的方案最少。這是六個簇的樹形圖:

?
當(dāng)用戶選擇通過聚類對圖進行著色時,用于共享相同聚類的字符的共同位置的單元用唯一顏色填充,而顯示來自不同社區(qū)的字符的共同位置的那些單元用灰色陰影。應(yīng)該注意,聚類是在整個文本上執(zhí)行的,而不是由應(yīng)用程序的用戶放大的章節(jié)。我覺得動態(tài)改變聚類會讓人分心。
字母或頻率排序?qū)⑷杭氨ā背蔁o法識別的空間,但按群集排序會將它們帶入緊密的社區(qū),讓觀眾也可以看到群集之間的某些交互。
我對共同位置的編碼和應(yīng)用于每個單元的陰影的映射肯定會引起爭論,而其他聚類方法導(dǎo)致找到非常不同的社區(qū)。也就是說,從定性上講,我花了很多時間用我自己的文本知識來評估結(jié)果,發(fā)現(xiàn)當(dāng)前的實現(xiàn)比我測試的任何其他實現(xiàn)更令人滿意。
我發(fā)現(xiàn)書中的每個主角在某些時候與幾乎所有其他角色互動都非常有趣。我不會期望這么多重疊。與Les Mis相比,情節(jié)更加密集,我懷疑這是由于聚集的章節(jié)數(shù)量的10倍差異。
特色詞

?
這個圖可能是四個圖中最常規(guī)的圖,但可能顯示了對文本的很多見解。
我可以選擇為此可視化選擇堆疊條形圖或堆積區(qū)域圖。我喜歡堆積區(qū)域圖更好地顯示單詞突出的連續(xù)章節(jié),但是承認(rèn)當(dāng)章節(jié)之間存在高度可變性時,三角形形式會扭曲關(guān)系。
?
結(jié)論
我在這個過程中學(xué)到了很多東西,無論是在使用方面,還是在shiny本身方面。
?