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自己方面。

相关文章
相关标签/搜索