Proportion de noms propres à consonnance étrangère

Bien, alors, concrètement voici 4 questions :

Suite à une étude succincte (scripts et données disponibles), j’ai précédemment mentionné 12 ouvrages/lexiques qui impactent négativement le lexique (en regard des nom propres uniquement) et responsables à eux-seuls de 10% des termes inconnus (aboutissant à des nombreuses erreurs de locution et portant un préjudice au projet en entier)

1. Pourriez-vous m’indiquer la procédure pour les supprimer ?
2. Dans le cas contraire, sauriez-vous indiquer la personne qui a la responsabilité de telles suppressions et le moyen de la contacter et/ou l’amener sur discourse ou github ?

D’autre part :
3. Sauriez-vous obtenir la liste des articles Wikipedia France choisis pour être importés dans le lexique (et leur révision/date) ?
4. Dans le cas, contraire, obtenir le contact de la personne qui en a eu la responsabilité et qui détient la réponse ?

Merci !

Il faut ouvrir un bug sur Common Voice https://github.com/common-voice/common-voice

on l’a déjà fait dans le passé, à l’époque c’était un peu compliqué.

Tout est sur GitHub, il faut regarder l’historique

je n’ai jamais été officiellement affecté à Common Voice, mon manager de l’époque DeepSpeech me laissait passer du temps dessus, mais si j’avais des urgences, ça passait devant. j’ai lancé plusieurs fois des appels pour que des gens viennent contribuer et prennent des responsabilités pour ne pas que tout soit verrouillé sur un employé Mozilla, justement.

Je rappelle que @heyhillary fait régulièrement des réunions et autres justement pour que de nouvelles personnes s’impliquent plus en amont dans leurs langues

1 Like

et il me semble que j’ai explicité ce qu’il fallait faire

3. Sauriez-vous obtenir la liste des articles Wikipedia France choisis pour être importés dans le lexique (et leur révision/date) ?
4. Dans le cas, contraire, obtenir le contact de la personne qui en a eu la responsabilité et qui détient la réponse ?

Tout est sur GitHub, il faut regarder l’historique

j’ai précédemment mentionné 12 ouvrages/lexiques qui impactent négativement le lexique (en regard des nom propres uniquement) et responsables à eux-seuls de 10% des termes inconnus (aboutissant à des nombreuses erreurs de locution et portant un préjudice au projet en entier)

et il me semble que j’ai explicité ce qu’il fallait faire

Qu’est-ce qui est faisable quant à Wikipedia ? Qui a la responsabilité de la “maintenance” de ce dataset (désormais dans le sentence-collector) ?

“Personne” et “tout le monde”, les contributions sont les bienvenues. L’importeur est dispo: https://github.com/common-voice/cv-sentence-extractor

Oui je crois que ça répond bien à la question n° 3 et 4.

Certaines personnes attendent de Common Voice de présenter un français « irréprochable », mais à titre personnel je ne sais pas si c’est une bonne chose.

IMHO Il faut réfléchir en se disant « qu’est-ce que j’attends comme comportement en tant qu’utilisateur d’un modèle entraîné avec ces données ? »

Et à titre perso encore, je pense que des noms étrangers c’est bon, parce qu’on aura toujours besoin des fois d’en dire, et qu’on s’attends à une transcription plus ou moins correcte. Probablement que beaucoup de locuteurs qui ne connaissent pas la langue ne pourrons pas faire une diction correcte, mais ça restera représentatif, aussi.

Je suis pas trop pour la signalisation/suppression des données. Je préfère que les gens ignorent quand ils hésitent trop.

Je crois que maintenant la page pour donner des critères de validation est plus souple, donc le travail de @drzraf devrait être continué et débattu pour y être apposé ?

1 Like

Non, ce n’est pas le cas de Wikipedia. (merci de vérifier, afin de nous éviter des allers-retours) : La seule référence c’est ce fichier ajouté dans d5d17b (Add missing files)

Ce script a récupéré des articles au hasard et ne conserve aucune trace relative ni à l’auteur, ni aux articles importé ni la date ni leur révision et pas même leur nombre
Sans accès à la DB, l’un des imports les plus significatifs ne dispose d’aucune traçabilité publique (dans GitHub), et c’est justement la raison de mes questions 3 et 4 qui restent donc d’actualité.

