Commit 45683eb5 authored by Lucas Terriel's avatar Lucas Terriel 🐍
Browse files

add doc softwares #2

parent 52e89f4a
# Présentation, installation et fonctionnement des ressources logicielles pour Ner4archives
-------------
Auteur : Lucas Terriel
Status : en cours de rédaction
Dernière version : 06/01/2020
------------
## Contenu
...A compléter...
- Le logiciel *Entity-fishing*
- Présentation
- Pré-requis à l'installation
- Procédure d'installation d'*Entity-fishing*
- Cas d'usage d'*Entity-fishing*
- Script `parser.py` d'indexation automatique des instruments de recherche EAD par le biai d'une instance locale d'*entity-fishing* et du client python *entity-fishing*
- Présentation
- Pré-requis
- Principes et fonctionnement
- Liens supplémentaires
## Le logiciel *Entity-fishing*
### Présentation
...A compléter...
### Pré-requis à l'installation
**Configuration matérielle requise:**
- Système d'exploitation : Linux-64bits ou MacOsX
- RAM : 8Go min voir 16Go (3Go peuvent suffirent pour traiter des textes et non des PDF)
- Stockage : SSD (fortement recommandé si la RAM <= 8Go) ou HDD de 500Go min pour stocker les données Wikidata et Wikipédia notamment
**Configuration logicielle requise :**
- Java : JDK 1.8 / JVM 8 (attention problème possible avec version supérieur à Java 8)
pour connaitre la version de Java utilisé lancer dans le terminal la commande :
```
java -version
```
### Procédure d'installation d'*Entity-fishing*
#### Étape 1 : Installation de GROBID et GROBID-NER
Le logiciel *Entity-fishing* dépend de deux autres logiciels Grobid et Grobid-ner :
- Grobid permet l'analyse (*parsing*), l'extraction de la mise en page (*layout*) et la re-structuration de documents bruts dans des formats structurés (exemple XML TEI).
- Grobid-NER (*Named Entity Recognition*) est un module de Grobid qui permet d'extraire et de classer les entités des documents en [27 classes](https://bit.ly/3nk89hB) dans le but de préparer la désembiguisation des entités en les confrontant à des bases de connaissance comme Wikipédia.
Nous allons donc procéder à l'installation préalable de ces deux logiciels.
**A. Installation de GROBID**
commencer par installer la dernière version la plus stable soit la version `0.6.1`.
Dans le terminal, choisir et se placer via `cd` dans le répertoire de travail où vous installarez *Entity-fishing* par la suite (très important). Assurer vous que le répertoire parent ne contient pas d'espace.
Télécharger l'archive via la commande :
```
$ wget https://github.com/kermitt2/grobid/archive/0.6.1.zip
```
Dézipper l'archive via :
```
$ unzip 0.6.1.zip
```
supprimer l'archive (optionnel) via :
```
$ rm -r 0.6.1.zip
```
renommer votre dossier "grobid-0.6.1" en "grobid" via :
```
$ mv 0.6.1/ grobid-0.6.1/
```
**B. Monter GROBID avec l'outil de build Gradle**
Se déplacer dans le répertoire `grobid` comme suit :
```
$ cd grobid/
```
Puis lancer la commande :
```
$ ./gradlew clean install test
```
le terme "test" dans la commande est optionnel mais pratique pour visualiser les problèmes de build.
laisser s'executer le build, une fois terminé
le message suivant doit s'afficher `BUILD SUCCESSFUL` dans le terminal.
**C. Vérifier que GROBID fonctionne**
Dans le dossier `grobid/` lancer la commande suivante :
```
$ ./gradlew run
```
Le serveur devrai se lancer sur le port 8070 par défaut. Rentrer `http://localhost:8070/` dans votre navigateur pour vous en assurer. Le processus dans le terminal reste bloqué à 88% cela est normal.
**D. Installation de GROBID-NER**
Se placer dans le dossier `grobid/` via :
```
$ cd grobid/
```
Puis cloner le dépôt de grobid-ner dans `grobid/` via :
```
$ git clone https://github.com/kermitt2/grobid-ner.git
```
puis rentrer dans le dossier `grobid-ner/` via `cd`. Une fois dans le dossier, il faut s'assurer de copier 3 models (ner, nerfr, nersense) de grobid-ner sont copiés dans le chemin `grobid/grobid-home/models/`. Pour se faire lancer la commande :
```
$ ./gradlew copyModels
```
Se diriger vers le répertoire `grobid/grobid-home/models/` à l'aide de `cd`. Dans le cas où la copie des modèles n'a pas était effectué, copier-coller manuellement les modèles de grobid-ner (`grobid-ner/ressources/models/`) dans le dossier `grobid/grobid-home/models/`.
Dans le dossier `grobid-ner/` monter le sous-projet grobid-ner via la commande
```
$ ./gradlew clean install
```
jusqu'à obtenir l'affichage `BUILD SUCCESSFUL`
#### Étape 2 : Installation d'*Entity-fishing*
A partir de cette étape votre dossier contenant les sources *entity-fishing* devra se situer au même niveau que `grobid/` tel que par exemple :
```
D/
|
├── ressources/
| ├── entity-fishing/
│ ├── grobid/
| ├── grobid-ner/
```
Se placer dans le dossier ou se situe le dossier `grobid/`
Ensuite, cloner le dépôt via :
```
$ git clone https://github.com/kermitt2/entity-fishing
```
Puis lancer :
```
$ cd data/config/
```
et vérifier dans le fichier `mention.yaml` que le chemin vers grobidHome est correct (effectuer un `$ cat mention.yaml`), tel que :
```
# path to the GROBID home (for grobid-ner, grobid, etc.)
grobidHome: ../grobid/grobid-home/
```
Sinon modifier avec votre éditeur préféré `nano` ou `vim`.
#### Étape 3 : Téléchargement de la base de données pour *Entity-fishing* (démo pour Linux)
Il vous faut ensuite créer la base de données qui servira à la désambiguisation des entités. Le set-up minimal requiert **obligatoirement** les données Wikidata (Wikidata, db-kb.zip) et les données Wikipédia en anglais.
Pour se faire, se placer dans le dossier `entity-fishing/` et lancer la commande :
```
$ cd data/db/
```
Le dossier est vide pour l'instant, lancer ensuite successivement les commandes :
```
$ wget https://science-miner.s3.amazonaws.com/entity-fishing/0.0.4/linux/db-kb.zip
$ wget https://science-miner.s3.amazonaws.com/entity-fishing/0.0.4/linux/db-en.zip
```
Vous pouvez ensuite télécharger choisir de télécharger un set de données correspondant à votre environnement linguistique, par exemple le français, vous pouvez aussi télécharger toutes les langues (voir NOTE) pour se faire lancer :
```
$ wget https://science-miner.s3.amazonaws.com/entity-fishing/0.0.4/linux/db-fr.zip
```
Une fois vos archives téléchargées, lancer dans le dossier `db/` la commande pour dézipper vos archives en une fois, ce qui prend un certain temps :
```
$ unzip '*.zip'
```
Une fois décompresser, différents dossiers de type `db-code_langue` seront créés dans le dossier `db/`
Vous pouvez ensuite choisir de supprimer les archives avec la méthode vue plus haut.
:exclamation: NOTE : L'ensemble des données à télécharger proposés dans la [documentation d'entity-fishing](https://nerd.readthedocs.io/en/latest/build.html#) correspond à un *dump* de Wikidata et Wikipedia du 20/05/2020. L'ensemble des données dans toutes les langues représente un total de 36GB (compréssées) et de 119GB (décompréssées).
#### Étape 4 : Monter le projet *Entity-fishing*
sous le dossier `entity-fishing/` lancer la commande :
```
$ ./gradlew clean build
```
A la fin du processus le terminal doit afficher `BUILD SUCCESSFUL`
#### Étape 5 : Tester le lancement d'*Entity-fishing*
Pour lancer le service sur le port `8090`, se placer dans `entity-fishing/` et lancer la commande :
```
$ ./gradlew appRun
```
le processus reste bloqué à 87% ce qui est normal, ouvrez votre navigateur avec l'adresse `http://localhost:8090`.
Si le service s'affiche, l'installation est réussie. :tada:
## Cas d'usage d'*Entity-fishing* dans Ner4archives
...A compléter...
- Créer une nouvelle version de la base de connaissance pour *entity-fishing* à partir d'un dump de Wikidata et Wikipédia Cf. GRISP (à venir)
- Entrainer un modèle et évaluer avec Wikipédia dans *entity-fishing* (à venir)
- Entrainer et évaluer un modèle à partir d'un corpus annoté dans *entity-fishing* (à venir, voir utilité)
## Liens supplémentaires
utiliser des liens bit
- [Dépôt *Entity-fishing*]()
- [Documentation *Entity-fishing*](https://bit.ly/3hOFOOZ)
- [Dépôt GROBID]()
- [Documentation GROBID](https://bit.ly/3blncoy)
- [Dépôt GROBID-NER]()
- [Documentation GROBID-NER](https://bit.ly/2Xc9213)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment