La langue n'est pas un long fleuve tranquille 1:
Comparaison morpholexicale du vocable potentiel dans le domaine de la biologie cellulaire entre le Français et le Portugais
I- La préparation du corpus a) L'intérêt d'avoir un grand corpus b) Sélection des pages et balisage c) Normalisation semi-automatique du corpus d) Présentation du corpus
II- Le choix des mots et des phrases: SR - Simtree - XPATH - le tableau bilingue en Bash Shell Etape 1: Lexico3 et les Segments Répétés Etape 2: L'étiqueteur syntaxique Simtree et treetagger2xml.pl Etape 3: XML et XPATH puis sort -u puis XML et XPATH Etape 4: Le tableau bilingue en Bash Shell
III- Chercher le contexte lexical d'un mot dans la base de données MySQL *Explication *Cherchez votre mot *Editeurs HTML, Copyrights et Remerciements
Introduction
La langue n'est pas un long fleuve tranquille parce que tout le monde croit que l'écriture est standardisée, que quand on cherche un mot dans un dictionnaire on trouve la façon la plus juste d'écrire ce mot, que les mots du discours scientifique sont monosémiques, monoréférentiels et n'ont qu'une seule manière de s'écrire. Tout cela est faux pour le linguiste qui cherche à décrire la langue telle qu'elle est, qui se plaît à collectionner des segments de phrases et à les comparer avec d'autres segments sans autre forme de jugement que: cela existe.
Le but de mon projet multilingue est la réalisation d'un lexique bilingue Français - Portugais autour du mot potentiel dans le domaine de la biologie cellulaire. Et donc de décrire les étapes pour la réalisation de ce lexique.
J'ai volontairement accès ma recherche autour des vocables, unités linguistiques de taille supérieure au mot graphique désignant au moins un concept en discours, dans un domaine spécialisé que je connais la biologie cellulaire. J'ai pris un domaine que je connaissais parce que les résultats peuvent être meilleurs et parce que en tant que linguiste j'ai horreur de décrire la norme, et quand on connaît le domaine et qu'on n'appartient pas au domaine, qu'on n'a pas intégré les normes du domaine pour un usage courant, il est plus facile de fuir la norme et d'atteindre l'objectivité.
Et ce qui est spectaculaire ici est que les outils du domaine de l'ingénierie linguistique, sont beaucoup plus puissants que notre esprit, on n'est pas contraint à l'étude du mot graphique séparé par deux espaces blancs et appelé en TAL de token parce que les expressions régulières nous permettent de sélectionner une suite de caractères dont l'espace blanc, dans le texte qui est vu comme une immense suite de caractères. Et donc on peut faire tout ce qu'on veut plus vite que si on n'avait pas d'outils, car comparer unité par unité le mot et sa traduction uniquement avec la force de l'esprit cela prendrait une année alors que j'ai réalisé ce travail en à peine un mois. Le gain de temps est énorme.
On verra premièrement la préparation du corpus. Deuxièmement le choix des mots et des phrases. Et troisièmement le contexte lexical du mot au moyen d'une requête en ligne.
a) L'intérêt d'avoir un grand corpus
L'intérêt d'avoir un grand corpus est d'avoir le plus d'ambiguïté possible dans l'écriture de chaque mot, qu'elle soit d'ordre orthographique (potencial de Nerst / potenciel de Nernst), dans la construction morphologique de chaque mot (potenciel de membrane / potentiel transmembranaire), et quand on passe au niveau des mots composés, la richesse de la variation lexicale est encore d'une plus grande qualité: (potentiel de repos / potentiel de membrane de repos / potentiel de repos de membrane). Je pensais que seule la langue portugaise avait conservé une telle richesse du vocabulaire parce qu'il y a des conflits d'usage entre les pays, les villes et les culture, ce qui fait qu'une bonne grammaire à l'usage des étrangers, comme le Manuel de langue portugaise de Paul Teyssier présente au moins deux règles de grammaires pour un même usage dans deux endroits différents, cette grammaire a choisit le Portugal et le Brésil, or le français bien qu'il soit autant parlé que le portugais dans divers pays ne fait absolument aucune mention de règles de grammaires et d'usages orthographiques en contradiction dans ses dictionnaires, ce qui fait que leur volume est très petit et la langue française semble être pauvre de variantes sociolinguistiques, dépourvue d'expressivité, de plus les français, et j'en fait partie, sont très conservateurs, très attachés à l'orthographe, à leurs préjugés sur la langue, la plupart de nos linguistes ne croient que en la norme, et bien non ! Parce que l'écriture est un processus inconscient et collectif, parce que les maniaques qui sont contre l'usage du vocabulaire sms sur internet sont ceux qui l'utilisent le plus sans s'en rendre compte, parce que la langue n'est pas ce qu'on veut qu'elle soit mais est ce qu'elle est, et parce que finalement il n'existe pas un seul langage de spécialité qui ne ressemble pas à ce dont on accuse la langue: l'ambiguïté.
Peut-être que c'est parce que plus on réfléchit à ce que l'on dit, plus on crée de néographies, et plus on croit qu'on contrôle le vocabulaire qu'on utilise et moins on le contrôle. La polysémie, la synonymie, la variation morphologique de l'écriture, sont propres à tout langage, aux langues de spécialité et aux langues vivantes. L'intérêt d'avoir un gros corpus et de disposer d'outils informatiques en TAL est de pouvoir classer les structures grammaticales, aligner la redondance, et aligner les différentes formes graphiques d'un même mot et leurs traductions.
b) Sélection des pages et balisage
Mon corpus avait pour but d'être utilisé dans le cours de statistiques lexicométriques et dans le cours de projet multilingue, et donc j'ai choisi 10 textes par thème pour trois thèmes sur internet et ce par langue, ce qui me fait au total 60textes.
Les pages ont été téléchargées avec l'option lynx -source pour le tableau destiné au cours de Lexico3, l'option lynx -source a le même effet que l'option wget dans le langage Bash Shell, l'idée m'est venue parce que wget refusait de marcher en local dans mon ordinateur et parce que c'est ainsi qu'on télécharge une page qui n'a pas de feuille de styles avec un navigateur. Mais pour les textes qui ont été utilisés pour le projet multilingue, la sélection était manuelle. De plus il n'y a pas de rapport a = b entre le nombre de pages et le nombre de textes. Mais malgré tout j'ai adapté mon tableau destiné au cours du projet multilingue à de a implique b, on déduit b grâce à l'option sed et à la contextualisation droite et gauche des numéros de fichier.
Par contre ce qui a été automatique c'est la conversion pdf2html en utilisant le programme pdftohtml.exe récupéré sur sourceforge. Il se pourrait que ce soit le même programme que Google utilise pour convertir ses pdf en html, et fort heureusement conserver les versions en cache, je dis que c'est heureux car les pdf sont les fichiers qui sont le plus souvent déplacés en ligne car les gens qui publient en pdf croient que c'est plus sûr que html pour garder l'aspect personnel de leur travail, et souvent les pdf passent du libre accès aux réseaux privés et on les perd de vue, alors Google s'oppose à cette tendance en conservant leur mémoire.
Enfin les textes ont été balisés aux normes de Lexico3, avec une balise pour la langue, une pour le thème, une pour le numéro du texte et une pour la source internet. Mais ce n'est pas important pour le projet multilingue. Disons juste que les textes sont organisés par thème et par langue.
Les trois thèmes sont: potentiel de repos, potentiel d'action et potentiel de membrane. *Le potentiel de repos c'est la différence de potentiel transmembranaire (intérieur - extérieur) d'une cellule au repos, qui ne reçoit aucune excitation de l'extérieur et qui n'est pas en train de produire aucun message, il s'agit d'une valeur constante caractérisant toute cellule ou tout organisme unicellulaire.
*Le potentiel de membrane désigne tantôt le potentiel de repos de toute cellule, pourvu qu'elle soit dans son milieu aqueux d'origine, et ce même pour les cellules non excitables, dans son sens universel: toutes les cellules possèdent un potentiel de membrane, et dans son sens unité de mesure: ce qu'on mesure c'est la différence de potentiel en millivolts entre le milieu intracellulaire et le milieu extracellulaire, ce qui les sépare étant la membrane cytoplasmique. Tantôt ce qui a varié dans une mesure de différence de potentiel, par exemple le potentiel d'action est la valeur du potentiel de membrane pour une cellule nerveuse excitée au-delà de son seuil de dépolarisation. Donc le potentiel de membrane est un concept hyperonyme qui englobe les lemmes potentiel de repos et potentiel d'action, et qui a à la fois une signification abstraite très précise et un sens explicatif en discours, ce qui rend cette unité monoréférentielle et fortement polysémique.
* Finalement le potentiel d'action qui est propre à certaines cellules nerveuses et musculaires, représente à la fois une dépolarisation dont l'amplitude est constante, 1mv environ, et un message codé en fréquence, il est rare que un seul potentiel d'action soit à l'origine d'une réponse physiologique, pour se comprendre les cellules nerveuses et musculaires excitables en émettent des milliers. Il s'agit en tout cas d'un état transitoire de la membrane plasmique, et entre chaque potentiel d'action, la membrane retourne à son potentiel de repos d'origine.
c) Normalisation semi-automatique du corpus
Dans les textes en Français et en Portugais on a remplacé: - Les balises par les mots inférieur à, supérieur à, implique, etc. - Les {caractère+apostrophe+vocable} par {caractère+espace+vocable}. - Les {?} qui désignent souvent des formules mathématiques non reconnues par les caractères ASCII, par un espace. - Les {espaces} qui désignent des mots sous forme d'images non transcriptibles sur un fichier texte par les mots qui étaient sur les images. - Les accents séparés des lettres qu'ils accentuent ex: (`a ou a`) par des lettres accentuées en ASCII. - On a recollé les mots découpés en deux que cela soit du à des motifs qui pour une raison inconnue se détachent du reste du mot (ex: fl uide, fi gure) ou du au retour chariot traditionnel avec ou sans - (ex: fonction-nel), beaucoup de gens écrivent sur l'ordinateur comme ils écrivent sur un papier et ne connaissent pas le retour automatique à la ligne. - Et on a remplacé quelques lettres grecques par leur nom grec.
Dans les deux langues on a aussi supprimé les liens (ex: [modifier]), les références bibliographiques, les noms d'auteurs, la provenance des documents, les e-mails car comme le corpus avait aussi pour but une étude statistique, les noms propres et tout ce qui n'est pas le texte ne m'intéressait pas car cela fait du bruit. Cependant le référencement bibliographique a été inséré dans la balise source pour ne pas porter atteinte aux droits d'auteur. Pour savoir qui a rédigé chaque texte il suffit de copier et coller l'adresse internet indiquée dans la balise source sur la barre d'adresses du navigateur. On a souvent supprimé les textes environnants qui ne concernaient pas le thème, afin de faire un choix ciblé. On a supprimé au cas par cas les puces non ordonnées: il s'agissait souvent de lettres de l'alphabet aux formes arrondies comme n, u, a, é, o mais aussi de caractères spéciaux très divers. Beaucoup de formules car aucune ne passe dans un fichier texte, certains dessins avec la ponctuation comme les dessins de membrane, et les URLs (http://...) dans le corps du texte.
Finalement dans tous les textes on a remplacé jusqu'à épuisement tous les guillemets possibles et toutes les apostrophes possibles par des espaces, et tous les espaces doubles par des espaces simples.
Pour le projet multilingue j'ai utilisé fr-br.TXT qui est le texte normalisé en grande partie à la main avec rechercher, trouver le bon, remplacer. Il m'a servi de source pour rechercher les mots et leurs contextes qui ont été informatisés dans une base de données SQL.
Ainsi que fr-br-min.TXT qui a été utilisé pour toutes les analyses linguistiques: les segments répétés dans Lexico3 ne proposent pas l'option -i qui signifie ignorer la casse, et donc tout a été converti en minuscule en amont des traitements. Les segments répétés ont servi à l'étiquetage syntaxique et ce dernier a servi aux requêtes XPATH sous XSL. De plus le tableau comparatif a aussi été lancé sur un corpus en minuscule: fr-br-min.TXT ainsi que ses sous-parties que j'ai détaché manuellement car le seul programme que je ne sais pas concevoir c'est celui pour prendre le texte qu'il y a sous chaque balise Lexico3 avec sa balise Lexico3.
Au total 36 fichiers pour le portugais et 44 pour le français, mais balisés comme représentant 30 fichiers pour le portugais et 30 pour le français. Dont 10 fichiers par thème pour les 3 thèmes: potentiel de repos, potentiel de membrane et potentiel d'action.
II- Le choix des mots et des phrases: SR - Simtree - XPATH - le tableau bilingue en Bash Shell
Il est vrai que l'idée du tableau bilingue a été conçue antérieurement, sa taille minimale fait plus de 8pages A4 et ce qu'il peut produire fait plus de 3000 pages HTML, mais il a été remplis postérieurement, après que j'ai choisis la liste de mots et de contextes à informatiser avec l'option rechercher, mais son intérêt est de mettre en valeur tous les choix possibles en matière de traduction. Et donc je le considère comme une aide précieuse au choix des phrases. De plus il est beaucoup plus objectif que l'option rechercher de Notepad++ car il donne à voir le choix.
Visionnez mes deux corpus de référence normalisés et concaténés: fr-br.TXT et fr-br-min.TXT
Etape 1: Lexico3 et les Segments Répétés
L'intérêt des gros corpus scientifiques et techniques c'est qu'il y a plein de mots composés donc plein de segments répétés. J'ai trouvé sur les Segments Répétés ayant une fréquence supérieure à deux dans le fichier fr-br-min.TXT puis j'ai sauvegardé les Segments Répétés en format HTML en les additionnant au rapport et en enregistrant le rapport. Enfin J'ai navigué dans le rapport pour sélectionner les segments répétés que je souhaitais utiliser pour cette étude et j'ai sélectionné ceux sur lesquels j'allais travailler avec l'option Copier en HTML de Mozilla Firefox. Puis j'ai sauvegardé le tout dans 2 fichiers HTML l'un pour le portugais et l'autre pour le français. Enfin grâce à mon programme mozillatable2txt.pl j'ai transformé mes tableau HTML format Mozilla en fichier texte.
Visionnez: Tous les segments répétés de fréquence supérieure à deux dans fr-br-min.TXT et mon programme mozillatable2txt.pl Téléchargez: Lexico3 Téléchargez: mozillatable2txt.pl
Etape 2: L'étiqueteur syntaxique Simtree et treetagger2xml.pl
J'ai créé Simtree parce que Treetagger ne marche pas sur mon ordinateur, cependant la version que j'ai créée est très limitée, c'est nous mêmes qui devons étiqueter syntaxiquement les mots, ce qui implique ici avoir moins de 100mots à étiqueter pour éviter de perdre trop de temps, et n'avoir aucun mot qui n'appartienne à la fois à deux catégories syntaxiques au même temps. Si vous voulez avoir plusieurs étiquetages possibles, il faut changer aussi les balises de treetagger2xml.pl qui vient avec Treetagger et qui croit que la sortie de mon programme est une sortie de Treetagger.
Et donc on a par exemple ce fichier-là en entrée qui contient deux segments répétés avec des fins de ligne UNIX: potentiel de repos potentiel de repos dans la On obtient alors en sortie un fichier token qui indique à la fois les tokens reconnus et les groupes de mots séparés par des points-virgule: potentiel de repos ; potentiel de repos dans la ; Tous les mots du lexique par ordre alphabétique à étiqueter manuellement dans le programme Simtree, n'oubliez pas d'étiqueter le point virgule car il délimite les groupes de mots: ; dans de la potentiel repos Si vous n'avez pas encore étiqueté vos mots, allez sur votre Simtree et remplacez le vocable par: vocable tabulation catégorie tabulation lemme. Il est important que une seule lettre de l'alphabet désigne une catégorie syntaxique sinon il y a des recouvrements dans la reconnaissance de catégories car XPATH cherche des suites de caractère sans penser aux concepts qui leur correspond, si vous avez plus de 24catégories, utilisez pour chaque catégorie deux lettres de l'alphabet en multipliant les 24 premières lettres par les 24deuxième lettres, puisque N et PN, V et AV c'est impossible, mais NO et PN, VE et AV c'est possible. $recup03=~s/^;\n/;\tT\t;\n/g; $recup03=~s/^dans\n/dans\tP\tdans\n/g; $recup03=~s/^de\n/de\tP\tde\n/g; $recup03=~s/^la\n/la\tD\tle\n/g; $recup03=~s/^potentiel\n/potentiel\tN\tpotentiel\n/g; $recup03=~s/^repos\n/repos\tN\trepos\n/g; Et le fichier -3 à baliser grâce à treetagger2xml.pl, vous pouvez changer le balisage de sortie, ce qui est intéressant c'est de modifier les balises en seconde place, à un moment j'ai remplacé article par francais ou portugais: potentiel N potentiel de P de repos N repos ; T ; potentiel N potentiel de P de repos N repos dans P dans la D le ; T ; Finalement une fois le fichier balisé, vous remarquerez qu'il y a quelques erreurs: oublis de balisages, oubli du séparateur, non balisages, caractères de commandes à la place des accents, etc... ce qui peut se corriger en amont, vous le faites, et le reste c'est à la main, et ce n'est pas du au programme mais à quelque chose qu'on ne sait pas ce que c'est, peut-être la mémoire de cygwin, peut-être la mémoire de votre ordinateur, peut-être un caractère invisible... <?xml version="1.0" encoding="iso-8859-1" standalone="no"?> <document> <francais> <element><data type="type">N</data><data type="lemma">potentiel</data><data type="string">potentiel</data></element> <element><data type="type">P</data><data type="lemma">de</data><data type="string">de</data></element> <element><data type="type">N</data><data type="lemma">repos</data><data type="string">repos</data></element> <element><data type="type">T</data><data type="lemma">;</data><data type="string">;</data></element> <element><data type="type">N</data><data type="lemma">potentiel</data><data type="string">potentiel</data></element> <element><data type="type">P</data><data type="lemma">de</data><data type="string">de</data></element> <element><data type="type">N</data><data type="lemma">repos</data><data type="string">repos</data></element> <element><data type="type">P</data><data type="lemma">dans</data><data type="string">dans</data></element> <element><data type="type">D</data><data type="lemma">le</data><data type="string">la</data></element> <element><data type="type">T</data><data type="lemma">;</data><data type="string">;</data></element> </francais> </document> Les erreurs de catégorisation, vous ne vous en apercevrez que après, lors de la comparaison entre les langues.
Et donc j'ai réalisé l'étiquetage syntaxique des fichiers de segments répétés en français et en portugais et j'ai obtenu en sortie deux fichiers XML, l'un pour le portugais et l'autre pour le français.
Visionnez: simtree-pt.pl et simtree-fr.pl Téléchargez: simtree-pt.pl et simtree-fr.pl
Etape 3: XML et XPATH puis sort -u puis XML et XPATH
J'ai utilisé mon programme deux2one-personnalise.pl pour transformer les deux premiers fichiers XML obtenus dans l'étape précédente avec Simtree suivi de Treetagger2xml en un seul, puis j'ai créé les feuilles de style permettant de retrouver tous les DN, NA, NN, NPA, NPDNA, NPN, NPNA, NPNDN, et NPNPN avec D = déterminant, N = nom, P = préposition et A = Adjectif.
Et comme les listes n'étaient pas triées, j'ai sauvé chacune des listes sur un fichier texte, et j'ai lancé sur le terminal Bash Shell de Cygwin la commande: sort -u nom-de-fichier > fichier-en-sortie afin de supprimer les doublons et ne garder que des suites de segments uniques.
J'ai lancé cette commande pour chacun des fichiers. Et j'ai obtenu en sortie un fichier par liste, en tout 9 listes de patrons x 2 langues = 18fichiers texte, puis j'ai recommencé l'étape deux et j'ai réalisé grâce à Simtree et Treetagger2xml des fichiers personnalisés. Et donc j'ai obtenu 9 fichiers XML en Français et 9 en Portugais.
Puis j'ai utilisé deux2one-version-generale.pl qui permet également de fusionner deux fichiers XML. Parce que pour avoir le tableau à deux entrées, il faut deux fichiers XML fusionnés sous une seule et même racine avec deux chemins relatifs différents.
Comme j'avais personnalisé Treetagger2xml en lui disant que la deuxième balise serait francais pour le Français et portugais pour le portugais, alors j'ai utilisé deux2one d'une nouvelle façon, ce que j'ai précisé comme deuxième balise, le patron, ainsi j'avais pour chacun des fichiers: document /patron/langue comme chemin absolu. La balise patron était la même pour les deux langues, seul le nom de la langue est différent, mais avoir la troisième balise différente c'est suffisant pour différencier les deux fichiers et avoir un tableau à deux entrées.
En ce qui concerne la requête XPATH, j'ai conservé la forme de celle qui nous a été donnée en cours avec comme amélioration beaucoup de redondances: j'ai placé la tête de l'automate XPATH à chaque fois sur une catégorie syntaxique dans leur ordre d'apparition en lui disant ce qu'il y avait avant et après, ainsi toute la suite de catégories grammaticale était parcourue avant d'avoir le résultat.
Et donc si je veux lire NPNPDN, je lis d'abord N et je donne tous les following-sibling, puis P et je donne tous les preceding-sibling et les following-sibling, puis N et je donne idem, puis P et je donne idem, puis D et je donne idem, puis N et je donne tous les preceding-sibling.
Exemple pour le nom en position 3 sur XSL: </xsl:when> <xsl:when test="(((./data[contains(text(),'N')]) and (preceding-sibling::element[1][./data[contains(text(),'P')]]) and (preceding-sibling::element[2][./data[contains(text(),'N')]])) and (following-sibling::element[1][./data[contains(text(),'P')]]) and (following-sibling::element[2][./data[contains(text(),'D')]]) and (following-sibling::element[3][./data[contains(text(),'N')]]))"> <font color="blue"><xsl:apply-templates select="./data[3]"><xsl:sort order="descending"/></xsl:apply-templates></font><xsl:text> </xsl:text> </xsl:when>
J'avais le choix entre lui demander les catégories data[1], les lemmes data[2] ou les vocables quoique découpés data[3] et j'ai choisis les vocables car c'est plus facile pour après parcourir le corpus à la recherche de phrases en discours à informatiser.
Fichier XML: <element><data type="type">N</data><data type="lemma">cellule</data><data type="string">cellule</data></element>
Finalement grâce à tous ces tableaux en XML j'ai pu aligner le portugais sur le français, je ne sais pas pourquoi j'ai plutôt fait ma comparaison portugais - français que français - portugais bien que ce soit la première fois que je lis des articles sur la biologie cellulaire en portugais, cela m'a paru plus facile alors que je suis incapable de lire une oeuvre littéraire en portugais car c'est trop difficile. Ici le niveau de difficulté était nul.
Et en alignant les mots j'ai pu réaliser l'étape 4: Le tableau bilingue en Bash Shell et la troisième partie: Chercher le contexte lexical d'un mot dans la base de données MySQL
Visionnez: deux2one-personnalise.pl et deux2one-version-generale.pl Visionnez: treetagger2xml-fr.pl et treetagger2xml-pt.pl Téléchargez: deux2one-personnalise.pl et deux2one-version-generale.pl
Visionnez mes documents XML finaux avec les requêtes XPATH sur les catégories grammaticales: potentielDN.xml potentielNA.xml potentielNN.xml potentielNPA.xml potentielNPDNA.xml potentielNPN.xml potentielNPNA.xml potentielNPNPDN.xml potentielNPNPN.xml
Etape 4: Le tableau bilingue en Bash Shell
Le tableau bilingue présente du centre vers les bords, le fichier langue qui contient la totalité des URLs normalisés et balisés. Dans les balises il y a l'indication de la source. Le fichier thème qui contient l'ensemble des contextes concaténés contenant le motif. Tous les motifs sont en gras. Les fichiers contexte qui ne contiennent que les lignes qui comprennent le motif recherché.
Vous pouvez accéder à la totalité du tableau en cliquant sur ce lien : lexique-portugais-francais.html
Voici un extrait du tableau avec le mot potentiel de repos en français et en portugais.
Le choix des phrases en contexte dans des corpus comparables
Mot cherché: potencial de repouso + potentiel de repos
Le programme en Bash a été réalisé de la façon suivante:
Tout d'abord j'ai écrit mon premier tableau en HTML puis avec la commande echo j'ai décomposé les codes HTML en sous-parties à compléter avec les commandes Bash. 1) Contextes portugais -Recherche du motif avec la commande egrep. -Lecture des liens pointant vers les fichiers texte normalisés en local avec la boucle for associée à la commande cat. -Concaténation du fichier motif avec cat vers le fichier thème. -Mini éditeur HTML qui fait ce qu'il peut pour mettre en gras le motif. -Impression des liens du tableau avec la commande echo. 2) Thème portugais -Mini éditeur HTML qui fait ce qu'il peut pour mettre en gras le motif. -Impression du lien thème du tableau avec la commande echo. 3) Fichier en langue portugaise -Grand éditeur HTML externe appelé avec la commande perl editeur.pl fichier. -Mini éditeur HTML qui fait ce qu'il peut pour mettre en gras le motif. -Impression du lien langue du tableau avec la commande echo. 4) Fichier en langue française -Grand éditeur HTML externe appelé avec la commande perl editeur.pl fichier. -Mini éditeur HTML qui fait ce qu'il peut pour mettre en gras le motif. -Impression du lien langue du tableau avec la commande echo. 5) Thème français -Absence de fichier à éditer. Celui-ci sera édité une fois qu'il existera. -Impression du lien thème du tableau avec la commande echo. 6) Contextes français -Recherche du motif avec la commande egrep. -Lecture des liens pointant vers les fichiers texte normalisés en local avec la boucle for associée à la commande cat. -Concaténation du fichier motif avec cat vers le fichier thème. -Mini éditeur HTML qui fait ce qu'il peut pour mettre en gras le motif. -Impression des liens du tableau avec la commande echo. 7) Edition du thème français -Mini éditeur HTML qui fait ce qu'il peut pour mettre en gras le motif. 8) Contextes portugais 9) Thème portugais 10) Thème français 11) Contextes français 12) Edition du thème français 13) Contextes portugais 14) Thème portugais 15) Thème français 16) Contextes français 17) Edition du thème français 18) Programme qui compte les lignes qui contiennent le motif et les affiche avec echo: on a utilisé variable=`grep -cw "motif" fichier`. 19) Programme qui remplace le numéro de fichier par le numéro du fichier, remarque: le numéro de fichier a été entouré de 3 lettres répétées de part et d'autres pour éviter les remplacements conflictuels avec sed.
Visionnez: prepare-environnement-pm.sh, TABV3-pt-fr.sh, TABV4-pt-fr.sh, RECOMMENCE.sh, lexico3integre2html.pl Téléchargez: prepare-environnement-pm.sh, TABV3-pt-fr.sh, TABV4-pt-fr.sh, RECOMMENCE.sh, lexico3integre2html.pl
Visionnez les fichiers de liens en local en entrée: norm-repos-fr.txt, norm-repos-pt.txt, norm-membranne-fr.txt, norm-membranne-pt.txt, norm-action-fr.txt, norm-action-pt.txt
III- Chercher le contexte lexical d'un mot dans la base de données MySQL
*Explication
Afin de créer un formulaire effectuant une requête dans une base de données en ligne, j'ai informatisé les mots ayant une similarité grammaticale traduits dans les deux langues et leurs contextes dans une base de données MySQL accompagnée d'un programme en PHP fournit par notre professeur Mr Jean-Michel Daube qui transforme le mot tapé ou choisi en une requête SQL.
J'ai choisis de vous proposer une liste déroulante plutôt que un moteur de recherche, mais en tant que formulaire, peut-être dans notre tête ce n'est pas pareil de choisir un mot et de le taper, mais en informatique, il n'y a aucun changement au niveau du programme en PHP et de la base de données pourvu qu'il trouve ce qu'on cherche.
J'ai choisis de mettre une liste déroulante parce que la plupart des gens qui vont vouloir tester mon outil de contexte et traduction ne connaissent pas la biologie cellulaire. De plus il n'y a pas tous les mots du domaine de la biologie cellulaire, juste ceux qui entourent et concourent au sens du mot potentiel en biologie. Si j'avais mis un moteur de recherche, seul l'affichage changerait.
En ce qui concerne la base de données SQL, j'ai utilisé le programme Easy-PHP qui propose à l'utilisateur d'accéder à son local host et de créer une base de données dans phpMyAdmin. Les fichiers de l'utilisateur se trouvent à défaut dans le dossier www. C'est là où j'ai mis mes programmes: search-fr.php et search-br.php ainsi que le formulaire à envoyer en format HTML.
J'ai créé une base de données, une table avec mon nom et 4 champs (fields), j'ai nommé le premier champ `br`, le deuxième `contexte br`, le troisième `fr` et le quatrième `contexte fr`, et j'ai dit qu'ils étaient tous du type TEXT. Et grâce à l'onglet insert, j'ai inséré mes données.
J'ai choisis mes données en fonction du résultat des requêtes XPATH sur les fichiers XML dans l'étape précédente, mais j'ai corrigé mentalement quelques erreurs de catégorisation, et j'ai complété en cherchant l'équivalent des mots, et les phrases contenant les mots sur mon corpus fr-br.TXT. Mes fichiers XML m'ont aidé dans le sens où ils ont dirigé mon esprit vers un listage homogène grammaticalement et facile à trouver. Car il faut dire que la structure grammaticale des langues françaises et portugaises se ressemblent surtout en ce qui concerne la création de variantes morpholexicales pour des mots comme potentiel de repos. Si on avait rajouté l'anglais, on aurait pu faire la même remarque mais on ne sait pas qui a copié qui au niveau du style de vocabulaire lorsque celui-ci n'est pas du type Nom Préposition Nom.
Ensuite j'ai utilisé la fonction export de EasyPHP. Là il faut faire une parenthèse. Les paramètres à défaut d'exportation de EasyPHP ne sont pas les bons pour tout le monde car il n'y a pas de codage universel d'exportation et d'importation de données SQL, surtout pour ce programme qui est universel dans le sens où il propose tous les formats possibles d'encodage pour l'exportation des données, bien qu'il importe de préférence du SQL. Et donc c'est à vous de les fixer, et c'est là que ça se complique car il faut comprendre ou avoir entendu parler des systèmes d'encodage.
Windows utilise Windows-1252 qui s'appelle aussi ANSI. Or d'après internet, ANSI inclut latin-1 qui s'appelle aussi ISO-8859-1. Or pour beaucoup de gens, le français et le portugais s'écrivent en ISO-8859-1. Et donc pour ne pas perdre les 3/4 des informations car SQL en utf-8 sur du latin-1 supprime tout ce qui vient après les caractères spéciaux. J'ai fait comme cela: export: SQL ANSI import: SQL ANSI latin-1
Mais pour trouver c'était difficile, car en tant qu'utilisatrice de Windows, je n'ai pas l'habitude de changer ma table de caractères pour écrire.
Une fois qu'on a exporté notre table en format SQL ANSI, il faut l'importer sur le site. Et pour cela il faut se connecter sur un site qui a sa propre interface phpMyAdmin qui est identique à celle de votre Easy-PHP à moins que vous n'ayez personnalisé ses couleurs.
Et donc l'import se fait en SQL ANSI latin-1.
Par contre j'ai du mettre ma page web en UTF-8 à cause du formulaire. Les programmes en PHP sont également en UTF-8.
Questions: http://dev.mysql.com/doc/, http://search.mysql.com/, Wikipédia: Jeu de caractères Téléchargez: Easy-PHP Visionnez: Ma base de données au format XML, Le programme search-br en PHP, Le programme search-fr en PHP
*Cherchez votre mot
Mot portugais
Mot français
Editeurs HTML en perl pour ce site
Visionnez: ext2html-ext2xml.pl, perl2html-pm.pl, sh2html.pl, txtaffichebalise2html-pm.pl, txtsimple2html-pm.pl
Téléchargez: ext2html-ext2xml.pl, perl2html-pm.pl, sh2html.pl, txtaffichebalise2html-pm.pl, txtsimple2html-pm.plCopyrights:
Pour le texte:
La langue n'est pas un long fleuve tranquille 1: Comparaison morpholexicale du vocable potentiel dans le domaine de la biologie cellulaire entre le Français et le Portugais by Françoise Del Socorro is licensed under a Creative Commons Attribution-Share Alike 2.0 France License.
Pour les programmes sur MyBloop:
These software are licensed under the CC-GNU GPL version 2.0 or later.Remerciements:
Professeurs: Daube Jean-Michel et Fleury Serge.