trouver les mots clés d'une page/d'un texte

  • Auteur de la discussion Auteur de la discussion yann214
  • Date de début Date de début
WRInaute occasionnel
Salut,

j'ai besoin de trouver rapidement les x (à définir) mots clés qui représentent un texte (ou une page web).
Quelqu'un aurait-il un algo simple à partager ?
Pas besoin que ce soit un truc super complexe.

Merci !
 
WRInaute accro
del le message
car les outils WRI permettent de le savoir mais c'est un algo qui est demandé ??
 
WRInaute occasionnel
Je me suis mal exprimé :

Ce dont j'ai besoin, c'est d'un script php (à intégrer à mes scripts) qui ferait une analyse d'un contenu (texte) pour en déterminer les mots clés.

Je ne cherche pas un service web qui me les donnerait. Mais merci quand même, ça pourra servir à d'autres :)
 
WRInaute occasionnel
lol j'y arriverai pas...

En fait ça n'a rien à voir avec Google et ses mots clés.

Je veux juste trier différents contenus que j'apporte sous la forme de textes à mon site.
Pour faire ce tri, mon script doit déterminer les mots clés de ces textes.

Il ne faut pas que j'ai recours à un autre site.

Merci encore !
 
WRInaute passionné
J'ai planché sur le problème car j'ai mis cela en place depuis peu.

Avant je me servais du BBcode dans ma base de données.

Pour mettre automatiquement des mot en gras ou faire ce que tu veux, voici ce que j'ai créer pour moi-même.

Tout d'abord, tu indiques dans une variable dans la page ou dans une BDD ta liste de mots, puis tu applique le code suivant :

Avec ce principe, tu peux géré une expression ou un mot seul.

Code:
$keyword = (mot clé, suvant, encore un autre, mots, encore un, etc); // Pour ma part, cette variable est inséré dans une BDD
$motGras = str_replace(', ', '|', $keyword); // préparation de la chaine des mots à mettre en gras
$chaine = preg_replace('/([^\.,]\b)('.$motGras.')(\b)/Ui', '$1<strong>$2</strong>$3', $chaine); // mise en exergue des mots sauf ceux issus d'une url par ex (le point ou une virgule juste avant un mot.

Cela te permet de définir des mots-clé différent sans insertion de BBcode.

Je vais reprendre tout mon site sur ce principe.

Dans le même ordre d'idée, pour mon glossaire, les liens qui pointent vers des définitions, sont basé sur du BBcode.

Pour ne plus me prendre la tête avec cela je vais m'y prendre un peu différemment sachant que je ne pourrais pas me permettre d'appliquer un preg_replace sur plusieurs milliers de mots éventuel pour les définitions.

Dans ce cas précis, je procède en plusieurs étapes :

Je découpe le texte en insérant dans un tableau indexé tous les mots séparé, ainsi que les espaces, ponctuations, etc. :

Code:
$keywords = preg_split("/([\s,\.()]+)/", $chaine, -1, PREG_SPLIT_DELIM_CAPTURE);

Ensuite je compare ce tableau avec le tableau des mots ayant une définition ($defin) , pour en créer un troisième qui contiendra uniquement les mots en commun aux deux tableaux :
Code:
$commun = array_intersect ($keywords, $defin);

Une fois que j'ai ce nouveau tableau avec les mots contenus dans le texte ET ayant une définition, je reprend le même code que pour la mise en exergue, mais en y mettant le lien vers la définition.
 
WRInaute accro
@medium69 : sympa pour l'astuce (d'autre part j'étais tombée sur quelque chose d'un peu similaire à ta solution) mais je ne crois pas que ce soit ce qu'il cherche... ou me trompe-je ??


En fait, si j'ai bien compris,
il faudrait un champ texte sur ton site où tu saisis ton texte
et quand tu valides,
ça te donne la liste des mots clefs représentatifs de ce texte
et ainsi tu pourrais déterminer à quelle catégorie existante (de ton site) le texte appartiendrait ?
(ou le script comparerait cela tout seul pour l'insérer directement au bon endroit)

Bref un script (ou une fonction) qui récupère le texte en entrée et qui retourne la liste de mots clefs dans un tableau. Et tu pourrais manipuler ce tableau pour trier et ranger le texte comme bon te semble.
 
WRInaute occasionnel
Excatement dd32 !!!!
voilà toi tu sais l'expliquer :)

merci pour l'astuce medium69, c'est un très bon truc aussi.
 
WRInaute accro
En soi ce ne serait pas compliqué mais ce qui me manque ce sont les critères pour déterminer que des mots-clefs sont représentatifs du texte et notamment du contexte... c'est plus chaud déjà non ?
 
WRInaute passionné
un traitement du tableau retourné par str_word_count() ne ferait pas l'affaire ?

C'est une approche simpliste, mais qui pourrait peut-être aller dans un premier temps.

1. Tu connais le nbr de mot : taille de ton tableau
2. Tu compte tout les mots qui font plus de n caractères ( à toi de fixer n)
3. Tu calcule la fréquence de tout les termes
4. Tu classe ton tableau résultat par fréquence décroissante.
5. Tu considère que les mots les plus fréquents sont les mots clés de ta page.

Au fur et à mesure tu affines ton tableau résultat en mettant en place une liste de stopword.
Cette liste contient tout les mots que tu considére comme non pertinent et que tu veux pas avoir comme mot-clé.


Je ne sais pas si la fct str_word_count_est performante ou pas.
Il me semble que le param charlist pourrait te simplifier la vie => pb dispo à partir de php 5.1.0 seulement
 
Discussions similaires
Haut