Un site sous SPIP se présente souvent comme une structure hiérarchiquement organisée : des rubriques contiennent un certain nombre de sous-rubriques et récursivement, formant une arborescence. Chaque élément de contenu (article, brève, site) est situé à un endroit précis dans cette arborescence.
Si cette forme de structuration des données présente d’indéniables intérêts — en particulier le fait d’être régie par une « logique » à laquelle tout internaute ayant déjà croisé un ordinateur dans sa vie est peu ou prou familiarisé —, elle n’est pas la seule concevable ; il suffit de penser à la manière, beaucoup plus libre, dont s’organise un site Wiki, par exemple, pour s’en convaincre.
Le présent article se propose de présenter une forme alternative d’organisation d’un site web avec SPIP et de donner un premier jeu d’outils permettant sa réalisation.
Objectifs
Nos objectifs seront les suivants :
- Créer une navigation « de proche en proche » : sur la page de chaque objet seront présentés des liens vers d’autres objets — l’objectif sera que ces liens soient pertinents. Notez que, dans le présent travail, nous abandonnons les objets « rubrique » (nous placerons tous les objets — articles et sites syndiqués — dans une seule et unique rubrique) et « brève » (relativement redondante avec « article » et présentant quelques limitations gênantes), mais il n’est pas très compliqué de les réintégrer ultérieurement.
- Automatiser complètement la gestion des liens entre objets. En effet, une gestion manuelle des liaisons, en plus d’être pénible et très difficilement « exhaustive », ferait perdre l’essentiel de l’intérêt de la chose, à savoir la mise en évidence de liaisons entre différents objets dont on ne percevait pas nécessairement d’évidence la proximité sémantique. Tout le sel de cette contribution sera donc de mettre au point l’algorithme le plus efficace pour identifier les objets les plus proches d’un autre objet.
- Faire reposer une grande partie des liaisons entre objets sur des mots-clés (qui seront eux-mêmes considérés comme des objets de contenu) qui présentent l’avantage énorme de pouvoir être liés à chaque autre type d’objet (articles, sites) sauf les auteurs de façon très conviviale dans l’interface privée de SPIP.
- Baser le tout dans un filtre unique, que nous nommerons... rhizome (attention à l’orthographe) et que nous appellerons schématiquement de la façon suivante :
[(#ID_RESSOURCE|rhizome{'type d'objet'})]
Démarche
Pour chaque objet, nous allons construire un indice de pertinence de liaison par rapport à un autre objet — dont la valeur sera comprise entre 0 et 1 — qui représentera la proximité sémantique entre ces deux objets. Ce premier indice aura la propriété d’associativité : l’indice de pertinence de A par rapport à B sera identique à celui de B par rapport à A.
Nous créerons ensuite un second indice, dit indice d’intérêt propre, censé représenter la richesse d’un objet pris isolément (taille du contenu, nombre de liaisons...). La justification de ce second indice est de diriger préférentiellement la navigation vers les lieux les plus fournis en information et d’éviter que la navigation n’aboutisse trop souvent dans un cul-de-sac.
Nous pondérerons ensuite notre premier indice par le second, pour obtenir l’indice final, en fonctions duquel nous générerons l’affichage des liens entre objets : l’intégration du second indice dans l’indice final pourra avoir pour conséquence que certains liens seront à sens unique : un objet possédant un faible intérêt propre pourra contenir un lien vers un objet à fort intérêt propre sans que la réciproque soit vraie.
Code
Une toute première version du machin est disponible sur SPIP-Zone à l’adresse http://zone.spip.org/trac/spip-zone...
Récupérez une copie du fichier inc-rhizome.php3
, réglez-en la configuration en l’ouvrant avec n’importe quel éditeur texte et en suivant les instructions. Placez ce fichier à la racine de votre site et appelez-le dans mes_fonctions.php3
en y ajoutant la ligne suivante :
//
// Le rhizome
//
require("./inc-rhizome.php3");
Ensuite, dans le squelette d’un mot-clé (seul cas déjà fonctionnel, mais d’autres vont suivre), écrivez :
[(#ID_MOT|rhizome)]
Remarques
- Bien qu’ayant été testé avec succès sur une grosse base de données SPIP (~7 000 articles et 500 mots-clés), le filtre rhizome est susceptible d’affecter sensiblement les performances de votre site en raison du nombre important de requêtes MySQL qu’il nécessite.
- La pertinence des données est bien sûr toute relative et est largement liée à la construction des indices, lesquels reflètent évidemment certains jugement de valeur propres à l’auteur du code. Il est possible de paramétrer le code de façon assez détaillée pour modifier le calcul des résultats. Vous seront en particulier utiles pour modifier les résultats fournis par le filtre rhizome
: la pondération des différents indices entre eux ou le choix de la fonction de calcul des indices.
- Tout retour d’utilisation, tant au niveau de la pertinence de l’outil que de ses performances, est hautement bienvenu à l’adresse francois (at) schreuer (point) org.
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |