Python小說文本挖掘正則表達式分析案例

原文連接:http://tecdat.cn/?p=5673

數據集

約瑟夫海勒捕捉22是我最喜歡的小說。我最近讀完了 ,並喜歡整本書中語言的創造性使用和荒謬人物的互動。對於個人可視化類,選擇文本做爲個人最終項目「數據集」是一個簡單的選擇。該文有大約175,000個單詞,分爲42章。我在網上找到了這本書的原始文本版本並開始工做。正則表達式

我使用正則表達式和簡單字符串匹配的組合在Python中解析文本。算法

我shiny在R中以交互方式可視化這些數據集。測試

地中海旅行

這種可視化映射了整本書中提到的地中海周圍位置的說起。 編碼

人物形象

該圖基本上表明瞭書中提到不一樣字符的時間序列。 加密

我將數據繪製爲標準散點圖,章節爲x軸(由於它與時間類似),字符爲離散y軸,垂直條爲標記。spa

人物共同出現

用於構建此可視化的數據與前一箇中使用的數據徹底相同,但須要進行大量轉換才能將其轉換爲可表示這些模式的形式。 blog

聚類爲此圖添加了另外一個維度。在整本書上應用分層聚類方案,以嘗試在角色中找到社區。再次,使用章節(1表示如今,0表示不存在)和42維歐幾里德距離用於使用完整連接AGNES算法對字符進行聚類。對不一樣聚類方案和距離測量的樹狀圖進行人工檢查發現,這是最「水平」,由於更頻繁出現的角色占主導地位的方案最少。這是六個簇的樹形圖:排序

當用戶選擇經過聚類對圖進行着色時,用於共享相同聚類的字符的共同位置的單元用惟一顏色填充,而顯示來自不一樣社區的字符的共同位置的那些單元用灰色陰影。應該注意,聚類是在整個文本上執行的,而不是由應用程序的用戶放大的章節。我以爲動態改變聚類會讓人分心。rem

字母或頻率排序將羣集「爆炸」成沒法識別的空間,但按羣集排序會將它們帶入緊密的社區,讓觀衆也能夠看到羣集之間的某些交互。字符串

我對共同位置的編碼和應用於每一個單元的陰影的映射確定會引發爭論,而其餘聚類方法致使找到很是不一樣的社區。也就是說,從定性上講,我花了不少時間用我本身的文本知識來評估結果,發現當前的實現比我測試的任何其餘實現更使人滿意。

我發現書中的每一個主角在某些時候與幾乎全部其餘角色互動都很是有趣。我不會指望這麼多重疊。與Les Mis相比,情節更加密集,我懷疑這是因爲彙集的章節數量的10倍差別。

特點詞

這個圖多是四個圖中最常規的圖,但可能顯示了對文本的不少看法。

我能夠選擇爲此可視化選擇堆疊條形圖或堆積區域圖。我喜歡堆積區域圖更好地顯示單詞突出的連續章節,可是認可當章節之間存在高度可變性時,三角形形式會扭曲關係。

結論

我在這個過程當中學到了不少東西,不管是在使用方面,仍是在shiny自己方面。

相關文章
相關標籤/搜索