Fonction de Content Spinning en vb.net (VS2010)

cs_Yanism Messages postés 2 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 16 mars 2011 - 16 mars 2011 à 10:31
TUHABITES Messages postés 41 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 21 avril 2011 - 21 avril 2011 à 14:34
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

TUHABITES Messages postés 41 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 21 avril 2011
21 avril 2011 à 11:30
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);
}
0
TUHABITES Messages postés 41 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 21 avril 2011
21 avril 2011 à 14:34
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);
        } 
0
Rejoignez-nous