Concernant la procédure de suppression on parle ici de milliers d’items qui ont été importés en batch mais dont chaque suppression devrait faire l’objet d’un bug ? (création, lecture manuelle, suppression manuelle, fermeture du bug manuelle).

Même si je peux techniquement scripter ma partie “création de bug”, il semble évident que la procédure n’est pas adéquate à l’ampleur des suppressions nécessaire.
Ou bien il faudrait me donner la confirmation formelle qu’il est adéquat de créer, demain, 5.000 demandes de suppression ?

Enfin, concernant le “français irréprochable”, je prends la liberté de m’inscrire en porte-à-faux. L’ancien français, l’anglais, les noms à consonance étrangère, … créent des confusions pour un grand nombre de locuteurs. Je n’ai pas fait d’étude mais il va de soit que là où l’on aurait quelques pourcents d’erreur chez les locuteurs natifs, on passe à plusieurs dizaines de pourcents.

C’est donc autant d’association “phonème / son” erronées qui sont ajoutées chaque jour à cause de ces phrases.

Je sais parfaitement qu’on peut venir dire que “ça rend le modèle plus résilient”, car en psychologie comme en IA on peut mettre la résilience à toutes les sauces.

Sauf qu’en l’absence d’une publication scientifique décisive sur le sujet, le paradigme “garbage in - garbage out” me semble bien plus plausible.

D’après moi il s’agirait d’avoir d’abord un modèle qui excelle sur le français commun, voir littéraire et seulement ensuite se permettre de rajouter des choses marginales/fancy, ce qui n’est pas le cas actuellement.
J’ai déjà testé avec plusieurs gamins français entre 7 et 10 ans et ils ont tous mis en évidence le taux de phrases problématiques beaucoup trop élevé.

tout ce que j’ai importé, c’est passé https://github.com/common-voice/commonvoice-fr/tree/5699e59244d14bb14d5b7603b91c934b761c9194/CommonVoice-Data/data en fait, c’est simple, ce sont les scripts shell dans https://github.com/common-voice/commonvoice-fr/tree/master/CommonVoice-Data que j’ai fait tourner, donc si y’a pas de wikipedia.sh c’est que j’ai bricolé et j’ai dû constater que ça faisait plus de mal que de bien et j’ai laissé tombé

le projet common voice a, de son côté, fait des imports de wikipedia, j’ai pas suivi, et je sais juste que c’est avec https://github.com/common-voice/cv-sentence-extractor

c’est bien pour ça que pour les imports français j’ai tenu à :

  • avoir des scripts
  • avec les paramètres de reproduction
  • qui génèrent des données finales dont on a la traçabilité avant ajout

Pour ce qui a été fait via Sentence Collector et l’extracteur mentionné avant, je n’ai pas d’autre bonne solution, et en débattre dans https://discourse.mozilla.org/c/voice/239 est la meilleure façon de faire avancer le problème

Alors il y a eu plusieurs publis sur Common Voice, je les aies pas lues

Les utilisations de ton modèles seront-elles sur un français commun parfait ? Il faut quelque chose utilisable au quotidien.

Ensuite, ne pas oublier que les imports Sentence Collector sont la majorité maintenant, de ce que j’en ai entendu la dernière fois. Ces imports nécessitent aussi d’être validés par plusieurs personnes avant d’être acceptés.

Je dis pas qu’il n’y a pas de curation à faire, bien au contraire cf https://github.com/common-voice/commonvoice-fr/issues mais à l’époque de deepspeech j’ai déjà pas eu le temps de le faire, maintenant que je bosse plus du tout autour de ces thématiques c’est encore pire

Oui et non. Moi le premier certaines tournures d’ancien français c’est pas immédiat, mais :

  • c’est pour ça qu’il y a les fonctions signaler / passer, si la personne ne sent pas à l’aise il n’y a aucun soucis à passer
  • du point de vue du modèle ça peut être pertinent d’avoir des enregistrements de termes qui ne soient pas en français mais qui peuvent avoir leur place dans une phrase en français

Point important : ça n’est que mon opinion de quelqu’un qui a bossé sur le modèle pour essayer d’en faire un truc qui marche pour de vrai (avec l’aide de gens très sympas de eSup Pod) et même si ça n’a pas été fait dans le cadre d’une publi, j’ai constaté les grosses améliorations apportées par l’augmentation importante du volume de français sur Common Voice.

