Skip to content
Snippets Groups Projects
Commit ef4b0597 authored by Alice Brenon's avatar Alice Brenon
Browse files

Add install instructions for Docker and guix in README + the source Dockerfile

parent 2fdf5505
No related tags found
No related merge requests found
FROM geoparsing-tutorial:latest
EXPOSE 8888
WORKDIR /srv/notebooks
CMD ln -s /bin/python3 /bin/python
CMD ln -s /bin/pip3 /bin/pip
ENTRYPOINT ["/bin/jupyter-notebook", "--allow-root", "--ip", "0.0.0.0"]
......@@ -2,33 +2,37 @@
# Tutoriel - ANF TDM 2022 Python Geoparsing
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).
Dans ce tutoriel, nous montrons comment utiliser des librairies Python pour la reconnaissance des entités nommées (*Named Entity Recognition*) et pour la résolution de toponymes (*Geocoding*).
Pour cela, nous utiliserons les librairies ([spaCy](https://spacy.io), [Stanza](https://stanfordnlp.github.io/stanza/index.html)) et [Perdido](https://github.com/ludovicmoncla/perdido).
Nous expérimenterons et comparerons ces librairies au travers deux études de cas : le traitement d'articles encyclopédiques (corpus issu du projet [GEODE](https://geode-project.github.io)) et le traitement de descriptions de randonnées (corpus issu du projet [ANR CHOUCAS](http://choucas.ign.fr)).
**Animateurs**: [Ludovic Moncla](https://ludovicmoncla.github.io) (INSA Lyon) et [Alice Brenon](https://perso.liris.cnrs.fr/abrenon/) (CNRS / INSA Lyon)
### Tâches et problématiques abordées
## Tâches et problématiques abordées
1. Reconnaissance et classification des entités nommées en français
2. Résolution de toponymes (problématique de désambiguïsation)
3. Créer et afficher une carte à partir d'un texte
## Comment exécuter ce notebook
- en [cloud](#sur-le-cloud)
- en local
+ avec [conda](#avec-conda)
+ avec [docker](#avec-docker)
+ avec [guix](#avec-guix)
### Sur le «cloud»
Vous pouvez exécuter le notebook à distance en utilisant [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](http://colab.research.google.com/) ou [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.liris.cnrs.fr%2Flmoncla%2Ftutoriel-anf-tdm-2022-python-geoparsing.git/HEAD?labpath=Tutoriel-geoparsing.ipynb).
Sinon, pour exécuter ce tutoriel depuis un environnement local sur votre ordinateur, vous pouvez suivre les instructions ci-dessous.
## Installer conda
### Installer en local
#### Avec conda
[Conda](https://conda.io/projects/conda/en/latest/index.html) est un système de gestion de paquets et d'environnement open source. Il installe, exécute et met à jour rapidement les paquets et leurs dépendances.
Nous l'utiliserons pour gérer l'environnement python et toutes les bibliothèques python nécessaires pour les tutoriels.
......@@ -37,26 +41,23 @@ Il existe plusieurs façons d'installer conda sur votre ordinateur :
2. [Miniconda](https://docs.conda.io/en/latest/miniconda.html): une installation minimale pour conda, sans application graphique
3. [Miniforge](https://github.com/conda-forge/miniforge): une autre installation minimale pour conda, sans application graphique (recommandée pour les puces Mac ARM M1 ou M2 (Apple Silicon))
## Configurer un environnement conda
### Cloner ce dépôt git
##### Clôner ce dépôt git
```bash
git clone https://gitlab.liris.cnrs.fr/lmoncla/tutoriel-anf-tdm-2022-python-geoparsing.git
```
### Configurer l'environnement avec toutes les dépendances nécessaires
##### Configurer l'environnement avec toutes les dépendances nécessaires
#### Méthode 1
###### Méthode 1
* Uilisateurs MacOS/Linux : Créer un nouvel environnement nommé `tdm-geoparsing-py39` avec toutes les dépendances nécessaire en utilisant le fichier de configuration `environment-osx-linux.yml` :
* Uilisateurs MacOS/Linux : Créer un nouvel environnement nommé `tdm-geoparsing-py39` avec toutes les dépendances nécessaires en utilisant le fichier de configuration `environment-osx-linux.yml` :
```bash
conda env create -f environment-osx-linux.yml
```
* Uilisateurs Windows : Créer un nouvel environnement nommé `tdm-geoparsing-py39` avec toutes les dépendances nécessaire en utilisant le fichier de configuration `environment-win64.yml` :
* Uilisateurs Windows : Créer un nouvel environnement nommé `tdm-geoparsing-py39` avec toutes les dépendances nécessaires en utilisant le fichier de configuration `environment-win64.yml` :
```bash
conda env create -f environment-win64.yml
......@@ -68,8 +69,7 @@ conda env create -f environment-win64.yml
conda activate tdm-geoparsing-py39
```
#### Méthode 2
###### Méthode 2
* Créer un nouvel environnement nommé `tdm-geoparsing-py39`
......@@ -95,14 +95,82 @@ conda install fiona==1.8.21
pip install -r requirements.txt
```
### Lancer le serveur Jupyter
```bash
jupyter notebook
```
### Avec Docker
Vous pouvez directement démarrer un conteneur avec le tutoriel et toutes ses
dépendances en tappant:
```bash
docker run -p 8888:8888 --rm geodeproject/geoparsing-tutorial:latest
```
Le serveur `jupyter`, tournant à l'intérieur du conteneur, ne pourra pas ouvrir
votre navigateur automatiquement mais vous pouvez y accéder normalement en
suivant les instructions qui s'affichent alors dans le terminal au démarrage du
serveur.
### Avec Guix
Si le gestionnaire de paquet [`guix`](https://guix.gnu.org/) est installé sur
votre machine, vous pouvez démarrer directement un environnement de travail
depuis le [channel](https://gitlab.liris.cnrs.fr/geode/geode-packages) du projet
[GÉODE](https://geode-project.github.io/).
En supposant que vous vous trouvez dans une copie du channel (pas du présent
dépôt contenant le tutoriel, il n'est pas nécessaire si vous utilisez `guix`),
vous pouvez démarrer un conteneur semblable à celui accessible via `docker` avec
la commande suivante:
```bash
guix shell --container --network -L . geoparsing-tutorial -- /bin/sh -c 'jupyter-notebook $GUIX_ENVIRONMENT/srv/notebooks'
```
#### Comment modifier ce tutoriel
C'est également avec `guix` qu'a été généré le conteneur
[`docker`](#avec-docker) ci-dessus. Les étapes suivantes peuvent constituer une
base de travail si vous avez besoin de régénérer un conteneur intégrant des
modifications de ce dépôt. Elles s'exécutent aussi dans une copie locale du
channel du projet (ou bien alors il faut remplacer l'argument `.` — dossier
courant — de l'option `-L` par le chemin vers cette copie ou avoir ajouté le
channel du projet à la liste des channels connus par guix — fichier
[`channels.scm`](https://guix.gnu.org/fr/manual/devel/en/html_node/Using-a-Custom-Guix-Channel.html#Using-a-Custom-Guix-Channel))
##### Re-calculer une image de base pour le conteneur
(cette étape est optionnelle car incluse dans la suivante mais elle prend du
temps et il peut être rassurant de la voir s'exécuter directement dans le
shell, bien que seul le chemin affiché à la fin de l'opération soit nécessaire à
l'étape suivante)
```bash
guix pack -f docker -L . -S /bin=bin -S /srv=srv geoparsing-tutorial
```
#### Import de cette image dans docker
Si vous avez exécuté l'étape précédent, vous pouvez remplacer directement la
sous-commande `$(…)` par la sortie en `/gnu/store/.*.tar.gz` qui s'est
normalement affiché (mais la réexécuter ne posera pas de soucis, et `guix` ne
refera pas deux fois le travail).
```bash
docker load < $(guix pack -f docker -L . -S /bin=bin -S /srv=srv geoparsing-tutorial)
```
#### Finaliser l'image
À partir de cette couche de base nommée automatiquement
`geoparsing-tutorial:latest`, le conteneur définitif est généré en suivant le
Dockerfile présent dans ce dépôt (vous devez donc revenir dans une copie locale
de ce dépôt contenant le tutoriel et le fichier `Dockerfile` pour cette dernière
étape).
```bash
docker build -f Dockerfile .
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment