SPAM、Bayesian和中文 4 - 在CakePHP中集成贝叶斯算法
上文提到了贝叶斯算法的几种开源实现,本文说说如何将其中一种名为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() 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

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

Sebab mengapa PHP adalah timbunan teknologi pilihan untuk banyak laman web termasuk kemudahan penggunaannya, sokongan komuniti yang kuat, dan penggunaan yang meluas. 1) Mudah dipelajari dan digunakan, sesuai untuk pemula. 2) Mempunyai komuniti pemaju yang besar dan sumber yang kaya. 3) Digunakan secara meluas dalam platform WordPress, Drupal dan lain -lain. 4) Mengintegrasikan dengan ketat dengan pelayan web untuk memudahkan penggunaan pembangunan.

PHP kekal sebagai alat yang kuat dan digunakan secara meluas dalam pengaturcaraan moden, terutamanya dalam bidang pembangunan web. 1) PHP mudah digunakan dan diintegrasikan dengan lancar dengan pangkalan data, dan merupakan pilihan pertama bagi banyak pemaju. 2) Ia menyokong penjanaan kandungan dinamik dan pengaturcaraan berorientasikan objek, sesuai untuk membuat dan mengekalkan laman web dengan cepat. 3) Prestasi PHP dapat ditingkatkan dengan caching dan mengoptimumkan pertanyaan pangkalan data, dan komuniti yang luas dan ekosistem yang kaya menjadikannya masih penting dalam timbunan teknologi hari ini.

Dalam PHP, rujukan lemah dilaksanakan melalui kelas lemah dan tidak akan menghalang pemungut sampah daripada menebus objek. Rujukan lemah sesuai untuk senario seperti sistem caching dan pendengar acara. Harus diingat bahawa ia tidak dapat menjamin kelangsungan hidup objek dan pengumpulan sampah mungkin ditangguhkan.

Kaedah \ _ \ _ membolehkan objek dipanggil seperti fungsi. 1. Tentukan kaedah \ _ \ _ supaya objek boleh dipanggil. 2. Apabila menggunakan sintaks $ OBJ (...), PHP akan melaksanakan kaedah \ _ \ _ invoke. 3. Sesuai untuk senario seperti pembalakan dan kalkulator, meningkatkan fleksibiliti kod dan kebolehbacaan.

Serat diperkenalkan dalam Php8.1, meningkatkan keupayaan pemprosesan serentak. 1) Serat adalah model konkurensi ringan yang serupa dengan coroutine. 2) Mereka membenarkan pemaju mengawal aliran pelaksanaan tugas secara manual dan sesuai untuk mengendalikan tugas I/O-intensif. 3) Menggunakan serat boleh menulis kod yang lebih cekap dan responsif.

Komuniti PHP menyediakan sumber dan sokongan yang kaya untuk membantu pemaju berkembang. 1) Sumber termasuk dokumentasi rasmi, tutorial, blog dan projek sumber terbuka seperti Laravel dan Symfony. 2) Sokongan boleh didapati melalui saluran StackOverflow, Reddit dan Slack. 3) Trend pembangunan boleh dipelajari dengan mengikuti RFC. 4) Integrasi ke dalam masyarakat dapat dicapai melalui penyertaan aktif, sumbangan kepada kod dan perkongsian pembelajaran.

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma