algorithme de promotion d’article similaire

Algorithme de promotion d'article

L'idée est de faire la promotion sur un article d'autres articles qui peuvent également intéresser le visiteur.

Il existe de nombreuses manières de faire de la promotion d'article, étudions un peu ce qu'il existe.

La nouveauté et la popularité

D'une manière générale, la plupart des gens s'intéressent à ce qui est nouveau et ce qui est populaire.

C'est exactement ce prinicpe que l'on retrouve sur la page d'accueil de facebook. Ce qui est populaire est mis en avant suivant les interactions qu'il y a eu autour d'un objet en particulier. Plus il y a de like, plus il y a de commentaire, plus l'objet sera mis en avant. (mais difficile de déceler quel est exactement l'algorithme utilisé.)

L'algorithme de PageRank de google est également une manière de mesurer la popularité d'un objet. Plus il y a de liens qui pointent sur un objet, plus cet objet sera populaire. Par effet de cascade, un site pointé par des site populaire sera plus populaire qu'un site pointée par le même nombre de site, mais moins populaire.

La nouveauté, c'est le principe qui est utilisé par tous les blog et les site avec des news. On place les articles par ordre chornologique inverse. Ainsi, il est possible de lire en premier les articles les plus récents.

Ce principe est également exploité par les flux atom et rss. Nous sommes notifié de la nouveauté.

Les articles similaires

La popularité d'un article est défnie par des interactions autour de l'objet. La nouveauté est effémère. Quel autre moyen utiliser quand on a peu d'interaction autour d'un objet ?

L'idée est d'utiliser la promotion d'article en proposant des articles similaires. Si un visiteur s'intéresse à un article, il va probablement aussi s'intéresser à un article similaire.

C'est l'idée qui est largement exploitée par le magasin en ligne Amazon.  Pour chaque article, le site propose d'autres articles. Le principe est simple. Ceux qui ont acheté cet article ont également acheté ceci....

Le fonctionnement de cet alogrithme redoutable de Amazon est fait à l'aide d'algorithmes item to item ou slope one.

On parle de l'approche par cosinus ou de similarité de Tanimoto, pour mesurer la similarité entre des vecteurs.

Le système de recommandation d'Amazon est le coeur du magasin. C'est ce qui assure qu'un client vu acheter un article reparte avec 3 articles !

Cet algorithme de similarité est basé sur des interactions des clients.

Quand on toujours que peu d'interaction comment faire pour évaluer la similarité ?

Implémentation d'un alogorithme de similarité basé sur le contenu

Il y a quelques idées qui sont données dans cet article.

Si l'on se base sur le contenu d'un article pour trouver les articles similaires, il y a un grande quantité de données à analyser et ce ne sont pas focrément des données pertinentes.

Une idées est d'utiliser un système de tag associé à un article. Là on sait déjà que les quelques tags utilisés sont pertinent.

L'idée de base toute simple est déjà d'afficher les tags liés à chaque article. En cliquant sur le tag, on obtient la liste des articles qui sont liés.

Le perfectionnement de ce principe est de calculer la similarité des tags associés à des articles pour construire une carte des articles similaires. La fonction php similar_text permet de calculer la similarité entre des chaines de caractères.

Sur le même principe, on peut utiliser le titre d'un document pour calculer les similarités entre les articles.

En pratique

En pratique, il faut fournir le plus de possibilités différentes pour naviguer dans des articles. Ces derniers temps sur facebook on remarque que c'est exactement cette politique qui est mise en place. Il y a toujours plus "d'objet similaires" ou potentiellement intéressants qui sont proposés. Il y a les photos de ses amis, il y les personnes que vous connaissez potentiellement.

Donc ici, le but est d'avoir plusieurs entrées:

  • les articles les plus populaires (il faut ajouter un compteur et un champ pour stocker la valeur)
  • les articles les plus récents
  • les articles les plus commentés (il faut ajouter un champ qui stock dans la table du document le nombre de commentaires)
  • articles les mieux notés. (il faut mettre en place un système de notation.. c'est assez partial... et lourd)
  • propositon des articles similaire par titre et par tags. A voir le plus pertinent
  • Les tags de chaque articles sont affichés pour permettre une lecture transersale.

Quelques essais

Après quelques essais. Il semble que l'algorithme basé sur les tags est plus pertinent que celui basé sur les titres. Bien qu'il y ait quelques exception.

Le titre est parfois trompeur. L'algorithme voit un similarité entre "geek barbu" et "barbare" ... c'est pas top !

Mais pour tout ce qui commence par "recette..." ça fonctionne bien.

Pr contre l'algorithme de basé sur les tags est plus lent. Il a fallu 3 minutes de calcul pour afficher la liste des 5 articles les plus proche des 285 documents existants.

Il faut donc éviter de lancer le script trop souvent ! Mais en fait, tant qu'aucun tag n'a bougé, le classement ne change pas.

L'idée est donc de stocker la liste des articles similaires directement dans la table du document. Puis rafraichir le classement de temps en temps.

Remonter