1.3 常用文本数据分析工具

一个完整的文本数据分析过程,除了适宜的开发环境外,还要借助很多自然语言处理以及数据分析的工具,譬如对中英文来说,都需要基本的分词处理,进一步,可能还需要词性标注,句法分析,关键词提取,文本分类,情感分析等等,在这些方面,特别是面向英文领域,有很多优秀的 Python 工具包。本节结合本书的内容安排,整合了常用的文本数据分析工具、库等,方便读者后续的学习和应用。

1.3.1 Jupyter Notebook

Jupyter Notebook(原 IPython Notebook),是一个开源的、交互式的科学计算 Web 应用,它支持实时的代码执行,支持文本内容嵌入,包括数据公式、数据可视化图表、视频等,通常被用于数据清洗和转换、数值拟合、统计建模、机器学习等,是数据科学相关研发人员的得力工具。简单来讲,Jupyter Notebook 可以执行并保存代码的执行结果,下一次打开时无需重新运行即可查看,是一种可以实现可读性分析的灵活工具。 Jupyter Notebook 具有以下几个优势:(1)支持 40 多种程序语言,包括数据科学分析中常用的 Python、R、Julia 和 Scala;(2)可以通过邮件、Dropbox、GitHub 以及 nbviewer(Jupyter Notebook 查看器,用于渲染 .ipynb 文件,并支持 HTML 和 PDF 输出)共享 Notebook 文件;(3)交互式窗口,代码输出结果可以是图片、视频、LaTeX、JavaScript 等,有助于数据的实时处理及可视化展示。(4)支持多种类似 Apache Spark 的大数据处理工具以及相关库,如 pandas、scikit-learn、ggplot2 等。 想更加深入的了解 Jupyter Notebook ,可以到 1.5.3 提供的网址阅读相关文档,具体的安装、使用说明见第二章 2.2、2.3 节。

1.3.2 Python 文本处理工具

1.3.2.1 jieba

jieba ,中文表述为“结巴”,是用 Python 编写的最好用的中文分词组件之一,具备中文分词、关键词提取、词性标注等功能,代码清晰,扩展性、兼容性较好。总体上有以下几种特点:(1)支持繁体中文分词。(2)可以添加自定义词典。(3)支持三种分词模式,分别为:精确模式、全模式、搜索引擎模式,不同的分词模式有不同的优势和适用场景,其中,精确模式可以将句子精确地切分开,适用于对分析精度要求较高的文本数据分析;全模式把句子中所有的可以成词的词语都扫描出来,优势是分词速度快,但是不能解决歧义。搜索引擎模式是在精确模式的基础上,对长词再次切分,适合用于搜索引擎分词。

1.3.2.2 NLTK

NLTK 是利用 Python 程序处理文本数据的免费开源工具,提供了 50 多个如 WordNet 的语料和词典资源接口以及一系列的文本处理库,支持分词、标记、语法分析、语义推理、分文本类等文本数据分析需求,适合语言学家、工程师、学生等各种有分析需求的群体,支持 Windows, Mac OS X 和 Linux 系统。想更加深入的了解 NLTK , 1.5.4 提供了官方文档的网址,并为刚刚接触 NLTK 或者需要详细了解 NLTK 的读者推荐了两本书籍。

1.3.2.3 CoreNLP

CoreNLP 是斯坦福大学自然语言处理小组研发的一整套开源自然语言处理工具,有以下几个主要特点:(1)是自然语言处理的集成工具,对于自然语言处理的标识解析、句子切分、词性标注、词元分析等各个方面的应用都有具体的实现;(2)分析快速、稳健;(3)提供当下多种流行通用的开发语言接口,覆盖面较广;(4)可以很方便的选择需要使用或不使用的语言分析工具模块,有较强的灵活性和可扩展性;(5)支持多国语言的分析,各项功能及支持的语言见下表: @todo 表格 http://stanfordnlp.github.io/CoreNLP/#about

1.3.2.4 Pattern

Pattern 是由比利时安特卫普大学 CLiPS 实验研发的一套 基于 Python 的 web 数据挖掘工具,包括数据抓取模块(Google、Twitter、维基百科的 API,以及网络爬虫和 HTML 分析器)、自然语言处理模块(分词、词性标注、句子切分、语法检查、拼写纠错、情感分析、句法分析等)、机器学习模块( 向量空间模型、聚类、SVM )以及可视化模块等。

1.3.2.5 langid.py

langid.py 是一个独立的语言识别工具,支持 97 种语言的快速检测,并且可以作为网络服务。

1.3.2.6 TextBlob

TextBlob 是基于上面提到的两个 Python 工具包 NLKT 和 Pattern 封装的文本处理工具包,同时提供了很多文本处理功能的接口,包括词性标注、名词短语提取、情感分析、文本分类、拼写检查等,还包括翻译和语言检测功能。

1.3.2.7 SnowNLP

SnowNLP 是受到了 TextBlob 的启发而写的处理中文文本的 Python 库,可以方便的处理中文文本内容,和TextBlob不同的是,SnowNLP 没有用 NLTK,所有的算法都是自行实现的,并且自带了一些训练好的词典。

1.3.2.8 PyNLPl

PyNLPl 是 “Python Natural Language Processing Library” 的缩写,是一个用于自然语言处理的 Python 库,可以用于处理常规的自然语言处理任务,如特征提取、建立语意模型,此外,还提供文件格式解析器,其最大的特点是提供了处理 FoLiA XML 的丰富库。

1.3.3 Python 科学计算工具库

1.3.3.1 Matplotlib

Matplotlib 是一个科学计算领域广泛使用的基于 Python 的二维绘图库,风格跟 Matlab 相似。它包含了大量的工具,使用这些工具可以创建各种图形,包括简单的散点图、直方图、频谱图等常用统计图像,还提供了丰富的附加工具,如可以绘制地图的 basemap 和 cartopy ,绘制 3D 图的 mplot3d ,以及更加高级的绘图接口,如 seaborn、holoviews、ggplot 等。此外,在图像美化方面,Matplotlib 可以自定义线条的颜色和样式,支持在一张绘图纸上绘制多张小图,也可以在一张图上绘制多条线进行对比分析。输出的图像具有可复制、质量高(达到了科技论文中的印刷质量)、格式多样等特点。 @todo 示例图片 1.3.3.1-1、1.3.3.1-2、1.3.3.1-3 可以访问 http://matplotlib.org/gallery.html# 浏览更加全面的图库内容,1.5.6 也为读者提供了 Matplotlib 的深度阅读材料,感兴趣的读者可以自行选择阅读。

1.3.3.2 Numpy

NumPy 是 Numerical Python 的简称,是基于 Python 的高性能计算和数据分析第三方库,提供了快速高效的多维数组对象 ndarray,其操作也是围绕 ndarray 进行。NumPy 针对数组运算提供大量的数学函数库,包含线性代数、傅里叶变换和随机数生成函数,严格的数据处理能力使得其为很多大型金融公司以及核心的科学计算组织使用。想更多的了解 Numpy 支持的数据结构及相关操作,请读者登录 1.5.7 提供的网址阅读快速入门教程。

1.3.3.3 SciPy

SciPy 是基于 Python 的开源数学算法和科学计算工具包的集合,通过提供高水平的数据处理和可视化功能能增强了 Python 的交互性,使 Python 成为像 MATLAB 一样的数据处理环境。具体包含最优化、线性代数、积分、内插法、快速傅里叶变换、信号和图像处理等模块。 SciPy 构建于 Numpy 之上,Numpy 为其提供了方便快捷的 N 维数组相关操作,Numpy 和 Scipy 适用于多种系统,开源、免费,且安装简单,实际应用中常常将二者相结合,Python 大多数机器学习库都依赖于这两个工具库。

1.3.4.4 Pandas

Python 一直以来都是数据预处理和加工的首选工具,但是缺乏数据分析和建模的功能,Pandas 的出现弥补了这一不足,使得可以利用 Python 完成一系列的数据处理、分析流程,而无需借助像 R 这样的分析语言,促使 Python 被更加广泛的用于学术研究和商业分析等领域,如金融、统计、广告、网站分析等。 Pandas 的名称源于“panel data”,是基于 NumPy 和 Matplotlib 开发的数据处理和数据分析库,特别的是,Pandas 提供了可用于处理时间序列的高级数据结构和相关工具,使得在 Python 中处理数据非常快速和简单,具体支持分析的数据类型有:(1)包含多列的表格式数据,如 SQL 表和 Excel 表格;(2)有序或无序的时间序列(等间隔或不等间隔);(3)任意的矩阵数据;(4)其他形式的统计数据集。 Pandas 显著功能特点总结如下:(1)支持一系列的数组数据结构,其中两个重要的数据结构是: Series 和 DataFrame,DataFrame 和 R 语言里的 data.frame 很像;(2)通过标签操作实现大型数据集的切分、多方式索引及子集构造;(3)支持数据集的聚合和灵活转换;(4)利用时间处理函数,可以生成自定义间隔的序列、进行移动窗口(滑窗)统计分析和时间滞后处理等;(5)利用输入和输出工具可以实现不同存储格式的外部数据的读取及分析结果的展示和保存;(6)提供智能的数据分组和缺失值处理方式。 想深入学习 Pandas 支持的数据结构及其数据处理、分析功能可以阅读 1.5.8 给出的文档。

1.3.4 Python 机器学习、数据挖掘工具库

1.3.4.1 scikit-learn

scikit-learn 是基于 NumPy、SciPy 和 Matplotlib 构建的开源 Python 机器学习库,名称 "SciKit" 源于 SciPy Toolkit。scikit-learn 为用户提供各种机器学习算法接口,可以让用户简单、高效地进行数据挖掘和数据分析,基本功能主要被分为六个部分:分类、回归、聚类、降维、模型选择、数据预处理,每一部分都涵盖不同的算法说明、方法调用说明及应用案例。scikit-learn 有非常完善的官方说明文档,包括机器学习理论的介绍、scikit-learn 使用指南、其他相关资源等等,有需求的读者可以前往学习。

1.3.4.2 Gensim

Gensim 的雏形是几个用于提取跟目标文章相近文章的 Python 脚本,gensim 即 “generate similar” 的缩写,到目前为止,Gensim 已经发展成一个免费的 Python 自然语言主题模型库,旨在将文本中涵盖的语意统计量化、分析纯文本文件的语义结构、检索语意相近的文件,具体功能可以概括为:构建主题模型、文件检索、相似度查询。Gensim 具有以下特点:(1)跨平台:Gensim 基于 Python,所以同样支持 Windows、Mac、Linux/Unix系统以及其他支持 Python 和 Numpy 的系统;(2)稳健:长期以来,Gensim 已经被各类使用者应用于多种系统,稳健性得到了较好的验证;(4)开源;(5)高效:通过使用最优的核心算法以及分布式计算提高计算速度;(6)支持相似性查询:顺应主题模型发展趋势,Gensim 提供语意相似性检索工具。(7)包含多种时下流行算法,如潜在语义分析(Latent Semantic Analysis (LSA/LSI/SVD))、狄利克雷分布(Latent Dirichlet Allocation (LDA))、随机映射(Random Projections (RP))、分层狄利克雷过程 (Hierarchical Dirichlet Process (HDP))、word2vec 深度学习等。想系统学习 Gensim 提供的算法及使用方法可以直接访问官方主页 https://radimrehurek.com/gensim/

1.3.4.3 PyBrain

PyBrain 是 “Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network Library” 的简写,是一个模块化的开源 Python 机器学习库,旨在提供灵活的、易用的、高效机器学习算法以及预先定义的环境来进行算法对比。相较于其他机器学习库,PyBrain 更加适合于初学者,但是也能支持高水平的研究需求。读者可以访问官方网站 http://pybrain.org/ 做进一步了解,也可以找到官方提供的使用文档。

1.3.5 词典资源

1.3.5.1 WordNet

WordNet 是由普林斯顿大学认知科学实验室开发的一个大型英语词汇数据库,其中名词、动词、形容词以及副词各自都按照词义进行分组,形成一个同义词语意网络,每一个具有相同意义的词组成的同义词集合(synset)都代表一个基本的语义概念,WordNet 为其提供了简短、概要的定义,并且这些集合之间也根据各种关系相连接,WordNet 记录了不同同义词集合之间的语义关系。由于它包含了语义信息,所以有别于通常意义上的字典,可以说 WordNet 是一部语义词典。

许多国家在筹划和建立与英文 WorNet 兼容的本国语言 WordNet 系统,如欧洲基于 WordNet 的 EuroWordNet,韩国的 KoreanWordNet 等。

关于 WordNet 的详细介绍,可以阅读 1.5.9 给出的书籍或者登陆官方网站学习。

1.3.5.2 HowNet

HowNet 是中国以 WordNet 为框架的概念词典,中文名称为知网,是一个以汉语和英语的词语所代表的概念为描述对象,是把概念与概念之间的关系以及概念的属性与属性之间的关系形成一个网状的知识系统,而不是一部语义词典。

1.3.5.3 中文概念辞书

中文概念辞书( Chinese Concept Dictionary , CCD)是北京大学计算语言学研究所构建的 WordNet 框架下的现代汉英双语概念词典,同时提供汉英双语概念的语义知识表达。CCD 从关系语义学的观点出发, 用同义词集合(SynSet)来描述概念,用概念间的关系来描述语义, 方便语义关系的表示和检索, 有利于简单地实现语义距离的计算, 可以直接应用于机器翻译、自动文摘、文本分类、概念检索和信息提取等方面的语义理解。

