common-voice / commonvoice-fr

Tooling for producing French dataset for Common Voice
100 stars 24 forks source link

WER Modèle Français 0.4 #130

Closed zankerx closed 4 years ago

zankerx commented 4 years ago

Hello,

Je fais peut-être fausse route mais le modèle de langage utilisé pour le Modèle Français 0.4 ne comprend pas de caractères accentués (é,ê, ...) ?

Si c'est le cas les résultats sur le set de test ne sont pas faussés ? J'ai de mon coté réalisé des entraînements en utilisant les DataSets commonvoice FR, AILabs et linguaLibre en supprimant les accents. J'ai obtenu des WER aux alentours de 0.10 - 0.15 ce qui sensiblement moins que les 0.541340 du Modèle Français 0.4 .

Cette différence peut-elle s'expliquer par l'absence de caractères accentués dans le modèle de langage ?

lissyx commented 4 years ago

Je fais peut-être fausse route mais le modèle de langage utilisé pour le Modèle Français 0.4 ne comprend pas de caractères accentués (é,ê, ...) ?

Normalement si, qu'est-ce qui te fais dire ca?

lissyx commented 4 years ago

0.541340

ca c'est uniquement lingua libre

zankerx commented 4 years ago

Lorsque j'essaie de générer un modèle de langage avec generate_lm.py les caractères non ASCII ne passent pas.
prepare_lm.sh ne supprime pas les accents ?

lissyx commented 4 years ago

Lorsque j'essaie de générer un modèle de langage avec generate_lm.py les caractères non ASCII ne passent pas. prepare_lm.sh ne supprime pas les accents ?

Comment tu appelles generate_lm.py ?

Le code actuel ne soit supprimer les accents que si tu passes ENGLISH_COMPATIBLE, et c'est pas censé être par défaut. Par contre, j'ai mis à jour pour utiliser 0.7 mais j'ai pas encore trop eu le temps d'entraîner.

Cela étant, l'alphabet qui est généré actuellement contient toujours des accents ...

zankerx commented 4 years ago

python3 generate_lm.py \ --input_txt /data.txt \ --output_dir /out/ \ --top_k 500000 \ --kenlm_bins /DeepSpeech/native_client/kenlm/build/bin/ \ --arpa_order 5 \ --max_arpa_memory "85%" \ --arpa_prune "0" \ --binary_a_bits 255 \ --binary_q_bits 8 \ --binary_type trie \ --discount_fallback

lissyx commented 4 years ago

python3 generate_lm.py --input_txt /data.txt --output_dir /out/ --top_k 500000 --kenlm_bins /DeepSpeech/native_client/kenlm/build/bin/ --arpa_order 5 --max_arpa_memory "85%" --arpa_prune "0" --binary_a_bits 255 --binary_q_bits 8 --binary_type trie --discount_fallback

heu, c'est en dehors du Dockerfile.train qui est présent ici ? generate_lm.py touche à rien, si tu as des accents dans data.txt ils doivent être pris en compte. Pourquoi --arpa_prune "0" ?

zankerx commented 4 years ago

--arpa_prune "0" pour des tests, sinon "0|0|1"

Oui c'est en dehors du Dockerfile.train, par exemple si je lance :

python3 generate_lm.py \ --input_txt /DeepSpeech/DataSet/dataAccents.txt \ --output_dir /DeepSpeech/DataSet/ \ --top_k 500000 \ --kenlm_bins /DeepSpeech/native_client/kenlm/build/bin/ \ --arpa_order 5 \ --max_arpa_memory "85%" \ --arpa_prune "0|0|1" \ --binary_a_bits 255 \ --binary_q_bits 8 \ --binary_type trie \ --discount_fallback

avec dataAccents.txt qui contient ceci:

Un texte est une série orale ou écrite de mots perçus comme constituant un ensemble

j'ai une erreur:

Converting to lowercase and counting word occurrences ... | |# | 1 Elapsed Time: 0:00:00

Saving top 500000 words ... Traceback (most recent call last): File "generate_lm.py", line 210, in main() File "generate_lm.py", line 200, in main data_lower, vocab_str = convert_and_filter_topk(args) File "generate_lm.py", line 45, in convert_and_filter_topk file.write(vocab_str) UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 18: ordinal not in range(128) root@ce5d1cbc8837:/DeepSpeech/data/lm#

En position 18 on a le 'é'

lissyx commented 4 years ago

UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 18: ordinal not in range(128)

ça on dirait plus un problème sur ton système / python qui est mal configuré pour l'utf-8 ...

lissyx commented 4 years ago

Faudrait vérifier LC_ALL et/ou LANG, dans le dockerfile on force C.UTF-8 ...

zankerx commented 4 years ago

Pourtant python est bien en utf-8, c'est curieux ...

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

Je vais essayer de trouver d'ou vient le problème

edit: je vais regarder du coté du dockerfile

lissyx commented 4 years ago

Je vais essayer de trouver d'ou vient le problème

En tout cas, c'est certain que les accents sont censés être là, et que cette erreur c'est typique de python, la cause variant souvent beaucoup ...

zankerx commented 4 years ago

Il y avait bien un problème dans le dockerfile, ENV LANG=C.UTF-8 permet de le résoudre. Merci bien :+1:

lissyx commented 4 years ago

Il y avait bien un problème dans le dockerfile,

Pas dans celui du dépôt, donc?

zankerx commented 4 years ago

Non le soucis venait du mien

lissyx commented 4 years ago

Parfait, merci :)