Contexte
Les ontologies sont largement utilisées dans la recherche d'information (RI), les questions/réponses et les systèmes d'aide à la décision. Elles ont gagné en notoriété car elles sont désormais considérées comme la nouvelle réponse à l'interopérabilité sémantique dans les systèmes informatiques modernes et la prochaine grande solution pour la représentation des connaissances. La structuration et la gestion des connaissances sont au cœur des préoccupations des communautés scientifiques, et l'augmentation exponentielle des données structurées, semi-structurées et non structurées sur le Web a fait de l'acquisition automatique d'ontologies à partir de textes un domaine de recherche très important.
Plus précisément, une ontologie peut être définie avec des concepts, des relations, des hiérarchies de concepts et de relations, et des axiomes pour un domaine donné. Cependant, la construction manuelle de grandes ontologies est extrêmement laborieuse et prend beaucoup de temps. D'où la motivation de notre projet : l'automatisation du processus de construction d'une ontologie de domaine spécifique.
Méthodologie
Le groupe Berger-Levrault propose plus de 200 livres et des centaines d'articles d'expertise juridique et pratique sur le portail Légibases. La collection de livres est thématique, partiellement annotée et entièrement éditée par Berger-Levrault et des experts.
Ce portail couvre 8 domaines :

Le nombre total de mots dans notre base de données :
50934108
Nombre de mots uniques par ligne :
600349
Nombre de mots uniques :
220959
Pour atteindre notre objectif, nous avons abordé les tâches en nous tournant vers les outils de traitement du langage naturel et les techniques d'exploration de données. Voici une figure résumant le traitement effectué pour faire ressortir les termes clés sémantiquement proches des documents de Berger-Levrault :