1.3.5.4 Mindnet

Mindnet 是微软研究院自然语言处理小组研发的大规模语义关系知识库。具体结构和构建方式可以阅读 1.5.17 提供的文章。

1.3.5.5 CSC

CSC 是一个规模较大的中文语意语库,该词库目前收录了 14 万以上的书面形式的词条,包括单词、固定词组、成语、少量在中文文章中较常见的英文缩写等等,每个词条通过关系比较密切的相关词与其它词条相连结,整个词库呈现为比较复杂的网络结构,并带有多种检索手段和显示方式。它可用于搜索引擎、全文检索等检索工具中, 帮助用户选择关键词、帮助系统提供相关搜索词或进行其它智能处理, 例如语义搜索、精准匹配等。也可用于字处理、写作助理等办公软件中, 丰富的相关词能为写作中的词语优化提供较有力的支持。还可作为自然语言处理的资源或汉语教学的辅助工具。该词库已在有些企业和科研机构中得到应用。

1.3.5.6 中文词汇网络

中文词汇网络(Chinese WordNet,简称 CWN)是台湾中央研究院中文词网小组(Chinese WordNet Group)结合分析详尽的中文词汇词义数据与网络科技技术开发的中文词汇网络。

1.3.5.7 自然语言处理词典(The Natural Language Processing Dictionary)

自然语言处理词典是澳大利亚新南威尔士大学的教授 Bill Wilson 为所开设的“人工智能”课程编制的,除此之外还编制了 Prolog 词典(The Prolog Dictionary) 、人工智能词典(The Artificial Intelligence Dictionary) 和机器学习词典(The Machine Learning Dictionary),词典 URL 请见 1.5.18。

1.3.5.8 其他词典资源

除上述词典外,还有很多其他相关资源,如:中文同义词词林扩展版、基于框架语意学以语料库为基础建立的英语词汇资源库 FrameNet、VerbNet、CYC、英国剑桥综合语言知识库 ILD、日本电子词典研究院开发的日文处理方面的主要语意词典 EDR 等,感兴趣的读者可以进一步学习。

1.3.6 在线自然语言处理 API

1.3.6.1 哈工大语言云( http://www.ltp-cloud.com/

哈工大语言云是基于云计算技术的中文自然语言处理服务平台,以哈工大社会计算与信息检索研究中心研发的 “语言技术平台(LTP)” 为基础,为用户提供高效精准的中文自然语言处理云服务,包括中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注等,用户只需要根据 API 参数构造 HTTP 请求即可在线获得分析结果。

1.3.6.2 腾讯文智( http://nlp.qq.com/

腾讯文智是基于并行计算系统和分布式爬虫构建的中文语义开放平台,结合独特的语义分析技术, 一站式满足用户自然语言处理、转码、抽取、全网数据抓取等中文语义分析需求,用户能够基于平台对外提供的 API 实现搜索、推荐、舆情、挖掘等语义分析应用,也能够定制产品特色的语义分析解决方案。

1.3.6.3 linguaKit( https://linguakit.com/es/

linguaKit 是由西班牙自然语言研究团队 Cilenis 研发的一套自然语言与文本分析工具包,主要功能包括单词形式转换、文本情感分析以及文本关键字抽取,其基本功能主要面向西班牙文和葡萄牙文,其中情感分析以及关键字抽取部分模块也支持英文,除此之外,该工具包也同时包含了词频统计、绘制词云图等辅助功能。

1.3.6.4 NLPIR 大数据搜索与挖掘共享平台( http://ictclas.nlpir.org/nlpir/

NLPIR 是由北京理工大学海量语言信息处理与云计算工程研究中心大数据搜索与挖掘实验室( Big Data Search and Mining Lab.BDSM@BIT)开发的大数据搜索与挖掘共享平台,NLPIR 能够多角度满足应用者对大数据文本的处理需求,包括大数据完整的技术链条:网络抓取、正文提取、中英文分词、词性标注、实体抽取、词频统计、关键词提取、语义信息抽取、文本分类、情感分析、语义深度扩展、繁简编码转换、自动注音、文本聚类等。

1.3.6.5 玻森中文语义开放平台( http://bosonnlp.com/

玻森中文语义开放平台提供中文自然语言分析云服务,专注中文语义分析,提供多个语义分析 API 满足情感分析、实体、分类、聚类等分析需求,并可定制数据分析模型和解决方案。

results matching ""

    No results matching ""