如何实现一个基本的微信文章分类器

微信公众号发布的文章和一般门户网站的新闻文本类型有所不同,通常不能用现有的文本分类器直接对这些文章进行分类,不过文本分类的原理是相通的,本文以微信公众号文章为对象,介绍朴素贝叶斯分类器的实现过程。

文本分类的科学原理和数学证明在网上有很多,这里就不做赘述,本文尽量使用通熟易懂的表述方式,简明扼要地梳理一下文本分类器的各个知识点。

参考了一下Github,发现少有Java 8风格的实现,所以这里的实现尽量利用Java 8的特性,相比之前优势有很多,例如stream在统计聚合等运算上比较方便,代码不仅简洁,而且更加语义化,另外在多线程并行控制上也省去不少的工作。

本项目的地址:https://github.com/fullstacky…

一、文本分类器的概述

文本分类器可以看作是一个预测函数,在给定的文本时,在预定的类别集合中,判断该文本最可能属于哪个类。

这里需要注意两个问题:

  • 在文本中含有比较多的标点符号和停用词(的,是,了等),直接使用整段文本处理肯定会产生很多不必要的计算,而且计算量也非常大,因此需要把给定的文本有效地进行表示,