par
Joe L » 03 mai 2011, 16:40
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.
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]
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
[/code]
pour le code php:
[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>
[/php]
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.