Content Spinning : Qu'est ce qu'un spin ? Définition et algorithmie

Petite base de réflexion à l'intention des développeurs d'outils de text spinning et autre {passionnés|professionnels} de content spinning.

seo text, spin text, spin seo, spinning seo, spin definition, text spinning, definition spin seo, text spinner, seo spinning, master spin seo, seo spin, seo exemple de spinning, exemple de master spin, spinner seo, masterspin

Date de publication : 2011-12-03 11:54:02

Cet article a pour but de poser une base pour un échange avec SeoBlackInside, alexaloola1 et d'autres pour un échange constructif sur les problématiques liées au développement de text spinner.

Vous n'y trouverez que des pistes et pas de code à copier coller.

Toi, l'autre, le non développeur, tu peux aussi survoler cet article pour acquérir un peu de vocabulaire et te faire une idée de ce que les outils que tu utilises tous les jours ont dans le bide.

Qu'est ce qu'un spin ? Et autres définitions

Un spin est une chaine de caractères avec des substitutions permettant de générer des textes automatiquement.

Pour ne pas tout mélanger, un vocabulaire est née autour du spin. D'un coté le master spin qui est la chaine de départ. De l'autre les spuns qui sont les résultats obtenus à partir du masterspin.

Exemple simple de masterspin :


{Ce matin|Hier soir}, j'ai {décidé|eu {envie|le besoin}} d'écrire un article sur le spin.

Un spin peut donc être assimilé à un texte à trous.

L'imbrication (ou le spin récursif) "{décidé|eu {envie|le besoin}}" peut tout à fait être réécrite sur un niveau avec :


{Ce matin|Hier soir}, j'ai {décidé|eu envie|eu le besoin} d'écrire un article sur le spin.

Le spin récursif n'est utile que pour des raisons de praticité et de cosmétique.

Si on fait une première analyse de ce master spin nous avons :

  • 2 trous : "{Ce matin|Hier soir}" et "{décidé|eu {envie|le besoin}}".
  • 5 remplacements (ou substitutions) : "Ce matin", "Hier soir", "décidé", "eu envie", "eu le besoin".

Maintenant que le vocabulaire est un peu plus clair j'envoie {la {sauce|semoule}|le pâté} ;)

Nombre de résultats d'un spin

Avec ce texte spinné de départ il est possible d'obtenir 6 textes uniques :


Ce matin, j'ai décidé d'écrire un article sur le spin.
Hier soir, j'ai décidé d'écrire un article sur le spin.
Ce matin, j'ai eu envie d'écrire un article sur le spin.
Hier soir, j'ai eu envie d'écrire un article sur le spin.
Ce matin, j'ai eu le besoin d'écrire un article sur le spin.
Hier soir, j'ai eu le besoin d'écrire un article sur le spin.

Ici, unique est utilisé dans son sens premier : aucun spun n'est strictement égale à un autre.

Le nombre de résultats d'un spin dépend de sa structure (nombre de trous) et du nombre de substitutions qui le composent. Pour trouver le nombre de résultats uniques je procède comme suit :

  • Compter le nombre résultats de chaque trou.
  • Multiplier le nombre de résultats de chaque trou par les autres.

Le premier trou a 2 résultats (sans récursivité 1 substitution = 1 résultat).
Le second trou a 3 résultats.
Le nombre de résultats du spin est donc de 2*3 = 6.

Représentation d'un master spin en arbre

Derrière chaque developpeur web se cache un arboriculteur. L'arbre est une représentation souvent utilisée en algorithmie pour représenter des objets.

Pour échanger, mais aussi pour faire les choses correctement, je vais vous présenter comment je représente un spin en arbre.

On l'a vu un spin est un texte à trou. Pour le représenter nous avons donc d'un coté les trous, de l'autre le texte. Avec ces informations, le developpeur php moyen nous pond une classe :


<?php
class Spin_Tree
{
/**
* Contient le texte à trou
* @var string
*/
public $str = '';
/**
* Contient les trous
* @var array
*/
public $holes = array();
}
?>

Pour le texte à trous (la variable $str) je ne me suis pas foulé pour lui trouver un format. Pour le master spin de départ elle vaut :


{0}, j'ai {1} d'écrire un article sur le spin

"{0}" correspond au premier trou, et "{1}" le deuxième. (Nous, les dev', nous sommes un peu tordu premier = 0 ^^).

Le tableau $holes contient les trous (et PAS LES SUBSTITUTIONS). Dans notre exemple il contient donc deux trous.

Représentation d'un trou

C'est le moment où, normalement, les {a|}mateurs de trous piaffent d'impatience (seo are pervert and developer sex maniac). Un trou va être remplacé dans notre chaine par des substitutions. Il contient simplement les arbres des différentes substitutions.


<?php
Spin_Hole
{
public $trees = array();
$this->treesCount = 0;
/**
* Ajouter un arbre au trou
* @param Spin_Tree $tree
*/
public function addTree($tree)
{
$this->trees[$this->treesCount] = $tree;
$this->treesCount ++;
}
}
?>

Et cet arbre, il a quelle tronche ?

Comme dit dans l'intro, le but de tout ça n'est pas de vous donner un code ready to paste, mais de lancer la discussion. Voici donc la structure de l'arbre pour le spin de départ :


"{0}, j'ai {1} d'écrire un article sur le spin."
| |
| *---*
*-"Ce matin" |
|
*-"Hier soir" |
*-"décidé"
|
*-"eu {0}"
|
*-"envie"
|
*-"le besoin"

Pourquoi se triturer l'esprit avec un arbre ?

Tout simplement parce que je n'ai pas trouvé d'autre moyen pour :

  • Générer tous les spuns d'un master spin.
  • Trouver facilement le nombre de résultats total.
  • Générer des spins de manière non aléatoire.

Ce que je n'ai pas dit dans cet article

  • Sp1n.me utilise cette technique en javascript.
  • J'ai du recoder en php le javascript pour me rendre compte que je dépassais facilement la taille des floats php (Utilisation de bcmath recommandée)
  • J'hésite à partager ma classe php qui parse l'arbre et génère les spuns (le tout en récursif, je précise pour les personnes qui n’apprécient pas ;).
  • Cdillat est sexuellement attirée par ce beau gosse de aymerictwit (<= une manière comme une autre de dire merci).

 

Connaissez-vous Antoine Sentimancho ?

Non ? Honte à vous, Antoine c'est un drogué de la SERP, un dopé du Sentimancho, un vrai dingue qui te propose de mesurer la puissance de ton p*n*s site via le Virank™.

On échange ?

Il reste 6 places à prendre ici, donc si tu as un site de communiqué de presse : envoi un mail

 
 

b1n@sp1n