Récupération et restructuration des données
Comme première étape de notre approche, nous avons repris les données brutes (RD) stockées dans notre base de données SQL et avons effectué une tâche de restructuration avec afin d'obtenir un ensemble organisé de documents HTML, et donc être en mesure d'exploiter son contenu. Notez qu'à ce stade, nous identifions les termes nécessaires à notre processus d'apprentissage d'ontologie comme les termes clés annotés par les experts dans chaque paragraphe de chaque document. Le résultat est un ensemble de 172 documents HTML en langue française publiés par le Groupe Berger-Levrault avec 8 Légibases : articles juridiques contenant des mentions relatives à l'un des 8 domaines du secteur public (Etat civil & Cimetières, Elections, Marchés publics, Urbanisme, Comptabilité & Finances locales, RH territoriale, Justice, Santé).
Pré-traitement et normalisation
Une fois le format requis obtenu, nous lançons le pipeline de prétraitement qui se déroule comme suit :
- Mise au rebut des données La première étape consiste à analyser les documents HTML, à extraire des briques (parties) et des mots clés spécifiques, et à enregistrer le résultat dans un fichier texte.
- Segmentation des phrases: décomposer le texte en phrases distinctes, ce qui constitue une exigence pour les étapes ultérieures du traitement.
- Lemmatisation : Dans la plupart des langues, les mots apparaissent sous différentes formes. Regardez ces deux phrases : " Les députés votent l'abolition de la monarchie constitutionnelle en France. " " Le député vote l'abolition de la monarchie constitutionnelle en France. " Les deux phrases parlent de " député ", mais elles utilisent des désinences différentes. Lorsque vous travaillez avec des textes dans un ordinateur, il est utile de connaître la forme de base de chaque mot afin de savoir que les deux phrases parlent du même sens et du même concept " député ". Cela s'avérera particulièrement utile lors de la formation d'intégrations de mots.
- Acquisition d'expressions multi-mots (MWE) : remplacement des espaces dans les expressions à plusieurs mots par un trait de soulignement "_", de sorte que le terme soit considéré comme un seul jeton et qu'un seul vecteur d'intégration soit généré pour lui au lieu de deux vecteurs ou plus pour chaque mot qui en fait partie.
Pour préparer le contenu textuel pour l'entraînement des embeddings, nous générons un fichier texte brut, à partir de documents HTML, contenant une phrase par ligne avec des mots-clés unifiés (même représentation).
Construction de modèles
Maintenant que nous avons un fichier texte normalisé, nous pouvons lancer l'entraînement du modèle de compréhension du langage naturel BERT sur notre fichier texte en utilisant l'infrastructure Amazon Web Services (Sagemaker + S3). Pour atteindre cet objectif, nous passons par les étapes suivantes :
- Apprendre un nouveau vocabulaire que nous utiliserons pour représenter notre ensemble de données. L'article du BERT utilise un tokenizer WordPiece, qui n'est pas disponible en opensource. A la place, nous utiliserons Morceau de phrase tokenizer en mode unigramme. SentencePiece crée deux fichiers : tokenizer.model et tokenizer.vocab.
- Avec le vocabulaire en main, nous générons des données de pré-entraînement pour le modèle BERT. Nous appelons le script create_pretraining_data.py du dépôt BERT et créons des enregistrements Tensorflow.
- Nous avons entraîné notre modèle à l'aide du cadre d'apprentissage automatique Tensorflow de Google sur l'infrastructure Amazon Web Services (Sagemaker + S3) avec des paramètres standard.
- Nous avons utilisé une taille de lot de 1024 pour une longueur de séquence de 128 et 30k pas avec une longueur de séquence de 512. L'entraînement a pris environ une journée.
À la fin de cette étape, nous avons notre modèle Bert formé sur notre corpus à partir de zéro que nous pouvons utiliser pour la génération de l'intégration des mots.
Extraction de caractéristiques
Il existe une série d'options disponibles pour exécuter le modèle BERT avec Pytorch et Tensorflow. Mais pour faciliter la prise en main de notre modèle, nous avons opté pour Bert-as-a-service : une bibliothèque Python qui nous permet de déployer des modèles BERT pré-entraînés dans notre machine locale et de lancer l'inférence.
Nous exécutons un script Python à partir duquel nous utilisons le service BERT pour encoder nos mots dans le word embedding. Pour cela, il nous suffit d'importer la bibliothèque BERT-client et de créer une instance de la classe client. Une fois cela fait, nous pouvons alimenter la liste des mots ou des phrases que nous voulons encoder.
Maintenant que nous avons les vecteurs de chaque mot de notre fichier texte, nous allons utiliser l'implémentation scikit-learn de la similarité en cosinus entre l'incorporation des mots pour aider à déterminer leur degré de parenté.
Voici un aperçu de la distribution de fréquence pour certains termes présents dans notre base éditoriale :
Après avoir obtenu les scores de similarité Cosine entre deux termes donnés, nous construisons un fichier CSV qui contient les 100 termes clés les plus fréquents de notre base éditoriale, leurs 50 mots les plus proches, ainsi que leurs scores de similarité. La figure ci-dessous montre les 100 termes les plus fréquents :
Le fichier est ensuite présenté comme une entrée pour créer le graphe étiqueté suivant représentant les dépendances sémantiques obtenues lors des étapes précédentes :
Voici les caractéristiques les plus importantes du graphique :
Nombre total des termes clés | 130269 |
---|---|
Nombre de termes les plus pertinents | 100 |
Le score le plus élevé | 0.9528004 |
Le score le moins élevé | 0.4424540 |
Nombre de termes singuliers | 60 |
Nombre de termes composés | 40 |
Chiffres clés du graphique
PERSPECTIVE
Nous rappelons que nous présentons ici le premier travail que nous avons réalisé pour l'étude du corpus de la base éditoriale et que la suite de ce travail nous conduira à appliquer des techniques d'extraction de concepts et de relations en utilisant différents niveaux d'analyse, à savoir : le niveau linguistique, statistique et sémantique, et l'entraînement d'un classificateur comme outil de prédiction de concepts.