能够完成文本数据挖掘任务的计算机软件非常多,包括R、Python、SPSS、SAS、WordStat等。软件可以分为专用软件和开源软件两种,其中前者大多是商业集团以盈利为目的开发、维护并进行销售的专用软件,而后者则是被授权可以自由使用、赋值和修改的计算机软件,常由开源社区自发维护。专用软件往往需要用户为其服务付费,因此软件的可获得性较弱,相对来说不利于更广泛的群体进行开放交流与再创造,而开源软件则相反,不仅应用广泛而且利于交流。下面,对常用的开源文本数据挖掘工具进行简要介绍。
● carrot2:一个开源的搜索结果聚类引擎,它可以自动将文档归为不同的主题类别。该工具支撑了大量科学研究,早在2004年就获得EASA(European Academic Software Awar)竞赛中获奖,并为eTools.ch、JobVille等多个搜索引擎提供技术支持,其相关信息可参考https://project.carrot2.org/。
● GATE:一个用于开发和部署处理自然语言的软件架构。它可以用于涉及人类自然语言的各类计算任务。GATE擅长处理不同大小和形式的文本,因此用户社区也非常多样化,相关信息可参考https://gate.ac.uk/。
● OpenNLP:Apache OpenNLP库是基于机器学习的工具箱,专门用于处理自然语言文本,具有分词、打标签、命名实体识别在内的各类NLP功能,由志愿者开发并维护,相关信息可参考http://opennlp.apache.org/。
● Voyant Tools:一个基于Web的文本阅读和分析环境。这是一个学术项目,旨在促进数字人文学科的学生和学者以及广大公众的阅读和口译实践。它能够协助教学人员来教授如何利用计算机辅助科学研究,同时可以对来源网络的文本进行分析研究。其应用接口为https://voyant-tools.org/,相关使用文档可参考https://voyant-tools.org/docs/#!/guide/about。
● KH Coder:用于定量内容分析或文本数据挖掘的免费软件,常用于计算语言学。支持的分析语种包括加泰罗尼亚语、中文(简体)、荷兰语、英语、法语、德语、意大利语、日语、韩语、葡萄牙语、俄语、斯洛文尼亚语和西班牙语文本,相关使用文档可参考http://khcoder.net/en/。
● Python:一种广泛使用的解释型、高级、通用型编程语言,可在几乎所有操作系统上运行。其功能强大而丰富,尤其擅长于机器学习、特别是深度学习领域。Python的相关技术文档可参考https://www.python.org/。
● R:用于统计计算和图形的免费软件环境,它可以在各种UNIX平台、Windows和mac OS上编译并运行。R的语法灵活而自由,功能广泛而强大,是数据科学中通用的语言环境,尤其擅长探索性数据分析和数据可视化,相关信息可参考https://www.r-project.org/。
以上所介绍的工具中,R与Python由于用户群体广泛,涉及功能具有重叠部分,经常被同时列出并进行比较。Python的用户群体一般都具有计算机科学的背景,因此其社区开发的核心群体由计算机科学家构成,对文本数据挖掘工具的开发往往是从底层进行思考的,如计算性能、与硬件的关联等,比较有名的自然语言处理工具包括spaCy、NLTK等。而R语言的社区则以统计学家为主,开发人员的背景则往往更加丰富,包括生物学、心理学以及很多人文学科的开发者,因此开发会更加偏好任务导向。R中较为流行的工具包括quanteda、tidytext等,相关的内容可以参考CRAN官方网站的介绍https://cran.r-project.org/web/views/NaturalLanguageProcessing.html。从任务完成的角度而言,两种语言并没有太大的差别。但是由于两种工具具有不同的历史发展根源和社区构成特点,导致在部分资源的分布上不均衡。例如,由于词嵌入涉及计算机科学中的深度学习内容,因此Python的资源会更加丰富。而面向特定学科问题的文本研究工具,R语言更为丰富。但是两种工具都在不断地发展变化中,它们互相学习、互相借鉴,在合作竞争关系中不断完善彼此。本书将会以R语言为例,因为R在近年的发展中更加注重引导初学者的入门,让来自不同层次的用户都能够从中受益。
第2章
本章概述:
能够用于文本数据挖掘的软件工具非常多,而R语言无疑是众多工具中的佼佼者之一。R自诞生以来就专注于统计分析与可视化领域,语法通俗易懂,实现简单快捷,因此迅速获得了来自各行各业不同背景从业者的青睐。本章将会专注于协助R语言初学者快速入门,介绍最基本、最实用的知识和技巧,以期让没有太多编程经验的用户也能够迅速掌握这些基本技能。
对于初学者而言,环境越简单就越有利于入门。如果你对R毫无经验,强烈建议大家就用一个R软件和记事本来对本章的内容进行学习即可,即可以忽略本章集成开发环境部分。但是在后期做大型项目中,以及需要经常重复使用一些脚本的时候,集成开发环境可以大大提高开发的效率,是进行高级编程便利的工具。因此,本章会对其进行最基本的介绍,以期引导大家迅速上手R语言友好的数据科学工作流。
作为免费开源软件,R能够在包括Windows、Linux、mac OS X在内的各种操作系统上安装并运行。因为R允许自由散布,因此在很多地方都可以下载到各个版本的R软件。一般来讲,推荐到官方网站进行下载,其网址为https://www.r-project.org/。在这个网站中(图 2.1),可以选择一个离所在地接近的镜像进行下载,然后根据计算机的操作系统类型(Windows、Linux、Mac)选择安装包。下载完成后,可以根据向导的指引进行安装配置。在安装配置过程中,用户可以自行选择安装路径、是否使用语言翻译、安装32位还是64位的软件(也可以两者同时安装,一般推荐使用64位)。
图2.1 R的官方下载界面
“即插即用”的包(package)是R软件流行的重要原因,通过制作R软件包,社区贡献者可以编写自己的程序并共享给广大的用户。通过使用R包,用户能够在不理解底层细节的情况下,依然能够实现复杂的数据科学计算和数据可视化,而有开发能力的开发者则可以通过研究源代码来进一步优化这些软件的性能,并拓展这些软件的功能。在R中,要安装一个包非常简单,直接使用 install.packages函数 即可。例如,想要安装名为“pacman”的包,可以使用如下命令:
包安装好之后,还不能在R环境中直接调用,必须使用 library函数 对包进行加载。
在R中,pacman包的 p_load函数 ,可以同时完成上面的两个过程。也就是说,如果已经有了这个包,包会自动加载;如果还没有这个包,那么会先自动进行安装,然后再进行加载。例如我们要把installr包加载到环境中,可以这样操作:
事实上,pacman包还可以对R包进行其他管理操作,包括下载GitHub发布的R包、更新R包的版本、从环境中卸载包等。关于pacman包更多的功能,可以参考其GitHub主页(https://github.com/trinker/pacman)。
R社区是一个动态活跃的开源社区,R软件本身会不断迭代更新,而安装的包也会不断排错和升级,因此需要定期对R软件及R包进行版本更新,才能够确保用上最新的功能。如果想查看R软件的版本,可以输入“version”。
如果想查看某一个包的版本号,则可以使用 packageVersion函数 。例如,想要查看pacman包的版本号时,可以进行如下操作。
每次对R软件及其各个包的更新都要重新下载是非常麻烦的,所幸installr包可以把整个更新过程自动化,其操作极其简便,如下所示。
上面这个操作会引导用户进行各种下载和安装的操作,非常便捷。如果需要更新所有R包的版本,让它们升级到最新版本,可以使用 update.packages函数 。
R是一个基于命令脚本的交互式开发环境,界面极其简洁(图 2.2)。可以输入合法代码完成与计算机的“交流”,得到对应的结果。
图2.2 R的界面
对于初学者而言,集成开发环境(Integrated Development Environment,IDE)相对没有那么重要,而是应该重视代码本身的意义与获得结果的含义。但是,在了解R之后,如果能够熟练掌握一款IDE则有利于提高工作效率。R软件自带文本编辑器,利用一个简单的记事本(扩展名为.txt)也可以对脚本进行记录和管理,但这些功能都比较基础。目前R社区中最流行的IDE是RStudio(https://rstudio.com/),它具有自动补全代码、识别代码语法错误并提醒、可以直接在编辑器中调入控制台运行等一系列强大功能。对于个人用户而言,可以从官方网址(https://rstudio.com/products/rstudio/download/)中下载其免费版本(RStudio Desktop)。下面,对Rstudio的开发界面进行简要介绍。
传统的RStudio界面包含4个模块(图2.3)内容如下。
模块1 是代码笔记本,可以在这个模块中记录代码和修改。在这里,可以直接对代码进行逐行运行,在编写代码的时候会进行代码自动补全,非常便捷。
模块2中则包含了R环境(Environment)中的一些信息,例如我们把对一个变量进行赋值,那么这个变量就会出现在这个环境中。同时,模块 2中还会有其他的选项卡,例如“History”,它会记录着历史信息,即在控制台中运行的代码记录。
模块3 就是代码运行的控制台,它相当于图2.2中所显示的界面,是R代码实际运行的地方,能够看到用户与R实时的交互信息。
图2.3 Rstudio的用户界面
模块4 则包括文件路径信息,让用户能够在IDE中直接打开、保存、移动文件。同时,绘图展示(“Plots”)选项卡、帮助文档(“Help”)选项卡也在模块4中,用户在R中生成的图可以在“Plots”中进行查看,还能够随时观看之前生成的图片,并进行复制或导出。而“Help”则提供了便捷的帮助文档界面,用户可以直接在这个界面输入不熟悉的函数名称,从而查阅其文档;而在控制台输入以问号开头的帮助语句(如“?mean”)也会直接导向这个帮助显示界面。
此外,在4个模块之上,还包含了快捷工具栏,这里面包含了新建、打开、保存、改变布局、加入插件等功能,以提高用户的工作效率。而最顶上的基础工具栏,则可以对IDE进行更多样的设置,如“Tools”选项卡中可以找到“Global Options…”选项,在弹出窗口中可以对IDE中的个性化选择进行全局设置。
同时,RStudio默认有一系列的快捷键来方便用户进行快速操作。
●〈Ctrl+Enter〉:运行当前代码。
●〈Ctrl+C〉:复制。
●〈Ctrl+V〉:粘贴。
●〈Ctrl+Shift+M〉:插入管道操作符(“%>%”)。
●〈Ctrl+Shift+C〉:批量注释。
●〈Esc〉:结束当前命令。
更多的使用方法,可以参考RStudio的官方帮助文档(https://docs.rstudio.com/)。