Commit ef94bdca authored by Sylvain Coulange's avatar Sylvain Coulange
Browse files

eaf traduction japonais vers français (en cours) + reformattage des étiquettes dans g1jpfr

parent 0d443772
......@@ -93,7 +93,7 @@
<P id="p47">Si on ne peut pas l’atteindre, il est possible qu’une conseillère d’orientation ricane de nous.</P>
</PAR>
<PAR id="par18">
<P id="p48">« Nous jugeons bons ou mauvais les gens qui ne se conforment pas aux idées reçues, mais nous nous devons d’atténuer les inégalités dans notre jugement.» commente Dolan.</P>
<P id="p48">« Nous jugeons bons ou mauvais les gens qui ne se conforment pas aux idées reçues, mais nous nous devons d’atténuer les inégalités dans notre jugement. » commente Dolan.</P>
</PAR>
<TITRE id="titre4" niveau="2">
<P id="p49">Nous pouvons changer la théorie établie</P>
......@@ -135,7 +135,7 @@
</PAR>
<PAR id="par25">
<P id="p71">Si une personne vit un marriage heureux avec un partenaire unique, a 5 enfants et habite dans une grande maison, c’est très bien comme ça aussi.</P>
<P id="p72">Il veut seulement transmettre le message qu’ « une seule règle ne s’applique pas à tout. » </P>
<P id="p72">Il veut seulement transmettre le message qu’ « une seule règle ne s’applique pas à tout. »</P>
<P id="p73">Il considère son livre être « le manifeste de la société ».</P>
<P id="p74">Il essaie de diriger nos yeux sur les éléments négatifs qui se cachent derrière l’idée toute faite du bonheur.</P>
</PAR>
......@@ -164,7 +164,7 @@
</PAR>
<PAR id="par31">
<P id="p86">Dolan craint qu’un jour les réseaux sociaux tombent au même rang que les cigarettes dans une dizaine d’années.</P>
<P id="p87">« Il faut prendre conscience que nous ne vivons peut-être que selon les idées reçues sur le bonheur et que notre bonheur peut se différencier de ces idées.»</P>
<P id="p87">« Il faut prendre conscience que nous ne vivons peut-être que selon les idées reçues sur le bonheur et que notre bonheur peut se différencier de ces idées. »</P>
</PAR>
<PAR id="par32">
<P id="p88">Je vous recommande de lire cet ouvrage en tant que premier pas dans la thérapie comportementale, ce qui vaut peut-être mieux que d’aller à la fameuse salle de gym alors que vous n’en avez même pas envie.</P>
......
......@@ -11,7 +11,7 @@
<P id="p3">Un scientifique anglais du comportement propose une importance de vivre sans être égaré par l’euphorie tordue.</P>
</PAR>
<PAR id="par2">
<P id="p4">« Voulez-vous devenir heureux ? Alors, ne devenez pas un jardinier. » </P>
<P id="p4">« Voulez-vous devenir heureux ? Alors, ne devenez pas un jardinier. »</P>
</PAR>
<PAR id="par3">
<P id="p5">Il semble que l’on dise, d’après une logique qui est un casse-tête.</P>
......@@ -41,7 +41,7 @@
</PAR>
<PAR id="par8">
<P id="p19">« On a tendance à penser qu’il faut récompenser des gens qui poursuivent leur succès avec le désir de se perfectionner.</P>
<P id="p20">Cependant, il faut aussi récompenser des gens réussis avec des métiers qui ne sont généralement pas considérés comme admirables. » </P>
<P id="p20">Cependant, il faut aussi récompenser des gens réussis avec des métiers qui ne sont généralement pas considérés comme admirables. »</P>
<P id="p21">Tout d’abord, on a le droit d’être impeccablement heureux quelle que soit sa profession.</P>
</PAR>
<PAR id="par9">
......@@ -105,7 +105,7 @@
<P id="p53">En faisant cela, on ne jugera jamais bon ou mauvais des gens qui vivent de manière différente de l’idée réçue.</P>
</PAR>
<PAR id="par20">
<P id="p54">Dolan ne conseille pas aux lecteurs « Soyez un homme de bien rempli de charité. » </P>
<P id="p54">Dolan ne conseille pas aux lecteurs « Soyez un homme de bien rempli de charité. »</P>
<P id="p55">Il montre que la théorie généralement crue peut se démolir en changeant la logique.</P>
</PAR>
<PAR id="par21">
......@@ -135,7 +135,7 @@
</PAR>
<PAR id="par25">
<P id="p71">Si une personne s’est mariée avec un partenaire, a 5 enfants et habite dans une grande maison, c’est bien.</P>
<P id="p72">Il veut seulement faire savoire « Une règle ne s’applique pas à tout. » </P>
<P id="p72">Il veut seulement faire savoire « Une règle ne s’applique pas à tout. »</P>
<P id="p73">Il a positionné son livre « le manifeste vers la société ».</P>
<P id="p74">Il essaie de faire diriger nos yeux sur des éléments négatifs qui se cachent dans le bonheur présenté.</P>
</PAR>
......@@ -158,13 +158,13 @@
<P id="p82">À cette époque où on peut se lier au monde avec un téléphone portable à travers les réseaux sociaux, on ne peut pas fermer les yeux sur ce qu’il en résulte.</P>
</PAR>
<PAR id="par30">
<P id="p83">« Même si l’on devient le deuxième riche au monde, on ne pourra pas se satisfaire tant que la personne supérieure existe. » </P>
<P id="p83">« Même si l’on devient le deuxième riche au monde, on ne pourra pas se satisfaire tant que la personne supérieure existe. »</P>
<P id="p84">Nos désirs ne s’épuisent jamais : gagner plus, être en relations avec plus de gens, obtenir un grade supérieur, avoir le corps plus robuste...</P>
<P id="p85"></P>
</PAR>
<PAR id="par31">
<P id="p86">Dolan doute qu’un jour les réseaux sociaux soient discutés de même niveau que les cigarettes dans des dizaines d’années.</P>
<P id="p87">« Il faut prendre conscience que vous vivez simplement selon l’idée réçue et que votre bonheur peut se différencier d’elle. » </P>
<P id="p87">« Il faut prendre conscience que vous vivez simplement selon l’idée réçue et que votre bonheur peut se différencier d’elle. »</P>
</PAR>
<PAR id="par32">
<P id="p88">Je vous recommande de lire cet ouvrage, ce qui vaudrait mieux qu’aller à un gymnase en vogue malgré qu’en réalité vous n’y soyez pas d’humeur.</P>
......
This diff is collapsed.
from bs4 import BeautifulSoup as bs
import re
import re, difflib
fs = 'g1jpfr/g1jpfr_source.xml'
fi = 'g1jpfr/g1jpfr_initial.xml'
fr = 'g1jpfr/g1jpfr_revision.xml'
ff = 'g1jpfr/g1jpfr_final.xml'
# fs = 'g1frjp/g1frjp_source.xml'
# fi = 'g1frjp/g1frjp_initial.xml'
# fr = 'g1frjp/g1frjp_revision.xml'
# ff = 'g1frjp/g1frjp_final.xml'
with open(fs,'r') as f:
xs = bs(f.read(), "xml")
......@@ -25,8 +31,146 @@ xrPliste = xr.find_all('P')
xfPliste = xf.find_all('P')
for i,xiP in enumerate(xiPliste):
# for i,xiP in enumerate(xiPliste):
# xrPini = re.sub(r'<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="[^"]*" idodf="[^"]*" initial="([^"]*)" resolu="1" tags="" type="[^"]*"/>', r'\1', str(xrPliste[i]))
# xrPfin = re.sub(r'<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="([^"]*)" idodf="[^"]*" initial="[^"]*" resolu="1" tags="" type="[^"]*"/>', r'\1', str(xrPliste[i]))
# if xrPini != str(xiPliste[i]) or xrPfin != str(xfPliste[i]):
# print(i, xrPini == str(xiPliste[i]), xrPfin == str(xfPliste[i]))
# i = 1
# xrPini = re.sub(r'<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="[^"]*" idodf="[^"]*" initial="([^"]*)" resolu="1" tags="" type="[^"]*"/>', r'\1', str(xrPliste[i]))
# xrPfin = re.sub(r'<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="([^"]*)" idodf="[^"]*" initial="[^"]*" resolu="1" tags="" type="[^"]*"/>', r'\1', str(xrPliste[i]))
# diff1 = difflib.ndiff(xrPini, str(xiPliste[i]))
# diff2 = difflib.ndiff(xrPfin, str(xfPliste[i]))
# for dif in diff2:
# print(dif)
######### TESTS SPACY #########
# import spacy
# nlp = spacy.load("fr_core_news_md")
for x,p in enumerate(xrPliste):
# # RECUPERER LA VERSION INITIALE ET LA VERSION FINALE
# xrPini = re.sub(r'<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="[^"]*" idodf="[^"]*" initial="([^"]*)" resolu="1" tags="" type="[^"]*"/>', r'\1', str(xrPliste[i]))
# xrPfin = re.sub(r'<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="([^"]*)" idodf="[^"]*" initial="[^"]*" resolu="1" tags="" type="[^"]*"/>', r'\1', str(xrPliste[i]))
# xrPini = re.sub(r'<P id="\w+">','', xrPini)
# xrPini = re.sub(r'</P>','', xrPini)
# xrPfin = re.sub(r'<P id="\w+">','', xrPfin)
# xrPfin = re.sub(r'</P>','', xrPfin)
# Récupérer le mot entier concerné par l'annotation (contexte gauche, contexte droit si il s'agit du même mot)
# ex. Un avocat ('', 'Un a', 'vocat') ; dires ('di', 're', 's')
iniliste = re.findall(r'(\w+)?(<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="[^"]*" idodf="[^"]*" initial="[^"]*" resolu="1" tags="" type="[^"]*"/>)?<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="[^"]*" idodf="([^"]*)" initial="([^"]+)" resolu="1" tags="" type="[^"]*"/>(<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="[^"]*" idodf="[^"]*" initial="[^"]*" resolu="1" tags="[^"]*" type="[^"]*"/>)?(\w+)?', str(p))
finliste = re.findall(r'(\w+)?(<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="[^"]*" idodf="[^"]*" initial="[^"]*" resolu="1" tags="" type="[^"]*"/>)?<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="([^"]+)" idodf="([^"]*)" initial="[^"]*" resolu="1" tags="" type="[^"]*"/>(<edit auteur="[^"]*" categorie="correction" comment="[^"]*" date="[^"]*" final="[^"]*" idodf="[^"]*" initial="[^"]*" resolu="1" tags="[^"]*" type="[^"]*"/>)?(\w+)?', str(p))
# print('\nP',x)
# print("INITIAL")
for i in iniliste:
exp = ''.join((i[0],i[3],i[5]))
# print(exp, '\t',(i[0], i[3], i[5]))
# anaExp = nlp(exp)
# tags = []
# for tok in anaExp:
# tags.append((tok.pos_,tok.tag_))
# print(i[2], '\t', exp, '\t', tags)
# print("\nFINAL")
for i in finliste:
exp = ''.join((i[0],i[2],i[5]))
# print(exp, '\t',(i[0], i[2], i[5]))
# anaExp = nlp(exp)
# tags = []
# for tok in anaExp:
# tags.append((tok.pos_,tok.tag_))
# print(i[3], '\t', exp, '\t', tags)
def checkBefore(edit, etat):
avant = ""
elgauche = edit.previous_sibling
search = re.match(r'(\w+)$', str(elgauche))
if search:
# si il y a un mot juste avant (sans espace entre le mot et la balise courante), on récupère le mot
avant = search.group(1)
search = re.match(r' ', str(elgauche))
if not search:
# si il n'y a pas d'espace dans previous_sibling, on checkBefore(), sinon on s'arrête
avant = checkBefore(elgauche.previous_sibling, etat) + avant
xrPini = re.sub(r'<edit type=".*?" categorie="correction" idodf=".*?" resolu="1" auteur=".*?" date=".*?" comment=".*?" initial="(.*?)" final=".*?" tags=""/>', lambda m: m.group(1), str(xrPliste[i]))
if xrPini != str(xiPliste[i]):
print(xrPini)
\ No newline at end of file
elif re.match(r'/>$', str(elgauche)):
# si l'élément gauche est une balise edit, on récupère la valeur de l'état
avant = elgauche[etat] + avant
if not re.match(r'^[ ,.]', elgauche[etat]):
# si pas d'espace au début de la valeur de l'état, on checkBefore()
avant = checkBefore(elgauche.previous_sibling, etat) + avant
return avant
def checkAfter(edit, etat):
apres = ""
eldroit = edit.next_sibling
search = re.match(r'^(\w+)', str(eldroit))
if search:
# si il y a un mot juste apres (sans espace entre le mot et la balise courante), on récupère le mot
apres = search.group(1)
search = re.match(r' ', str(eldroit))
if not search:
# si il n'y a pas d'espace dans next_sibling, on checkAfter(), sinon on s'arrête
apres += checkAfter(eldroit.next_sibling, etat)
elif re.match(r'/>$', str(eldroit)):
# si l'élément droit est une balise edit, on récupère la valeur de l'état
apres += eldroit[etat]
if not re.match(r'[ ,.]$', eldroit[etat]):
# si pas d'espace à la fin de la valeur de l'état, on checkAfter()
apres += checkAfter(eldroit.next_sibling, etat)
return apres
# def checkAfter(edit, etat):
# apres = ""
# if edit[etat][-1] != ' ' and edit[etat][0] != ' ':
# search = re.match(r'^(\w+)', str(edit.next_sibling))
# if search:
# apres = search.group(1)
# elif re.match(r'^<edit', str(edit.next_sibling)):
# if edit.next_sibling[etat] != "":
# apres += edit.next_sibling[etat]
# apres += checkBefore(edit.next_sibling, etat)
# return apres
for x in range(0,15):
print('\nP',x)
edits = xrPliste[x].find_all('edit')
for edit in edits:
if len(edit['initial']) > 0:
# ETAT INITIAL DE LA TRADUCTION
etat='initial'
avant = ""
apres = ""
if not re.match(r'^[ ,.]', edit[etat]):
# si pas d'espace au début de la valeur de l'état, on checkBefore()
avant = checkBefore(edit, etat)
elif not re.match(r'[ ,.]$', edit[etat]):
# si pas d'espace à la fin de la valeur de l'état, on checkAfter()
apres = checkAfter(edit, etat)
print("{}|{}|{}".format(avant, edit[etat], apres))
This diff is collapsed.
「幸福」というキーワードを画像検索してみれば、一人でスマホを触っているような人の図は出てこないだろう。
「幸福」というキーワード<comment text="で"></comment>画像検索<comment text="しても">してみれば</comment>、一人でスマホを触っている<edit type="deleted">ような人の</edit><comment text="画像"></comment>は出てこないだろう。
「幸福」というキーワード<new id=""></new>画像検索<new id="">しても、一人でスマホを触っている<new type="deleted"/><new id="">画像</new>は出てこないだろう。
JPFR :
......@@ -22,6 +17,12 @@ Puis remplacer:
par :
<edit type="$1" categorie="correction" idodf="$2" resolu="1" auteur="$3" date="$4" comment="" initial="$5" final="" tags=""/>
Pour les délétions d'insertions :
remplacer :
first-type="(.*?)" first-aut="(.*?)" first-date="(.*?)" comment="" initial="(.*?)"
par :
comment="{first-type='$1', first-aut='$2', first-date='$3', contenu='$4'}" initial=""
FRJP :
......@@ -35,6 +36,37 @@ Puis remplacer :
par :
<edit type="deletion" categorie="correction" idodf="" resolu="1" auteur="" date="" comment="" initial="$1" final="" tags=""/>
REFLEXION TAGS :
avai<edit type="insertion"
categorie="correction"
idodf="ct94606708185664"
resolu="1" auteur="ETU2"
date="2020-01-12T17:58:00"
comment="" initial="" final="s" tags=""/>
<edit type="deletion" categorie="correction"
idodf="ct94606708032688" resolu="1" auteur="ETU2"
date="2020-01-12T17:58:00" comment="" initial="t" final="" tags=""/> 14 ans, une
-------------------------------------------------
「幸福」というキーワードを画像検索してみれば、一人でスマホを触っているような人の図は出てこないだろう。
「幸福」というキーワード<comment text="で"></comment>画像検索<comment text="しても">してみれば</comment>、一人でスマホを触っている<edit type="deleted">ような人の</edit><comment text="画像"></comment>は出てこないだろう。
「幸福」というキーワード<new id=""></new>画像検索<new id="">しても、一人でスマホを触っている<new type="deleted"/><new id="">画像</new>は出てこないだろう。
「幸福」というキーワード<edit type="commentaire"
categorie="correction"
idodf="4260"
......@@ -148,6 +180,6 @@ Ce<edit type="insertion" id="ct94606708980928" aut="ETU2" date="2020-01-13T12:15
aut="ETU1"
date="2020-01-24T21:50:00"
initial=""
comment="{first-type="insertion", first-aut="ETU2", first-date="2020-01-13T12:15:00", contenu="acceptent/"}"
comment="{first-type='insertion', first-aut='ETU2', first-date='2020-01-13T12:15:00', contenu='acceptent/'}"
final=""
/><edit type="insertion" id="ct94606708996128" aut="ETU2" date="2020-01-13T12:15:00">approuvent </edit>et divinisent l<edit type="insertion" id="ct94606708998176" aut="ETU2" date="2020-01-13T12:16:00">es </edit><edit type="deletion" id="ct94606708999072" aut="ETU2" date="2020-01-13T12:16:00"></edit>idée<edit type="insertion" id="ct94606709001248" aut="ETU2" date="2020-01-13T12:16:00">s</edit> r<edit type="insertion" id="ct94606709002720" aut="ETU2" date="2020-01-13T12:16:00">e</edit><edit type="deletion" id="ct94606709003616" aut="ETU2" date="2020-01-13T12:16:00">é</edit>çue<edit type="insertion" id="ct94606709005088" aut="ETU2" date="2020-01-13T12:16:00">s</edit>.
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment