能够完成文本数据挖掘任务的计算机软件非常多,包括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在近年的发展中更加注重引导初学者的入门,让来自不同层次的用户都能够从中受益。