Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qbe
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lifo
A
Anaïs Halftermeyer
queryByExample
qbe
Commits
db87255b
Commit
db87255b
authored
Aug 10, 2025
by
Elias
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
delete files renamed
parent
e8de8337
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
0 additions
and
482 deletions
+0
-482
TrainValTest2_Random.py
TrainValTest2_Random.py
+0
-124
TrainValTest3_Random.py
TrainValTest3_Random.py
+0
-82
TrainValTest3_bis_Random.py
TrainValTest3_bis_Random.py
+0
-87
TrainValTest4_Random.py
TrainValTest4_Random.py
+0
-60
TrainValTest5_Random.py
TrainValTest5_Random.py
+0
-30
TrainValTest6_Random.py
TrainValTest6_Random.py
+0
-18
TrainValTest7_Random.py
TrainValTest7_Random.py
+0
-42
TrainValTest8_Random.py
TrainValTest8_Random.py
+0
-39
No files found.
TrainValTest2_Random.py
deleted
100755 → 0
View file @
e8de8337
import
csv
import
os
import
random
repertoire
=
"textGridEnCSV"
# Fichiers placés directement en val et test
fichiers_test_direct
=
{
"1023-FA.csv"
,
"1029-HB2.csv"
}
fichiers_val_direct
=
{
"1014-SZ.csv"
,
"1021_bis-TA.csv"
,
"1021-TA.csv"
}
# Stockage
decoupes
=
[]
restant
=
[]
# lignes à répartir
# Stats
total_lignes_global
=
0
val_direct
=
[]
test_direct
=
[]
# Collecter toutes les lignes
for
fichier
in
os
.
listdir
(
repertoire
):
if
not
fichier
.
endswith
(
".csv"
):
continue
chemin
=
os
.
path
.
join
(
repertoire
,
fichier
)
with
open
(
chemin
,
mode
=
"r"
,
newline
=
""
)
as
f
:
reader
=
csv
.
reader
(
f
)
next
(
reader
)
# pour ignorer l'en-tête
lignes
=
[
row
for
row
in
reader
if
row
[
2
]
.
strip
()]
total
=
len
(
lignes
)
total_lignes_global
+=
total
lignes_bounds
=
[(
float
(
row
[
0
]),
float
(
row
[
1
]),
row
[
2
]
.
strip
())
for
row
in
lignes
]
if
fichier
in
fichiers_test_direct
:
decoupes
.
append
({
"fichier"
:
fichier
,
"Train"
:
[],
"Val"
:
[],
"Test"
:
lignes_bounds
})
test_direct
.
extend
(
lignes_bounds
)
elif
fichier
in
fichiers_val_direct
:
decoupes
.
append
({
"fichier"
:
fichier
,
"Train"
:
[],
"Val"
:
lignes_bounds
,
"Test"
:
[]
})
val_direct
.
extend
(
lignes_bounds
)
else
:
# À répartir plus tard dans le global
restant
.
append
((
fichier
,
lignes_bounds
))
# Constitution du global
all_restant
=
[]
fichier_to_rows
=
{}
for
fichier
,
lignes
in
restant
:
for
ligne
in
lignes
:
all_restant
.
append
((
fichier
,
ligne
))
fichier_to_rows
[
fichier
]
=
[]
# Mélange et découpage global
random
.
shuffle
(
all_restant
)
reste
=
total_lignes_global
-
len
(
val_direct
)
-
len
(
test_direct
)
n_val_cible
=
int
(
total_lignes_global
*
0.10
)
-
len
(
val_direct
)
n_test_cible
=
int
(
total_lignes_global
*
0.10
)
-
len
(
test_direct
)
n_train_cible
=
reste
-
n_val_cible
-
n_test_cible
train
,
val
,
test
=
[],
[],
[]
for
fichier
,
ligne
in
all_restant
:
if
len
(
train
)
<
n_train_cible
:
train
.
append
((
fichier
,
ligne
))
elif
len
(
val
)
<
n_val_cible
:
val
.
append
((
fichier
,
ligne
))
else
:
test
.
append
((
fichier
,
ligne
))
# Regrouper par fichier
fichier_to_bounds
=
{
fichier
:
{
"Train"
:
[],
"Val"
:
[],
"Test"
:
[]}
for
fichier
in
fichier_to_rows
}
for
fichier
,
ligne
in
train
:
fichier_to_bounds
[
fichier
][
"Train"
]
.
append
(
ligne
)
for
fichier
,
ligne
in
val
:
fichier_to_bounds
[
fichier
][
"Val"
]
.
append
(
ligne
)
for
fichier
,
ligne
in
test
:
fichier_to_bounds
[
fichier
][
"Test"
]
.
append
(
ligne
)
# Ajouter à la sortie finale
for
fichier
in
fichier_to_bounds
:
decoupes
.
append
({
"fichier"
:
fichier
,
"Train"
:
fichier_to_bounds
[
fichier
][
"Train"
],
"Val"
:
fichier_to_bounds
[
fichier
][
"Val"
],
"Test"
:
fichier_to_bounds
[
fichier
][
"Test"
],
})
# Affichage
for
d
in
decoupes
:
print
(
f
"
\n
{d['fichier']}"
)
print
(
" Train :"
,
d
[
"Train"
])
print
(
" Val :"
,
d
[
"Val"
])
print
(
" Test :"
,
d
[
"Test"
])
# Statistiques
nb_train
=
sum
(
len
(
d
[
"Train"
])
for
d
in
decoupes
)
nb_val
=
sum
(
len
(
d
[
"Val"
])
for
d
in
decoupes
)
nb_test
=
sum
(
len
(
d
[
"Test"
])
for
d
in
decoupes
)
print
(
"
\n
--- STATISTIQUES ---"
)
print
(
f
"Total lignes : {total_lignes_global}"
)
print
(
f
"Train : {nb_train} lignes ({nb_train / total_lignes_global * 100:.2f}
%
)"
)
print
(
f
"Val : {nb_val} lignes ({nb_val / total_lignes_global * 100:.2f}
%
)"
)
print
(
f
"Test : {nb_test} lignes ({nb_test / total_lignes_global * 100:.2f}
%
)"
)
TrainValTest3_Random.py
deleted
100755 → 0
View file @
e8de8337
import
re
import
ast
import
os
from
pympi
import
Praat
dossier_textgrid
=
'textGrid'
fichier_txt
=
'resTrainValTest2_Random.txt'
fichier_txt_backup
=
'resTrainValTest2_Random_backup.txt'
output_mots
=
set
()
# Sauvegarder le fichier original
with
open
(
fichier_txt
,
'r'
,
encoding
=
'utf-8'
)
as
f
:
contenu_original
=
f
.
read
()
with
open
(
fichier_txt_backup
,
'w'
,
encoding
=
'utf-8'
)
as
f_backup
:
f_backup
.
write
(
contenu_original
)
# Regex pour trouver chaque bloc .csv + Train : [(xmin, xmax, texte)]
regex_bloc
=
re
.
compile
(
r'(?P<nom_csv>\S+\.csv)\s*Train\s*:\s*(?P<train_data>\[\(.*?\)\])'
,
re
.
DOTALL
)
contenu_modifie
=
contenu_original
# On travaille sur une copie
# Parcourir tous les blocs Train
for
match
in
regex_bloc
.
finditer
(
contenu_original
):
nom_csv
=
match
.
group
(
'nom_csv'
)
train_data_str
=
match
.
group
(
'train_data'
)
base_name
=
nom_csv
.
split
(
'-'
)[
0
]
textgrid_path
=
os
.
path
.
join
(
dossier_textgrid
,
f
"{base_name}.TextGrid"
)
if
not
os
.
path
.
exists
(
textgrid_path
):
print
(
f
"Fichier TextGrid manquant : {textgrid_path}"
)
continue
# Charger TextGrid
tg
=
Praat
.
TextGrid
(
textgrid_path
)
try
:
phrases
=
ast
.
literal_eval
(
train_data_str
)
except
Exception
as
e
:
print
(
f
"Erreur Train pour {nom_csv} : {e}"
)
continue
# Accès aux tiers locuteurs
tier_locuteur1
=
tg
.
tiers
[
1
]
.
intervals
tier_locuteur2
=
tg
.
tiers
[
4
]
.
intervals
nouvelles_phrases
=
[]
for
xmin_phrase
,
xmax_phrase
,
_
in
phrases
:
mots
=
[]
def
extraire_mots
(
intervals
):
for
xmin_mot
,
xmax_mot
,
mot
in
intervals
:
if
xmin_mot
>=
xmin_phrase
and
xmax_mot
<=
xmax_phrase
:
mot
=
mot
.
strip
()
if
mot
:
mots
.
append
(
f
'"{mot}"'
)
output_mots
.
add
(
mot
)
extraire_mots
(
tier_locuteur1
)
extraire_mots
(
tier_locuteur2
)
nouvelle_chaine
=
" "
.
join
(
mots
)
nouvelles_phrases
.
append
((
xmin_phrase
,
xmax_phrase
,
nouvelle_chaine
))
nouveau_bloc
=
f
"{nom_csv} Train : {repr(nouvelles_phrases)}"
contenu_modifie
=
contenu_modifie
.
replace
(
match
.
group
(
0
),
nouveau_bloc
)
# Réécrire le fichier texte modifié
with
open
(
fichier_txt
,
'w'
,
encoding
=
'utf-8'
)
as
f_modif
:
f_modif
.
write
(
contenu_modifie
)
# Écrire les mots extraits dans res3_Random.txt
with
open
(
'res3_Random.txt'
,
'w'
,
encoding
=
'utf-8'
)
as
f_mots
:
for
mot
in
sorted
(
output_mots
):
f_mots
.
write
(
f
'"{mot}"
\n
'
)
print
(
"Fichier mis à jour :"
,
fichier_txt
)
print
(
"Sauvegarde créée :"
,
fichier_txt_backup
)
print
(
"Mots extraits dans res3_Random.txt"
)
TrainValTest3_bis_Random.py
deleted
100644 → 0
View file @
e8de8337
import
re
import
ast
import
os
from
pympi
import
Praat
dossier_textgrid
=
'textGrid'
fichier_txt
=
'resTrainValTest2_Random_backup.txt'
output_mots
=
set
()
with
open
(
fichier_txt
,
'r'
,
encoding
=
'utf-8'
)
as
f
:
contenu_original
=
f
.
read
()
# Regex pour trouver chaque bloc .csv + Train : [(xmin, xmax, texte)]
pattern_fichier_blocs
=
re
.
compile
(
r'(?P<filename>\S+\.csv)\s*?\n\s*Train\s*:\s*(?P<train>\[.*?\])\s*?\n\s*Val\s*:\s*(?P<val>\[.*?\])\s*?\n\s*Test\s*:\s*(?P<test>\[.*?\])'
,
re
.
DOTALL
)
contenu_modifie
=
contenu_original
for
match
in
pattern_fichier_blocs
.
finditer
(
contenu_original
):
filename
=
match
.
group
(
'filename'
)
blocs
=
{
"Train"
:
match
.
group
(
'train'
),
"Val"
:
match
.
group
(
'val'
),
"Test"
:
match
.
group
(
'test'
),
}
base_name
=
filename
.
split
(
'-'
)[
0
]
textgrid_path
=
os
.
path
.
join
(
dossier_textgrid
,
f
"{base_name}.TextGrid"
)
if
not
os
.
path
.
exists
(
textgrid_path
):
print
(
f
"Fichier TextGrid manquant : {textgrid_path}"
)
continue
tg
=
Praat
.
TextGrid
(
textgrid_path
)
tier_locuteur1
=
tg
.
tiers
[
1
]
.
intervals
tier_locuteur2
=
tg
.
tiers
[
4
]
.
intervals
nouvelles_lignes
=
[
filename
]
for
split
in
[
"Train"
,
"Val"
,
"Test"
]:
try
:
phrases
=
ast
.
literal_eval
(
blocs
[
split
])
except
Exception
as
e
:
print
(
f
"Erreur {split} pour {filename} : {e}"
)
nouvelles_lignes
.
append
(
f
"{split} : {blocs[split]}"
)
continue
nouvelles_phrases
=
[]
for
xmin_phrase
,
xmax_phrase
,
_
in
phrases
:
mots
=
[]
def
extraire_mots
(
intervals
):
for
xmin_mot
,
xmax_mot
,
mot
in
intervals
:
if
xmin_mot
>=
xmin_phrase
and
xmax_mot
<=
xmax_phrase
:
mot
=
mot
.
strip
()
if
mot
:
mots
.
append
(
f
'"{mot}"'
)
output_mots
.
add
(
mot
)
extraire_mots
(
tier_locuteur1
)
extraire_mots
(
tier_locuteur2
)
nouvelle_chaine
=
" "
.
join
(
mots
)
nouvelles_phrases
.
append
((
xmin_phrase
,
xmax_phrase
,
nouvelle_chaine
))
nouvelles_lignes
.
append
(
f
"{split} : {repr(nouvelles_phrases)}"
)
# Remplacer bloc entier dans le texte original
bloc_original
=
match
.
group
(
0
)
bloc_nouveau
=
"
\n
"
.
join
(
nouvelles_lignes
)
contenu_modifie
=
contenu_modifie
.
replace
(
bloc_original
,
bloc_nouveau
)
# Écriture du fichier modifié
with
open
(
fichier_txt
,
'w'
,
encoding
=
'utf-8'
)
as
f_out
:
f_out
.
write
(
contenu_modifie
)
# Enregistrer tous les mots extraits
with
open
(
'res3_Random.txt'
,
'w'
,
encoding
=
'utf-8'
)
as
f_mots
:
for
mot
in
sorted
(
output_mots
):
f_mots
.
write
(
f
'"{mot}"
\n
'
)
print
(
"Traitement terminé pour Train, Val et Test."
)
TrainValTest4_Random.py
deleted
100755 → 0
View file @
e8de8337
import
os
import
re
import
ast
import
csv
from
collections
import
defaultdict
# Fichiers d'entrée
fichier_decoupe
=
"resTrainValTest2_Random_backup.txt"
fichier_mots
=
"res3_Random.txt"
# Regex pour trouver les blocs Train / Val / Test
regex_bloc
=
{
"Train"
:
re
.
compile
(
r'Train\s*:\s*(\[\(.*?\)\])'
,
re
.
DOTALL
),
"Val"
:
re
.
compile
(
r'Val\s*:\s*(\[\(.*?\)\])'
,
re
.
DOTALL
),
"Test"
:
re
.
compile
(
r'Test\s*:\s*(\[\(.*?\)\])'
,
re
.
DOTALL
),
}
# Charger les mots cibles (déjà entre guillemets dans le fichier)
with
open
(
fichier_mots
,
"r"
,
encoding
=
"utf-8"
)
as
f
:
mots_cibles
=
set
(
line
.
strip
()
.
strip
(
'"'
)
for
line
in
f
if
line
.
strip
())
# Initialisation des compteurs
compteurs
=
{
"Train"
:
defaultdict
(
int
),
"Val"
:
defaultdict
(
int
),
"Test"
:
defaultdict
(
int
),
}
# Lire le fichier contenant les blocs
with
open
(
fichier_decoupe
,
"r"
,
encoding
=
"utf-8"
)
as
f
:
contenu
=
f
.
read
()
# Traitement par split
for
split
,
regex
in
regex_bloc
.
items
():
blocs
=
regex
.
findall
(
contenu
)
for
bloc
in
blocs
:
try
:
tuples
=
ast
.
literal_eval
(
bloc
)
for
_
,
_
,
texte
in
tuples
:
# Extraire les mots entre guillemets
mots
=
re
.
findall
(
r'"([^"]+)"'
,
texte
)
for
mot
in
mots
:
if
mot
in
mots_cibles
:
compteurs
[
split
][
mot
]
+=
1
except
Exception
as
e
:
print
(
f
"Erreur parsing {split} : {e}"
)
# Écriture du fichier CSV
with
open
(
"res4_Random.csv"
,
mode
=
"w"
,
newline
=
""
,
encoding
=
"utf-8"
)
as
csvfile
:
writer
=
csv
.
writer
(
csvfile
)
writer
.
writerow
([
"Mot"
,
"Train"
,
"Val"
,
"Test"
])
for
mot
in
sorted
(
mots_cibles
):
writer
.
writerow
([
mot
,
compteurs
[
"Train"
]
.
get
(
mot
,
0
),
compteurs
[
"Val"
]
.
get
(
mot
,
0
),
compteurs
[
"Test"
]
.
get
(
mot
,
0
)
])
print
(
"Fichier 'res4_Random.csv' généré avec succès."
)
TrainValTest5_Random.py
deleted
100755 → 0
View file @
e8de8337
import
csv
fichier_entree
=
"res4_Random.csv"
# fichier de la forme Mot,Train,Val,Test
fichier_sortie
=
"res5_Random.csv"
# fichier de sortie : pareil mais trié en ordre décroissant de nombre d'occurences dans la colonne Train
donnees
=
[]
# Lire le fichier CSV d'entrée
with
open
(
fichier_entree
,
mode
=
"r"
,
encoding
=
"utf-8"
)
as
f
:
reader
=
csv
.
DictReader
(
f
)
for
row
in
reader
:
mot
=
row
[
"Mot"
]
train
=
int
(
row
[
"Train"
])
val
=
int
(
row
[
"Val"
])
test
=
int
(
row
[
"Test"
])
donnees
.
append
([
mot
,
train
,
val
,
test
])
# Trier par ordre décroissant sur la colonne Train
donnees_tries
=
sorted
(
donnees
,
key
=
lambda
x
:
x
[
1
],
reverse
=
True
)
# Écrire dans un nouveau fichier CSV
with
open
(
fichier_sortie
,
mode
=
"w"
,
newline
=
""
,
encoding
=
"utf-8"
)
as
f_out
:
writer
=
csv
.
writer
(
f_out
)
writer
.
writerow
([
"Mot"
,
"Train"
,
"Val"
,
"Test"
])
writer
.
writerows
(
donnees_tries
)
# Afficher la somme des occurrences Train
somme_train
=
sum
(
x
[
1
]
for
x
in
donnees_tries
)
print
(
f
"Fichier '{fichier_sortie}' généré avec succès."
)
print
(
f
"Somme totale des occurrences dans Train : {somme_train}"
)
TrainValTest6_Random.py
deleted
100755 → 0
View file @
e8de8337
import
csv
input_file
=
"res5_Random.csv"
output_file
=
"res6_Random.csv"
with
open
(
input_file
,
mode
=
"r"
,
newline
=
""
)
as
f_in
,
open
(
output_file
,
mode
=
"w"
,
newline
=
""
)
as
f_out
:
reader
=
csv
.
reader
(
f_in
)
writer
=
csv
.
writer
(
f_out
)
header
=
next
(
reader
)
writer
.
writerow
(
header
)
# écrire l'en-tête
for
row
in
reader
:
mot
,
train
,
val
,
test
=
row
if
int
(
train
)
>=
2
and
int
(
val
)
>=
2
and
int
(
test
)
>=
2
:
writer
.
writerow
(
row
)
print
(
f
"Fichier filtré sauvegardé dans '{output_file}'"
)
TrainValTest7_Random.py
deleted
100755 → 0
View file @
e8de8337
import
csv
fichier_entree
=
"res6_Random.csv"
# fichier sans colonne Bin
fichier_sortie
=
"res7_Random.csv"
# fichier qui sera extrait avec la colonne Bin
donnees
=
[]
# Lire les données
with
open
(
fichier_entree
,
mode
=
"r"
,
encoding
=
"utf-8"
)
as
f
:
reader
=
csv
.
DictReader
(
f
)
for
row
in
reader
:
mot
=
row
[
"Mot"
]
train
=
int
(
row
[
"Train"
])
val
=
int
(
row
[
"Val"
])
test
=
int
(
row
[
"Test"
])
donnees
.
append
([
mot
,
train
,
val
,
test
])
donnees_tries
=
sorted
(
donnees
,
key
=
lambda
x
:
x
[
1
],
reverse
=
True
)
# Calculer la somme totale
somme_train
=
sum
(
row
[
1
]
for
row
in
donnees_tries
)
print
(
f
"Somme totale de Train : {somme_train}"
)
# Calcul des bins
cumul
=
0
donnees_binees
=
[]
for
row
in
donnees_tries
:
mot
,
train
,
val
,
test
=
row
cumul
+=
train
pourcentage
=
(
cumul
/
somme_train
)
*
100
bin_pourcent
=
min
(
100
,
((
int
(
pourcentage
)
//
10
)
+
1
)
*
10
)
# 10, 20, ..., 100
donnees_binees
.
append
([
mot
,
train
,
val
,
test
,
bin_pourcent
])
# Sauvegarder dans un nouveau fichier
with
open
(
fichier_sortie
,
mode
=
"w"
,
newline
=
""
,
encoding
=
"utf-8"
)
as
f_out
:
writer
=
csv
.
writer
(
f_out
)
writer
.
writerow
([
"Mot"
,
"Train"
,
"Val"
,
"Test"
,
"Bin"
])
# Ajout de la colonne Bin
writer
.
writerows
(
donnees_binees
)
print
(
f
"Fichier '{fichier_sortie}' généré avec succès."
)
TrainValTest8_Random.py
deleted
100755 → 0
View file @
e8de8337
import
csv
from
collections
import
defaultdict
import
matplotlib.pyplot
as
plt
input_file
=
"res7_Random.csv"
# Dictionnaire pour compter les lignes par Bin
bin_counts
=
defaultdict
(
int
)
with
open
(
input_file
,
mode
=
"r"
,
newline
=
""
)
as
f
:
reader
=
csv
.
reader
(
f
)
next
(
reader
)
for
row
in
reader
:
bin_value
=
int
(
row
[
4
])
# colonne 'Bin'
bin_counts
[
bin_value
]
+=
1
# Trier les bins
bins
=
sorted
(
bin_counts
.
keys
())
counts
=
[
bin_counts
[
b
]
for
b
in
bins
]
# Création du bar chart
plt
.
figure
(
figsize
=
(
10
,
6
))
bars
=
plt
.
bar
([
str
(
b
)
for
b
in
bins
],
counts
,
color
=
'skyblue'
)
# Ajouter les nombres au-dessus des barres
for
bar
in
bars
:
height
=
bar
.
get_height
()
plt
.
text
(
bar
.
get_x
()
+
bar
.
get_width
()
/
2
,
height
+
0.5
,
str
(
height
),
ha
=
'center'
,
va
=
'bottom'
,
fontsize
=
10
)
plt
.
title
(
"Number of words by Bin"
)
plt
.
xlabel
(
"Bin"
)
plt
.
ylabel
(
"Number of words"
)
plt
.
grid
(
axis
=
'y'
,
linestyle
=
'--'
,
alpha
=
0.7
)
plt
.
tight_layout
()
plt
.
show
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment