Fonction de Content Spinning en vb.net (VS2010)

Signaler
Messages postés
2
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
16 mars 2011
-
Messages postés
41
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
21 avril 2011
-
Bonjour, j'aimerais savoir si quelqu'un à déjà fait l'équivalent d'une fonction php de content spinning récursive en vb.net ?
J'ai fait quelques test en vb.net mais rien de concluant pour l'instant.
Et dans la foulée, si quelqu'un à une fonction pour créer le texte spinné à envoyer à la fonction de spin qui transformerait donc "texte motcle texte" par "texte {motcle|synonime1|synonime2|synonime3} texte" à partir d'un tableau de mots clés (et leurs synonimes). Cette partie me semblait moins difficile or je ne sais pas comment faire pour bien détecter les mots clés dans le texte quand ceux ci sont par exemple en fin de phrase avec un "." juste après, ou précédés d'une "," ou lorsque je veux garder la casse pour un mot en début de phrase avec une majuscule. Bref autant de cas à gérér qui me posent problème car je ne sais pas comment créer une sorte de masque pour la detection de ces mot clés.


Pour la fonction de spinning en tant que tel, voilà un exemple en php que j'ai trouvé ici
function Spin($txt){
$pattern = '#\{([^{}]*)\}#msi';
$test = preg_match_all($pattern, $txt, $out);
if (!$test) return $txt;
$atrouver = array();
$aremplacer = array();
foreach($out[0] as $id => $match)
{
$choisir = explode("|", $out[1][$id]);
$atrouver[] = trim($match);
$aremplacer[] = trim($choisir[rand(0, count($choisir)-1)]);
}
$reponse = str_replace($atrouver, $aremplacer, $txt);
return Spin($reponse);
}


Merci d'avance

2 réponses

Messages postés
41
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
21 avril 2011

Voilà.
Fais en bon usage.

string petitSpin(string s){
if(!s.Contains("{")) { return s;}
else
{Regex rr = new Regex;
int nb = rr.Matches(s).Count;
foreach(Match m in rr.Matches(s))
{string[] mots=m.Groups[1].Value.Split("|"[0]);
Random rnd=new Random();
s=s.Replace(m.Groups[0].Value,mots[rnd.Next(0,mots.Length-1)]);
}
return petitSpin(s);
}
Messages postés
41
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
21 avril 2011

Il y a quelques petites erreure:
 
string petitSpin(string s){         
        if(!s.Contains("{")) { return s;}
        else
        {Regex rr = new Regex("{([^{}]*)}");
        int nb = rr.Matches(s).Count;
        foreach(Match m in rr.Matches(s))
        {string[] mots=m.Groups[1].Value.Split("|"[0]);
         Random rnd=new Random();
         s=s.Replace(m.Groups[0].Value,mots[rnd.Next(0,mots.Length)]);
        }
return  petitSpin(s);
        }