16.2.4 案例二数据分析

16.2.4 案例二数据分析

经过上一节讲解的文本数据预处理步骤,我们已经获取了usenet_words数据框,接下来进行文本分析的步骤。文本分析主要包括文本的描述性统计、特征提取、文档分类、主题建模。

1.描述性统计

我们可以使用R内置的summary()函数对语料库进行描述性统计:

quanteda包还提供了kwic()函数,这个函数可以检索某个词在文中的上下文位置,如下代码可以检索“finance”在总统就职演说稿中的位置:

通过这个功能,我们可以检索特定的关键词并了解关键词(如财务、国防、外交、就业率等)在演说稿中的分布情况,从而获取每位总统就职时关心的方向。其中pattern是正则检索,可以使用正则表达式对其进行匹配,例如:

通过统计可以发现,19世纪末和20世纪初的总统就职演说稿中都提到了“finance”,而当时美国正处于经济危机,这说明当时美国总统对于财政问题十分关心。

我们还可以使用phrase()函数对“United States”进行多字匹配:

其中head()函数可以提取前6个结果。

2.文本特征提取

quanteda包中自带分词函数tokens(),该函数提供了去除数字、符号、停用词的参数,常用指令如下:

因为使用分词函数会产生中间对象(分词的结果),所以quanteda包将分词和构建文本特征矩阵进行了整合,dfm()函数可以直接进行文本分词和构建文本特征矩阵,同时dfm()函数包含tokens()函数的所有功能。构建文本特征矩阵的代码如下:

如下代码可以查看出现频率最高的词:

textplot_wordcloud()函数可用于绘制词云图,该函数基于wordcloud包,其绘制的词云图如图16-8所示。

接下来我们探索与恐怖主义和经济相关的词的变化,从而了解一下历任总统对这两方面的关注程度。

首先,我们定义词典:

图16-8 词云图

然后将词典用于构建文本特征矩阵,查看美国总统就职演说稿中的6个文档(1997—2017年):

我们可以看到,克林顿和奥巴马曾多次提到经济问题,而恐怖主义则很少被提及。

3.文档分类

就职演说稿在一定程度上反映了美国总统的风格,我们可以通过比较文档的相似度来对总统之间的差异程度进行分析,以前任美国总统特朗普为例,我们将其与其他几个前任总统进行比较。

首先利用如下代码将这些文档提取出来:

然后,通过如下代码探索其相似度:

注意,这里更重要的是对文本的相似度进行探索,而不是真的去分析总统之间的相似性,因为这些文本是很难对他们进行定义的。在研究中,我们更多的还是探索文本之间的相似度,对文本进行分类。如果有更多描述个人特质的文本,将其与文本特征工程分析技术相结合,也可以对上述代码涉及的人群聚类,受篇幅限制,本书不再赘述。

4.主题建模

quanteda包也提供了构建主题模型的功能,使用quanteda包构建主题模型的代码如下:

dfm_trim()函数可对文本特征矩阵进行处理,因为文本特征矩阵一般都是稀疏的,所以通过函数的处理可以使文本特征矩阵的稀疏程度减小。通过dfr_trim()函数将稀疏的文本特征矩阵转为稠密的文本特征矩阵后,就可以使用LDA等主题模型开展主题建模分析了。