16.1.3 案例一数据预处理
数据集经过简单的处理后,并未达到进行数据分析的要求,所以要对其进行进一步处理,以获取符合标准的文本格式。
和数值型数据相同,文本型数据也需要去除重复值、异常值以及无用字段。由前面叙述可知,数据集经过了去重处理,所以此环节不需要去重。文本型数据的去重和数值型数据不太相同,文本型数据去重需要根据数据的唯一标识进行处理,如文本的标题、文章编号等。
在数据集中,每条数据都有一些在数据分析中无用的文本。例如,每条数据的标题会包含诸如“from:”或“in_reply_to”之类的重复性消息字段;还有些自动电子邮件签名会包含诸如“-…”之类具有重复特征的数据格式。
数据集的预处理可以通过使用dplyr包中的cumsum()函数和stringr包中的str_detect()函数组合完成,当然也可以使用正则表达式进行数据预处理。下面分别对两种方式进行展示。
使用cumsum()函数和str_detect()函数处理标题和电子邮件:
使用正则表达式处理数据集的来源信息:
unnest_tokens()可将数据集拆分为token,也称分词。token可以理解为最小的语义单元,在英文文本中,最小的token就是单词,在中文文本中则更加复杂。在文本分析中,首先要将文本分割为token,然后使用算法将其量化为词向量后才能被计算机理解。因此,分词是文本分析中必须进行的一步,也是文本分析和数值型数据分析的差别所在。同时,预处理环节中还要删除停用词。停用词是指文本中不具有实际意义的词,如“a”“in”“on”等介词,这些词在语言中可以使句子更加通顺,但是在文本分析中会影响文本分析的结果。
分词以及删除停用词的代码如下:
不同的文本数据集会有不同的步骤,在实际分析中需要不断探索,但是stringr包和tidyr包可以满足文本数据处理的大部分需求。