Je souhaite remplacer automatiquement des mots d'un texte par leur synonyme en utilisant un thésaurus.
Le code que j'ai fait pour le moment donne:
pour le thésaurus (j'utilise seulement une petite partie pour faire des tests dans un premier temps):
Code : Tout sélectionner
Afrique|1
(?)|continent|terre
Amati|1
(?)|violon|viole|alto|Stradivarius
Amériques|1
(?)|continent|terre
Angélus|1
(?)|oraison|prière|Orémus|Pater|Ave|secrète|péroraison|discours
Antarctique|1
(?)|continent|terre
Arctique|1
(?)|nord|septentrion|boréal|polaire|nordique|continent|terre
Ascension|1
(?)|assomption|élévation
Asie|1
(?)|continent|terre
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>UtilisationDico</title>
</head>
<body>
<?php
//$fichier = 'thes_fr.dat'; //le fichier complet
$fichier = 'test_thes.dat'; //fichier de test plus petit
if(!empty($_POST["original"])){
$ori = stripslashes($_POST["original"]);
}
else{
$ori=<<<END
Tu veux aller en Arctique en Antarctique ou en Afrique?
END;
}
?>
<form action="" method="post" >
<h2>Le texte original :</h2>
<textarea name="original" cols="100" rows="10" ><?php echo $ori; ?></textarea><br>
<input type="submit" value="Let's Go" />
</form>
<?php
echo"----------------------------------------------------------------------------";
echo "<br>";
$separer=explode(" ",$ori);
//echo $separer[0]; //test ok
$str = file_get_contents($fichier);
$regexp = '#(([\wazéêèëîïöôùàáâãäåòóôõöøçùúûüÿñß\s ]+)\|1)+[\r\n\s]+\(.*\)((\|.+)+)#xi';
if(preg_match_all($regexp, $str, $out, PREG_SET_ORDER))
{
global $out;
foreach($out as $word)
{
$mot = $word[2];
$liste = array_slice(explode('|', $word[3]), 1);
$synonymes = implode(',', $liste);
//echo $mot." : ses synonymes sont --> ".$liste[0]; //affiche tous les mots et le premier synomyne de chacun présents dans thes_fr.dat OK
//echo $mot." : ses synonymes sont --> ".$synonymes; //affiche tous les mots et leurs synonymes présents dans thes_fr.dat OK
//echo "<br>";
}//fin foreach
for($i=0;$i<count($separer);$i++)
{
if($mot == $separer[$i])
{
echo $liste[0]." ";
}
else { echo $separer[$i]." ";}
} //fin for
}//fin if
?>
</body>
</html>
Le soucis est que le texte en sortie est exactement le même que le texte en entrée.Pourrait-on me venir en aide afin que j'arrive à mon but, à savoir échanger automatiquement les mots en entré par un synonyme.