海运的博客

贝叶斯过滤垃圾邮件PHP实现

发布时间:December 21, 2014 // 分类:PHP // No Comments

根据贝叶斯推断及其互联网应用(二):过滤垃圾邮件实现:
首先收集垃圾邮件和正常邮件,分词后计算每个词分别出现的频率,比如计算垃圾邮件库每个词的频率:

//分词略过
foreach ($words as $word) {
  $key = base64_encode($word);
  if (isset($spamwords[$key])) {
    $spamwords[$key]++;
  } else {
    $spamwords[$key] = 1;
  }
}

单个词判断垃圾邮件概率:

//先验概率为50%
$ps = 0.5;
$ph = 0.5;
//在正常邮件中的出现频率,比如4000封正常邮件2封包含这个词。
$pwh = 0.0005;
//在垃圾邮件中的出现频率
$pws = 0.05;
//垃圾邮件概率
$psw = $pws * $ps / ($pws * $ps + $pwh * $ph);
echo $psw;

多个词计算联合概率:

//根据上面计算的多个词的概率集合
$psws = array(0.2, 0.3, 0.2, 0.3, 0.4, 0.6, 0.7, 0.8, 0.9, 0.8);
$numerator = 1; 
$denominator1 = 1;
$denominator2 = 1;
foreach ($psws as $value) {
  $numerator *= $value;
  $denominator1 *= $value;
  $denominator2 *= 1 - $value;
}
echo $numerator / ($denominator1 + $denominator2);

标签:none

评论已关闭

分类
最新文章
最近回复
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...
  • 孤狼: 擦。。。。apcupsd会失联 nut在冲到到100的时候会ONBATT进入关机状态,我想想办...
  • 海运: 网络,找到相应的url编辑重发请求,firefox有此功能,其它未知。
  • knetxp: 用浏览器F12网络拦截或监听后编辑重发请求,修改url中的set为set_super,将POS...
  • Albert: 啊啊啊啊啊啊啊啊啊 我太激动了,终于好了英文区搜索了半天,翻遍了 pve 论坛没找到好方法,博...