Gérer les chaînes de caractères

Si vous désirez avoir une approche analytique de vos données, vous avez bien sur été confronté à la difficulté d’exploiter des chaînes de caractères. A tel point que bien souvent vous avez dû abandonner voire les mettre de coté. Manque d’outillage ? complexité de gérer des sémantiques complexes ? bref, les chaînes de caractères sont souvent la cause de grandes frustrations pour les analystes et autres data scientistes.

Faisons un point rapide sur le sujet.

Vous avez dit chaînes ?

Si il est plutôt aisé de traiter des données numériques comme je le disais en préambule, les chaînes de caractères sont elles plus complexes à travailler. Une première raison est qu’il est difficile de les mettre en équation. Mais la vraie complexité dans le traitement de chaînes de caractère réside surtout dans l’analyse sémantique que l’on va pouvoir y apporter. En effet, si chaque phrase a un sens, ce dernier ne peut se déduire uniquement qu’à la suite analyse de chaque mots. Une phrase est donc une sorte de recette dans laquelle chaque ingrédient à son dosage, sa place et un ordre qui doit être précis.

Heureusement, dans ce que je mentionne plus haut je ne parle que des données purement textuelle. Pourquoi heureusement ? et bien tout simplement car nous n’aurons pas toujours affaire à ce type de données. On peut facilement convenir de 3 grands types de données de type chaîne de caractères :

  • Les données catégorielles
  • Les chaînes structurées
  • Les textes libres

Nous venons de parler brièvement des textes libres, voyons maintenant les autres types de chaînes.

Les données catégorielles

Les données catégorielles sont aussi souvent appelées données de liste. Comme leur nom le suggère il s’agit de données basées sur des listes de valeurs. L’exemple classique est la notion de couleur ou de sexe. Vous remplissez un formulaires de saisie et le renseignement du champ de données catégorielle est alors une liste déroulante vous imposant une valeur dans une liste définie.

Bien sur ce n’est pas toujours évident de travailler les listes catégorielles, car bien souvent on ne connaît pas la liste de valeurs. Pire, si vous travaillez sur un algorithme de Machine Learning il faudra faire attention que le champ des valeurs possible du jeu de données d’entraînement soit bien le même que celui du jeu de test ! pour ce faire une analyse de données (profiling) s’impose afin de découvrir cette fameuse liste de valeur qui compose notre donnée catégorielle. Suite à cette analyse et en constant la fréquence de distribution d’une liste de valeurs définies vous pourrez alors conclure qu’une variable est catégorielle ou non !

Si vous faites du Machine Learning ne vous restera plus qu’à traiter votre variable catégorielle avec un encodage one-hot approprié. Si vous êtes dans un projet d’intégration un simple lookup suffira certainement, par exemple pour vérifier la cohérence de cette donnée.

Ces données catégorielles peuvent aussi subir un pré-traitement dit de qualité de données. En effet imaginez par exemple que votre couleur (marron) ait mal été renseignée (par exemple maron avec un seul r). Son sens doit rester le même mais si vous ne faites rien vous aurez deux catégories : marron et maron. Il est donc indispensable de transcoder votre maron en marron au préalable afin de garder tout son sens.

Les chaînes structurées

Les chaînes structurées sont souvent les plus simple à traiter. C’est totalement vrai dés lors que l’on connaît la structure comme par exemple du XML, JSON, des adresses (AFNOR), numéro de téléphone, etc.

Mais cela reste plus complexe dés lors que l’on ne connaît pas vraiment la structure ! Là encore le profiling peut aider à découvrir la structure. Mais bien souvent cela ne suffira pas et nécessitera une analyse manuelle plus approfondie.

Dans bien des cas il faudra utiliser des outils spécialisés, comme par exemple des outils de validation d’adresse.

Les textes

J’y arrive enfin : les données textuelles ! Voilà là où en général on bloque et ou la frustration de ne pouvoir exploiter une information se fait sentir. Pourquoi ? et bien tout simplement parce qu’une phrase a un sens, une sémantique et qu’une simple analyse par taxonomie ne sera pas toujours suffisante. Il va donc falloir traiter ces maudites chaînes avec une approche différente.

On parle alors de Text Mining ou fouille de texte.

Le text Mining est une partie très importante d’une autres discipline très en vogue : l’Intelligence Artificielle. Si on reprend la définition de Wikipédia : « Elle désigne un ensemble de traitements informatiques consistant à extraire des connaissances selon un critère de nouveauté ou de similarité dans des textes produits par des humains pour des humains. Dans la pratique, cela revient à mettre en algorithme un modèle simplifié des théories linguistiques dans des systèmes informatiques d’apprentissage et de statistiques. « 

En général on trouve deux grandes étapes dans le text mining : la décomposition et l’analyse proprement dite. La décomposition permet de reconnaître les phonèmes, les phrases, le rôle grammatical global, la taxonomie, etc. Bref l’idée est de découper intelligemment le texte et de retrouver dans ce découpage la place et le rôle de chaque élément grammatical.

La seconde étape est plus complexe car il s’agit d’analyser finement les phrases, de séparer voire isoler les ensembles ayant du sens pour ainsi en tirer partie.

Je vais m’arrêter là pour cet article mais par la suite je vous proposerais des nouveaux posts permettant une approche graduelle de l’analyse de texte. En commençant par l’analyse par sac de mots puis en allant vers le NLP (Natural Language Processing).

Partager cet article

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.