• # Détection de langue

    Posté par (site web personnel, Mastodon) . En réponse au journal Sur le chemin de l'antispam bluesky. Évalué à 10.

    En acceptant (temporairement) les contenus en langues anglaises je me suis collé une écharde dans le pied que je compte retirer, mais à terme, pourquoi pas être multi lingue, sauf que les tags de langues de bluesky ne sont pas fiable, ça nécessite aussi une détection qui pour l'instant m'ennuie.

    Pour info, l'un des logiciels que je maintiens s'appelle uchardet et est historiquement l'une des références principales pour la détection d'encodage de caractères. Sauf que la logique utilisée en fait aussi un détecteur de langage de fait.

    C'est donc l'évolution future de cette bibliothèque (qui vient aussi avec un outil en ligne de commande), de détecter aussi la langue si besoin.

    Il n'y a pas encore version sortie avec ces nouvelles interfaces, mais c'est simple à compiler et la version de développement marche déjà pas si mal: https://gitlab.freedesktop.org/uchardet/uchardet/

    Tu pourrais tester avec l'outil CLI comme ça par exemple:

    uchardet -l -w 'fr:1,en:1,*:0'

    Puis tu copies un texte et tu finis par Entrée et Ctrl-D (apparemment 2 fois, je suis pas sûr pourquoi).

    Là tu demandes à uchardet de te détecter la langue, et tu mets le français et l'anglais avec un poids de 1 et le reste à 0. Parce que si je comprends bien, ton texte en entrée ne peut être que français ou anglais, n'est-ce pas?

    Limites:

    • C'est un outil statistique basé sur la fréquence et les suites de lettres. Il ne marche pas avec des dictionnaires, ne reconnaît pas la grammaire, etc. C'est aussi grâce à cela qu'il est si rapide (ça tourne partout) et prend très peu de place (pas de GiB de données). Mais ça veut aussi dire que si le texte à tester fait 1 ou 2 mots, ce ne sera pas efficace. Par contre s'il y a au moins une phrase, c'est normalement très efficace.
    • L'anglais est très vraisemblablement moins bien supporté que le français (parce qu'historiquement, il y avait surtout des raccourcis pour dire que c'est de l'anglais (genre "C'est de l'ASCII"), ce qui évidemment ne convient pas (surtout de nos jours avec l'Unicode partout, donc on va avoir des emoticones dans nos textes en anglais; et puis on veut aussi pouvoir détecter un texte comme étant "globalement en anglais" même s'il contient quelques mots étrangers) et je n'ai pas encore eu le temps de tout nettoyer. Donc parfois tu pourrais recevoir un "unknown" pour un texte anglais en entrée. Ce n'est pas forcément un bloqueur si tu sais que c'est soit anglais, soit français: tu peux considérer que tout ce qui ressort en "unknown" est de l'anglais.
    • Du fait de la façon dont certaines langues sont détectées, tu peux parfois avoir d'autres résultats que 'fr' ou 'en' même si tu as mis toutes les autres langues à zéro. Par exemple, si tu mets du chinois en entrée, tu obtiens encore 'zh' (par contre, si tu mets un texte évidemment espagnol, tu n'obtiens pas 'es', ce qui est exactement ce qu'on veut puisqu'on l'a mis à zéro).
    • Pour améliorer la qualité de détection (et la rapidité), je prévois aussi d'ajouter des poids pour les codages de caractères. Typiquement si tu sais que ton texte est de l'UTF-8 (tu veux juste détecter la langue, pas le codage), alors on aimerait pouvoir mettre un poids 0 à tout sauf UTF-8.
    • Comme je disais, c'est un outil de référence donc tu le trouveras dans les dépôts de (probablement) toutes les distributions. Par exemple c'est ce qu'utilise des logiciels comme mpv pour détecter le codage des sous-titres (quiconque a connu mplayer et mpv il y a de nombreuses années se souviendra des accents ou autres caractères non-ASCII cassés dans les sous-titres de film... c'est en fait cette raison pour laquelle j'ai commencé à contribuer sur uchardet, pour ensuite l'intégrer dans mpv!). Par contre tu n'y trouveras probablement que la version sans prise en charge de la détection de langues parce que je n'ai sorti aucune version avec cela pour l'instant. C'est pourquoi je te suggère de compiler, plus haut.

    Bon comme tu le vois, c'est en cours de changements, bien que je n'ai pas vraiment pu sérieusement y toucher depuis pas mal de mois. Malheureusement mes autres projets (ZeMarmot ainsi que les autres logiciels que je maintiens me, GIMP surtout!) me prennent presque tout mon temps.

    Néanmoins je pense que c'est déjà bien utilisable pour ton besoin (bon faut compiler...).

    Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]