Named Entities recognition and visualisation using a social network
1. Extraction des relations entre les entités
nommées
Réalisé par :
BELOUADAH Sakher
Master Apprentissage, Information et Contenu
Paris Saclay
1
2. Abstract
Nous présentons dans ce projet un système d’extraction d’informations permettant d’extraire
les relations entre les entités nommées dans un ensemble de documents. En commençant tout
d’abord par décrire la méthode du crawling utilisée ainsi que le corpus sur lequel nous allons
appliquer nos méthodes. Par la suite, nous adoptons l’outil SNER [1] qui reconnait des entités de
divers types avec une grande précision, et de générer par la suite l’ensemble des entités nommées
comme les noms propres par exemple. Enfin, nous présentons notre système d’extraction des
relations entre les entités existantes dans le corpus ainsi que l’ensemble des résultats obtenues
par ce système. Ce travail vise donc à utiliser un outil existant afin d’en extraire l’ensemble
des entités nommées, ainsi de représenter les relations entre ces entités par un réseau social
permettant d’extraire des informations pertinentes sur le type et la puissance de ces relations.
1 Introduction
L’extraction des relations entre les personnages d’un livre peut paraitre comme une simple
tache. Cependant, quand il s’agit d’un grand nombre de documents la tache devient plus difficile,
il est donc nécessaire d’utiliser un système efficace permettant d’extraire ces liens de relation entre
les entités nommées. Nous pouvons décomposer cette tâche en trois parties. La première étape
consiste à implémenter un système de crawling qui permet de récupérer l’ensemble des documents
à partir du net en respectant les règles de politesses, et puis de prétraiter chaque document
collecté. La deuxième étape est d’extraire les entités nommées à partir de ces documents avec
précision. La dernière étape consiste à identifier l’ensemble des entités qui sont en relation avec
une entité donnée, en se basant sur une mesure de similarité. Dans les sections suivantes, nous
allons détailler chacune des étapes mentionnés en présentant les résultats obtenus.
2 Prétraitement des données
La première étape dans ce projet consiste à récupérer l’ensemble des documents sur lesquels
nous allons travailler. Le choix s’est porté sur la collection des livres Sherlock Holmes [2]. Cette
collection contient une totalité de plus de 50 livres gratuitement téléchargeables en plusieurs for-
mats. Nous avons développé un crawler permettant de récupérer l’intégralité de ces documents en
respectant les règles de politesses (télécharger les documents sans surcharger le site). Ceci est fait
en téléchargeant l’ensemble des livres en mode batch au lieu de parallèle. Le script implémenté
en python est le suivant :
La deuxième étape consiste à prétraiter chaque document téléchargé. Afin de faciliter le pré-
traitement, les documents sont téléchargés en format ASCII, où chaque livre sera sauvegardé
dans une variable de type chaine de caractères. Par la suite, chaque document est découpé en un
ensemble de phrases en utilisant l’outil de traitement des langages naturels NLTK.
Ces phrases sont passées comme entrées à une fonction qui permet de les segmenter en des
unités atomiques dite token en utilisant la méthode de tokenisation proposé par NLTK. Ainsi,
2
3. l’ensemble des caractères spéciaux, chiffres, et ponctuations sont par la suite supprimés en utili-
sant des expressions régulières.
Exemple : Soit la phrase suivante prise d’un des livres téléchargés :
‘’One night — it was on the twentieth of March, 1888 — I was returning from a journey‘’
Nous commençons par segmenter la phrase, le résultat est dans ce cas :
[’One’, ’night’, ’-’, ’it’, ’was’, ’on’, ’the’, ’twentieth’, ’of’, ’March’, ’,’, ’1888’, ’-’, ’was’,
’returning’, ’from’, ’a’, ’journey’]
Ensuite, nous nettoyons la liste en utilisant une expression régulière à l’aide le l’instruction
suivante :
s = re.sub(”[ˆa − zA − Z]”, ””, s)
Le résultat final est :
[’One’, ’night’, ’it’, ’was’, ’on’, ’the’, ’twentieth’, ’of’, ’March’, ’I’, ’was’, ’returning’, ’from’, ’a’,
’journey’]
Après le traitement, les documents sont sauvegardés sous la forme d’une structure sFrame. Ce
tableau est organisé de telle manière que chaque ligne correspond à une phrase dans un livre, la
première colonne contient le titre du livre, la deuxième contient la phrase, et la troisième colonne
contient l’ensemble des tokens de cette phrase. Cette structure facilite l’identification des entités
Figure 1 – Exemple de la structure sFrame.
nommées citées dans la même phrase. Ce qui permet par la suite d’identifier les liens entre ces
entités.
3 Extraction des entités nommées
L’extraction des entités nommées dans le domaine du traitement des langages naturels est un
sujet profondément étudié. Le processus de la reconnaissance des entités nommées vise à extraire
et classer les désignateurs rigides dans le texte. Ces derniers correspondent traditionnellement à
l’ensemble des noms propres présents dans un texte, qu’il s’agisse de noms de personnes, de lieux
ou d’organisation, etc.
3
4. Dans ce projet, nous utiliserons l’outil de reconnaissance de Stanford University Named Entities
Recognition SNER[1], ce dernier permet d’extraire avec précision trois types d’entités nommées
qui sont : Organizations, Locations, Persons. Nous nous intéressons dans notre cas aux noms de
personnes. Ces derniers représentent l’ensemble des personnages citées dans la collection.
Après avoir chargé le module correspondant et avoir spécifié les bons chemins du classifieur
SNER, nous allons commencer par charger l’ensemble des livres, ensuite de passer chacune de
leurs phrases segmentées comme entrée au classifieur SNER.
Le résultat retourné par SNER est une structure de trois éléments, chaque élément contient la
liste des entités reconnues de chacun des types possibles (Organizations, Locations, Persons).
D’où la nécessité de garder que les noms de personnes dans une liste nommé personlist.
Le code qui correspond au processus expliqué ci-dessus est le suivant : La première instruction
permet de découper les textes en un ensemble de phrases, chacune de ces dernières sera segmentée
par la suite en utilisant la deuxième instruction. L’ensemble des tokens seront passés comme
argument à la fonction de reconnaissance des entités nommées. L’étape finale sera donc de ne
garder que les entités de type PERSONS.
Le résultat retournée par la fonction est :
["Irene", "Mycroft", "Lestrade", "Sherlock", "Moran", "Moriarty", "Watson", "Baynes", "Billy",
"Bradstreet", "Gregson" ,"Hopkins", "Hudson", "Shinwell", "Athelney", "Mary", "Langdale",
"Toby", "Wiggins"]
Remarquez que nous avons garder seulement les 20 personnages les plus citées selon un ordre
décroissant. Nous pouvons par la suite extraire les liens de relations entre chacun de ces person-
nages.
4 Social Network Analysis SNA
Lors du traitement d’un large corpus, le processus de la création du réseau social manuelle-
ment peut être couteux en termes de temps. D’où la nécessité d’automatiser le traitement.
Dans cette section, nous utiliserons l’ensemble des entités extraites à partir du corpus. Le pro-
cessus se déroule en deux étapes. D’abord nous analyserons les relations entre ces entités, ensuite
nous représenterons les liens de relation par un graphe connecté (Réseau social).
4.1 Extraction des relations
L’extraction des relations est le processus d’identification de relations pertinentes entre les
entités mentionnées dans un texte. Ayant une entité, nous appliquons un algorithme d’analyse
de lien sur cette entité afin d’en extraire l’ensemble des entités ayant une forte relation avec elle.
4
5. Les entités qui coexistent dans la même phrase du livre sont considérées comme connectées
et chaque combinaison de deux d’entre eux formant une paire de nœuds reliés. Le poids d’une
relation entre deux nœuds est par la suite le nombre de fois qu’elles apparaissent dans la même
phrase. Autrement dit, à chaque fois que deux personnages parlent ensembles, ou apparient dans
le même passage, nous ajoutons un lien entre les deux s’il n’existe pas déjà. Le poids de chaque
relation, représente par exemple le nombre de fois que deux personnages ont parlé ensemble.
Prenant par exemple la phrase suivante prise d’un des livres :
"What makes you think that Sherlock was near Greagson ?" asked Lestrade
Nous pouvons identifier trois relations entre les entités mentionnées dans cette phrase. Dans
notre cas, nous garderons que les relations ayants un poids plus ou égale à 2.
Cette technique ne va pas créer le réseau social le plus précis. Cependant, le réseau créé permettra
d’observer quelques indications intéressantes sur les relations entre les personnages.
4.2 Représentation des relations
Un graphe est défini par un ensemble de nœuds V (Vertices), et un ensemble d’arêtes E
(Edges) reliant les nœuds entre eux. Dans notre cas, Une arête reliant un nœud V1 avec un autre
V2 exprime une relation entre les deux. Où le poids associé à cette arête représente la puissance
de leur relation. Ainsi, chaque nœud représente une entité nommée (personnage) extraite du
texte.
Prenant par exemple les deux personnages, Sherlock et Watson. Le nombre de fois où les deux
apparaissent dans le même passage est égale à 14 ce qui représente la poids du lien reliant les
deux nœuds Shelock et Watson.
Figure 2 – Relation entre Sherlock et Watson
Le réseau social finale qui décrit les relations entre l’ensemble des entités extraite est le suivant :
5
6. Figure 3 – Réseau final
EN analysant le graphe ci-dessus (qui est créé presque automatiquement), Nous pouvons faci-
lement identifier les personnages principaux dans les histoires. Le graphe ci-dessous est construit
en utilisant un sous ensemble des entités extraites lors de la phase précédente.
Figure 4 – Amis et ennemis de Sherlock
Nous pouvons facilement identifier deux types de relations. Le premier cercle contient l’en-
semble des amis de Sherlock (Mycroft et Lestrade) qui sont eux même reliés entre eux, le deuxième
contient l’ensemble de ses ennemis qui sont Moriaty et Moran. De plus, nous remarquons une
forte relation entre Sherlock et Watson, et entre ce dernier et Moriaty l’ennemie de Sherlock.
En utilisant le même processus, nous pouvons aussi avoir plus d’informations sur les relations
entre les endroits et les personnages par exemple.
6
7. 5 Conclusion
Dans ce projet, nous avons proposé une méthode de représentation des relations entre les
personnages présents dans les livres de Sherlock Holmes en se basant essentiellement sur la re-
connaissance des entités nommées. Ainsi, nous avons proposé une méthode permettant d’extraire
les relations entre ces entités et de représenter leur poids selon le nombre de leur citation dans
le même passage dans un livre. Nos expérimentations ont montré que l’utilisation de la recon-
naissance des entités nommées à permet d’automatiser le processus. Ainsi, notre méthode de
représentation à permet d’avoir une idée générale sur l’ensemble des personnages principaux
ainsi que les relations entre eux et leurs puissance.
Références :
[1] Stanford Named Entity Recognizer (NER) latest version 3.6.0 written by Nitin Madnani :
http ://nlp.stanford.edu/software/CRF-NER.shtml
[2] Arthur Conan Doyle’s entire Sherlock Holmes works. The canon includes all the stories and
novels. https ://sherlock-holm.es/ascii/
7