iOS上基于中文分词和训练的垃圾短信判断

最近被垃圾短息骚扰了,在群里看了下,似乎也有不少人被垃圾短信骚扰过。大名狗剩的SMSNinja是根据发送方来判断是不是垃圾消息,也就是根据发件人号码是否带@来判断,这样可以做到阻止大部分通过iMessage服务来发送的垃圾短信。但是缺点是需要把朋友们加到SMSNinja的白名单。而且这种方法虽然简单,但是也太粗暴了一点。

我们需要一个基于统计学的过滤器。

我想到这一点多少也是和我有幸能读到Paul Graham的「Hackers and Painters」一书有关。

Paul在书中的第8章里写了他是如何使用统计学来过滤垃圾邮件的,那么我们也可以用统计学的方法来判断垃圾短信。

不过中文可比英文麻烦多了,英文可以很简单的用空格来把一个字符串分为一个数组,再过一遍数组中每个元素来判断。

很可惜,中文词与词之间是没有空格的,要想像Paul那样判断,必须依靠分词技术才行。

这里我选择了scws库,是由纯C/C++写成的,很容易移植到iOS设备上。

同样的,如同Paul开始前所做的,我们也需要准备垃圾短信的样本,并且应该足够多,足够广,这样我们才能对各种垃圾信息进行高正确率的判断。

更具体的信息在这个项目的Github上。

Leave a Reply

Your email address will not be published. Required fields are marked *

three × 2 =