À 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

n-gram

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 :

formule bayesienne

Où :

  • ln est une langue
  • 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

Tableau3

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.

Figure1

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

Tableau4

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.

Figure2

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

Tableau5

Le temps d’exécution est de 2 secondes.

Figure3

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.

Figure4

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

  1. P. Sibun and J. C. Reynar, « Language Identification: Examining the Issues, » ed, 1996 []
  2. https://code.google.com/p/chromium-compact-language-detector/ []
  3. N. Shuyo, « Language Detection Library for Java, » ed, 2010 []
  4. http://labs.cybozu.co.jp/en/ []
  5. https://code.google.com/p/language-detection/wiki/LanguageList []
  6. https://wiki.apache.org/solr/LanguageDetection []
  7. 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 []

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *