Voilà, je cherche un algo plus optimisé (s'il existe) que celui que j'ai mis oeuvre actuellement. Pour résumer, j'ai une page web avec un texte (plus ou moins long) et je veux vérifier s'il n'existe pas dans une BD (Mediawiki) un article portant le même nom (titre) qu'un mot ou un groupe de mots (j'ai limité à 4 mots le groupe) dans le texte.
Actuellement, mon algo est assez bourrin puisque je procède ainsi :
1) nettoyage du texte (je vire une liste de mots prédéfinies, genre le la les dans et car... plus les nombres et ponctuation) -> ça me donne une liste de mots "pertinents"
2) pour chacun de ces mots restants, je regarde s'il n'existe pas dans la BD un article ayant le même titre. Si oui, stop, j'affiche sur le mot, un lien hypertexte pointant sur l'article de mediawiki, sinon, je fais la même vérification avec le mot initial + les 3 mots suivants (mais pris dans le texte original histoire d'avoir là, pour le coup, les mots genre le la les...).
Ex : J'ai le texte suivant :
Citation :
Le petit chat se promène dans la forêt. Il est bien content.
|
Avec mon algo, la phase 1 va me donner la liste de mots : petit, chat, promène, forêt, est, bien, content.
Phase 2, je boucle sur ma liste, pour le premier mot, je vais donc lancer les requêtes suivantes dans la BD :
1) un article existe portant le titre "petit"? oui -> stop, sinon on continue
2) un article existe portant le titre "petit chat "? oui -> stop, sinon on continue
3) un article existe portant le titre "petit chat se"? oui -> stop, sinon on continue
4) un article existe portant le titre "petit chat se promène"? oui -> stop, sinon on continue
Sur des textes de plusieurs 10ènes de mots, ça commence à faire pas mal de requêtes SQL
Je précise que mes textes sont dans un contexte technique (pas littéraire) du coup, j'ai une majorité de cas où la recherche d'un article sur un seul mot retourne un enregistrement.
Merci
---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta