文本预处理是要文本处理成计算机能识别的格式,是文本分类、文本可视化、文本分析等研究的重要步骤。具体流程包括文本分词、去除停用词、词干抽取(词形还原)、文本向量表征、特征选择等步骤,以消除脏数据对挖掘分析结果的影响。
本文仅针对英文文本,中文文本暂时还没有研究过。介绍的全部都是基于Python2.7,利用NLTK库进行文本分类的过程。
文本分词
文本分词即将文本拆解成词语单元,英文文本以英文单词空格连接成句,分词过程较为简单。以下介绍几种方法。
正则表达式分词
以空格进行分词
>>> import re
>>> text = 'I was just a kid, and loved it very much! What a fantastic song!'
>>> print re.split(r' ',text)
['I', 'was', 'just', 'a', 'kid,', 'and', 'loved', 'it', 'very', 'much!', 'What', 'a', 'fantastic', 'song!']
re匹配符号进行分词
>>> print re.split(r'\W+', text)
['I', 'was', 'just', 'a', 'kid', 'and', 'loved', 'it', 'very', 'much', 'What', 'a', 'fantastic', 'song', '']
>>> print re.findall(r'\w+|\S\w*', text)
['I', 'was', 'just', 'a', 'kid', ',', 'and', 'loved', 'it', 'very', 'much', '!', 'What', 'a', 'fantastic', 'song', '!']
>>> print re.findall(r"\w+(?:[-']\w+)*|'|[-.(]+|\S\w*", text)
['I', 'was', 'just', 'a', 'kid', ',', 'and', 'loved', 'it', 'very', 'much', '!', 'What', 'a', 'fantastic', 'song', '!']
NLTK正则表达式分词器
>>> import re