文本数据预处理,包括文档切分、文本分词、去停用词(包括标点、数字、单字和其它一些无意义的词)、文本特征提取、词频统计、文本向量化等操作。
1.文档切分
文档切分这个操作是可选的,取决于你获取到的文档集合的形式。如果你得到的文档集合本身就是一篇一篇文章分开的,那么这一步就可以省略了。反之,如果文档集合是一个单一的文件,所有的文章都存储在这个文件中,那么你就要将其中的文章提取出来单独存放在一个文件中,从而便于以后的操作。
一般来说,单一文件的文档集合中文章与文章之间都会使用一些标记来区分,比如用空行、特定符号等等。我做的课程作业中有一个人民日报语料库,语料库中文章与文章之间就是用空行来分隔的。
2.文本分词
文本分词是预处理过程中必不可少的一个操作,因为后续的分类操作需要使用文本中的单词来表征文本。目前文本分词已经有很多比较成熟的算法和工具,在网上搜索一下就会发现很多。
文本分词包括两个主要步骤,第一个是词典的构造,第二个是分词算法的操作。
词典的构造目前比较流行的有字典树即标准trie树,字典树的构造有很多方法,本人博客中也有一篇用java实现字典树的博文,但是空间利用率和效率可能不是很高。目前比较不错(节约空间和效率)的构造方法有双数组trie树等。
分词算法有简单的有复杂的,常见的主要有正向最大匹配、反向最大匹配、双向最大匹配、语言模型方法、最短路径算法等等,这些算法在网上都可以找到详细的资料。
3.去停用词
去停用词也是预处理过程中不可缺少的一部分,因为并不是文本中每一个单词或字符都能够表征这个文本,比如说“这个”、“的”、“一二三四”、“我 你 他”、“0 1 2 ……9”等等,那么这些词就应当从文本中清除掉。可