Jadual Kandungan
下载b8及安装
为b8写一个wrapper component
为b8传入数据库句柄
使用b8分类留言
Rumah pembangunan bahagian belakang tutorial php SPAM、Bayesian跟中文 4 - 在CakePHP中集成贝叶斯算法

SPAM、Bayesian跟中文 4 - 在CakePHP中集成贝叶斯算法

Jun 13, 2016 pm 01:25 PM
comment gt text this

SPAM、Bayesian和中文 4 - 在CakePHP中集成贝叶斯算法

上文提到了贝叶斯算法的几种开源实现,本文说说如何将其中一种名为b8的开源实现集成进CakePHP。

下载b8及安装

  1. b8的站点下载最新版本,将其解压至vendors目录,文件位置如vendors/b8/b8.php;
  2. 用文本编辑器打开vendors/b8/etc/config_b8,修改databaseType为mysql;
  3. 用文本编辑器打开vendors/b8/etc/config_storage,修改tableName为你用来存储关键字的数据表的名字,修改createDB为TRUE,要注意的是,当你第一次运行b8后,它会建立上述数据表,然后你要重新把createDB改为FALSE;
  4. 用文本编辑器打开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);

??? }

}

几点说明:

  1. $standardRating是一个临界点。如果贝叶斯概率高于这个值,则此留言被认为是spam,否则是ham。我设置为0.7,你可以根据自己的情况修改;
  2. Configure::read('LT.bayesRating')是从系统运行配置中动态地获取上述临界点的值,这是我的做法,你可能用不到,根据情况稍微修改甚至不修改都行;
  3. Comment指的是评论的model;
  4. 由于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('unmoderated');

??? 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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara Huawei GT3 Pro dan GT4? Apakah perbezaan antara Huawei GT3 Pro dan GT4? Dec 29, 2023 pm 02:27 PM

Ramai pengguna akan memilih jenama Huawei apabila memilih jam tangan pintar Antaranya, Huawei GT3pro dan GT4 adalah pilihan yang sangat popular. Apakah perbezaan antara Huawei GT3pro dan GT4? 1. Rupa GT4: 46mm dan 41mm, bahan cermin kaca + badan keluli tahan karat + cangkang belakang gentian resolusi tinggi. GT3pro: 46.6mm dan 42.9mm, bahannya ialah kaca nilam + badan titanium/badan seramik + cangkerang belakang seramik 2. GT4 yang sihat: Menggunakan algoritma Huawei Truseen5.5+ terkini, hasilnya akan lebih tepat. GT3pro: Penambahan elektrokardiogram ECG dan saluran darah serta keselamatan

Betulkan: Alat snipping tidak berfungsi dalam Windows 11 Betulkan: Alat snipping tidak berfungsi dalam Windows 11 Aug 24, 2023 am 09:48 AM

Mengapa Alat Snipping Tidak Berfungsi pada Windows 11 Memahami punca masalah boleh membantu mencari penyelesaian yang betul. Berikut ialah sebab utama Alat Snipping mungkin tidak berfungsi dengan betul: Focus Assistant dihidupkan: Ini menghalang Snipping Tool daripada dibuka. Aplikasi rosak: Jika alat snipping ranap semasa pelancaran, ia mungkin rosak. Pemacu grafik lapuk: Pemacu yang tidak serasi mungkin mengganggu alat snipping. Gangguan daripada aplikasi lain: Aplikasi lain yang sedang berjalan mungkin bercanggah dengan Alat Snipping. Sijil telah tamat tempoh: Ralat semasa proses naik taraf boleh menyebabkan penyelesaian mudah ini sesuai untuk kebanyakan pengguna dan tidak memerlukan sebarang pengetahuan teknikal khusus. 1. Kemas kini apl Windows dan Microsoft Store

Cara Membetulkan Ralat Tidak Dapat Menyambung ke App Store pada iPhone Cara Membetulkan Ralat Tidak Dapat Menyambung ke App Store pada iPhone Jul 29, 2023 am 08:22 AM

Bahagian 1: Langkah Penyelesaian Masalah Awal Menyemak Status Sistem Apple: Sebelum menyelidiki penyelesaian yang rumit, mari kita mulakan dengan asas. Masalahnya mungkin tidak terletak pada peranti anda; Lawati halaman Status Sistem Apple untuk melihat sama ada AppStore berfungsi dengan betul. Jika terdapat masalah, anda hanya boleh menunggu Apple membetulkannya. Semak sambungan Internet anda: Pastikan anda mempunyai sambungan internet yang stabil kerana isu "Tidak dapat menyambung ke AppStore" kadangkala boleh dikaitkan dengan sambungan yang lemah. Cuba tukar antara Wi-Fi dan data mudah alih atau tetapkan semula tetapan rangkaian (Umum > Tetapkan Semula > Tetapkan Semula Tetapan Rangkaian > Tetapan). Kemas kini versi iOS anda:

Apakah konsep komen mysql Apakah konsep komen mysql Jun 02, 2023 pm 05:34 PM

Komen bermaksud teguran dan anotasi. Dalam pangkalan data MySQL, komen pada medan atau lajur ditambah menggunakan atribut komen dalam skrip yang mencipta jadual baharu, komen boleh ditambah dengan menambah atribut komen dalam skrip definisi medan. Jika anda ingin melihat komen semua medan jadual sedia ada, anda boleh menggunakan arahan "showfullcolumnsfrom table name". Dalam mysql, COMMENT bermaksud teguran dan komen. MySQL menambah komen (komen) Dalam pangkalan data MySQL, ulasan pada medan atau lajur ditambah menggunakan atribut komen. Dalam skrip yang mencipta jadual baharu, anda boleh menambah ulasan dengan menambahkan atribut ulasan dalam skrip definisi medan. Kod sampel adalah seperti berikut: c

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Adakah watch4pro lebih baik atau gt? Adakah watch4pro lebih baik atau gt? Sep 26, 2023 pm 02:45 PM

Watch4pro dan gt masing-masing mempunyai ciri yang berbeza dan senario yang berkenaan Jika anda menumpukan pada fungsi yang komprehensif, prestasi tinggi dan penampilan yang bergaya, dan sanggup menanggung harga yang lebih tinggi, maka Watch 4 Pro mungkin lebih sesuai. Jika anda tidak mempunyai keperluan fungsi yang tinggi dan memberi lebih perhatian kepada hayat bateri dan harga yang berpatutan, maka siri GT mungkin lebih sesuai. Pilihan terakhir harus diputuskan berdasarkan keperluan peribadi, belanjawan dan keutamaan Adalah disyorkan untuk mempertimbangkan dengan teliti keperluan anda sendiri sebelum membeli dan merujuk kepada ulasan dan perbandingan pelbagai produk untuk membuat pilihan yang lebih termaklum.

Cara mengoptimumkan hayat bateri iPad dengan iPadOS 17.4 Cara mengoptimumkan hayat bateri iPad dengan iPadOS 17.4 Mar 21, 2024 pm 10:31 PM

Cara Mengoptimumkan Hayat Bateri iPad dengan iPadOS 17.4 Memanjangkan hayat bateri adalah kunci kepada pengalaman peranti mudah alih dan iPad ialah contoh yang baik. Jika anda merasakan bateri iPad anda kehabisan terlalu cepat, jangan risau, terdapat beberapa helah dan tweak dalam iPadOS 17.4 yang boleh memanjangkan masa penggunaan peranti anda dengan ketara. Matlamat panduan mendalam ini bukan hanya untuk memberikan maklumat, tetapi untuk mengubah cara anda menggunakan iPad anda, meningkatkan pengurusan bateri anda secara keseluruhan dan memastikan anda boleh bergantung pada peranti anda lebih lama tanpa perlu mengecasnya. Dengan mengamalkan amalan yang digariskan di sini, anda mengambil langkah ke arah penggunaan teknologi yang lebih cekap dan penuh perhatian yang disesuaikan dengan keperluan dan corak penggunaan individu anda. Kenal pasti pengguna tenaga utama

Artikel untuk memahami panduan ini dan mengejar 70% orang hadapan Artikel untuk memahami panduan ini dan mengejar 70% orang hadapan Sep 06, 2022 pm 05:03 PM

Seorang rakan sekerja tersekat kerana pepijat yang ditunjukkan oleh masalah penunjuk Vue2 ini menyebabkan fungsi anak panah digunakan, mengakibatkan ketidakupayaan untuk mendapatkan prop yang sepadan. Dia tidak tahu apabila saya memperkenalkannya kepadanya, dan kemudian saya sengaja melihat kumpulan pertukaran bahagian hadapan Setakat ini, sekurang-kurangnya 70% pengaturcara bahagian hadapan masih tidak memahaminya anda pautan ini. Jika semuanya tidak jelas saya belum belajar bagaimana untuk melakukannya, sila berikan saya mulut yang besar.

See all articles