Mais je veux pas non plus qu’on imagine que c’est « la position officielle du projet Common Voice FR », ça reste mon opinion, et je trouve très important ce travail de curation, parce que j’ai aussi vu passer pas mal de déchets (et pas que dans Common Voice) quand j’ai bossé sur les importeurs dans deepspeech.

Et à la fin, c’est bien ceux qui font le travail d’amélioration comme celui que tu proposes qui décident :slight_smile:

Oui, mais c’est quelque chose que j’avais suggéré y’a longtemps, je sais pas si hillary a pu avancer dessus, mais avoir des « profils » et pouvoir identifier des phrases dans certaines catégories permettrait de résoudre ça et améliorer l’utilisation pour les enfants, les personnes pas à l’aise avec le français, en évacuant ces phrases (parce que tout le temps faire « passer » ça peut être pénible à la longue)

Tu as fait un gros travail de catégorisation et de curation, ça serait vraiment triste que ça parte à la poubelle.

Dernier point, tu mentionnes

J’imagine que tu parlais de moi et donc j’insiste, même si je suis toujours salarié, même du temps de DeepSpeech c’était pas mon affectation principale, et même si je pouvais y passer du temps de travail (et des déplacements, pas mal), je n’étais pas dans l’équipe Common Voice. J’ai essayé de faire en sorte que d’autres aussi prennent en charge le projet, et la porte reste très grande ouverte.

On peut sortir les chiffres si vous voulez.

Modèle 0.6:

  • Common Voice FR (v5.1): ~490h
  • Total: ~1340h
  • WER sur CV: 30.12%
  • WER moyen: 29.11%

Modèle 0.8:

  • Common Voice FR (v8.0): ~826h
  • Total: ~2’551h
  • WER sur CV: 37.02%
  • WER moyen: 21.54%

C’est difficile de tirer un constat définitif sur deux point de donnés mais globalement voici ce que j’en conclus:

  1. Le WER moyen diminue avec l’augmentation de données de qualité.
    (~300 heures d’audio ont été remplacé par des nouvelles données de meilleur qualité en plus de ~1200h additionnelles).

  2. L’ajout de ~340h d’audio dans CV a fait augmenter le WER sur celui-ci de 7.1%.
    (On pourrait s’attendre à une légère augmentation de la difficulté lié au nouvelles données cependant on peut aisément constater que la version 8 de CV-fr possède un taux d’erreur par phrase plus élevé que la version 6 du set).

J’ai envie de dire qu’on arrive à une sorte de consensus, non?

Pour recap, on peut constater que l’ajout de grandes quantités de donnés (d’une qualité suffisante) permet d’améliorer les résultats cependant on pourra toutefois constater qu’on a une fâcheuse tendance à accumuler les erreurs au fils des ajouts, le bruit prenant de plus en plus de place face au signal.

De mon côté, j’ai pas mal fouiné dans CV, en voulant filtrer les données avant l’entraînement, la salle matrix de CommonVoice-Fr en sait quelque chose :sweat_smile:

Donc un ménage de printemps je dis pas non mais maintenant c’est surtout l’équipe de CommonVoice qu’il va falloir convaincre.

Il faut aussi garder à l’esprit que le set de donnés ne doit pas être parfait! La réalité ne l’est pas. Notre set doit simplement être représentatif proportionnellement à la langue orale.

La robustesse d’un modèle est un concept tout à fait tangible et mesurable (c.f différence entre le model 0.8 et 0.9). On veut quelle petites erreurs qu’un être humain lambdas pourrait commettre (c’est du signal ça, pas du bruit).

Comment faire la différence? On a cette super page de critères depuis quelques temps, elle est au poil honnêtement.

:loudspeaker: Par expérience, mon humour souvent naze et parfois mal compris pourrait faire réagir certain·e·s d'entre vous. Mes excuses par avance si c'est le cas, ce n'est pas volontaire, il n'y a pas de volonté de mauvais esprit de ma part.

:thinking: /me, hier : “Je suis un vieux routard de Wikipédia, j’aime clarifier les trucs pas clairs dans les aides et les documentations de modèle. Je pourrais me définir comme WikiGnome. Or, là, je me dis qu’il y a BEAUCOUP de mots étrangers dans mes échantillons, et je me dis que les règles sont pas claires… Donc je vais laisser un petit message sur un fil vieux de plus de 18 mois, confiant dans la communauté pour me répondre, mais sans grandes attentes. Qui ne tente rien n’a rien !”

:exploding_head: /me, 24 h plus tard : “WHAT ??? Qu’est ce que j’ai dit ou fait pour avoir 10 réponses, et plusieurs pages de lecture ???”

:face_with_monocle: /me, après avoir tout lu : "Bon… Va falloir répondre maintenant. "

:loudspeaker: Ce qui suit est donc une tentative de rattrapage de wagon :railway_track: :train: :twisted_rightwards_arrows: :repeat_one:, donc n’hésitez pas à tirer sur l’ambulance m’expliquer/corriger ce que je dis/m’envoyer sur la bonne page (“RTFM” is an acceptable answer …with the link) (No I am not taking about Zelda! :elf: Stay focus !)

Bon, heureusement, sur internet :globe_with_meridians:, on n’est jamais perdu ! :world_map: :round_pushpin: On est là.

En préambule, je tiens à affirmer que je ne voulais pas mettre de l’huile sur un feu :fire: qui avait l’air de couver. :fire_extinguisher:En lisant ton post initial et les réponses, drzraf, je me suis dit, comme skeilnet tout à l’heure, que ton travail était une bonne idée, et qu’il fallait en faire quelque chose. …Et je suis d’accord, lissyx, que des réponses avaient été données.
(…L’honnêteté m’oblige aussi à dire que je ne retrouve pas mes petits dans https://discourse.mozilla.org/c/voice/239, mais c’est sans doute le manque de pratique du forum et du projet.)
Et tant que j’y suis à lancer des fleurs, je suis bien conscient que c’est un projet participatif, chacun fait ce qu’il peut. Merci :pray: à vous trois d’avoir repris le sujet au vol !

Je commence par la fin, en bottant en touche sur toute la partie suppression des données :recycle: :put_litter_in_its_place:. Je ne connais pas assez (pour l’instant) ni la programmation, ni le projet, ni les critères pour prendre à ma charge les propositions et méthodes de correction :exploding_head:.
Amha, je vais plus faire des dégats qu’arranger les choses pour l’instant :-1:.

:warning: Attention, je ne dis pas que le débat en cours ne m’intéresse pas, bien au contraire, je dis juste que vous avez pour l’instant des discussions stratosphériques :satellite: :artificial_satellite: par rapport à mes connaissances sur le projet, et par rapport à des newbies :man_student: :woman_student:.

:thinking: Si la meilleure façon de ne pas avoir de la donnée moisie en sortie, c’est de ne pas la mettre à l’entrée (Garbage in - garbage out, en effet), il reste à définir les critères (d’entrée) pour les futurs apports, et comment nettoyer les entrées existantes. Et c’est laaaaaaargement hors de ma portée :artificial_satellite:. J’ai cherché si Hillary avait lancé un sujet sur cette question, mais je n’ai pas trouvé (help needed :sweat_smile:).

Cela étant… Mon objectif initial était beaucoup plus raz des pâquerettes :sunflower: (oui, cet emoji est un tournesol, mais là n’est pas la question), et avait pour but d’aider les “nouveaux” :woman_student: :man_student: (…j’en fais partie !) à ne pas rajouter du bruit sur le signal. …Plus exactement, clarifier :mag: ce qui EST du bruit de ce qui est du signal :loud_sound: :vs: :signal_strength:.

Désolé si j’ai l’air de radoter, ma question initiale portait sur une éventuelle amélioration/complémentation :arrow_heading_up: de la page que tu cites, skeilnet, c.à.d. https://commonvoice.mozilla.org/fr/criteria. Elle est au poil pour tout ce qu’elle décrit.
…Mais elle POURRAIT expliquer s’il faut rejeter/passer/garder les noms exotiques. Ce n’est ni décrit dans la version VF, ni explicité dans la version EN. Et mes recherches dans le forum n’a rien donné… Si ce n’est ce post, qui avait l’air de dire, conformément à je ne sais plus quelle page de règle :straight_ruler: :exclamation: ** que je ne retrouve pas, qu’on devrait se limiter à l’alphabet latin, et donc qu’on devrait “supprimer” les mots non français. …Sauf que, comme les réponses de ce fils l’indiquent, depuis, les règles se sont (ou pas) assouplies :triangular_ruler: :question:. Bref, la nature ayant horreur du vide, nous sommes dans un flou artistique :art:, perdus dans le brouillard :cloud:, sans boussole :compass: pour naviguer.

** EDIT 2 : je parle de cette page : how to, qui décrit : " Ajouter de nouvelles phrases : (…) Lettres étrangères. Les lettres doivent exister dans la langue que l’on doit parler. Par exemple, « ж » est une lettre de l’alphabet russe mais n’est jamais utilisée en français et ne devrait donc jamais apparaître dans un texte source en français." :sweat_smile:

J’insiste, je venait humblement requérir l’avis de l’Oracle :hindu_temple: de ceux qui connaissent le projet :man_teacher: :woman_teacher:, pour ne pas faire n’importe quoi, et permettre aux nouveaux :man_student: :woman_student: (j’insiste encore) de savoir quoi faire dans les situations où il y a des mots qui ne sont pas à consonnance bien rançaise * (et je ne dis pas de chez nous, puisque la :world_map:francophonie, ce n’est pas la :fr:France…).

Voilà voilà… Je vous souhaite pleins de bonnes choses, et je suis impatient de lire vos réponses. :dove: & :love_letter:.

* :laughing: Celle là, elle est un peu capillotracté, je fais référence au nom de ce sub dans Reddit : https://www.reddit.com/r/rance/ …Encore une fois, c’est une blague naze, n’allez pas chercher :clock12: à :clock2:.

EDIT :
:man_facepalming: J’ai oublié de demander ce que signifie

  • WER sur CV: 30.12%
  • WER moyen: 29.11%

…J’avoue que j’ai pas beaucoup cherché, mais j’ai pas trouvé :frowning: :sweat_smile:.

:pushpin: Message qui sera utile plus tard.
Pendant qu’on y est, une fois qu’on aura tranché le débat :left_speech_bubble: :speech_balloon: :ok:,
il faudra aller ici :
https://github.com/common-voice/commonvoice-fr/issues/21
pour retrouver le dossier des règles de validation.
(qui au jour de l’écriture de ces lignes est absent pour FR. yakafokon.)

Ouvre un bug sur github pour qu’elle puisse être plus personnalisée ? Ou lance la discussion sur Discourse avant ?

Pas de soucis, faut juste pas avoir peur de se lancer, y’a assez peu de gens qui s’occupent du projet FR, donc finalement assez peu de cadre. Avec les avantages et inconvénients que ça a …

J’ai oublié de demander ce que signifie

WER sur CV: 30.12%
WER moyen: 29.11%

…J’avoue que j’ai pas beaucoup cherché, mais j’ai pas trouvé

Oups :smile: C’est assez simple en fait, lorsque qu’un modèle est entraîné, on utilise un sous-ensemble représentatif de nos données pour représenter les données du monde réel (set de données de test).

Le WER (en anglais Word Error Rate) qu’on peut traduire par “taux d’erreur par mot” est un indicateur très utile (c’est pas le seul) qui nous permet (dans de bonne conditions) de comparer des modèles entre eux. En règle générale on aimerait ce taux au plus bas (dans les fait c’est plus complexe bien-sûr).

30% sur CommonVoice en français c’est dans les clous mais ça démontre bien la complexité du set (les erreurs qui s’y cachent aussi :smile:).

WER sur CV

C’est le taux d’erreur par mot sur CommVoice-FR uniquement.

WER moyen

C’est le taux d’erreur par mot moyen sur touts les jeux de données (de test) qu’on a utilisé (c.f. la page du modèle en question qui contient généralement ce genre de détail croustillant).

Pour revenir à nos moutons, il nous faut en fait un ambassadeur de la communauté francophone pour représenter nos intérêts auprès du projet CommonVoice dans sa globalité mais aussi pour pousser nos questions et suggestions spécifiquement francophones dans un contexte plus global. C’est qu’on peut avoir de bonnes idées quand on s’y mets! Les autres communauté linguistiques pourraient en profiter (et vis-versa bien-sûr).

1 Like

skeilnet, si cela vous est possible je serai vraiment ravi d’avoir un retour sur le WER résultant du dataset ainsi modifié.

Pourquoi tu vires tous les noms propres ? (c’est pas forcément que ça me dérange, mais le raisonnement est pas forcément bien clair sur le bug, alors que je pense que les ratios dont tu parles pourraient probablement aider au niveau général du projet)

1 Like

ça serait sûrement une bonne idée de découper ton commit en plusieurs, chacun se focalisant sur certains aspects (noms propres, noms à consonance étrangère, etc).

Certes c’est semi-automatisé, mais je ne peux pas vraiment “répartir”.

Le principe est :

  • d’extraire le capitalized
    • & black-magic sur apostrophes et tirets + case-insensitive
  • Filtrer pour autoriser tout ce qui fait partir de DB “communes”, soit noms communs (français + anglais) + Morphalou (toutes les déclinaisons possibles) + DB de toponymes (grandes villes, monde, pays) + grosse DB de prénoms
    • & black-magic sur apostrophes et tirets + case-insensitive
  • Pas 100% fool-proof mais une blacklist finale de 238k mots (essentiellement noms de famille + toponymes + typos/mots mal-orthographiés + néologismes + dieux grecs/latins + quelques trucs du genre “Babar” ou “Volkswagen” …)
    • Sur l’Assemblée Nationale c’est surtout beaucoup de “La parole est à Dugenoux” qui sont stripées
    • Pour le littéraire ce sont des noms de personnages ou d’auteurs
    • Pour le reste quelques noms de marques déposées
    • Mais c’est surtout sur les gros sets wiki* et sentence-collector.txt que du charabia est massivement retiré

Pour l’anecdote, on ne supprime pas impunément 238k patterns en case-insentive sur 150MB. Pour descendre de 10h de processing a une durée plus décente j’ai du passer par de la compilation de patterns (en les combinant par 25k pour ne pas (trop) swapper) afin d’aboutir un à une durée de processing d’à peu près une heure.

C’est entre autre (en plus d’une question de simplicité) la raison pour laquelle tout le stripping se fait en une seule fois, en une étape finale, plutôt qu’en plusieurs “commits thématiques” qui demanderaient de refaire tout le process pour chaque thématique.

Tiens je viens de voir Question about CV Sentence Extractor quality and your experience IMHO tout ce travail que tu fais pourrait bénéficier à ce thread !

1 Like

Bon, j’ai avancé le sujet, et ai fait une ébauche de commit pour les rules FR.

Qui ne contrôle absolument pas les caractères exotiques (puisque en fait il faudrait refuser les phrases avec des lettres hors alphabet latin, au lieu de les transformer)

mais qui corrige les acronymes, et d’autres trucs…

please have a look at :

Comme on dit, qui peut le plus, peut le moins :slightly_smiling_face:

Tu peux très bien faire ça après coup, à partir du jeu de données proposé par le projet. Suffirait d’un petit script shell qui analyserait les transcriptions pour ne garder que les échantillons dont l’ensemble des mots se trouve bien dans le dictionnaire français (+ éventuellement les prénoms, noms propres, marques et autres lieux communs par chez nous).

De nos jours, en France, énormément de gens (de tout âge) sont passionnés de mangas ou d’animes japonais, de séries ou de musique coréennes (la fameuse kpop), de football (avec des joueurs étrangers aux noms exotiques) et ainsi de suite. On peut aussi parler de l’actualité. Depuis la guerre en Ukraine, on entend de nombreux noms aussi bien russes qu’ukrainiens. Je trouve donc important d’avoir tout un tas de noms issus de pays lointains dans notre jeu de données.

Même pour l’anglais, même si de plus en plus de français arrivent à s’en sortir, il y a encore énormément de gens qui vont le parler aussi bien qu’une vache espagnole. Ce qui ne les empêchera pas de baragouiner quelque chose à leur zapette et d’avoir la surprise de voir Google Assistant réussir à trouver le titre qu’ils cherchaient (ce qui est bien souvent infiniment plus rapide que d’utiliser le clavier virtuel pour lancer une recherche Netflix ou autre).

J’espère qu’un jour, les modèles libres basés sur Common Voice arriveront eux aussi à retranscrire correctement n’importe quel titre d’œuvre et autre nom propre provenant de pays lointains, et ce, peut importe que l’on maîtrise ou non la langue :slightly_smiling_face: