Knowledge is Music (et vice-versa) (4) – Extraction linguistique avec Gate

[le post précédent décrit la constitution de l’ontologie, de la liste d’entitées nommées, et de la liste des pages web à analyser]

Etape n°3 : Créer des liens entre les entités à l’aide de Gate
C’est l’étape clé du processus, où l’on mixe une liste d’entités, des pages de texte non structuré, et un outil linguistique, Gate, de façon à relier entre elles les entités (chanteurs et groupes de musique) de notre liste de départ.

D’abord, il s’agit de paramétrer Gate. Gate se décompose en « briques » qui s’assemblent pour former un processus d’extraction linguistique. Les briques peuvent être adaptées et enrichies en fonction du besoin, ce qui en fait une plate-forme de développement d’outils de TALN (Traitement Automatique du Langage Naturel). Un processus d’extraction linguistique classique, qui répond bien à mon besoin, se compose des « briques » suivantes, appliquées dans l’ordre lors du traitement de chaque document :

  1. D’abord, une étape de « reset », qui remet à jour le processus par rapport à tout ce qui aurait pu être gardé en mémoire lors des traitements précédents.
  2. Puis, un « tokeniser », qui découpe le texte en mots. Le tokenizer utilisé dépend en principe de la langue des textes traités. (Note : j’utilise ici un « english tokenizer », qui fera l’affaire même si les documents sont en français).
  3. Puis, un « sentence splitter », qui organise les mots en phrases.
  4. Puis, un « part of speech tagger » (POS tagger). Le « part of speech tagging » est le processus de reconnaissance de la catégorie lexicale d’un mot (nom, verbe, adjectif, etc.), en se basant sur sa forme et sur son contexte dans la phrase.
  5. Une fois les mots découpés et marqués avec leur catégorie lexicale, on peut appliquer un « gazetteer », c’est à dire une étape de reconnaissance d’entités nommées à partir de dictionnaires pré-établis.
  6. Enfin, on peut appliquer sur les mots taggés et les entités reconnues un « transducer », c’est-à-dire une grammaire compilée permettant la reconnaissance de certaines structures de phrase.

Tous ces modules sont disponibles dans la plate-forme standard de Gate, il suffit de les assembler. La seule modification consiste à enrichir le dictionnaire du gazetteer avec les deux listes de chanteurs et de groupes préparées à l’étape précédente. Pour ça, rien de plus simple :

  • Copier les 2 fichiers textes contenant respectivement les noms des chanteurs et les noms des groupes dans le répertoire de gazetteer de Gate (plugins\ANNIE\resources\gazetteer)
  • Modifier le fichier de configuration du gazetteer (lists.def), pour lui indiquer ces 2 nouveaux fichiers, en rajoutant ces 2 lignes :

    music_singers.lst:person_full
    music_bands.lst:person_full

    (note : le nom après les « : » représente le nom de l’élément de la grammaire qui sera produit lors de la reconnaissance d’une entité de la liste en question. Ici, comme je ne veux faire aucune modification au niveau de la grammaire, les chnateurs et les groupes sont tous les deux identifés comme « person_full », qui est un élément de la grammaire de base de Gate)

L’application Gate paramétrée

Ensuite, une fois l’application Gate paramétrée, elle peut être appelée via une API Java. And this is where the magic happens. En effet, le module d’acquisition de connaissances d’ITM, connecté à Gate, va être capable d’enrichir la base de connaissances à partir des annotations linguistiques. Plutôt que de rentrer dans des détails techniques abscons, je prends un exemple :

  • Lors du traitement de la page http://fr.wikipedia.org/wiki/Hubert-F%C3%A9lix_Thi%C3%A9faine, Gate, à l’aide son gazetteer, extrait les entités suivantes :
    • Alambic
    • Hubert-Félix Thiéfaine
    • Machin
    • Zazie
    • Zoo

    (note : la pertinence de ces extractions est bien sûr cruciale. Ce n’est pas la question ici, mais j’y reviendrai)

  • Pour chacune des entités extraites, on créé un attribut « voir aussi » sur le chanteur/groupe ayant comme identifiant l’URL de la page traitée, avec comme valeur l’entité extraite. L’entité Hubert-Félix Thiéfaine se retrouve donc pouvue de 5 attributs « voir aussi », respectivement vers les entités Alambic, Machin, Zazie, Zoo, et Hubert-Félix Thiéfaine.

On voit bien que ce dernier attribut d' »auto-référence » d’un chanteur vers lui-même est dépourvu de sens. Pourtant, impossible de s’en défaire facilement à cette étape du traitement.
Bref, après le processing des 598 pages de chanteurs français et des 138 pages de groupes musicaux, j’obtiens une première version de ma « base de liens » musicaux. Seul un post-traitement sur cette base permet de se débarasser des « auto-références » gênantes. Après ce post-traitement, j’obtiens 1882 liens pour 736 entités. Voici par exemple le résultat pour Jean-Jacques Goldman :

La page de Jean-Jacques Goldman après le traitement

Et voilà ! C’était l’étape cruciale de l’expérience. Ma liste d’entités initiale s’est maintenant enrichie de liens pour former un joli graphe. Evidemment, cette étape de création des liens pourrait être améliorée, tant au niveau de la pertinence (élimination du bruit), que de l’intégration techniques (Vous avez remarqué ? Léo Ferré n’est pas extrait de la page d’HFT, ni Céline Dion de celle de JJ Goldman… ces deux noms ont des accents… encoding, encoding, quand tu nous tiens…). Prochaine étape : exploiter le graphe, en requête et en visualisation.

Un commentaire pour Knowledge is Music (et vice-versa) (4) – Extraction linguistique avec Gate

  1. […] is Music (et vice-versa) (5) – Exploiter et afficher la base de liens musicaux [le post précédent décrit la façon d’enrichir une liste de groupes et de chanteurs français à l’aide […]

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :