IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes prédictives Discussion :

Modèle de Markov caché appliqué au pourriel !


Sujet :

Méthodes prédictives

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Modèle de Markov caché appliqué au pourriel !
    Bonjour !

    Je travaille présentement sur un filtre bayésien de spam en C++. Ma version naïve fonctionne très bien et j'en suis à en améliorer les performances et la précision avec un modèle de Markov caché (Hidden Markox Model, HMM).

    J'ai un peu de difficulté à bien démarrer mon implémentation et j'avoue ne pas encore avoir bien saisi le fonctionnement de l'estimation des paramètres avec l'algorithme de Baum-Welch (aussi appelé algorithme de Forward-Backward), Or, tout HMM a pour hypothèse que les paramètres sont connus (ce qui n'est pas mon cas, je dois donc les estimer).

    J'ouvre donc cette discussion au cas où quelqu'un parmi vous aurait de bons conseils à mon prodiguer. Aussi, si je serai probablement tenté de coucher ici mes impressions, trucs et astuces au fur et à mesure de mes travaux. Plus tard, si je réussi à monter quelque chose de pas mal, je penserai à monter un cours pour la postérité (et pour référence ultérieure ).

    En attendant, voici plus de détails sur le problème.

    En pratique, le modèle sert à associer une représentation d'information (ici, une chaîne de caractères) à une connaissance théorique (ici, un mot) ayant potentiellement subit des altérations. Par exemple, associer la chaîne observée "EnL@RGEm3nt" à son sens théorique et abstrait "enlargement". Ça permettrait à mon filtre de diminuer de BEAUCOUP sa base de données et d'améliorer grandement sa précision.

    J'ai donc commencé à lire sur le modèle, notamment ici http://www.shokhirev.com/nikolai.html et aussi le chapitre 14 de ce gars qui produit des cours extraordinaires sur youtube http://www.youtube.com/user/mathematicalmonk .

    EDIT : Autre bonne source : http://www.google.fr/url?sa=t&rct=j&...iivfTg&cad=rja

    Des idées ?

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Ok, je frappe un premier problème d'allure assez simple. Je voudrais mélanger deux chaînes str et sep, telles que str contient un chaîne de caractère quelconque et sep contient un nombre de "*" donné, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    str = "str"
    sep = "**"
    Il m'intéresse d'en extraire tous les "mélanges possibles", conservant l'ordre des caractères de str, comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    res[10][5] = {
      s,t,r,*,*,
      s,t,*,r,*,
      s,t,*,*,r,
      s,*,t,r,*,
      s,*,t,*,r,
      s,*,*,t,r, 
      *,s,t,r,*, 
      *,s,t,*,r,
      *,s,*,t,r,
      *,*,s,t,r
    }
    ici, "10" est en fait le nombre de combinaison de 2 étoiles parmi 5 caractères total et "5" est le nombre de caractères au total.

    Pour une fonction faisant ce boulot avec une chaîne de caractère de longueur quelconque et un nombre de "*" quelconque aussi (mais plus petit ou égal à la longueur de str).

    des idées ?

  3. #3
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Pour ton premier problème :
    http://remi.coulom.free.fr/Thesis/
    http://researchers.lille.inria.fr/~m...ble/index.html

    Pour le second, c'est assez simple, non ?
    T'as réussi à le faire à la main, donc tu peux écrire l'algorithme. Réfléchis juste à la façon dont tu y es pris, manuellement.

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Davcha :

    En effet, pour l'algo des combinaisons, j'ai trouvé : sortir toutes les combinaisons de longueur m d'une série de nombres entiers entre 0 et n+m et se servir de ces nombres comme indices pour placer les "*".

    Pour l'application du HMM, j'ai clarifié mon trouble dans ce URL="http://www.developpez.net/forums/d1211530/autres-langages/algorithmes/intelligence-artificielle/algorithme-forward-modifie/"]thread[/URL]

    C'est en fait que j'ai la ferme impression de bien saisir et maîtriser mes algo (forward, backward, etc.) mais je fais mal le pont entre une version générale et la spécialisation que j'ai besoin.

    Je commence pourtant à manquer de temps, ça sent l'omission du modèle pour mon projet

Discussions similaires

  1. [Débutant] HMM (Modéle de Markov caché )
    Par sara.ber dans le forum MATLAB
    Réponses: 0
    Dernier message: 30/06/2013, 01h23
  2. OpenCV et modèle de Markov caché (HMM)
    Par toppolino dans le forum OpenCV
    Réponses: 0
    Dernier message: 29/03/2012, 22h25
  3. modèle de markov caché
    Par kawther dans le forum MATLAB
    Réponses: 4
    Dernier message: 22/02/2012, 03h25
  4. Reconnaissance video - Modèle de Markov caché
    Par toppolino dans le forum Images
    Réponses: 3
    Dernier message: 15/01/2012, 17h06
  5. [Débutant] [HMM Toolbox] Modèle de Markov caché
    Par aymenbech dans le forum MATLAB
    Réponses: 4
    Dernier message: 13/10/2011, 00h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo