自动分类程序把一个未见过的文档分成已知类别中的一个或多个。分成一个类别叫做单类分类,分成多个类别叫做多类分类。一个典型的自动分类程序框架如下:
常见的分类方法有支持向量机(SVM),K个最近的邻居(KNN)和贝叶斯(bayers)等。这里用SVM方法实现文本分类。
Classifier4J 项目的文本分类:
//定义存储向量的变量
TermVectorStorage storage = new HashMapTermVectorStorage();
//新建一个向量分类器
VectorClassifier vc = new VectorClassifier(storage);
try {
//定义一个叫做”test”的类别
String category = "test";
//训练一个句子属于”test”类别
vc.teachMatch(category, sentence1);
//距离是cos夹角 相似度在[0,1]之间 0.852 代表比较相似 "hello blah"
//属于这个类
assertEquals(0.852d, vc.classify(category, "hello blah"), 0.001);
//距离是cos夹角 相似度在[0,1]之间 0.301 代表不太相似 "sentence" 不//属于这个类
assertEquals(0.301d, vc.classify(category, "sentence"), 0.001);
//0 代表不相似 "bye" 不属于这个类
assertEquals(0.0d, vc.classify(category, "bye"), 0.001);
//0 代表不相似 "bye" 不属于 "does not exist" 这个类
assertEquals(0.0d, vc.classify("does not exist", "bye"), 0.001);
} catch (ClassifierException e) {
e.printStackTrace();
fail(e.getLocalizedMessage());
}