记录最近学习的一本书《文本数据挖掘——基于R语言(黄天元版)》
几年前,被朋友带着开始深入接触R语言,从初始的照葫芦画瓢,到现在自己也可以学会使用各种不熟悉的数据包、自己撰写R程序。不能说已经成为技术上的“老手”,至少也是时间上的“老手”了。随着对R学习的深入,越发感受到R的强大,但时至今日,有两个大的方向,我仍然习惯用excel去解决,其根源在于对R相关体系认知上的不足。其一,是图形绘制;其二,就是文本处理。而偶然之间购买的这本薄薄的书籍《文本数据挖掘》,让我对R处理文本数据有了更加系统化的认知和了解、同时也加强了“文本数据应该如何去使用”的认知。
全书分别介绍了文本数据挖掘是什么、R语言的基础知识、字符串的基本处理、R中的正则表达式、各种文本数据的读入和导出、文本数据的预处理、文本特征的提取、基于机器学习方法的文本分类、文本情感分析、文本可视化等几大模块。在本书学习之前,我对文本数据的处理最常涉及的部分只有“字符串的处理”;甚至在数据导入导出中多采用最基础的csv格式,而非text、xlsx、doc、pdf这些很少涉及、亦或者很容易读入出错的格式;之前自学的dplyr包用于各类合并处理、tidyr和reshape2包用于长宽数据的变换。还记得之前为了能顺利读入xlsx格式,被rJava折磨的场景,在很长一段时间内,都没能顺利的处理掉这个问题。而很多以前遇到的问题,在学完这本书之后都迎刃而解了[φ(゜▽゜*)♪]。
本书中主要介绍了几个数据包,在前几章中基本可以做到一类问题一包解决,当然到后面文本数据分析上,涉及到的数据包可能略多一些。学会了tidyfst包,表格操作和字符串处理的问题基本都可以解决;学会了readtext包,基本上各类数据的读取问题也都可以解决,尤其是文本数据。从文本特征提取一节开始,学习进入了有些痛苦的阶段,各类数据包不熟悉不是重要问题,核心在于对各种文本信息提取、分析的各种概念都需要重新去理解。当然,文本数据处理的逻辑是清晰的,提取特征、清洗数据格式、词频统计、词语向量化、解决分类问题,但各种细节的问题、每个处理的具体思路,要理解并记忆(有印象)还是比较痛苦的。
本书中文本信息分析的源头主要是tibble格式的文件,以前从未接触过,不过幸运的是,所有的数据框都可以轻松地采用as_tibble进行转换。而灾难性的理解障碍之一,来自于DTM格式、TCM格式、Environment类别、corpus类(语料库类型、quanteda包)、sento_corpus类等这些听所未听、闻所未闻,又不能像数据框或value一样直接查看的数据格式。这些繁多数据格式的存在除了在书中有所体现,在help中也是第一次看到。这些不熟悉的格式带来的最直接的问题,就是在没有书中指引的情况下,可能完全不知道如何去应用它们(当然本书作者已经将最常用、最关心的结果引用方法写了出来)。
此外,由于绝大多数的切分方法、文本数据分析都只能处理英语体系下的文本,而中文的文本处理感觉上更依赖于自定义的各类语料库或词汇库。当然,好像有大佬专门研究了基于中文的文本数据挖掘方法,这些还有待后续需要时再深入学习了。
一个惊喜的收获是学会了使用magrittr包中管道函数"%>%"(其实dplyr包中也有这个函数),并且已经可以用得很得心应手啦。这个函数可以把左侧数据的结果直接赋给右侧函数,而不需要无限嵌套,从程序的结构上看真的是非常清晰、整洁,也减少了很多临时变量的数据储存,提高了运算的速度。记得以前有一次在excel中写一个if函数,由于数据逻辑实在是太多层,生生写到了40多层嵌套。然后悲剧就发生了,将好不容易写完的函数放到单元格中,发现所有涉及引用的数据都没有颜色(函数未成功识别),经过了好一番百度,才知道嵌套层数也是有限制的(最多32层)[/(ㄒoㄒ)/~~]。
当然啦,想要学好一门技术,"不用就废"是亘古不变的道理。虽然还不知道下次什么时候,会真正拿本书学到的知识去做项目,但不得不说,读到一本好书的愉悦是刹那永恒的。