Les Snippets

Connexion

Bayes : anti spam

Niveau requis pour utiliser/comprendre cette source : 2 ( Initié )
Créé le 18/05/2008 23:38:18 et initié par coucou747 [Liste]
Vue : 2685
Catégorie(s) : Base de données, Algorithme, Chaîne de caractères, Email & Messagerie, Control
Langages dispo pour ce code :
- PHP 5



Langage : PHP 5
Date ajout : 18/05/2008
Posté par coucou747 [Liste]
function psplit($string){ return explode(' ', strtolower($string)); }  // decoupage d'une chaine en array de mots
interface WordDb{ public function Count($word); } // words database
class FileWordDb implements WordDb{
  public function __construct($filename){ $this->words = array_count_values(psplit(file_get_contents($filename))); }
  public function Count($word){ return isset($this->words[$word])?$this->words[$word]:0; }
  public function isInPart($word, $p){
    $count = count($this->words);
    $val = $this->Count($word);
    $n = 0;
    foreach ($this->words as $v) if ($v > $val)$n++;
    return $n < $count * $p;
  }
  protected $words;
}
function is_spam($string, WordDb $spams, WordDb $ham){
  $tab=psplit($string);
  $P1=1; $Q1=1;
  foreach ($tab as $w){
    if ($ham->isInPart($w, 1/30) && $spams->isInPart($w, 1/30)) continue; // permet de supprimer les determinants et choses qui n'apportent rien
    $H = $ham->Count($w); $S = $spams->Count($w);
    $f=(0.5+$S)/(1+$S+$H);
    $P1*=(1-$f); $Q1*=$f;
  }
  return (1-$P1)/(2-$P1-$Q1);
}

Remarque :

En copiant mes fichiers spams et mails de thunderbird, j'arrive a avoir des resultats satisfaisants pour les trois tests suivants :

echo is_spam( 'Bonjour un code en java a ete depose sur un forum codes-sources cliquez ici pour lire le nouveau message', new FileWordDb('bayesDb/spams'), new FileWordDb('bayesDb/informatique')), '';
echo is_spam( 'enlarge your penis', new FileWordDb('bayesDb/spams'), new FileWordDb('bayesDb/informatique')), '';
echo is_spam( 'enlarge your penis en codant en java', new FileWordDb('bayesDb/spams'), new FileWordDb('bayesDb/informatique')), '';

une valeur  0.5 incorrecte.

On peut s'en servir sur un forum pour eviter le spam, ou alerter les admins, ou faire des choses du genre.

Snippets en rapport avec : Bayes, Spam, Spamassassain, Filtre, Statistiques



Codes sources en rapport avec : Bayes, Spam, Spamassassain, Filtre, Statistiques

{JAVA / J2EE} TRAITMENT D'IMAGE EN JAVA
cette application Permet de Réaliser des divers techniques de traitement d'image en java : -Histo...

{C / C++ / C++.NET} TRAITEMENT DE L'IMAGE: FILTRE MÉDIAN EN TEMPS CONSTANT
Le filtre médian est un filtre, spatial et non linéaire, qui calcule en chaque pixel la médiane des ...

{Delphi} STATUTILS - LES STATISTIQUES
Bonsoir, voici une librairie de gestion basique de séries statistiques, StatUtils. Evidemment elle...

{Flash} EFFET D'OMBRE AU DÉPLACEMENT DE LA LUMIERE
Regardez le code dans le zip ====================================== =============================...

{Visual Basic, VB6, VB.NET, VB 2005} SPAM ANTI SPAM
J'en ai vraiment marre de recevoir sans cesse des SPAM malgré tous les filtres mis en place J'ai do...

{Visual Basic, VB6, VB.NET, VB 2005} PAGINATION SQL/PARSER SQL SELECT/ SQL FILTRE
Bonsoir a tous Voici deux modules de classe qui pourrait être utile a tout un chacun pour la gestio...

{JAVA / J2EE} MANIPULATION D'ITERATEURS
Les iterateurs java sont assez limites : on ne peut pas les "rewind" (remettre a 0), mais on ils son...

{PHP} BLACKLAGOON APPS
Cette application a été conçu dans le but d'aider dans la gestion de son alliance du jeu World of St...

{Visual Basic, VB6, VB.NET, VB 2005} CARNET D'ADRESSE
C'est une application qui traite de l'enregistrement, de la suppression ou de la modification de don...

{JAVA / J2EE} CHERCHER UN FICHIER
Bonjour, Cette classe vous permet d'effectuer une recherche de fichiers (1 ou plusieurs) dans un...