分类实际上就是按照某种标准来给对象贴标签,然后再根据标签进行区分,基于概率统计的贝叶斯分类算法是最常见的分类算法,也是目前垃圾文本识别领域应用最广泛的算法。
使用贝叶斯分类算法进行二分类大致可分为这几个步骤:
- 收集大量的垃圾内容和非垃圾内容语料,建立训练的垃圾语料集和正常内容的语料集。
- 对语料文本进行分词,提取出独立的字符串,并且统计字符串在文本中出现的频次。
- 每个训练语料集对应一个hash table,比如垃圾语料集放在hashtable_bad中,而非垃圾语料集放在hashtable_good中,而hashtable中存储通过分词提取出的字符串以及对应的词频。
- 计算hashtable所有的字符串出现的概率,即P=字符串的词频/字符串的总数。
- 综合hashtable_good与hashtable_bad,推测当一串文本中包含某个字符串时,该文本为垃圾内容的概率,对应的数学表达式如下: P(A|ki) = Pbad(ki) / [ Pgood(ki) +Pbad(ki) ],其中事件A表示文本为垃圾内容,k1,k2 ……kn 代表提取的关键词,而P(A|ki)则表示在文本中出现关键词ki时,该文本为垃圾内容的概率,Pbad(ki)为ti在hashtable_bad中的值,而Pgood(ki)为ki在hashtable_good中的值。
- 建立新的hashtable_probability存储字符串ki到P(A|ki)的映射。
行文至此,贝叶斯分类的训练学习过程就完成了,接下来就可以根据hashtable_probability来计算文本为垃圾内容的可能性了。假设用户提交的文本内容经过分词得到n个关键词k1,k2,k3……kn,hashtable_probability中对应的值为 P1,P2……Pn ,P(A|k1,k2,k3……kn) 表示在用户提交的文本中同时出现关键字k1,k2,k3……kn时,该段内容为垃圾文本的概率, P(A|k1,k2,k3……kn) =P1*P2*……Pn 。当P(A|k1,k2,k3……kn)超过预定阈值时,可以判断该内容为垃圾内容,通过调整阀值,可以控制反垃圾系统对于内容过滤的严苛程度。