Page 1 sur 1

Utilisation Thesaurus

Posté : 03 mai 2011, 16:40
par Joe L
Bonjour,
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
pour le code php:
<!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.

Re: Utilisation Thesaurus

Posté : 03 mai 2011, 18:21
par stealth35
pas besoin de regexp pour ça, ton fichier ressemble un CSVcouplé a str_replace et le tour est joué

Re: Utilisation Thesaurus

Posté : 03 mai 2011, 19:53
par Joe L
Je ne vois vraiment pas comment procéder avec un csv.
Ma regexp fonctionne parfaitement, c'est juste au niveau de la boucle for que je ne vois pas comment coder pour l'échange de mots.

Re: Utilisation Thesaurus

Posté : 03 mai 2011, 21:04
par moogli
yop,

je pense que stealth35 pense, par exemple à str_getcsv qui te permet (en utilisant le | en séparateur) d'utiliser str_replace qui prend en paramètre des tableaux, ce qui peut simplement éviter la regexp ;)



@+

Re: Utilisation Thesaurus

Posté : 04 mai 2011, 10:45
par Joe L
Je ne vois pas comment faire, un exemple de codage serait vraiment sympa.