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

Langage PHP Discussion :

Extraction de mots clés pour nuage de tags


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 12
    Points
    12
    Par défaut Extraction de mots clés pour nuage de tags
    Bonjour à tous.

    Je suis actuellement en train de développer un site web agrégeant de nombreux flux RSS (actuellement plus de 1200 flux) provenant de Blogs et de Twitter sur le vin, dans de multiples langues. La plupart des fonctionnalités sont déjà toutes développées, sauf une qui consisterait à créer un nuage de tags à partir des mots les plus utilisés dans tous les articles que je récupère.

    Mais voilà, mon problème, c'est de parvenir à extraire les mots et expressions clés des articles. J'ai fait de nombreuses recherches et j'ai trouvé des articles parfois intéressants mais tous beaucoup trop théoriques, théories à base de logique floue, réseaux neuronaux, découpage thématique, modèle de Markov caché... Bref, des trucs qui dépassent pas mal mes connaissances.

    Au départ, j'étais parti sur une solution qui consiste à supprimer tous les mots de liaison (j'ai trouvé à ce sujet des "stop lists" : http://www.web-mining.fr/methodes/stop-words) mais cela reste très insuffisant. J'ai aussi un problème concernant les expressions clés. En effet, si je fais un explode() sur les espaces, certaines expressions qui seraient pertinentes sont évidemment découpées en plusieurs mots qui se retrouvent sans aucune pertinence.

    Si vous avez des solutions ou, encore mieux, du code, permettant de m'aider, je suis preneur.

    Si vous avez besoin de plus de précisions, j'essayerai, dans la mesure du possible, de vous les donner.

    Merci de votre lecture et merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Salut,

    J'y est pas trop réfléchi mais voici la première idée qui me passe par la tête :

    Prenons comme exemple ce texte :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    Ceci est le texte d'un article que tu récupère via un flux rss ! Il peut contenir toute sorte de caractères spéciaux comme €, ¶ ou ƒ.

    La première étape serait de remplacer les accents par leur lettre correspondante, remplacer tous les caractères spéciaux par des espace et combiner les espace multiples en un seul.

    Ce qui devrais donner un truc qui ressemble à :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    Ceci est le texte d un article que tu recupere via un flux rss Il peut contenir toute sorte de caracteres speciaux comme ou

    Ensuite avec la fonction php explode par exemple tu découpe tous les mot de ton article.

    Enfin dans une base de donnée, tu cré une table avec 2 champs : le mot et le nombre d'occurrences que tu rempli avec ce que tu as récupéré juste avant.

    Et tu fais ça pour chaque nouvel article de flux

    Peut être devrais tu te limiter aux mots de plus de 3 lettres ?

    C'est la premiere étape, ensuite si tu veux gérer des expression il va faloir un peu l'adapter

  3. #3
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Salut,

    Merci pour la réponse.

    Se limiter aux mots de plus de 3 lettres ne convient pas car ça voudrait dire que le mot "vin" passerait à la trappe. ^^
    De plus, certains mots qui pourraient avoir plus de trois lettres (au hasard, les verbes) ne m'intéressent pas forcément dans les mots clés. Et c'est là que je bloque. Comment savoir si un mot et un verbe ou non. A priori, je ne vois pas trop de moyen, à moins de passer par une base de données recensant tous les verbes et leurs différentes conjugaisons (et ceci dans plusieurs langues).

    Questions :
    Pourquoi remplacer les lettres accentuées par leur correspondant non accentué ?
    Une idée la regex à utiliser pour enlever les espaces multiples ? Un truc comme ça peut-être : / {2,}/ ? J'ai un doute sur la représentation de l'espace dans une regex.

  4. #4
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Pour les lettres accentuées, c'est car tu risque avoir pas mal de doublons de mot orthographié avec ou sans les accents.

    téléphone, télephone, teléphone, telephone

    ça donne 4 mot différent :/

    sinon pour le regex des espaces multiples je pense que / +/ devrais suffir

    Apres pour les mot qui ne t'interesse pas à la limite soit tu peux établir une blackliste, ou alors rajouter un 3eme champ dans ta base qui te permettra de dire si le mot doit etre ou pas afficher dans le nuage.

    Mais dans tous les cas ça va demander une action manuelle

  5. #5
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Salut,

    Pour les lettres accentuées, c'est car tu risque avoir pas mal de doublons de mot orthographié avec ou sans les accents.

    téléphone, télephone, teléphone, telephone

    ça donne 4 mot différent :/
    Oui en effet, il se peut qu'un même mot soit écrit de la même façon. Le problème si j'enlève les accents, c'est que le mot deviendra inutilisable pour une recherche dessus. Dans mon nuage de tags, chaque mot est un lien vers une page de recherche sur ce mot.

    sinon pour le regex des espaces multiples je pense que / +/ devrais suffir
    Suis-je bête. -_-"

    Apres pour les mot qui ne t'interesse pas à la limite soit tu peux établir une blackliste, ou alors rajouter un 3eme champ dans ta base qui te permettra de dire si le mot doit etre ou pas afficher dans le nuage.

    Mais dans tous les cas ça va demander une action manuelle
    La solution du 3ème champ de ma base me semble moins fastidieuse à mettre en place.

    Bon, j'abandonne l'idée de développer une IA capable de générer une liste de tags pertinente. x)

    Merci, problème résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraction de mots clés
    Par Olive1808 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 01/02/2016, 20h49
  2. mots fréquement utilisés : nuage de tag
    Par soung dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/09/2012, 20h13
  3. programmer en java l'extraction des mots clés sur un site web
    Par industrielle dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 21/12/2008, 14h53
  4. [MySQL] Renommer des mots-clés pour un moteur
    Par jlb59 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 19/10/2008, 10h39
  5. [Système] quelques mot-clés pour apprendre
    Par aspo dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2007, 15h14

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