|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 14 ![]() |
Bonjour ,
Je dois intégrer un moteur de recherche en php à un site intranet pour mon stage. Pour cela la structure de la base a été modifié et une table mot clé a été rajoutée pour extraire les mots clés de chaque document. Donc pour chaque table Document, je dois extraire du champs titre et du champs texte des mot cles que je mettrai dans la table mot cles. Le probleme c'est que je ne sais pas comment éliminer les mots inutiles comme "je le la un des ..." J'ai cherché sur google mais j'ai rien trouvé . Qu'en pensez-vous ? merci d'avance ++ |
|
|
00
|
|
|
#2 | ||
|
Membre actif
![]() Inscription : mars 2007 Messages : 171 ![]() |
Tu peux faire un truc du genre :
Code :
http://fr2.php.net/manual/fr/function.preg-replace.php http://fr2.php.net/manual/fr/referen....modifiers.php |
||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Sinon, tu utlise le 'wildcard' de SQL qui te permet de les ignorer automatique, ou si tu préfère de rechercher un ou des mot sans te soucier de la 'pollution' occasionnée par les autres. Je me fais bien comprendre?
Non?, alors exemple: tu cherche "Férié" (humour, car je bosse aujourd'hui ), alors tu écris;Code :
SELECT * FROM tatable WHERE Mot_Cle LIKE '%Férié%' |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 14 ![]() |
en fait je pense que je vais carrément faire une table qui contiendra tous les mots inutiles et une autre qui contiendra tous les mot clés important de chaque document.
riete je ne peux pas faire ça car je ne cherche pas un mot en particulier je veux prendre tous les mots et enlever ceux qui sont inutiles. |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Tu veux dire que tu veux les exclure de la recherche ou que les ignorer te suffit ?
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 14 ![]() |
Ce que je veux dire c'est qu'il y a une table Mot-clé qui va contenir tous les mots clés de tous les documents existants.
Cette table contiendra une liste de mots et chaque mots aura une ou plusieurs correspondances vers un code de document. Et ma recherche je la ferais directement dans cette table Mot-clé. Dès qu'un mot cherché correspond à un mot de cette table Mot-clé je vais chercher le ou les code de documents correspondant et j'affiche le résultat. Mais dans cette table, je ne veux pas trouver des mots qui ne servent à rien tels que parce que, pourtant cependant ... et je ne sais pas comment filtrer ces mots. C'est pour cela que j'avais pensé à créer carrément une autre table contenant tous les mots à éviter. MAis je ne sais toujours pas comment la remplir |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Je crois que je commence à comprendre un peu mieux...
Peut être que je me trompe mais "Tout les mots qui ne sont pas des mots clef sont peut être des mots inutiles" non ? Dans ce cas, s'est ta procédure de définition des mots clé qui se chargera de faire la distinction. Je crois que la questions principale comment détermine qu'un mot est un mot clé ? est ce l'utilisateur qui le définit ? Je suis désolé de ne pas t'aider plus, mais il faudrait que je comprenne bien ce que tu veux faire pour essayer de te proposer une idée. A+ |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 14 ![]() |
Non c'est à moi de me de***der pour savoir si un mot est pertinent pour une recherche ou pas. Donc voila tout le problème car on peut pas faire un script qui classe les mots en fonction de leur pertinence.
Donc je prends tous les mots de chaque documents et il faut que je les filtre en les comparant avec une liste de mots inutiles que je cherche depuis des jours sur internet mais que je ne trouve pas. Je vais donc sûrement devoir en faire une moi même et créer une interface qui permettra facilement d'aller rajouter quand on veut des mots inutiles dans cette liste.Car je ne vais pas tous les trouver du premier coup. PS : Je suis désolé si j'explique pas très bien j'ai toujours eu du mal dans ce domaine. |
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Citation:
Je me demande si tu ne devrais pas faire une sorte de programme qui "scan" un dictionnaire, duquel du extrait les "mots inutiles" en les faisant défiler. Mais quel boulot !! J'ai beau réfléchir, mais je ne vois pas de méthode fiable pour extraire ces mots. Je vais réfléchir et si je trouve une idée, je te la vends ... ![]() Non, non, sérieux s'est non trivial ton truc, je me demande s'il y a une solution. Citation:
|
||
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 14 ![]() |
Ben en fait je pense qu'il n'y a pas de solution miracle, obligé de faire de l'à peu près...
Quand même je ne pensais pas que c'était si galère à coder un moteur de recherche !!! merci quand même pour ton temps et ta patience |
|
|
00
|
|
|
#11 | ||
|
Membre éprouvé
![]() ![]() Inscription : août 2006 Messages : 313 ![]() |
Sur un de mes projets, j'avais fait un script rapide PHP-CLI d'indexation :
- je charge un texte - je supprime toute mise en forme (tout le balisage xhtml, les accents, les majuscules) - je supprime tous les mots de moins de 4 caracteres (un peu bourrin à ce niveau, cette condition etait justement pour éliminer les mots parasites mais tu peux l'oublier et appliquer la méthode plus bas) - je décompose la chaine obtenu en tableau (un mot par tableau) - j'utilise la fonction php array_count_values pour obtenir le nombre d'occurence pour obtenir un tableau contenant le nombre d'occurence dans le texte. A partir de la, les 5 premiers mots etaient considérés comme mot clef du texte. Pense à la sémantique des balises xhtml, ca peut etre pratique pour ça : - contenu des balises h1, h2, h3, strong, em (ces balises encadrent des mots clefs) Pour l'élimination des mots parasites, j'avais pensé à cette méthode mais je ne l'ai jamais appliqué : - Elle est simple mais couteuse en ressource (en meme temps, tu ne dois pas indexer toutes les 5 minutes) : Tu prends le contenu de ta base obtenu. Tu récupères les mots clefs 1 par 1. Tu regardes le nombre d'occurence. -Si tu as moins de 5% des articles qui possèdent ce mot, c'est un mot clef important. -Si tu as plus de 50% des articles qui contiennent ce mot, c'est un mot parasite. (J'ai donné les coefficients au hasard, à toi de les définir) Programmer ça, ce n'est pas tres difficile. C'est tres bourrin comme méthode mais si tu indexes tes documents une fois par jour, ce n'est pas un soucis (a condition de ne pas avoir 400 000 pages ^^). Rien ne t'oblige à faire ce script en PHP, le java ou meme le C sera plus rapide sur ce genre d'opération. Je te colle le code de la classe que j'avais ecrit pour l'extraction d'un texte, ça pourra peut etre t'aider : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com