- 浏览: 612624 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1164国际权威的学术组织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 705B树 即二叉搜索树: 1.所 ... -
TF-IDF与余弦相似性的应用(三):自动摘要
2014-05-25 23:24 0有时候,很简单的数学方法,就可以完成很复杂的任务。 这个 ... -
TF-IDF与余弦相似性的应用(二):找出相似文章
2014-05-25 23:23 758上一次,我用TF-IDF算法自动提取关键词。 今天,我们再 ... -
TF-IDF与余弦相似性的应用(一):自动提取关键词
2014-05-25 23:22 768这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题。 ... -
生成文本聚类java实现 (3)
2014-05-25 22:25 777很多网友看到我的聚类的研究,到后来基本上都是到car ... -
生成文本聚类java实现 (2)
2014-05-25 22:23 1426Java代码 4.从剩余的词中提取文本 ... -
生成文本聚类java实现 (1)
2014-05-25 22:23 1122本章主要的学习是中文分词 和两种统计词频(传统词频和T ... -
贝叶斯推断及其互联网应用(二):过滤垃圾邮件[转]
2013-09-11 15:42 881上一次,我介绍了贝叶斯推断的原理,今天讲如何将它用于垃 ... -
基于用户投票的排名算法(一):Delicious和Hacker News[转]
2013-09-11 15:30 798互联网的出现,意味着 ... -
F-IDF与余弦相似性的应用(一):自动提取关键词
2013-09-11 14:26 771这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题。 ... -
MapReduce 编程模型在日志分析方面的应用
2013-07-06 01:31 923简介 日志分析往往是商业智能的基础,而日益增长的日志信息条 ... -
贝叶斯邮件过滤算法理论收集
2013-07-06 01:25 882一、 贝叶斯垃圾邮件 ... -
TF-IDF及文本相似性度量
2013-03-19 13:52 4176TF-IDF(term frequency–inverse ... -
berkeley db和db4的安装
2012-03-21 23:54 1872bdb安装程序: 1、安 ... -
SPAM、Bayesian和中文 3
2012-03-18 18:11 0用PHP的话,将Naive Bayes C ...
相关推荐
通过深入理解这些概念并结合Go-bayesian库,开发者可以有效地在Go环境中构建和应用朴素贝叶斯分类模型,解决实际的机器学习问题。同时,也可以进一步研究如何与其他机器学习方法结合,提升分类效果。
人工智能_项目实践_朴素贝叶斯分类器_朴素贝叶斯文本分类器 **数据:**搜狗文本分类语料库 ...**分类器:**朴素贝叶斯分类器 NBC(Naive Bayesian Classifier) **编程语言:**Python+jieba分词库+nltk+sklearn
通过贝叶斯滤波与平滑技术,可以在不确定性环境中,提供更加稳定和精确的系统状态估计,这在现代自动化与信息化社会中有着重大的意义。随着计算能力的提升和算法的完善,我们可以预期,贝叶斯滤波与平滑技术将在未来...
在IT领域,贝叶斯机器学习和数据挖掘是两个至关重要的概念,它们在现代数据分析和预测建模中扮演着核心角色。贝叶斯方法是一种基于概率理论的学习框架,而数据挖掘则是从大量数据中发现有价值信息的过程。让我们深入...
Bayesian-Modelling-in-Python, 关于贝叶斯建模技术( PyMC3 )的python 教程 中的 模型 欢迎使用"。python 中的贝叶斯建模"- 关于学习如何在 python ( PYMC3 ) 中应用贝叶斯建模技术的教程。 本教程并不打算成为...
这个压缩包名为"Kalman-and-Bayesian-Filters-in-Python-master.zip",其内容可能包含了源代码、教程、示例和其他辅助资料,帮助用户理解并实现在Python中应用卡尔曼滤波器和贝叶斯滤波器。 卡尔曼滤波(Kalman ...
下面将详细介绍稀疏贝叶斯算法的核心概念、实现原理以及在压缩感知中的应用。 一、稀疏贝叶斯学习(Sparse Bayesian Learning, SBL) 稀疏贝叶斯学习旨在寻找数据表示的最稀疏形式,其核心思想是假设模型参数...
贝叶斯是基于概率的一种算法,是Thomas Bayes:一位伟大的数学大师所创建的,目前此种算法用于过滤垃圾...在智能邮件过滤技术中,贝叶斯(Bayesian)过滤技术取得了较大的成功,被越来越多地应用在反垃圾邮件的产品中。
Pedro Domingos和Michael Pazzani在《On the Optimality of the Simple Bayesian Classifier under Zero-One Loss》中指出,朴素贝叶斯算法在非独立条件下仍能取得很好的效果,即使违背了属性独立的条件。...
Hangul:针对程序员的Python的贝叶斯算法 应用: 2.目的 从贝叶斯概率的基础研究开始,并进行深入研究 3.目录 4.参考 GitHub(ENG): ...
朴素贝叶斯主题行分类器使用朴素贝叶斯算法将电子邮件主题行分类为垃圾邮件/非垃圾邮件。 通过查找两个类别(即垃圾邮件/非垃圾邮件)中每个唯一单词的出现频率来工作,并使用从新电子邮件主题输入的训练中提取的...
闪电战-火炬动物园中的贝叶斯层 BLiTZ是一个简单且可扩展的库,用于在PyTorch上创建贝叶斯神经网络层(基于“)。 通过使用BLiTZ图层和utils,您可以以不影响图层之间的交互的简单方式(例如,就像使用标准PyTorch...
在这个实验中,我们关注的是使用朴素贝叶斯算法来实现数据分类。朴素贝叶斯算法是一种基于概率理论的分类方法,它假设各个特征之间相互独立,这在许多实际问题中虽然简化了计算,但依然能够提供相当不错的分类效果。...
1. **机器学习:** 在分类、回归和特征选择等问题中,贝叶斯网络常被用作模型。 2. **医学诊断:** 基于症状和遗传信息,构建疾病诊断网络,预测疾病风险。 3. **风险管理:** 用于评估金融风险、工程安全风险等,...
For Bayesian learning. For beginners. Easy but useful
在这个特定的实验中,我们关注的是使用C++编程语言来实现贝叶斯(Bayesian)算法,这是一种基于概率论的统计方法。 贝叶斯方法的核心思想是贝叶斯定理,它描述了在已知某些先验信息的情况下,如何更新对事件发生的...
awesome-bayesian-deep-learning, 一份专门用于贝叶斯深入学习的资源列表 awesome-bayesian-deep-learning一份专门用于贝叶斯深入学习的资源列表 table-内容理论论文/论文理论论文/论文 2013:深高斯 processes|...
标题中的“Naive-Bayesian-Subject-Line-Classifier”指的是一个基于朴素贝叶斯算法的邮件主题分类器。朴素贝叶斯是一种常见的机器学习算法,主要用于文本分类,尤其是在垃圾邮件过滤等领域有着广泛应用。在这个项目...
标题中的“MATLAB代码 Bayesian-Fusion-main_红外和可见光图像的贝叶斯融合_图像融合_”指的是一项利用MATLAB实现的红外与可见光图像的贝叶斯融合技术,该技术是图像处理领域中的一种重要方法,主要用于提高图像的...