文本分类方法学习

让一个从没有接触过文本分类但是了解分类算法的人设计一个文本分类算法,他会怎么做?

最简单的想法是对一个类里面所有的文章都分词,求出所有词的出现频率,构成一个向量,对向量归一化。拿到一篇新文章,要对其分类,可以分词此文章,组成一向量,然后和各个训练集里面的各个向量相乘求内积,内积最大的类即为新文档所属的类。

这种算法有一个显而易见的问题,文档中大量出现的词实际上是一些如“的”“了”等词,这些词在每个类的特征向量中都占有比较大的权重,而这些权重对分类无益,改进的方法是过滤掉这些停用词。

再仔细想想,还有另外一些问题,由于训练样本的量会比较大,词汇数量比较多,这样就会导致每个类的特征向量很长,会造成计算量开销很大,并且特征向量里面的很多分量出现的次数很少,而另外一些分量虽然出现次数很多,但是在每个类里面出现都很多,前一种情况一旦归一化这些分量就很小很小,对分类的影响很小,可以去掉,后一种情况和“的”这样的词语一样,无助于分类,并且还会干扰。这些词语都应该过滤掉。

上面说这么多,其实就两个问题,一个词语的tf,一个是idf。tf体现了词语和一个类的关联度,idf体现了词语的对文档的区分能力。可以用tf*idf来作为特征向量权重。

特征向量体现了既这个词语与本文档的关联度,也体现了这个词语与其他文档的不关联度。文档区分度除了可以用idf表示外,还可以用熵。熵是一个词语分布的数值表示,越均匀,熵越大,分类能力越有限;越集中,分类能力越强。可以用熵来取代idf。

特征向量的选取还有什么方法,是不是一定要按照词频来选择?如果一个词能最好的区分各类文档,那就应该选这个词。可以一个一个特征选。假定没有任何特征,我们只能随机均匀分类,文档的熵最大。选一个特征词语,这个特征应该使这篇文档更倾向于划分到类A,使另一篇文档更倾向于划分到类B,不再是随机均匀分配了,熵降低了。降低的熵成为相对熵,选特征时,应该选相对熵最大的。这是一种贪婪算法,但或许效果会不错。

特征向量未必都要为正数,如果一个特征更倾向于本类,可以给他一个较大的正值,如果特征更倾向于它类,可以给一个较小的负值。这个算法本成为Rocchio算法。

加入我们事先知道类A的数量很大,当我们没有任何特征的时候,最稳妥的办法是把文档分到文档数目最多的类。要利用这些先验知识,可以考虑贝叶斯分类。

k近邻算法,选择特征向量和新文档特征向量最相近的为文档分类。要与每个文档比较,计算量很大。

决策树方法,按选择的特征一个个作比较,特征时有先后顺序的。

神经网络,可以实现非线性分类,采用两层bp算法,输出神经元个数为分类个数。

支持向量机,构造合适的核函数,再高维空间实现非线性分类。

多分类器,用不同算法训练几个分类器,最后的分类结果根据各个分类器投票。分类器训练过程中可采用增强学习,即对上一个分类器分错的加大权重。

如果标注样本比较少,可以用半监督学习。用标注数据训练一个分类器,此分类器对未标注文档分类,再用原始标注文档和新标注文档训练分类器,迭代前进,EM算法。

这些方法都没有考虑语义,运用好一些语义信息显然可以提高分类精度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值