Rhizome

Etat des lieux du projet « Rhizome » sur « SPIP-Zone ». Il ne s’agit pas d’un script fini et cohérent, mais d’une ébauche. A manipuler avec précaution, donc.

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.

Wikipédia nous apprend que le mot vient du grec « ῥίζωμα », « touffe de racines ». Il a pris son sens dérivé de « réseau non centralisé » depuis que Deleuze et Guattari l’ont utilisé dans leur livre « Mille plateaux : capitalisme et schizophrénie ».

Merci à rezo.net pour l’idée géniale de baser la reconnaissance de la proximité entre objets sur le nombre de mots-clés qu’ils ont en commun.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom