Q:什么是文本分类?

A:首先要说明的是文本分类其实是一件挺不靠谱的事情。几年前环境问题还没这么热的时候,各大门户网站的压根没这个目录,那时候最多只能在科技版块中找到有关“臭氧层空洞”的文章。直到哥本哈根大会召开,电影《2012》热映,大家突然意识到这其实还是一件很重要的事情,于是《南方周末》到现在每期都有一整版转讲绿色和环保。如何从数据中挖掘出新的类别是聚类干的事情,文本分类做的是选择题,即一篇文章(文中提到的文本、文档、文章是同一个意)到手,判断它属于 ABCD 哪一类,不带自己添一个选项再勾上的。

但有时可以多选,比如我们在豆瓣上可以给一部电影添加好几个“标签”(可以看成给电影进行分类),一部电影科幻片,可以带点悬疑,喜剧更是很多电影所共有的元素,不存在明确的界线。同样的道理,一篇文本也可以有好几个主题,属于不同的分类,但是这篇文章中提到的文本分类都是单选题,即一篇文章最终只有一个去向。

文本分类不仅仅可以对一篇文章的题材进行分门别类,还可以用来判断文档的情感倾向,其中一种应用就是把用户评论分成“好评”和“差评”两种。尽管选择题变成了是非题,但是文本分类变得更难了。大概一个月前,韩寒在博客上一字不删地转载了《求实》杂志赵强的一篇文章,结果被和谐。同样的内容,换个作者,表达的含义可以是截然相反的。

Q:什么是基于统计学的文本分类?

A:本文提到的文本分类系统都是基于统计学的方法的,另外一种是基于语义的方法。这两者的纷争由来已久,其本质是哲学层面上理性主义者与经验主义者之间的分歧。理性主义者坚持“任何理性的认识,都必须首先在人的认识中找到一个支点,才能保证由此推出的知识也是可靠的”(笛卡尔),而在自然语言处理领域,理性主义的代表人物就是语言学家乔姆斯基(Noam Chomsky),他主张自然语言都能被形式化的观点,而对统计学的方法嗤之以鼻(后期这种态度有所转变),他表示“句子的概率”是完全没有意义的。而经验主义却认为人的理性应该建立在对现有事物的观察上,在这种体系下衍生出这样一种思潮:既然人类都可以从无到有地根据经验去掌握自然世界的规律,那么计算机为什么不可以呢?反映在文本分类中就是对文本的词频等信息进行观察,所以统计学的方法也被称为机器学习。近年来,经验主义在NLP领域占据了上风,IBM的贾里尼克(Fred Jelinek)甚至傲慢地表示:“每当我解雇一个语言学家,语音识别系统的性能就会改善一些。”

Q:文本分类前要做哪些准备?

A:第一件事情是找一个语料库,google 一下“文本分类 语料库”,一般做实验的话用搜狗实验室的那个“精简版”就足够了。

其次需要一张停用词表,所谓的停用词就是把一些对分类没有任何帮助的词,比如汉语中的“的”和英语中的 the。

除此以外还需要一个分词模块,可以是词典分词,也可以用n元组(n-gram)。如果用 n-gram 的方法,n应取 1 和 2,因为汉语中的常用词大多是一字词和二字词(根据现代汉语频率词表的统计,在最常用的 9000 个词中,单字词占 26.7%,二字词占 69.8%,三字词占 2.7%),但是 2-gram 多了会带来特征向量过于稀松的问题,因此要过滤掉那些低频的二字词。词典分词也是如此,一本三十万词的词典中有许许多多的生僻词,在进入特征选取之前我们就可以把它们删去,因为特征选取的算法无论是卡方检验还是信息增益,代价都不会小。2-gram 最大的好处在于它能发现“搜狐”、“给力”这些在一般词典中找不到的词,因此 n-gram 本身就是一种基于统计学的方法,与汉语的语法结构无关,而 n = 1, 2, 3 只是对汉语进行 n-gram 统计以后的结果,换句话说如果对火星文进行统计,说不定 n 就等于 6 了。

