---
# System prepended metadata

title: 'BookNLP : modèle d''annotation'

---

# BookNLP : modèle d'annotation

## Réunion Frédérique, Jean, Marco et Laurette le 25 août 2022

!!! fichier prise de notes

## docs et liens utiles

git du lattice:

https://github.com/lattice-8094/fr-litbank


## Ce qui est fait et ce qu'il reste à faire

Que faut-il privilégier d'ici fin septembre ? Quelles sont les étapes **à finaliser avant le départ de Marco** ?

Le but du travail de cette dernière année :

- fournir 4 modèles d'annotation
1 modèle pour les EN, les event, la coref, la prise de parole

- fournir un script permettant de créer son propre modèle

- écrire un guide d'utilisation 
    - lignes de commandes pour chaque type d'annotation
    - la liste des options possibles
    - ? les installations machines requises (file requirement)...
    - ?...

L'ensemble des points ci-dessus seront disponibles et documentés sur le git. Il faudrait donc que les fichiers modèles du git soit en raccord avec les modèles proposés.

TODO : mettre à jour le git, nettoyer les fichiers 

exemple : 
- merger les EN à merger
- revoir les annotations de 3 fichiers en particulier :

elisabeth seton
jean-christophe2
mademoiselleFifi

Les évolutions possibles, mais **à envisager plus tardivement**, selon les retours et utilisations de chacun :
Il serait possible :

- d'ajouter des options
exemple : merger ou supprimer des Entités

- ...

## Le dossier 'modeling'


!!! Actuellement, il manque le dossier 'modeling' dans le git.

Il contient 6 scripts python.

Le script qui est à manipuler et à comprendre prioritairement est :

> run_lm.py

Il permet diverses tâches d'annotation. Annotations en :
- entités
- evenement
- prise de parole (repère incise)
- (coref - voir plus tard)

Techniquement chacun de ces tâches est la même chose = des éléments à étiqueter!

!!! A noter : les annotations de type 'prise de parole' annote des empans textuels de plus grande taille.

Que fait le script 'run_lm' ?

C'est 1 constructeur de modèle. Il permet 3 choses : entrainement (1), évaluation (2) et inférence (3)

1. entrainement

Il prend en entrée 1 dossier :

> brat > entites 

Ce dossier contient des fichiers *ann et *txt.

Les fichiers *ann sont les annotations que qui vont servir à la construction du modèle.

![](https://i.imgur.com/Rmgn6LN.png)

Le script apprend à imiter ces annotations.

!!! A noter : idem avec autres types d'annotation : événement, prise de parole.

2. évaluation

tester un modèle existant

donner des textes (annotés et non déjà vus) et un modèle

voir si les prédictions sont bonnes

3. inférence

- donner 1 modèle

- se servir du modèle pour annoter des textes bruts

= se servir du modèle pour inférer prédire de nouvelles choses

Dans ce cas, le script prend en entrée 1 répertoire ne contenant que des *txt (pas de *ann) et donne en sortie des fichiers annotés (*ann).

## Utilisation pratique et démonstration

> python3.9 modeling/run_lm.py --data_dir brat/clean_entities --output_dir test_demo/

2 options ici

- data_dir : dossier contenant les fichiers bruts et annotés (= ce que l'outil doit à apprendre)

- output_dir : nom du dossier où va être mis le modèle

D'autres options sont dsiponibles : 

exemple : la sortie voulue : BIO ou BIOS (https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging))

TODO : Marco doit lister ces options possibles

L'apprentissage se fait de manière classique :

80% entraînement
20% !!! pas des phrases mais des romans / des fichiers
20% = le dev, fichier pas ceux de entrainement

### overwrite cache

Le lancement du script -> créé dossiers /brat/"entities_tsv" "event_tsv"

Ce dossier contient :

- la conversion des fichiers brat et en tsv
- les textes vectorisés

exemple : re ver bé ra tion
1 mot -> plusieurs tokens
= quand un mot ne fait pas parti de son vocabulaire
![](https://i.imgur.com/qigeOOy.png)

Cette étape (cf. tenseur) est longue, elle n'est pas répétée à chaque lancement du script. Une commande permet de forcer le script à rejouer cette étape : 'overwrite_cache'.

> python3.9 modeling/run_lm.py --data_dir brat/clean_entities --output_dir test_demo/ --overwrite_cache



