6.6 文本数据分析工具
数值数据有商用成熟且一键式操作的分析工具,而文本数据因文本的上下文语境以及特定领域的语用差异,尚无一键式操作的分析工具。目前主流的文本数据分析工具以R和Python下开发的开源软件包为主,这些软件包或者能完成文本文件的导入、预处理工作,或者擅于文本词语级、段落级乃至篇章级的语义分析。在选择文本数据分析工具时,需要根据要解决的问题、文本使用场景来选择相适用的工具软件。下面分别介绍Python和R环境下的分析工具,以方便读者了解并选用。
1.基于Python的文本分析包
众所周知,Python是一种使用广泛的解释型、面向对象的编程语言,能够跨平台使用,几乎可以在所有操作系统上运行。Python提供了大量的第三方库,其包含的功能非常丰富。在海量数据分析领域中,尤其是机器学习和深度学习领域中,Python有其独特的优势。几种基于Python的常用的第三方库如表6-1所示。
表6-1 基于Python的常用的第三方库
以上第三方库的简要介绍如下。
(1)NLTK
NLTK的全称是Natural Language Toolkit,它是自然语言处理领域中常用的一个Python库,提供适用于英文文本的自然语言处理基本功能,如预处理、词频统计等。相关文档可以参考网址http://www.nltk.org/。
(2)Gensim
Gensim提供了从文本中自动提取语义主题的主流算法,包括但不限于LSI模型、LDA模型、LDAseq模型、HDP模型等。此外,Gensim也提供了多种词嵌入算法,如Word2vec、fasttext、Poincare等。相关文档可以参考网址https://radimrehurek.com/gensim/。
(3)scikit-learn
scikit-learn是一个知名的开源机器学习算法包,提供从数值数据到文本数据的分类、聚类、预测等功能。相关文档可以参考网址http://scikit-learn.org/stable/。
(4)Shifterator
Shifterator能够实现词语熵移图的绘制,可以通过可视化的方式量化哪些词语导致了两个文本之间的差异。相关文档可以参考网址https://shifterator.readthedocs.io/en/latest/。
(5)Matplotlib
Matplotlib可以在Python中创建静态、动态图表以及其他更为复杂的交互式图表。相关文档可以参考网址https://matplotlib.org/。
(6)Seaborn
Seaborn是一个基于Matplotlib的Python数据可视化库,它提供了一个高级界面,可用于绘制具有吸引力且信息丰富的统计图形。相关文档可以参考网址http://seaborn.pydata.org/。
2.基于R的文本分析包
近年来,基于R的文本分析包发展较快,涵盖计算语言和自然语言处理的词语、句法、语义和语用等多个层面,便于学术界人士接触并调用领域前沿的新算法,这方面的最新动态可以查看网址https://mirrors.tuna.tsinghua.edu.cn/CRAN/。基于R的常用文本分析工具包如表6-2所示。
表6-2 基于R的常用文本分析工具包
以上工具包的简要介绍如下。
(1)jiebaR
jiebaR是一款常用的中文分词工具,具有中文分词、关键词提取、词性标注等功能。相关文档可以参考网址https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/jiebaR/index.html。
(2)quanteda
quanteda是由伦敦政治经济学院肯尼思·比诺特(Kenneth Benoit)教授团队开发的量化文本分析框架,该框架对之前仅完成单一任务,对新用户不友好的R包进行了功能整合,能够帮助用户完成从文本文件导入、预处理、分析建模到可视化的整个过程。quanteda能简化文本输入和元数据关系,方便文本数据预处理,并且能将文档转化为文档-词项矩阵(Document-Term Matrix,DTM)。同时,quanteda能够实现词频统计、文本相似性分析、主题建模等功能。相关文档可以参考网址https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/quanteda/index.html。此外,若读者对quanteda感兴趣,可参考网址https://tutorials.quanteda.io/。
(3)text2vec
text2vec提供了多种文本分析的框架,包括LDA算法、词嵌入算法Glove等,其核心代码用C++编写,封装运行速度快。相关文档可以参考网址https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/text2vec/index.html。
(4)topicmodels
topicmodels提供了LDA和CTM算法模型拟合结果的可视化输出。相关文档可以参考网址https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/topicmodels/index.html。
(5)ggplot2
ggplot2是一个绘制可视化图形的R包,它在作图时采用多个图层叠加的方式,能将常见的统计变换融入到绘图中,使用更加灵活。相关文档可以参考网址https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/ggplot2/index.html。
(6)wordcloud2
wordcloud2是一个能够绘制精美词云图的R包。相关文档可以参考网址https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/wordcloud2/vignettes/wordcloud.html。
(7)ggraph
ggraph是一个能够绘制网络图的R包,它通过节点、边、布局数据来实现网络图的绘制。相关文档可以参考网址https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/ggraph/index.html。
在文本数据分析工具中,R和Python的应用更为广泛,两者的功能有重叠的部分。由于两者的发展根源和背景不同,因此两者在某些方面各有优缺点。例如:当涉及深度学习内容时,Python更有优势;而面向特定学科的文本研究时,R更有优势。因此,面对不同任务时,要选择相适应的工具。