Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/06/2007, 18h27   #1
Invité de passage
 
Inscription : mars 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 20
Points : 3
Points : 3
Par défaut [Conception] Traducteur en ligne en PHP & probleme str_replace

Bonjour à tous,

je suis en train d'essayer de programmer en PHP un "petit" traducteur en ligne entre 2 langues. Cependant je suis confronté à un problème.
Au départ, j'identifiais tous les mots d'un texte à traduire pour le mettre sous forme de ARRAY. Ensuite je traduis mot à mot pour réafficher le résultat. Jusque là pas de problème.

mais parfois, le sens de la traduction se perd, c'est pourquoi j'envisage non plus de traduire en mot à mot mais par groupe de mots.

Exemple simple (situation actuelle) :
I LIKE THIS DOG
passage en ARRAY("I","LIKE","THIS","DOG")
traduction "JE AIME CE CHIEN"

Dans ma base de données j'ai deux champs :
anglais | francais
I | JE
LIKE | AIME
THIS | CE
DOG | CHIEN
I LIKE | J'AIME

Situation souhaitée :
Je souhaiterais donc qu'il prenne en priorité d'abord les champs ou il y a 2 mots avant de prendre la traduction en mot à mot. Donc je souhaiterais qu'il m'affiche en résultat :
"J'AIME CE CHIEN" plutot que "JE AIME CE CHIEN".

Je pense qu'il va falloir que j'abandonne le système de ARRAY, mais je ne sais pas comment m'y prendre pour opter pour cette deuxième solution.

J'espère que je suis clair !

Merci pour votre aide précieuse, car je débute en PHP...

Francois
sonno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 18h35   #2
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
Sans vouloir jouer les critiques abrutis, je tiens quand meme a te dire que tu te lances dans une drole d'aventure car tu vas rebondir de cas particulier en cas particulier et celà va etre coton pour toi de faire un traducteur fiable (quand tu vois le nombre d'années qu'il a fallu par exemple à google pour sortir des traductions potables...).

Ceci dit, il se peut que ton domaine soit bien limité et que tes traductions n'aient pas pour but d'être fiables à 100% je ne crois pas qu'il soit possible en une seule requete de répondre à ta demande. Maintenant, je ne suis pas spécialiste dans ce domaine.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 18h44   #3
Invité de passage
 
Inscription : mars 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 20
Points : 3
Points : 3
Oh que oui je me lance dans un script de dingue ! Mais ce traducteur en ligne n'existe pas sur la toile ! En tout cas je ne l'ai pas trouvé après de nombreuses semaines de recherches...
Bien entendu j'ai pris un exemple en anglais pour qu'il soit compréhensible de tous, mais la langue à traduire n'est pas de l'anglais.
J'espère que mon projet arrivera à se concrétiser, si tel n'est pas le cas, je me contenterai du mot à mot mais c'est parfois très embêtant
Francois
sonno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 21h56   #4
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
dans ta table, rajoute un champ où tu indiques le nombre de mots comme ça tu pourra faire un tri sur ce champ
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 06h31   #5
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Bonjour,

J'ignore la langue que tu veux traduire, mais il y a ça :
http://trans.voila.fr/voila
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 09h48   #6
Invité de passage
 
Inscription : mars 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 20
Points : 3
Points : 3
Merci pour votre aide ! En effet l'ajout d'un champ avec le nombre de mots me semble une bonne idée, je vais déjà creuser ça, à défaut d'autre chose.
D'autres idées seront les bienvenues bien entendu !
Je cherche à traduire du norvégien.... Et je n'ai trouvé aucun traducteur en ligne qui le faisait. Donc je me lance !
Francois
sonno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 10h14   #7
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Et ça :
http://www.azoria.com/lexikon/
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 17h08   #8
Invité de passage
 
Inscription : mars 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 20
Points : 3
Points : 3
C'est un dictionnaire suédois et non norvégien. De plus je cherche à faire un traducteur de texte et non un "simple" dictionnaire. Mais merci pour le lien car je ne le connaissais pas !
Francois
sonno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2007, 22h20   #9
Invité de passage
 
Inscription : mars 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 20
Points : 3
Points : 3
C'est encore moi !
J'avance petit a petit, mais je suis confronté à un problème de gestion avec str_replace
J'ai ma liste de mots norvégiens et français placés chacun dans un tableau ARRAY.
Le seul "hic" c'est que dans mon tableau norvégien j'ai une occurence qui est la lettre "i" qui signifie en français "en" et quand je fait un :
$traduction_finale = str_replace($tab_norvegien, $tab_francais, $text_norsk);
Il me modifie chaque mot norvégien ou il y a la lettre "i" en "en".

par exemple le mot norvégien "familie" se traduit par "famille" en français, mais après le passage de la fonction str_replace je me retrouve avec la traduction "famenlle".

J'espère que je suis clair dans l'explication de mon, problème
Merci pour votre aide...
Francois
sonno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 01h10   #10
Membre du Club
 
Avatar de moins52
 
Inscription : août 2003
Messages : 61
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 61
Points : 51
Points : 51
Si le mot est "i", tu peux remplacer " i " par " en ", les mots étant généralement séparer par des espaces. Mais tu peux avoir de la ponctuation qui sépare les mots des virgules par exemple. Et tu auras sûrement ce cas avec d'autres mots de même racine par exemple.
C'est un des cas particuliers dont parlait Raideman.

En réfléchissant un peu je crois que lorsqu'on utilise des expressions régulières PHP cherche à avoir la plus longue expression possible.
Genre si "i" et "titi" correspondent il prendra "titi" qui est plus long.
C'est peut-être par là qu'il faut chercher...

Moins52, trying to be helpfull
moins52 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 09h45   #11
Invité de passage
 
Inscription : mars 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 20
Points : 3
Points : 3
Merci pour ta réponse. Finalement, je vais suivre ton conseil, en ajoutant des espaces à chaque mot mis dans le tableau ARRAY.
Cependant je suis surpris qu'il n'y ait pas d'autre solution.
Ceux qui utilisent cette fonction, comment procédez vous ?
merci
François
sonno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 10h57   #12
Membre habitué
 
Inscription : août 2005
Messages : 152
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : août 2005
Messages : 152
Points : 126
Points : 126
Lors de mes études (IUP, Master), j'ai suivi une option "Traitement automatique du langage naturel". C'est un sujet très vaste, et nous avons vu que faire de la traduction automatique n'est pas si aisé.

Il te faudrait travailler d'abord sur un analyseur morphologique, pour connaitre la structure de tes phrases (et ainsi savoir quel role joue un mot dans la phrase).
Tu peux en effet tomber sur un mot que tu definirais comme un verbe conjugué, et qui serait en fait un nom (on est tombé sur des cas comme ça en bossant sur notre projet d'analyseur).

Citation:
Il programme en JAVA. (programme = verbe conjugué au present)
Ce programme n'est pas sécurisé (programme = nom commun)
Dans ce cas, là traduction de programme ne sera pas la meme du tout ^^


Voila le TP sur lequel nous avons travaillé en binome => (http://www.lirmm.fr/~chauche/Master_1/TPMaster1.html
Ca te donnera une piste, mais il te faudra approfondir le sujet

Cherche "Traitement automatique du langage" dans google, il y a de nombreux cours intéressants
MadCat34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h30.


 
 
 
 
Partenaires

Hébergement Web