Advertisement

python文本可视化_文本分析与可视化

阅读量:

这篇文章描述了一种文本分析和可视化的技术,用于提取和可视化博客文章中的关键词。作者通过以下步骤实现这一目标:
下载并处理1400篇博客文章,使用nltk和BeautifulSoup进行词干提取和去停用词。
生成每篇文章的前3个关键词,并构建共生矩阵。
使用Gephi将共生矩阵可视化,展示了关键词之间的关系网络。
提供了完整的Python笔记本和数据集供读者重现结果。
该方法通过简单的计数器和网络分析工具,提供了对文本数据的直观可视化,适用于研究者和数据科学家。

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

在一篇博客文章中,我致力于开发一种文本分析与可视化技术。该技术基于一种基础的关键字提取机制,仅通过单词计数器从我在[1]博客上的文章语料库中提取前三个关键词。为了构建这个语料库,我收集了全部博客文章(约1400篇),并提取了每篇文章的文本内容。通过 nltk 和多种 词干提取与词形还原 技术,我对所有文章进行分词处理,计算关键词并选取前三个关键词。将所有文章中的关键词进行汇总后,我使用Gephi[2]软件生成了可视化图表。

我已经提交了一个包含完整代码库的Jupyter笔记本[3],供您复制实验过程。此外,您还可以从[4]处下载我的博客文章的完整副本。安装 beautifulsoup 和 nltk 是必要的。安装代码如下:

首先,我们加载我们的库:

在加载过程中,我遇到了一个提示。这个提示与BeautifulSoup相关,我们可以选择性地忽略它。

现在,让我们来设置一些工作所需要的东西。

首先,我们来设置停止词、词干提取器和词形还原器。

现在,我们来建立一些我们需要的函数。

tokenizer函数源自此处[5]。如果你对主题建模感兴趣,可以跳过本节,转而阅读如何利用Python进行新闻反馈数据分析和交互式见解提取。这篇内容非常值得阅读,它不仅深入探讨了主题建模和集群分析,还提到了一些值得深入探讨的技术细节。在后续文章中,我会反复提及这些关键点,希望对您有所帮助。

随后,我的文章中有一些html标记,我想在对它们不做任何其他操作之前去除这些标记……这里,bs4库可以实现这一功能,我在Stackoverflow[7]上找到了这段代码的实现方法。

接下来,让我们探索一些有趣的内容。要提取关键词,我们只需编写两行代码。这个函数首先执行计数操作,然后返回指定关键字的数量。

最后,我开发了一个函数用于获取包含 url /pubdate/author/text 的 pandas 数据框(数据结构链接: pandas 数据框(每行对应一篇博客文章),并标记 'text' 源,最终返回一个包含关键词、文章标题和发布日期的 pandas 数据框。

目前需要加载数据并开始分析。这段代码被加载到我的博客文章中,可以在[8]处找到。然后,从数据中只提取感兴趣的列,重新命名它们,并为标记化做准备。在读入CSV文件时,大多数操作都可以用一行代码完成,但这些操作已经被我为另一个项目编写好了,它们就是这样。

使用dataframe的 tail() 方法我们可以得到:

现在,我们可以通过调用build_article_df函数来标记和单词计数工作了。

我们通过一个新的dataframe来生成一个包含每篇文章的前3个核心词汇(包括其发布日期和标题)的数据集。

这个功能本身就非常出色。我们采用了一个相对简单的计数器,为每篇文章自动提取关键词。虽然不算复杂,但确实在实际应用中非常有效。除此之外,还有其他方法可以实现类似的效果,但目前我们暂时采用这个方案。除了提取关键词外,观察这些关键词之间的关联以及与其他关键词之间的互动,可能会带来一些有趣的发现。例如,‘data’这个词在其他文章中频繁出现,这个观察可能会提供新的视角。

存在多种方法用于解决这一问题,其中一种方法是通过可视化手段,利用拓扑学或网络理论构建关键词之间的关联图。其中,首先需要统计关键词的出现频率,然后构建一个共现矩阵。该矩阵可以导入到Gephi软件中进行可视化分析,该软件以其强大的网络分析功能而闻名。然而,使用networkx库虽然可以生成网络图,但需要进行大量配置和调整,这可能会让人望而却步。相比之下,Gephi的用户界面更为友好,更适合非技术人员使用。

我们获得了关键词,需要构建一个共生矩阵。为了实现这一目标,我们需要进行一系列操作,以便让关键词得以分开。

现在我们有了一个关键词dataframe kw_df,它包含两列:关键词和带有关键词的关键词组

此方法并无实质意义,然而,我们需要两列数据来构建一个共生矩阵。我们通过迭代每个文档的关键词列表(keywords列)并检查其包含的关键词。如果包含关键词,则将其加入到共生矩阵中,随后构建出完整的共生矩阵。

当前,我们在co_occur dataframe中有一个共生矩阵,可以将其导入至Gephi系统中,以便分析节点及其边的映射关系。建议将co_occurdataframe导出为CSV文件,以便在Gephi中进行分析。你可以在此处[9]下载该矩阵的副本。

第一步,使用File -> Import Spreadsheet导入您的共现矩阵CSV文件,并保持所有设置为默认状态。接着,在“概述”表格中,你应该可以看到许多节点和连接,如图所示。

走进Gephi

现在,轮到使用Gephi的时候了。作为新手,我无法像教程那样提供很多帮助,但可以告诉你构建网络映射所需的具体步骤。首先,打开File菜单,选择Import Spreadsheet,导入共生矩阵的CSV文件,并保持所有内容为默认设置。然后,在“overview”选项卡中,你会看到一系列的节点和连接,如图所示。

ericbrown.com文章副本的网络映射图

接着,向下拖动到“layout”设置区域,设置为Fruchterman Reingold布局,并点击“run”按钮以重新生成映射图。在部分场景中,当节点稳定显示后,您需要点击“stop”按钮以终止动画。您将看到如下所示的内容。

ericbrown.com文章副本的网络映射图

看起来很酷,对吗?现在,让我们在这个图像中添加颜色。首先,在“appearance”选项中,选择“nodes”部分,接着选择“ranking”选项,然后依次选择“Degree”并点击“apply”。点击后,网络图会发生变化,其中会添加一些与之相关的颜色。当然,如果你愿意,你可以随意调整颜色,但默认的配色方案应当是这样的:

这个内容还不够吸引人。文本或关键词的位置在哪里?为了查看该内容,建议切换至"overview"选项卡。具体来说,当你在下拉列表中选择"Default Curved"时,内容将呈现如下所示的状态。

这地方确实很酷。这里有两个截然不同的但非常有趣的领域。Data领域和Canon摄影领域……这是有道理的,因为我专注于Data领域,并且分享了许多个人摄影作品,这些作品均采用Canon相机拍摄。

如果你对内容感兴趣,我会为你呈现一份详尽的文章索引图。此外,摄影与数据领域的主要集群同样值得关注,而围绕商业、个人及IT经理的大型集群则尤为突出,这与我过去多年的写作主题高度契合。

除了现有的方法外,还有多种方式可以实现文本可视化。我计划撰写几篇新文章,分享我最近探索和发现的一些有趣方法。请持续关注。

如果你想了解更多关于文本分析的知识,请阅读以下书籍:

使用Python进行文本分析:从数据中获得有用结论的实战方法[10]

Python的自然语言处理:运用自然语言处理工具包进行文档分析[11]

R语言文本挖掘[12]

相关链接:英文原文:https://pythondata.com/text-analytics-visualization/

译者:天天向上

全部评论 (0)

还没有任何评论哟~