郑鹏飞 李菁菁
关键词:文本大数据;R语言;可视化
1引言
在大数据时代,海量文本的积累在各个领域不断涌现。从人文研究到相关部门决策,从精准医疗到量化金融,从客户管理到市场营销,海量文本作为最重要的信息载体之一,处处发挥着举足轻重的作用。各种语言都拥有独特的语言模式,并时常伴随着各式各样的“噪音”。对这样的文本(尤其是中文文本)进行处理,面临着极大的技术挑战[1]。
与英文文本相比,中文文本数据处理起来尤为困难,主要因为英文文本由独立的单词构成,可以很方便地进行词频统计,而中文汉字单个字符信息量有限,主要通过若干个字符组成的词语来承载文本含义,因此对其进行词频分析时首先要解决断句的难题。若要准确断句,则必须先建立一个容量足够大的“词库”以供比对,这对中文文本数据的分析形成了不小的挑战。
R语言是一种开放式的统计软件,世界各地的使用者都可以将自己的研究成果在平台上共享,这为综合应用各种资源来解决复杂问题提供了可能[2]。
2统计软件R语言的特征
R语言是一种功能强大的统计软件,它具有以下几项基本特征。
(1)开源。可以在它的网站及其镜像中下载任何安装程序、源代码、程序包及其源代码、文档资料。标准的安装文件自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能[3]。
(2)可编程。作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以自己编制函数来扩展现有的语言,这也就是为什么它的更新速度比一般统计软件运行速度快得多的原因。
(3)程序包。只有当一个包被载人时,它的内容才可以被访问。一些常用、基本的程序包已经被收入在标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化[4]。
(4)互动性。除了图形输出是在另外的窗口处,它的输入/输出窗口都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改,以满足用户的需要。
然而,R语言具有一定的学习门槛,初学者往往需要输入至少一万行代码才能入门,而且很多程序包的学习甚至比R语言本身还要复杂(如ggplot2软件包)[5]。
3基于R的文本大数据分析方法
3.1分析目标
迅速提取一段文本数据的中心思想,并进行可视化展示。
3.2解决思路
步骤1将文本数据转存为方便R软件读取的txt格式。
步骤2将文本数据与特定“词库”进行比对和断句,形成若干个独立的中文短语。
步骤3剔除上述中文短语中的“白噪音”,如阿拉伯数字、语气词、助词等,保留有用信息。
步骤4对上一步得到的信息进行频数统计,按降序排列。
步骤5对上一步得到的信息进行适当的可视化。
步骤6对分析结果进行解读。
3.3主要代码
install.packages(c(¨Rwordseg¨,¨wordcloud2¨))
代码注释:下载并安装两个工具包。
library( Rwordseg)
代码注释:该工具包主要用于中文文本的断句,由开发者Jian Li于2019年贡献,版本0.3.2。
library( wordcloud2)
代码注释:该工具包主要用于可视化展示,由开发者Dawei Lang等于2018年贡献,版本0.2.1。
代码注释:将txt格式的某报告文本读人内存,约3万5千字。
y<一segmentCN( strwords=contents,analyzer=¨hmm¨,returnType=¨vector¨)
代码注释:对上一步读取的文本内容进行断句,使之成为一个由孤立中文词语组成的列表。
y<一unlist(y)
代码注释:修改上一步得到的分析结果的数据形式。
y<一y[!
grepl(1 0-9] ',y)]
代码注释:去掉文本中的阿拉伯数字,也可根据研究需要去掉更多的内容。
y<一y[ nchar(y》=2]
代码注释:去掉文本中的单个汉字,仅保留由两个或两个以上的汉字组成的词语。
table(y)
代码注释:对上一步的分析结果进行词频统计。
top50<一sort( table(y),decreasing=TRUE)[1:50]
代码注释:进行降序排列,取出现次数排名前50的词汇,也可根据研究需要取更多或更少的内容[6]。
wordcloud2( top50)
代码注释:进行可视化展示。默认的可视化形状为圆形,如果加入shape=“star"或shape=“pentagon”可绘制五角星或五边形。如果信息太多导致无法完整呈现,可使用size参数缩小图形尺寸。
3.4结果呈现
按上述流程对某报告正文进行分析,频次最高的50个词汇如表1所列;可视化展示如图2、图3所示。
图1和图2都是用wordcloud2命令绘制的可视化图形。该图形完全根据表1的内容进行绘制,该命令形式如下:
如上所示,该命令参数众多,可以对数据来源、图形尺寸、网格尺寸、字体、文字粗细、前景颜色、背景颜色、旋转角度、图形比例、图形形状等多项显示内容进行调节,为使用者提供了丰富的个性化手段[7]。
3.5结果分析
通过对长达3万5千字的某报告全文进行上述处理可以看到,出现频次最多的3个词分别为“发展”“社会”和“坚持”,分别出现了238次、185次和173次,从数据上再一次证明了“发展才是硬道理”[8]。
4结束语
本文实现了一种基于R语言环境的文本大数据分析方法。与其他文本大数据处理方法相比,本文方法步骤相对简便、结果呈现直观、多种参数可调,既能作为一项日常的、批量化的文本数据处理工具,又能作為R语言教学的一个案例,激发学生的学习兴趣。