分词模块应该支持英文单词的识别,尤其当你的语料库中有 IT 这个分类的时候,要知道搞IT的人都喜欢把专用名词(尤其是英文)挂在嘴边,以增加别人听懂的难度。这些英文单词是后期分类时的重要依据,必须保留下来。很多高级语言都支持正则表达式的功能,所以实现起来也不困难。

Q:文本分类的主要流程是什么?

A:process

Q:怎样用计算机的语言表示文本?

A:文本对于我们人类来说是有意义的(文学对整个人类来讲都有着深远影响),但是计算机却不是人,如果我们把这些文本以字符流的形式扔给“毫无文学修养可言”的计算机,计算机根本无从下手。就像下面这个来自电影《黑客帝国》中的美女,它对计算机来说不过是一串 01 序列。

beauty

但我们可以把几个比较明显特征抽象出来,进行量化,比如她的三围,那样我们就可以用一个三维(三围)向量表示这个美女,这种思想在世界小姐的评选的中得到了广泛应用。但是如果要用来区分世界上所有的女性,光一个三围还远远不够,还需要更多的特征。

三围之所以能够用来作为评选世界小姐的重要指标,自然有他的道理(谁说不是呢?),首先第一点,三围每个人都有,这样才有了可比性,第二,每个人的三围都不尽相同,所以可以比出分别。文本也是如此,写文章的时候可以用任何字(前提是你会用),但是写出来的文章又不可能都用一样的字,因此可以拿来互相比较。

我们可以用词频 TF(term Frequency)来刻画一篇文档的特征向量,即用一个关键词在这篇文档中出现的次数除以文章的总词数。这样一来一篇讲美食的文章就可以和一篇讲“七不规范”的文章区分开了,前者在“香菜”这个维度上有很长的投影,后者则在“不”字这一维上有很大建树,如果空间就两维的话,那么这两个向量正交。为了避免一些常用字(比如“的”)对向量的区分能力产生影响,还需要用反比文档频数 IDF(inverse document frequency)对 TF 进行修正。TF 乘以 IDF 就是著名的 TFIDF。

Q:怎么计算两篇文档的相似度?

A:文本一旦表示成为向量空间模型(VSM)的形式,考察两篇文章的相似程度就变得十分容易了,即两向量的夹角大小。 cosθ 越大,θ(向量夹角)就越小,两篇文本的相似度也就越高。

sim

Q:为什么要做特征选取?

A:高维的特征向量不但计算复杂还会导致过拟合(分类器太精确以至于不能正确分类)的问题。特征抽取可以把向量的维数降到最低,只选出那些最具代表性的向量,因此这一步又被称作“降维”。

Q:如何做特征选取?

A:特征选取的方法有很多,比如Χ2统计量、信息增益法(IG)、互信息法。

Q:特征选择和特征权重有什么分别?

A:特征向量的选择与特征权重的计算在文本分类中是两个完全不同的概念。TF-IDF 的 IDF 仅仅对那些不太具有代表性的关键词的权重进行了一些修正,X2 统计量也好,信息增益法也罢,它们的目标是把原本上万维的词典进行简化,所以特征选择时要抛弃那些代表性比较差的特征。但是有些人会混淆这两者的区别,然后用 TF-IDF 去做特征选择,结果可能还是可以分类(也有用 DF 来做特征选择的,但缺少理论证明),因为特征选择只是简化字典的过程,大不了你把字典一劈二,也是简化,只不过我那本经过 X2 统计量或者IG合理筛选的“简明版”字典更好罢了。

Q:计算机依据什么样的原则做出选择?

A:计算机做出选择的原则其实就是分类器。文本分类的分类器有很多,比较常见的是K近邻、平凡贝叶斯、Rocchio 和 SVM 分类器。

Q:如何评价一个分类器的好坏?

A:主要有两个指标,准确率(precision)和召回率(recall)。 召回率说的是从实际角度出发,真正属于该分类的文档,有多少做出了正确的分类。 准确率则是指从结果角度出发,分到某个分类中的文档中,真正属于该分类的文档占了多少。