从文本分类系统的处理流程来看,无论待分类的文本是中文还是英文,在训练阶段之前都要经过一个预处理的步骤,去除无用的信息,减少后续步骤的复杂度和计算负担。

对中文文本来说,首先要经历一个分词的过程,就是把连续的文字流切分成一个一个单独的词汇(因为词汇将作为训练阶段“特征”的最基本单位),例如原文是“中华人民共和国今天成立了”的文本就要被切分成“中华/人民/共和国/今天/成立/了”这样的形式。而对英文来说,没有这个步骤(更严格的说,并不是没有这个步骤,而是英文只需要通过空格和标点便很容易将一个一个独立的词从原文中区分出来)。中文分词的效果对文本分类系统的表现影响很大,因为在后面的流程中,全都使用预处理之后的文本信息,不再参考原始文本,因此分词的效果不好,等同于引入了错误的训练数据。分词本身也是一个值得大书特书的问题,目前比较常用的方法有词典法,隐马尔科夫模型和新兴的CRF方法。

预处理中在分词之后的“去停止词”一步对两者来说是相同的,都是要把语言中一些表意能力很差的辅助性文字从原始文本中去除,对中文文本来说,类似“我们”,“在”,“了”,“的”这样的词汇都会被去除,英文中的“ an”,“in”,“the”等也一样。这一步骤会参照一个被称为“停止词表”的数据(里面记录了应该被去除的词,有可能是以文件形式存储在硬盘上,也有可能是以数据结构形式放在内存中)来进行。

对中文文本来说,到此就已初审合格,可以参加训练了(笑)。而英文文本还有进一步简化和压缩的空间。我们都知道,英文中同一个词有所谓词形的变化(相对的,词义本身却并没有变),例如名词有单复数的变化,动词有时态的变化,形容词有比较级的变化等等,还包括这些变化形式的某种组合。而正因为词义本身没有变化,仅仅词形不同的词就不应该作为独立的词来存储和和参与分类计算。去除这些词形不同,但词义相同的词,仅保留一个副本的步骤就称为“词根还原”,例如在一篇英文文档中,经过词根还原后,“computer”,“compute”,“computing”,“computational”这些词全都被处理成“compute”(大小写转换也在这一步完成,当然,还要记下这些词的数目作为compute的词频信息)。

经过预处理步骤之后,原始文档转换成了非常节省资源,也便于计算的形式,后面的训练阶段大同小异(仅仅抽取出的特征不同而已,毕竟,一个是中文词汇的集合,一个是英文词汇的集合嘛)。

下一章节侃侃分类问题本身的分类。