- 浏览: 591585 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
kangh:
转载的也拿出来 都不试一下 完全错误
Nginx+ffmpeg的HLS开源服务器搭建配置及开发详解 -
wangtxlz:
#cd builders/cmake#cmake .系统提示命 ...
crtmpserver流媒体服务器的介绍与搭建 -
hnraysir:
支持支持支持
手机Android音视频采集与直播推送,实现单兵、移动监控类应用 -
wuent:
把web服务器和php框架绑定到一起?真不建议这样。。。
Swoole(PHP高级Web开发框架) -
wuent:
有更详细的性能比较吗?php,python,java
PHP中的(伪)多线程与多进程
上文提到了贝叶斯算法的几种开源实现,本文说说如何将其中一种名为b8的开源实现集成进CakePHP。
下载b8及安装
- 去b8的站点下载最新版本,将其解压至vendors目录,文件位置如vendors/b8/b8.php;
- 用文本编辑器打开vendors/b8/etc/config_b8,修改databaseType为mysql;
- 用文本编辑器打开vendors/b8/etc/config_storage,修改tableName为你用来存储关键字的数据表的名字,修改createDB为TRUE,要注意的是,当你第一次运行b8后,它会建立上述数据表,然后你要重新把createDB改为FALSE;
- 用文本编辑器打开vendors/b8/lexer/shared_functions.php,将38行的代码(在echoError())注释掉,否则b8会直接把错误信息显示在你的Cake应用中,当然这在调试程序时还是有用的。
为b8写一个wrapper component
为了让你的Cake能够调用到b8,你需要写一个component。在controllers/components/新建一个spam_shield.php,加入如下代码:
class SpamShieldComponent extends Object {
/** * b8 instance
*/
var $b8;
/** * standard rating * * comments with ratings which are higher than this one will be considered as SPAM
*/
var $standardRating = 0.7;
/** * text to be classified
*/
var $text;
/** * rating of the text */
var $rating;
/** * Constructor * * @date 2009-1-20 */
function startup(&$controller) {
//register a CommentModel to get the DBO resource link
$comment = ClassRegistry::init('Comment'); //import b8 and create an instance
App::import('Vendor', 'b8/b8');
$this->b8 = new b8($comment->getDBOResourceLink()); //set standard rating
$this->standardRating = Configure::read('LT.bayesRating') ? Configure::read('LT.bayesRating') : $this->standardRating;
}
/** * Set the text to be classified * * @param $text String the text to be classified * @date 2009-1-20 */
function set($text) {
$this->text = $text;
}
/** * Get Bayesian rating * * @date 2009-1-20 */
function rate() {
//get Bayes rating and return return
$this->rating = $this->b8->classify($this->text);
}
/** * Validate a message based on the rating, return true if it's NOT a SPAM * * @date 2009-1-20 */
function validate() {
return $this->rate() < $this->standardRating;
}
/** * Learn a SPAM or a HAM * * @date 2009-1-20 */
function learn($mode) {
$this->b8->learn($this->text, $mode);
}
/** * Unlearn a SPAM or a HAM * * @date 2009-1-20 */
function unlearn($mode) {
$this->b8->unlearn($this->text, $mode);
}
}
几点说明:
- $standardRating是一个临界点。如果贝叶斯概率高于这个值,则此留言被认为是spam,否则是ham。我设置为0.7,你可以根据自己的情况修改;
- Configure::read('LT.bayesRating')是从系统运行配置中动态地获取上述临界点的值,这是我的做法,你可能用不到,根据情况稍微修改甚至不修改都行;
- Comment指的是评论的model;
- 由于b8需要获得数据库句柄以便能够操作数据表,所以在startup()中我写了$this->b8 = new b8($comment->getDBOResourceLink())一句,其中用到的getDBOResourceLink()马上会提及。
为b8传入数据库句柄
在models/comment.php中加入如下代码:
/** * get the resource link of MySQL connection */ public function getDBOResourceLink() { return $this->getDataSource()->connection; }
至此,准备工作全部做完,我们终于可以使用贝叶斯算法来分类留言。
使用b8分类留言
在controllers/comments_controller.php中,首先载入SpamShieldComponent:
var $components = array('SpamShield');
然后在add()方法中,做如下操作:
//set data for Bayesian validation
$this->SpamShield->set($this->data['Comment']['body']); //validate the comment with Bayesian
if(!$this->SpamShield->validate()) { //set the status
$this->data['Comment']['status'] = 'spam'; //save
$this->Comment->save($this->data); //learn it $this->SpamShield->learn("spam"); //render
$this->renderView('unmodera
ted');
return;
}
//it's a normal post
$this->data['Comment']['status'] = 'published'; //save for publish
$this->Comment->save($this->data); //learn it
$this->SpamShield->learn("ham");
如此一来,b8就会在留言到来时自动的分类并学习,你基本上已经与spam绝缘了!
提醒一下:第一次运行后,别忘了把刚才提到的createDB改为FALSE。
http://dingyu.me/blog/spam-bayesian-chinese-4
发表评论
-
hash算法 (hashmap 实现原理)
2015-06-12 11:33 0Hash ,一般翻译做“ 散列” ,也有直接音译为 ... -
数据挖掘十大经典算法
2015-05-15 14:27 1122国际权威的学术组织the IEEE Internationa ... -
京东个性化推荐系统持续优化的奥秘
2015-04-20 11:03 0京东基于大数据和个性化推荐算法,实现了向不同用户展示不同的内 ... -
php 经典的算法题你懂的
2015-03-31 12:31 0有5个人偷了一堆苹果,准备在第二天分赃。晚上,有一人遛出来, ... -
PHP实现常见查找和排序算法
2015-01-09 15:40 0下面分享一些最常见的算法,用PHP如何实现。 1、冒泡排序 ... -
B树、B-树、B+树、B*树
2015-01-09 15:10 664B树 即二叉搜索树: 1.所 ... -
TF-IDF与余弦相似性的应用(三):自动摘要
2014-05-25 23:24 0有时候,很简单的数学方法,就可以完成很复杂的任务。 这个 ... -
TF-IDF与余弦相似性的应用(二):找出相似文章
2014-05-25 23:23 719上一次,我用TF-IDF算法自动提取关键词。 今天,我们再 ... -
TF-IDF与余弦相似性的应用(一):自动提取关键词
2014-05-25 23:22 727这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题。 ... -
生成文本聚类java实现 (3)
2014-05-25 22:25 723很多网友看到我的聚类的研究,到后来基本上都是到car ... -
生成文本聚类java实现 (2)
2014-05-25 22:23 1377Java代码 4.从剩余的词中提取文本 ... -
生成文本聚类java实现 (1)
2014-05-25 22:23 1058本章主要的学习是中文分词 和两种统计词频(传统词频和T ... -
贝叶斯推断及其互联网应用(二):过滤垃圾邮件[转]
2013-09-11 15:42 835上一次,我介绍了贝叶斯推断的原理,今天讲如何将它用于垃 ... -
基于用户投票的排名算法(一):Delicious和Hacker News[转]
2013-09-11 15:30 754互联网的出现,意味着 ... -
F-IDF与余弦相似性的应用(一):自动提取关键词
2013-09-11 14:26 743这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题。 ... -
MapReduce 编程模型在日志分析方面的应用
2013-07-06 01:31 892简介 日志分析往往是商业智能的基础,而日益增长的日志信息条 ... -
贝叶斯邮件过滤算法理论收集
2013-07-06 01:25 837一、 贝叶斯垃圾邮件 ... -
TF-IDF及文本相似性度量
2013-03-19 13:52 4085TF-IDF(term frequency–inverse ... -
berkeley db和db4的安装
2012-03-21 23:54 1808bdb安装程序: 1、安 ... -
SPAM、Bayesian和中文 3
2012-03-18 18:11 0用PHP的话,将Naive Bayes C ...
相关推荐
bayesian - Golang朴素贝叶斯分类
贝叶斯 机器学习 数据挖掘 Bayesian-machine-learn-data-mining
Bayesian-Modelling-in-Python, 关于贝叶斯建模技术( PyMC3 )的python 教程 中的 模型 欢迎使用"。python 中的贝叶斯建模"- 关于学习如何在 python ( PYMC3 ) 中应用贝叶斯建模技术的教程。 本教程并不打算成为...
Kalman-and-Bayesian-Filters-in-Python-master.zip
描述了基于贝叶斯框架的滤波方法和平滑方法,用于得到精确的估计结果;该书涉及到了现在通用的一些滤波方法,模型构建更加数学化,使用MATLAB进行仿真。
贝叶斯是基于概率的一种算法,是Thomas Bayes:一位伟大的数学大师所创建的,目前此种算法用于过滤垃圾...在智能邮件过滤技术中,贝叶斯(Bayesian)过滤技术取得了较大的成功,被越来越多地应用在反垃圾邮件的产品中。
贝叶斯超参数优化库-bayesian-optimization安装包及依赖库, 实现基于高斯过程的贝叶斯优化,适合大量连续型参数构成,避免大量离散型参数
在本文中,我们提出了一种新的贝叶斯模型不可知的元学习方法。该方法结合了有效的基于梯度的元学习和非参数变分推理。与以往的方法不同的是,在快速适应过程中,该方法能够学习复杂的不确定性结构,而不是简单的高斯...
Hangul:针对程序员的Python的贝叶斯算法 应用: 2.目的 从贝叶斯概率的基础研究开始,并进行深入研究 3.目录 4.参考 GitHub(ENG): ...
朴素贝叶斯主题行分类器使用朴素贝叶斯算法将电子邮件主题行分类为垃圾邮件/非垃圾邮件。 通过查找两个类别(即垃圾邮件/非垃圾邮件)中每个唯一单词的出现频率来工作,并使用从新电子邮件主题输入的训练中提取的...
闪电战-火炬动物园中的贝叶斯层 BLiTZ是一个简单且可扩展的库,用于在PyTorch上创建贝叶斯神经网络层(基于“)。 通过使用BLiTZ图层和utils,您可以以不影响图层之间的交互的简单方式(例如,就像使用标准PyTorch...
For Bayesian learning. For beginners. Easy but useful
awesome-bayesian-deep-learning, 一份专门用于贝叶斯深入学习的资源列表 awesome-bayesian-deep-learning一份专门用于贝叶斯深入学习的资源列表 table-内容理论论文/论文理论论文/论文 2013:深高斯 processes|...
bayesian-curve-fitting:基于贝叶斯推理的曲线拟合算法
Naive-Bayesian-Subject-Line-Classifier-源码.rar
A-tutorial-on-learning-with-Bayesian-networks,A-tutorial-on-learning-with-Bayesian-networksA-tutorial-on-learning-with-Bayesian-networks。
基于贝叶斯模型的变化检测模块实现了一种递归算法,用于分割实值输入-输出数据序列。 段边界的选择假设在每个段内,输入-输出数据遵循多元线性模型。 线性模型的参数(即系数矩阵和噪声协方差矩阵)被视为随机变量,...
29326-bms-toolbox-for-matlab-bayesian-model-averaging-bma.zip
Bayesian statistics has been around for more than 250 years now. During this time it has enjoyed as much recognition and appreciation as disdain and contempt. Through the last few decades it has ...