検索
ホームページバックエンド開発PHPチュートリアルSPAM、ベイジアン、中国語 4 - CakePHP へのベイジアン アルゴリズムの統合

SPAM、ベイジアン、中国語 4 - CakePHP へのベイジアン アルゴリズムの統合

上記の では、ベイジアン アルゴリズムのいくつかのオープン ソース実装について説明しました。この記事では、b8 と呼ばれるオープン ソース実装の 1 つを CakePHP に統合する方法について説明します。

b8 をダウンロードしてインストールします

  1. b8 Web サイトにアクセスして最新バージョンをダウンロードし、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 アプリケーションにエラー メッセージを直接表示します。プログラムをデバッグするときにも役立ちます。
  5. b8 のラッパーコンポーネントを作成します
Cake が b8 を呼び出すためには、コンポーネントを記述する必要があります。 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 は重要なポイントです。ベイズ確率がこの値より高い場合、メッセージはスパムとみなされ、そうでない場合はハムと見なされます。私は 0.7 に設定しましたが、状況に応じて変更できます。

    Configure::read('LT.bayesRating') は、システムの実行構成から上記の重要なポイントの値を動的に取得するものです。これは、多少変更しても、しなくても構いません。状況に応じて変更してください。
  1. コメントはコメントモデルを指します。
  2. b8 はデータテーブルを操作できるようにデータベースハンドルを取得する必要があるため、startup() で $this->b8 = new b8($comment->getDBOResourceLink()) と書きました。が使用されます () については後ほど説明します。
  3. b8 のデータベース ハンドルを渡します
  4. 次のコードを 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 はメッセージが到着すると自動的に分類して学習します。基本的にはスパムから隔離されます。

注意: 初めて実行した後は、先ほど述べた createDB を FALSE に変更することを忘れないでください。

http://dingyu.me/blog/spam-bayesian-chinese-4

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
华为GT3 Pro和GT4的差异是什么?华为GT3 Pro和GT4的差异是什么?Dec 29, 2023 pm 02:27 PM

许多用户在选择智能手表的时候都会选择的华为的品牌,其中华为GT3pro和GT4都是非常热门的选择,不少用户都很好奇华为GT3pro和GT4有什么区别,下面就就给大家介绍一下二者。华为GT3pro和GT4有什么区别一、外观GT4:46mm和41mm,材质是玻璃表镜+不锈钢机身+高分纤维后壳。GT3pro:46.6mm和42.9mm,材质是蓝宝石玻璃表镜+钛金属机身/陶瓷机身+陶瓷后壳二、健康GT4:采用最新的华为Truseen5.5+算法,结果会更加的精准。GT3pro:多了ECG心电图和血管及安

修复:截图工具在 Windows 11 中不起作用修复:截图工具在 Windows 11 中不起作用Aug 24, 2023 am 09:48 AM

为什么截图工具在Windows11上不起作用了解问题的根本原因有助于找到正确的解决方案。以下是截图工具可能无法正常工作的主要原因:对焦助手已打开:这可以防止截图工具打开。应用程序损坏:如果截图工具在启动时崩溃,则可能已损坏。过时的图形驱动程序:不兼容的驱动程序可能会干扰截图工具。来自其他应用程序的干扰:其他正在运行的应用程序可能与截图工具冲突。证书已过期:升级过程中的错误可能会导致此issu简单的解决方案这些适合大多数用户,不需要任何特殊的技术知识。1.更新窗口和Microsoft应用商店应用程

mysql comment的概念是什么mysql comment的概念是什么Jun 02, 2023 pm 05:34 PM

comment是备注、注释的意思。在MySQL数据库中,字段或列的注释是用属性comment来添加;创建新表的脚本中,可在字段定义脚本中添加comment属性来添加注释。想要查看已有表的所有字段的注释,可以使用“showfullcolumnsfrom表名”命令。在mysql中,COMMENT是备注、注释的意思。MySQL添加注释(comment)在MySQL数据库中,字段或列的注释是用属性comment来添加。创建新表的脚本中,可在字段定义脚本中添加comment属性来添加注释。示例代码如下:c

如何修复无法连接到iPhone上的App Store错误如何修复无法连接到iPhone上的App Store错误Jul 29, 2023 am 08:22 AM

第1部分:初始故障排除步骤检查苹果的系统状态:在深入研究复杂的解决方案之前,让我们从基础知识开始。问题可能不在于您的设备;苹果的服务器可能会关闭。访问Apple的系统状态页面,查看AppStore是否正常工作。如果有问题,您所能做的就是等待Apple修复它。检查您的互联网连接:确保您拥有稳定的互联网连接,因为“无法连接到AppStore”问题有时可归因于连接不良。尝试在Wi-Fi和移动数据之间切换或重置网络设置(“常规”>“重置”>“重置网络设置”>设置)。更新您的iOS版本:

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

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

一篇搞懂this指向,赶超70%的前端人一篇搞懂this指向,赶超70%的前端人Sep 06, 2022 pm 05:03 PM

同事因为this指向的问题卡住的bug,vue2的this指向问题,使用了箭头函数,导致拿不到对应的props。当我给他介绍的时候他竟然不知道,随后也刻意的看了一下前端交流群,至今最起码还有70%以上的前端程序员搞不明白,今天给大家分享一下this指向,如果啥都没学会,请给我一个大嘴巴子。

watch4pro好还是gt好watch4pro好还是gt好Sep 26, 2023 pm 02:45 PM

watch4pro和gt各自具有不用的特点和适用场景,如果注重功能的全面性、高性能和时尚外观,同时愿意承担较高的价格,那么Watch 4 Pro可能更适合。如果对功能要求不高,更注重电池续航和价格的合理性,那么GT系列可能更适合。最终的选择应根据个人需求、预算和喜好来决定,建议在购买前仔细考虑自己的需求,并参考各种产品的评测和比较,以做出更明智的选择。

聊聊Vue2为什么能通过this访问各种选项中属性聊聊Vue2为什么能通过this访问各种选项中属性Dec 08, 2022 pm 08:22 PM

本篇文章带大家解读vue源码,来介绍一下Vue2中为什么可以使用 this 访问各种选项中的属性,希望对大家有所帮助!

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、