最近在利用SVM来进行文本分类,做的是二分类。业务场景是这样的,根据一段客服对话来判断对话的投诉倾向性,由于之前有小伙伴建议使用SVM来分类,(我接触数据挖掘时间不长,之前利用朴素贝叶斯做过分类问题)。小伙伴给我的理由是SVM永远比朴素贝叶斯好,原因是其可以调参数,,我后来觉得也未必是这样,先按照这个方法来吧,要不然也不会写这篇博客了。
首先下载libsvm工具包【1】
一、文本预处理工作
1.对文本做分词、过滤、词性过滤,关于词性过滤我们假设对分类效果起主要影响的都是一些有实际意义的词语,如名词、形容词、动词,这里过滤掉一些如数词、副词等,一个更简单的方法是去除停用词,本人为了减少对比的工作把两者方法都用了(偷懒哦)。由于楼主对Java比较熟,所以使用了ansj作为分词工具【2】,在分词的时候需要注意把用户自定义词提前加入分词词库中,这里我把客服对话中的高危词加到了词库中。
2.做特征选取,这里我们利用Chi-square test【3】来提取,关于Chi-square test为了偷懒我也不详细介绍了。