N-gram 语言模型
您可以尝试在自动生成的垃圾邮件页面上训练一个n-gram 语言模型,并在其他非垃圾邮件网页的集合上训练一个。
然后,您可以简单地使用两种语言模型对新页面进行评分,以查看文本是否看起来更类似于垃圾邮件网页或常规 Web 内容。
通过贝叶斯定律更好地得分
当您使用垃圾邮件语言模型对文本进行评分时,您可以估计在垃圾邮件网页上找到该文本的概率,P(Text|Spam)
. Text
该符号读取为给定的概率Spam (page)
。来自非垃圾邮件语言模型的分数是对在非垃圾邮件网页上找到文本的概率的估计,P(Text|Non-Spam)
.
但是,您可能真正想要的术语是P(Spam|Text)
或,等效地P(Non-Spam|Text)
。也就是说,您想知道页面是或给定出现在其上的文本的概率Spam
Non-Spam
。
要获得其中任何一个,您需要使用Bayes Law,其中指出
P(B|A)P(A)
P(A|B) = ------------
P(B)
使用贝叶斯定律,我们有
P(Spam|Text)=P(Text|Spam)P(Spam)/P(Text)
和
P(Non-Spam|Text)=P(Text|Non-Spam)P(Non-Spam)/P(Text)
P(Spam)
您之前是否认为从网络上随机选择的页面是垃圾邮件页面。您可以通过计算某个样本中有多少垃圾邮件网页来估计此数量,或者您甚至可以将其用作您手动调整的参数,以权衡精度和召回率。例如,给这个参数一个高的值将导致更少的垃圾页面被错误地归类为非垃圾邮件,而给它一个低的值将导致更少的非垃圾页面被意外归类为垃圾邮件。
该术语是在任何网页上P(Text)
找到的总体概率。Text
如果我们忽略这一点P(Text|Spam)
并P(Text|Non-Spam)
使用不同的模型确定,则可以计算为P(Text)=P(Text|Spam)P(Spam) + P(Text|Non-Spam)P(Non-Spam)
。这总结了二进制变量Spam
/ Non-Spam
。
仅分类
但是,如果您不打算将概率用于其他任何事情,则无需计算P(Text)
. 相反,您可以只比较分子P(Text|Spam)P(Spam)
和P(Text|Non-Spam)P(Non-Spam)
。如果第一个较大,则该页面很可能是垃圾页面,而如果第二个较大,则该页面很可能是非垃圾页面。这是有效的,因为上面的等式适用于两者P(Spam|Text)
并且P(Non-Spam|Text)
由相同 P(Text)
的值归一化。
工具
就您可以用于此类用途的软件工具包而言,SRILM将是一个很好的起点,并且它可以免费用于非商业用途。如果您想在商业上使用某些东西并且不想为许可证付费,您可以使用IRST LM,它在 LGPL 下分发。