7.5.1 词频分析与可视化

7.5.1 词频分析与可视化

在文本分析中,词云图是文本可视化的一种重要方式。词云图可以通过字体大小和颜色等特征突出文本中出现频率较高的词汇,从而使人更直观地把握文本的关键内容。R中有很多包可以绘制词云图,本节主要介绍wordcloud2包。

wordcloud2包对wordcloud包进行了优化,其参数非常简单,可以绘制出精美的词云图,并且wordcloud2包绘制的词云图具有一定的交互性,在以网页形式展示的情况下,当鼠标停留在词汇上时会显示该词汇及相应的词频。wordcloud2()函数有几个重要参数:其中,data为生成词云需要的数据,是由词汇和词频构成的一个数据框。size为词云的大小,建议范围设置为0.4~1。如果词云中词语频率差距太大,可以考虑对频率进行标准化处理,否则词频太大的词会无法显示。shape为词云的形状,默认是“circle”,即圆形,此外,还可以选择cardioid(苹果形或心形)、star(星形)、diamond(钻石)、triangle-forward(前向三角形)、triangle(三角形)、pentagon(五边形)。

接下来以R自带的数据为例绘制词云图。词云图是用来展示文本数据重点信息的,所以词云图中词的数量不宜太多,在绘制词云图时可以选择出现次数较多的词汇进行绘制。本例选择词频大于等于6的词汇绘制词云图,代码如下(结果如图7-10所示):

图7-10 英文词云图示例

另外,我们也可以绘制中文词云图,选择案例数据中词频大于150的词进行展示,代码如下(结果如图7-11所示):

图7-11 中文词云图示例

font Family参数可以指定词云的字体;color可以指定词云的颜色,但是只能指定色系不能指定具体颜色。

接下来继续以2021年3月5日第十三届全国人民代表大会第四次会议上的政府工作报告为例,首先通过jiebaR包对报告文本进行分词,然后通过freq()函数得到一个由词汇和词频组成的数据框,选取词频前100的词汇绘制词云图,示例如下(结果如图7-12所示):

通过图7-12可以很直观地看出,“发展”“建设”“经济”“就业”“创新”等词是本次工作报告中提到的重点。

在上面的实例中,均使用词云图的方式对文本数据中的高频词语进行了可视化,但是词云图不能直观显示词语层面的权重,在比较两个文本数据之间的差异时,词云图难以发挥作用。因此,当需要对比两个文本之间的差异时,可以使用词语熵移图来量化哪些词语会导致两个文本之间的成对差异。Python中的shifterator包能够绘制词语熵移图,接下来将举例进行说明。

图7-12 政府工作报告词云图

首先,对文本数据进行分词,并构建词汇-词频表,代码如下:

词汇-词频表构建完成后,就可以使用shifterator包绘制词语熵移图了。熵的计算方法不一,下面以Shannon熵为例,具体代码如下(结果如图7-13所示):

图7-13 词语熵移图

本例使用Shannon熵的计算方法,绘制了词语熵移图,其通过垂直条形图的方式列示了东部地区和中部地区政策目标的前50个高频词汇的差异。由图7-13可以看到,东部地区政策目标中提到“互联网”“工业互联网”等词居多,而中部地区政策目标中提到“智能制造”“制造业”等词居多。

图7-13左下角的曲线图是累积贡献图,水平线显示绘制的词语贡献与未绘制词语贡献的截止值。图7-13中的累积贡献图表明,大约25%的整体差异可以由前50个词语解释。