"evalue": "cannot import name 'load_choucas_perdido' from 'perdido.datasets' (/opt/homebrew/Caskroom/miniforge/base/envs/sunoikisis-py39/lib/python3.9/site-packages/perdido/datasets.py)",
"\u001b[0;31mImportError\u001b[0m: cannot import name 'load_choucas_perdido' from 'perdido.datasets' (/opt/homebrew/Caskroom/miniforge/base/envs/sunoikisis-py39/lib/python3.9/site-packages/perdido/datasets.py)"
]
}
],
"outputs": [],
"source": [
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
...
...
@@ -128,30 +116,37 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"filepath = 'data/volume01-4083.txt'\n"
"filepath = 'data/volume01-4083.txt'"
]
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* ARQUES, (Géog.) petite ville de France, en Normandie, au pays de Caux, sur la petite riviere d'Arques. Long. 18. 50. lat. 49. 54.\n"
]
}
],
"outputs": [],
"source": [
"with open(filepath) as f:\n",
" content = f.read()\n",
" print(content)\n"
" content = f.read()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Afficher le contenu du fichier"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(content)"
]
},
{
...
...
@@ -161,8 +156,8 @@
"### 4.2 Chargement d'un jeu de données à partir de la librairie Perdido\n",
"\n",
"Perdido embarque 2 jeux de données : \n",
" 1. articles encyclopédiques (volume 7 de l'Encyclopédie de Diderot et d'Alembert), fournit par l'ARTFL dans le cadre du projet GEODE.\n",
" 2. descriptions de randonnées (chaque description est associée à sa trace GPS. Elles proviennent du site visorando.fr et ont été collectées dans le cadre du projet ANR CHOUCAS."
" 1. articles encyclopédiques (volume 7 de l'Encyclopédie de Diderot et d'Alembert (1751-1772)), fournit par l'[ARTFL](https://encyclopedie.uchicago.edu) dans le cadre du projet [GEODE](https://geode-project.github.io) ;\n",
" 2. descriptions de randonnées (chaque description est associée à sa trace GPS. Elles proviennent du site [www.visorando.fr](https://www.visorando.com) et ont été collectées dans le cadre du projet [ANR CHOUCAS](http://choucas.ign.fr)."
Supports pour l'atelier [Librairies Python et Services Web pour la reconnaissance d’entités nommées et la résolution de toponymes](https://anf-tdm-2022.sciencesconf.org/resource/page/id/11) de la formation CNRS [ANF TDM 2022](https://anf-tdm-2022.sciencesconf.org).
## 1. En bref
Dans ce tutoriel, nous allons apprendre plusieurs choses :
- Charger des jeux de données :
- à partir de fichiers txt importés depuis le disque dur ;
- à partir de la librairie Python [Perdido](https://github.com/ludovicmoncla/perdido) dans un [Pandas dataframe](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html)(articles encyclopédiques et descriptions de randonnées).
- Manipuler et interroger un dataframe
- Utiliser les librairies [Stanza](https://stanfordnlp.github.io/stanza/index.html), [spaCy](https://spacy.io) et [Perdido](https://github.com/ludovicmoncla/perdido) pour la reconnaissance d'entités nommées
- afficher les entités nommées annotées ;
- comparer les résultats de `Stanza`, `spaCy` et `Perdido` ;
- discuter les limites des 3 outils pour la tâche de NER.
- Utiliser la librarie `Perdido` pour le geoparsing :
- cartographier les lieux geocodés ;
- illustrer la problématique de désambiguïsation des toponymes.
%% Cell type:markdown id: tags:
## 2. Introduction
%% Cell type:markdown id: tags:
## 3. Configurer l'environnement
### 3.1 Installer les librairies Python
* Si vous avez configuré votre environnement Conda en utilisant le fichier `requirements.txt`, vous pouvez sauter cette étape et aller à la section `3.2 Importer les librairies`.
* Si vous avez configuré votre environnement Conda en utilisant le fichier `environment.yml` ou si vous utilisez un environnement Google Colab / Binder, vous devez installer `perdido` en utilisant `pip` :
%% Cell type:code id: tags:
``` python
!pipinstall--upgradeperdido
!pipinstallperdido
```
%% Cell type:markdown id: tags:
* Si vous avez déjà configuré votre environnement conda, soit avec conda, soit avec pip (voir le fichier readme), vous pouvez ignorer la cellule suivante.
* Si vous exécutez ce notebook depuis Google Colab / Binder, vous devez exécuter la cellule suivante :
%% Cell type:code id: tags:
``` python
!pipinstallstanza
```
%% Cell type:markdown id: tags:
### 3.2 Importer les librairies
Tout d'abord, nous allons charger certaines bibliothèques spécifiques de `Perdido` que nous utiliserons dans ce notebook. Ensuite, nous importons quelques outils qui nous aideront à analyser et à visualiser le texte.
/Users/lmoncla/git/gitlab.liris/lmoncla/tutoriel-anf-tdm-2022-python-geoparsing/Tutoriel-geoparsing.ipynb Cellule 8 in <cell line: 7>()
<a href='vscode-notebook-cell:/Users/lmoncla/git/gitlab.liris/lmoncla/tutoriel-anf-tdm-2022-python-geoparsing/Tutoriel-geoparsing.ipynb#X10sZmlsZQ%3D%3D?line=3'>4</a> from perdido.geoparser import Geoparser
<a href='vscode-notebook-cell:/Users/lmoncla/git/gitlab.liris/lmoncla/tutoriel-anf-tdm-2022-python-geoparsing/Tutoriel-geoparsing.ipynb#X10sZmlsZQ%3D%3D?line=4'>5</a> from perdido.geocoder import Geocoder
----> <a href='vscode-notebook-cell:/Users/lmoncla/git/gitlab.liris/lmoncla/tutoriel-anf-tdm-2022-python-geoparsing/Tutoriel-geoparsing.ipynb#X10sZmlsZQ%3D%3D?line=6'>7</a> from perdido.datasets import load_edda_artfl, load_edda_perdido, load_choucas_perdido
<a href='vscode-notebook-cell:/Users/lmoncla/git/gitlab.liris/lmoncla/tutoriel-anf-tdm-2022-python-geoparsing/Tutoriel-geoparsing.ipynb#X10sZmlsZQ%3D%3D?line=8'>9</a> from spacy import displacy
ImportError: cannot import name 'load_choucas_perdido' from 'perdido.datasets' (/opt/homebrew/Caskroom/miniforge/base/envs/sunoikisis-py39/lib/python3.9/site-packages/perdido/datasets.py)
%% Cell type:markdown id: tags:
## 4. Chargement et exploration des données
### 4.1 Chargement d'un document texte à partir d'un fichier
%% Cell type:code id: tags:
``` python
filepath='data/volume01-4083.txt'
```
%% Cell type:code id: tags:
``` python
withopen(filepath)asf:
content=f.read()
print(content)
```
%% Output
%% Cell type:markdown id: tags:
* Afficher le contenu du fichier
* ARQUES, (Géog.) petite ville de France, en Normandie, au pays de Caux, sur la petite riviere d'Arques. Long. 18. 50. lat. 49. 54.
%% Cell type:code id: tags:
``` python
print(content)
```
%% Cell type:markdown id: tags:
### 4.2 Chargement d'un jeu de données à partir de la librairie Perdido
Perdido embarque 2 jeux de données :
1. articles encyclopédiques (volume 7 de l'Encyclopédie de Diderot et d'Alembert), fournit par l'ARTFL dans le cadre du projet GEODE.
2. descriptions de randonnées (chaque description est associée à sa trace GPS. Elles proviennent du site visorando.fr et ont été collectées dans le cadre du projet ANR CHOUCAS.
1. articles encyclopédiques (volume 7 de l'Encyclopédie de Diderot et d'Alembert (1751-1772)), fournit par l'[ARTFL](https://encyclopedie.uchicago.edu) dans le cadre du projet [GEODE](https://geode-project.github.io) ;
2. descriptions de randonnées (chaque description est associée à sa trace GPS. Elles proviennent du site [www.visorando.fr](https://www.visorando.com) et ont été collectées dans le cadre du projet [ANR CHOUCAS](http://choucas.ign.fr).
%% Cell type:code id: tags:
``` python
```
%%Celltype:codeid:tags:
``` python
d = load_choucas_perdido()
df = d['data'].to_dataframe()
df.head()
```
%% Cell type:markdown id: tags:
### 4.3 Manipulation d'un dataframe
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
## 5. Reconnaissance d'Entités Nommées (NER)
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
### 5.1 Stanza NER
%% Cell type:markdown id: tags:
* Importer la librairie `Stanza` et télécharger le modèle pré-entrainé pour le français :
%% Cell type:code id: tags:
``` python
import stanza
stanza.download('fr')
```
%% Cell type:markdown id: tags:
* Instancier et paramétrer la chaîne de traitement :
### 6.2 Résolution de toponymes / désambiguïsation
%% Cell type:markdown id: tags:
Exemple de requetes sans stratégies de désambiguisation
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
Délimiter un zone restreinte lors de la requête
Premier niveau : utilisation d'un code pays.
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
Deuxième niveau : utilisation d'une bounding box délimitant la zone de recherche
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
Désambiguisation basé sur la proximité géographique
Clustering avec la méthode DBSCAN. Cette stratégie est adaptée pour une description d'itinéraire où les différents lieux cités doivent être localisés à proximité les uns des autres.
%% Cell type:markdown id: tags:
#### Résultats avant désambiguisation
%% Cell type:code id: tags:
``` python
d['data'][1].get_folium_map()
```
%% Cell type:code id: tags:
``` python
d['data'][1].cluster_disambiguation()
```
%% Cell type:code id: tags:
``` python
d['data'][1].get_folium_map()
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
Utilisation du contexte (autres entités nommées repérées dans le texte, relations spatiales, etc...). Développées dans le cadre du projet [Perdido]() (add ref 2014 et 2016) mais pas encore intégré à la librairie Python Perdido. Cette librairie est toujours en cours de développement et d'amélioration. Vos remarques et retours seront les bienvenues.