common-voice/commonvoice-fr

WER Modèle Français 0.4

zankerx opened this issue · 15 comments

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 ?

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?

0.541340

ca c'est uniquement lingua libre

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 ?

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 ...

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

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" ?

--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 'é'

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 ...

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

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

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 ...

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

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

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

Non le soucis venait du mien

Parfait, merci :)