À la recherche d’un détecteur automatique des langues
Dans ce billet, nous nous intéressons à la détection automatique de la langue pour reconnaître la langue des contenus textuels. Cette détection aide à la fois à enrichir les métadonnées du texte et à un meilleur traitement du texte selon la langue détectée.
Différentes approches ont été déployées dans la littérature pour la détection de langue1 : des approches manuelles comme par exemple les guides destinées aux bibliothécaires, des approches automatiques en utilisant les bases de connaissances et finalement les approches semi-automatiques basées sur l’apprentissage supervisé comme par exemple les réseaux de neurones, les chaînes de Markov et les approches probabilistes. Les approches utilisant des bases de connaissances sont plus précises mais très exigeantes en ressources. Ainsi, ces approches sont déployées dans les cas où les approches semi-automatiques ne parviennent pas à détecter la langue des textes très courts dont la longueur maximale est celle d’une phrase.
De différents types de traits ont été utilisés en tant que caractéristiques pour la détection des langues. Cela concerne les mots, les caractères ou bien les n-gram.
Les n-gram, les traits les plus utilisés, sont des chaînes de caractères pouvant être composées d’un seul caractère (1-gram), deux caractères (2-gram) et jusqu’à n caractères (n-gram). La longueur la plus fréquemment utilisée est 3 caractères. Par exemple le mot « maison » est traité selon le tableau suivant :
Tableau 1. les traits (n-gram) : un exemple
Nous nous intéressons à l’approche probabiliste pour la détection de la langue. Cette approche est supervisée nécessitant un corpus d’apprentissage afin de construire pour chaque langue un modèle ou bien un profil. Ce profil contient les probabilités d’occurrences de différentes chaînes de caractères (n-gram) dans une langue selon le corpus d’apprentissage. Lors de la détection de la langue d’un texte, la probabilité a posteriori d’une langue est l’accumulation des probabilités des traits détectés dans le texte suivant la formule suivante :
Où :
- ln est une langue
- d est le document traité
- fk est le kième trait extrait du document
1. Outils pour la détection automatique de la langue
Cette étude est focalisée sur trois bibliothèques open source pour la détection de la langue « CLD », « Language detection » et le module pour la détection de la langue dans « Apache Tika ». Notons que les trois implémentent l’approche probabiliste présentée dans la section précédente. Les sous-sections suivantes présentent ces bibliothèques en détails.
1.1 Tika
La détection de langue est implémentée dans la classe Detector dans Apache Tika (org.apache.tika.detect.Detector). Cette détection se fait en utilisant l’approche probabiliste sur quatre types de traits : 1-gram, 2-gram, 3-gram, 4-gram. Le détecteur est pré-entraîné pour détecter 19 langues.
1.2 CLD
CLD ou bien chromium-compact-language-detector2 est une bibliothèque, utilisée dans Google Chrome, pour la détection de 76 langues en utilisant l’approche bayésienne sur des 4-gram essentiellement. Elle retourne jusqu’à 3 langues avec leur pourcentage dans un texte d’entrée en UTF-8.
Reste à mentionner que CLD est le plus rapide parmi les bibliothèques pour la détection de la langue grâce à des structures de données adaptées à la tâche.
1.3 Language detection3
« Language detection » est un outil développé en Java à « Cybozu Labs »4 pour la détection automatique de langues.
Les profils des langues sont générés en se basant sur les abstracts xml de Wikipédia. L’outil utilise principalement l’approche bayésienne pour la détection de 53 langues5. Le corpus de test est composé de 200 articles d’actualités en 49 langues de (Google news, sites d’actualités et flux RSS).
Cet outil se base sur l’approche bayésienne pour apprendre un profil de langue en suivant principalement les orthographes des 3-gram dans cette langue. L’outil retourne une liste de langues avec leurs probabilités.
L’approche bayésienne atteint un taux de 90% de précision moyenne. Des taux plus bas sont atteints pour des langues comme par exemple le perse, le japonais, le chinois, etc. Cette baisse en précision est probablement due au bruit dans le corpus d’apprentissage comme par exemple : (1) les caractères numériques, les symboles, les URL qui sont indépendant de la langue (2) les acronymes et les noms propres (supprimer les mots en majuscules) qui peuvent être non pertinents pour la langue du texte (3) les caractères latins utilisés dans des textes non latins (supprimer si le taux d’occurrence est moins de 20%). De plus, le nombre de caractères varie entre 26 pour le français et plus de 20 000 pour le chinois. La normalisation et le prétraitement de texte dans « Language detection » sont à l’origine de son taux de précision élevé.
1.4 Comparaison
Le Tableau présente une comparaison entre ces trois bibliothèques selon plusieurs critères. Les deux bibliothèques « Language detection » et « Tika », sont adoptées par Solr6, utilisé pour l’indexation dans la plateforme OpenEdition. « Language detection » permet la détection de 53 langues avec une meilleure précision. Cette détection est possible lors de l’indexation où un champ peut être créé pour la langue détectée. Il est aussi possible de laisser Solr corriger le champ existant de la langue selon la langue détectée.
Tableau 2. Comparaison entre des bibliothèques open source pour la détection automatique de la langue
Bibliothèques | Langage de programmation | Nombre de langues | Commentaires |
Language detection |
Java |
53 |
Intégrée dans Solr Rapide |
Tika |
Java |
19 |
Intégrée dans Solr Lente |
CLD |
Python |
76 |
Très rapide |
Nous utilisons trois mesures d’évaluation, selon les formules suivantes, pour comparer empiriquement la performance des trois bibliothèques. Pour une langue ln :
2. Évaluation des trois bibliothèques sur Europarl
Cette section présente une étude expérimentale sur les trois bibliothèques en utilisant le corpus Europarl.
2.1 Description du corpus
Europarl est un corpus pour la traduction automatique qui a été extrait des issues du Parlement européen en 21 langues depuis 1996 (1,5 GB total).
Un échantillon aléatoire de 1000 lignes par langue est utilisé pour évaluer les trois bibliothèques précédentes. La longueur des lignes varie entre 30 et 300 caractères. Notons que chaque ligne est traduite dans 6 langues utilisant l’alphabet latin :
- Allemand : de
- Anglais : en
- Espagnol : es
- Français : fr
- Italien : it
- Portugais : pt
2.2 Résultat en utilisant Tika
Selon les résultats illustrés dans la Figure 1, la précision varie dans l’intervalle [97,62% 99,90%] où la précision minimale est obtenue pour le portugais (pt). Concernant le rappel, il varie entre [89,80% 99,40%] et atteint le minimum pour la langue espagnole (es). Les valeurs minimales sont liées à la cellule en rouge (es, pt) où 22 documents espagnols ont été attribués la langue portugaise.
Tableau 3. Matrice de confusion de Tika sur Europarl
Le temps d’exécution est de 42 secondes car Tika traite, de manière pas très optimisée, plusieurs types de traits par langue.
Figure 1. Résultats de Précision, Rappel et F1-Mesure sur Europarl en utilisant Tika
2.3 Résultats en utilisant CLD
Selon les résultats illustrés dans la Figure 2, la précision varie dans l’intervalle [99,01% 99,90%] où la précision minimale est obtenue pour l’anglais (en). Concernant le rappel, il varie entre [98,30% 100,00%] et atteint le minimum pour l’espagnol (es). Les valeurs minimales sont liées aux cellules en rouge dans la ligne « es » et la colonne « en ».
Tableau 4. Matrice de confusion de CLD sur Europarl
Le temps d’exécution est de 0,5 seconde grâce à moins de traits et de profils à traiter et aux structures de données optimisées.
Figure 2. Résultats de Précision, Rappel et F1-Mesure sur Europarl en utilisant CLD
2.4 Résultats en utilisant Language detection
Selon les résultats illustrés dans la Figure 3, la précision varie dans l’intervalle [99,50% 100,00%] où la précision minimale est obtenue pour l’espagnol (es). Concernant le rappel, il varie entre [99,40% 100,00%] et atteint le minimum pour le portugais (pt). Les valeurs minimales sont liées aux cellules en rouge dans la ligne « pt » et la colonne « es ».
Tableau 5. Matrice de confusion de language detection sur Europarl
Le temps d’exécution est de 2 secondes.
Figure 3. Résultats de Précision, Rappel et F1-Mesure sur Europarl en utilisant Language detection
2.5 Conclusion
À travers les expérimentations précédentes deux conclusions peuvent être déduites.
Tout d’abord, parmi les langues traitées utilisant l’alphabet latin, dans les tests précédents, trois langues (français, espagnol, portugais) étaient les plus difficiles à détecter. Cela s’explique par la corrélation maximale entre leurs profils comparés aux autres langues dans la Figure 47.
Figure 4. Corrélation et voisinage entre les langues utilisant l’alphabet latin
Ensuite, la bibliothèque Language-detection présente un compromis entre Tika et CLD en temps d’exécution avec une meilleure performance en précision et en rappel. C’est pour ces raisons que nous choisissons Language-detection pour la détection automatique de la langue.
Pour la suite, des tests sont envisagés sur un corpus de références bibliographiques, pour pouvoir éventuellement aider Bilbo à extraire les champs à partir des références selon la langue détectée.
3. Références
- P. Sibun and J. C. Reynar, “Language Identification: Examining the Issues,” ed, 1996 [↩]
- https://code.google.com/p/chromium-compact-language-detector/ [↩]
- N. Shuyo, “Language Detection Library for Java,” ed, 2010 [↩]
- http://labs.cybozu.co.jp/en/ [↩]
- https://code.google.com/p/language-detection/wiki/LanguageList [↩]
- https://wiki.apache.org/solr/LanguageDetection [↩]
- W. B. Cavnar and J. M. Trenkle, “N-Gram-Based Text Categorization,” presented at the Proceedings of SDAIR-94, 3rd Annual Symposium on Document Analysis and Information Retrieval, 1994 [↩]
OpenEdition vous propose de citer ce billet de la manière suivante :
Shereen ALBITAR (15 avril 2014). À la recherche d’un détecteur automatique des langues. OpenEdition Lab. Consulté le 11 octobre 2024 à l’adresse https://doi.org/10.58079/qnqm