Ce dépôt sert à collecter les travaux réalisés pour étudier les expressions polylexicales et la coréférence.
Ce dépôt a été créé dans le cadre d'un stage dont l'objectif est de vérifer de manière expérimentale l'hypothèse selon laquelle les composants individuels d'une expression polylexicale sont rarement susceptibles d'appartenir à des chaînes de coréférences.
Expressions polylexicales : Termes complexes composés de plusieurs mots tels que "blanc d'œuf", "mémoire vive", "prendre une pause", "prendre le temps", "retourner sa veste" ou "prendre le taureau par les cornes" etc. Elles présentent des comportements linguistiques irréguliers et notamment la non-compositionnalité sémantique, qui signifie que le sens global de l'expression n'est pas déductible de manière régulière à partir des sens des composants et des liens syntaxiques qui les relient.
Chaînes de coréférence : Procédé linguistique dans lequel plusieurs éléments d'un discours réfèrent à un même élément du discours.
Exemple : "Il a retourné sa veste et l'a suspendue dans l'armoire." Ici le groupe nominal la veste est ce que l'on appelle une mention, c'est-à-dire un élément qui réfère d'une entité du monde du discours (la veste qui appartient à la personne décrite dans l'énoncé). De même, le pronom l' est lui-même une mention qui réfère à cette même entité du discours. On dit alors que sa veste et l' sont coréférents, c'est-à-dire qu'ils désignent la même entité.
Dans l'exemple précédent, la coréférence entre le pronom et sa veste n'est possible que parce que nous ne sommes pas en présence de l'expression polylexicale "retourner sa veste" ("changer d'opinion"). Si la phrase "Il a retourné sa veste" avait été une EP, la non-compositionnalité de celle-ci aurait empêché de rendre le composant sa veste accessible à une coréférence. C'est ce type de restriction que nous souhaitons étudier au cours de ce stage.
Pour vérifier cette hypothèse, nous avons à disposition un outil pour l'annotation en expressions polylexicales (Seen2seen) et un outil pour la résolution de coréférences (OFCORS, qui utilise DECOFRE pour la reconnaissance de mentions). Les entrées et les sorties diffèrent d'un outil à l'autre.
Pour pouvoir utiliser notre dépôt, il faut installer Seen2seen et OFCORS. Il est conseillé d'utiliser un environnement virtuel.
Pour plus de détails, référez-vous au README de Seen2seen : Lien vers Seen2seen.
- Clonez le dépôt de Seen2seen:
git clone https://gitlab.com/cpasquer/st_2020 Seen2Seen - Clonez ce dépôt :
git clone https://github.com/anaelle-p/MWE_coref - Supprimez l'ancien code et l'ancien fichier config :
rm Seen2Seen/CODE/seen2seen.py Seen2Seen/config.cfg - Copiez-collez le nouveau code :
cp MWE_coref/seen2seen/seen2seen.py Seen2Seen/CODE/seen2seen.py - Copiez-collez le nouveau fichier config :
cp MWE_coref/seen2seen/config.cfg Seen2Seen/config.cfg - Ajoutez le script de conversion udpipe :
cp MWE_coref/seen2seen/udpipe_annote.py Seen2Seen/CODE/udpipe_annote.py - Téléchargez le modèle utilisé par le script de conversion : french-gsd-ud-2.5-191206.udpipe
- Créez un répertoire
model_udpipe:mkdir Seen2Seen/CODE/model_udpipe/ - Déplacez le modèle dans ce répertoire
Vous pouvez maintenant utiliser Seen2seen pour l'annotation ! Le lancement est expliqué plus bas.
Pour plus de détails, référez-vous au README d'OFCORS : Lien vers OFCORS.
- Clonez le dépôt d'OFCORS :
git clone https://gitlab.com/Stanoy/ofcors.git - Installez flit si besoin :
pip install flit - Rendez-vous dans le répertoire ofcors :
cd ofcors pip install -r requirements.txtflit build --format wheelpip install dist/ofcors-X.Y.Z-py3-none-any.whl- Téléchargez les modèles d'OFCORS : models.zip
- Déplacez le dossier
modelsdansofcors/models - N'oubliez pas d'installer les modèles de Spacy (
python -m spacy download fr_core_news_lg) et de Stanza (python3,import stanza,stanza.download('fr'))
Ofcors est installé! - Si vous n'avez pas cloné notre dépôt : sortez du dépôt d'OFCORS et
git clone https://github.com/anaelle-p/MWE_coref
Vous pouvez maintenant utiliser OFCORS dans notre dépôt! Le lancement est expliqué plus bas.
Pour traiter correctement la coréférence, il est nécessaire de connaître les frontières de textes dans un corpus. En effet, la coréférence ne peut être traitée qu'à l'intérieur d'une même unité discursive.
Le corpus PARSEME est annoté en expressions polylexicales mais les frontières des textes ne sont pas annotées. Ce corpus contient quatre sous-corpus (SEQUOIA, GSD, PARTUT et PUD) et il n'est possible de retrouver l'ordre des phrases que pour un seul sous-corpus : SEQUOIA.
Nous avons donc isolé les différents documents présents dans le corpus SEQUOIA pour lesquels les phrases se suivent selon l'ordre du document initial :
- 2 rapports de l'agence européenne du médicament pour la partie EMEA (~ 1 000 phrases en tout)
- 19 articles Wikipédia sur des affaires sociale ou politiques pour la partie frwiki (~ 1 000 phrases en tout)
- 36 articles de journaux courts avec des thèmes variés pour la partie annodisER (~ 500 phrases en tout)
Ce corpus étant annoté manuellement en expressions polylexicales, les erreurs d'annotation ne peuvent venir que des chaînes de coréférence.
Dans un deuxième temps, l'expérience se réalise sur le corpus Est Républicain, un recueil des articles paru en 1999, 2002 et les deux premiers mois de 2003 sur le journal régional Est Républicain. Considérant la taille énorme de corpus, pour l'instant, nous limitons notre test sur les 100 premiers articles ayant plus de 300 mots de l'année 2003 (~ 3 000 phrases en tout).
Ce corpus étant composé de fichiers texte brut, les erreurs d'annotation peuvent venir des chaînes de coréférence ou des expressions polylexicales.
Enfin, nous avons réalisé notre expérience sur le corpus ANCOR (téléchargé depuis le lien donné par DECOFRE). C'est un corpus d'oral transcrit composé de 4 sous-corpus :
- ESLO_ANCOR : des entretiens divisés en sous dialogues thématiques cohérents (~ 25 000 phrases en tout).
- ESLO_CO2 : trois entretiens complets (~ 2 500 phrases en tout).
- OTG : des dialogues interactifs entre des individus et le personnel d’accueil de l’office de tourisme de Grenoble (~ 2 800 phrases en tout).
- UBS : des dialogues interactifs par téléphone recueillis auprès du standard téléphonique d’une université (~ 700 phrases en tout).
Ce corpus étant annoté manuellement en chaînes de coréférence, les erreurs d'annotation ne peuvent venir que des expressions polylexicales.
|-- MWE_coref
|-- .gitignore
|-- README.md
|-- presentation_MWE_coref.pdf
|-- seen2seen
| |-- udpipe_annote.py
| |-- seen2seen.py
| |-- config.cfg
|-- 1_corpus
| |-- SEQUOIA
| | |-- annodisER
| | |-- emea
| | |-- frwiki
| | |-- z_corpus_initial
| | |-- z_fichiers_intermediaires
| | |-- EMFR_corpus_split.py
| | |-- EMFR_txt_from_conllu.py
| | |-- ER_get_texte.py
| | |-- ER_get_date_title.py
| | |-- get_mwe_from_cupt.py
| | |-- MWE_decompte_*.json
| |-- EST_REPUBLICAIN
| | |-- TXT2003
| | |-- TXT2003_len300_articles
| | |-- extract_text_er.py
| |-- ANCOR
| | |-- ESLO_ANCOR
| | |-- ESLO_CO2
| | |-- OTG
| | |-- UBS
|-- 2_traitements
| |-- CuptParser.py
| |-- OfcorsFilesParser.py
| |-- merge_s2s_ofcors.py
| |-- statistiques.py
| |-- lanceur.sh
| |-- ANCOR
| |-- blabla
| |-- ER2003
| |-- SEQUOIA
| |-- z_oldies
|-- 3_resultats
| |-- visualisations.ipynb
| |-- visualisations_jyliu.ipynb
| |-- sequoia_frwiki_050721.json
| |-- sequoia_frwiki_050721_validation.json
|-- |-- ...
| 4_compositionnalite
| |-- extract_vrai_exemple.py
| |-- extract_faux_exemple.py
| |-- degre_to_annotations.py
| |-- consignes_annotation.pdf
| |-- test_compositionnalite_resultats.xlsx
| |-- ...
| |-- resultats_croisements
| | |-- ...
| |-- resultats_mwes
| | |-- ...
-
Modification du script de Seen2seen, pour qu'il puisse faire seulement l'étape d'annotation;
- Script
seen2seen/udpipe_annote.pypour transformer un fichier txt encupt.blind; - Modification du script
seen2seen/seen2seen.pyen créant un mode "annotation_ONLY" qui permet de ne faire que l'annotation sans refaire l'entraînement. Ce mode est à spécifier dans le fichier de config (seen2seen/config.cfg) avec "annotation_ONLY = True".
- Script
-
Utilisation du corpus SEQUOIA dans PARSEME, séparation des sous-corpus EMEA, frwiki et annodis.er selon les articles;
- Lien pour télécharger le corpus
- Sélection manuelle des parties "emea" et "frwiki" dans le fichier
1_corpus/SEQUOIA/z_fichiers_intermediaires/sequoia-ud.conllu(puisqu'il est ordonné) pour créer deux fichiers1_corpus/SEQUOIA/z_fichiers_intermediaires/emea.conlluet1_corpus/SEQUOIA/z_fichiers_intermediaires/frwiki.conllu - Utilisation du script
1_corpus/SEQUOIA/EMFR_txt_from_conllu.pypour extraire d'abord le texte brut et les sent_id des phrases qu'il contient dans les fichiers1_corpus/SEQUOIA/z_fichiers_intermediaires/emea_textbrut.txtetSEQUOIA/z_fichiers_intermediaires/frwiki_textbrut.txt - Division manuelle du corpus en articles, avec l'annotation "## DEBUT DOC" et "## FIN DOC" dans
1_corpus/SEQUOIA/z_fichiers_intermediaires/emea_textbrut_annote.txtet1_corpus/SEQUOIA/z_fichiers_intermediaires/frwiki_textbrut_annote.txt - À partir du contenu du fichier cupt, utilisation de
1_corpus/SEQUOIA/EMFR_corpus_split.pypour former le fichiercuptettxtde chaque article selon le sent_id choisi et le source_sent_id dans le fichier cupt (téléchargement de cupt de PARSEME), un article par fichier - Répertoire obtenus :
1_corpus/SEQUOIA/emea/et1_corpus/SEQUOIA/frwikià recopier dans2_traitements/SEQUOIA/emeaet2_traitements/SEQUOIA/frwiki. Ils contiennent les fichiers*.cuptet*.txt. - Pour le sous-corpus annodis.er, utiliser le script
ER_get_texte.pypour obtenir le répertoire de corpus1_corpus/SEQUOIA/annodisERà recopier dans2_traitements/SEQUOIA/annodisER. Il contient les fichiers*.cuptet*.txt. - N'oubliez pas de l'annoter avec OFCORS avant la fusion des résultats.
-
Utilisation du corpus Est Républicain, séparation des articles en fichiers;
- Téléchargement et décompression du corpus dans le répertoire
1_corpus/EST_REPUBLICAIN - Lancement du script
1_corpus/EST_REPUBLICAIN/extract_text_er.pydans1_corpus/EST_REPUBLICAINavecpython extract_texte_er.py <rep_corpus> <taille_min_article> - Le répertoire des articles est
1_corpus/EST_REPUBLICAIN/<rep_corpus>_len<taille>_articles, et dans lequel chaque article est nommé comme<date>_<indice_article>.txt - N'oubliez pas de l'annoter avec Seen2seen et OFCORS avant la fusion des résultats.
- Téléchargement et décompression du corpus dans le répertoire
-
Utilisation du corpus ANCOR, conversion des fichiers TEI en fichiers txt;
- Téléchargement et décompression du corpus dans le répertoire
1_corpus/ANCOR/. Supprimez les fichiers1_corpus/ANCOR/*-syntax.teiet séparez les sous-corpus en différents sous-dossiers. - Lancement du script
1_corpus/ANCOR/ancor.pysur les 4 sous-corpus (ANCOR/ESLO_ANCORANCOR/ESLO_CO2ANCOR/OTGetANCOR/UBS) depuis1_corpus/ANCOR/avecpython ancor.py <rep_corpus> - Vous pouvez ensuite recopier chaque sous-corpus (
1_corpus/ANCOR/<sous-corpus>) dans le répertoire2_traitements/ANCOR/<sous-corpus>sans les fichiers TEI (ils ne seront pas utiles pour les traitements). - N'oubliez pas de l'annoter avec Seen2seen avant la fusion des résultats.
- Téléchargement et décompression du corpus dans le répertoire
-
Fusion du résultat de OFCORS et de celui de Seen2seen au format cupt : ajout de 2 colonnes : la colonne des mentions et celle des chaînes de coréférences;
-
Format : colonne des mentions : id de mentions séparés par
;
colonnes des coréférences :id_de_chaînes:id_de_mention, séparés par;
Exemple :... 1 Le le DET _ Definite=Def|Gender=Masc|Number=Sing|PronType=Art 2 det _ _ * 31 1:31 2 trajet trajet NOUN _ Gender=Masc|Number=Sing 4 nsubj _ _ * 31 1:31 3 ne ne ADV _ Polarity=Neg 4 advmod _ _ * * * 4 dure durer VERB _ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 0 root _ _ * * * 5 que que ADV _ _ 7 advmod _ _ * * * 6 20 20 NUM _ _ 7 nummod _ _ * 32 * 7 minutes minute NOUN _ Gender=Fem|Number=Plur 4 obj _ _ * 32 * 8 ! ! PUNCT _ _ 4 punct _ _ * * * ...
Ici, La mention n°31 est "Le trajet" et la mention n°32 est "20 minutes". La chaîne n°1 contient (entre autres) la mention 31. La mention 32 n'appartient à aucune chaîne de coréférence.
- Scripts pour les fusionner :
2_traitements/CuptParser.py,2_traitements/OfcorsFilesParser.pyet2_traitements/merge_s2s_ofcors.py - Script pour lancer tout :
2_traitements/lanceur.sh - Script pour étudier le résultat :
2_traitements/statistiques.py - Répertoire de test :
2_traitements/blabla/ - Répertoire d'expériences :
2_traitements/SEQUOIA/annodisER/,2_traitements/SEQUOIA/emea/,2_traitements/SEQUOIA/frwiki/,2_traitements/ER2003/ER2003_len300_1-100/,2_traitements/ANCOR/ESLO_ANCOR/,2_traitements/ANCOR/ESLO_CO2/,2_traitements/ANCOR/OTG/et2_traitements/ANCOR/UBS/ - Anciens scripts :
2_traitements/z_oldies/
-
Si vous n'avez jamais lancé Seen2seen vous pouvez commencer par lancer l'entrainement et le test. Attention, c'est assez long.
Vous aurez besoin du fichier test.cupt. Si vous ne l'avez pas, téléchargez-le ici et déplacez-le dans le répertoire Seen2Seen/INPUT/FR/.
Le mode annotation_ONLY doit être désactivé (annotation_ONLY = False ligne 13 du fichier Seen2Seen/config.cfg)
Vous devez vous trouver dans Seen2Seen/CODE/.
python3 seen2seen.py
À la fin du traitement, la meilleure configuration de filtres pour le français est mise à jour automatiquement dans le fichier Seen2Seen/config.cfg.
Le répertoire du corpus à analyser doit se trouver dans Seen2seen/INPUT/FR/.
Les fichiers du corpus sont donc dans Seen2seen/INPUT/FR/<nom_repertoire_corpus>/
Ils doivent être soit au format .cupt soit au format .txt.
Le mode annotation_ONLY doit être activé (annotation_ONLY = True ligne 13 du fichier Seen2Seen/config.cfg)
Vous devez vous trouver dans Seen2Seen/CODE/.
python3 seen2seen.py <nom_repertoire_corpus>
OU
python3 seen2seen.py Seen2seen/INPUT/FR/<nom_repertoire_corpus>/
Dans les deux cas seul le nom du répertoire sera pris en compte.
Les résultats de l'annotation se trouvent dans Seen2Seen/OUTPUT_seen/ANNOTATIONS/FR/<nom_repertoire_corpus>/ et se terminent par_annote.config48.cupt.
Vous devez vous trouvez dans MWE_coref/2_traitements/.
./lanceur.sh -os blabla/
Cette commande lance tout le processus sur les fichiers contenus dans le répertoire 2_traitements/blabla/. Ce répertoire doit contenir les fichiers textes et les fichiers cupt annotés en MWEs (passés dans Seen2seen) du corpus.
Les fichiers textes sont d'abord passés dans OFCORS et les fichiers résultats (<nom>_resulting_chains.json, <nom>_mentions_output.json et <nom>_token.json) sont créés dans 2_traitements/blabla/ofcors_outputs. Ensuite, le script 2_traitements/merge_s2s_ofcors.py est appelé pour créer les fichiers cupt avec les deux colonnes supplémentaires dans le dossier 2_traitements/blabla/mwecoref_outputs à partir des sorties d'OFCORS et des fichiers cupt. Enfin, le script 2_traitements/statistiques.py affiche les résultats dans le terminal.
OFCORS est lancé avec le tokenizer stanza, en mode fenêtre (taille de 8).
./lanceur.sh -o blabla/
Cette commande ne lance que la partie OFCORS.
OFCORS est lancé avec le tokenizer stanza, en mode fenêtre (taille de 8).
./lanceur.sh -s blabla/
Cette commande ne lance que les scripts 2_traitements/merge_s2s_ofcors.py et 2_traitements/statistiques.py. Elle nécessite que les fichiers résultats de OFCORS sur les fichiers de 2_traitements/blabla/ se trouvent dans 2_traitements/blabla/ofcors_outputs.
Légendes des exemples:
- [mentions]
- expressions
"FICHIER": "emea_2_mwe_coref.cupt",
"PHRASE": "Aclasta ne doit être utilisé, chez les patients souffrant de la maladie osseuse de Paget, que par un médecin expérimenté dans le traitement de cette maladie.",
"TOKENS": "['souffrant', 'de', 'maladie']",
"LEMMES": [
"souffrir",
"de",
"maladie"
],
"COREF": "['*', '*', '58:131']",
"CAS": "{'131': 4}",
"CHAINE(S)": {
"58": "{'131': ['la', 'maladie', 'osseuse', 'de', 'Paget'], '135': ['cette', 'maladie'], '138': ['une', 'maladie'], '139': ['qui']}"
}
Les différentes expressions polylexicales faisant parties d'une chaîne de coréférence sont regroupées par type (VID, LVC.full ...). Pour chaque type sont ensuite affichées les informations sur les expressions polylexicales comme ci-dessus.
- FICHIER : le fichier où se trouve l'expression.
- PHRASE : La phrase où se trouve l'expression.
- INFOS :
- Les tokens qui composent l'expression.
- Les lemmes des tokens qui composent l'expression.
- Pour chaque token : son appartenance ou non à une chaîne de coréférence. Si
*alors il n'appartient pas à une chaîne, sinonindice de chaine : indice de mention. Dans l'exemple ci-dessus, "maladie" correspond à la mention 131 et fait partie de la chaîne de coréférence 68. - Le cas correspondant pour chaque mention. (CAS 1 : expression incluse dans mention, CAS 2 : la mention et l'expression sont identiques, CAS 3 : mention incluse dans l'expression et CAS 4 : chevauchement)
- CHAINE(S) : Pour chaque chaîne à laquelle l'expression appartient, on affiche l'ensemble des mentions de la chaîne. Dans l'exemple ci-dessus une seule chaîne a été trouvée, on affiche donc uniquement la chaîne 58 qui contient les mentions 131 ("la maladie osseuse de Paget"), 135 ("cette maladie"), 138 ("une maladie") et 139 ("qui").
Pour examiner les croisements des expressions polylexicales et des chaînes de coréférence, nous annotons trois aspects : VALIDATION, DEGRE DE COMPOSITIONNALITE et SOURCE D'ERREUR.
-
"VALIDATION"
- 5 valeurs possibles : "vrai", "faux", "non concerné", "discutable" et "répétitions".
- "vrai" : L'exemple est utilisable pour notre hypothèse, c'est-à-dire que le composant détecté dans l'expression polylexicale se trouve dans une vraie chaîne de coréférence (interprétation humaine), quelle que soit la performance du système.
Par exemple, nous mettons "vrai" pour cette phrase : "Pour la fin de l'année et après avoir distribué les colis aux anciens, M. Didier Louis, lors de son allocution, a fait tout d'abord [une rétrospective des travaux] [qui] ont été accomplis dans la commune." . Le composant "travaux" dans "accomplir travaux" est vraiment coréférent avec "qui", même si la mention détectée "une rétrospective des travaux" est fausse. - "faux" : Cas contraire du précédent, l'exemple est trouvé à cause des erreurs du système.
Par exemple, nous mettons "faux" pour cette phrase : "Après plusieurs mois, [la Chine] met [une sourdine] à ses objections et le ministère français des Affaires étrangères lève son veto." - "non concerné" : Souvent attribué à un exemple de cas 1 (expression polylexicale inclue dans la mention détectée), qui ne fait pas partie de notre analyse.
Par exemple, nous mettons "non concerné" pour cette phrase : "[De nombreux patients atteints d'ostéoporose] n'ont aucun symptôme, mais [ils] présentent néanmoins un risque de fracture osseuse car l'ostéoporose a fragilisé leurs os." car on s'intéresse seulement à la reprise des composants d'une expression. - "discutable" : L'exemple peut être vrai ou faux selon l'interprétation humaine.
Par exemple, dans la phrase "- Créé par la Fédération nationale qui perpétue le souvenir de l'homme d'Etat meusien qui fut ministre de la Guerre et l'initiateur d'un système de défense qui porte [son nom], le prix [André-Maginot] récompense des travaux liés au civisme et au devoir de mémoire." , la coréférence entre les deux mentions "son nom" et "André-Maginot" est difficile à déterminer, puisque le dernier est le nom du prix et non le nom de la personne. - "répétitions" : Répétitions simples à cause des disfluences ou réutilisations des expressions complètes dans le texte (courant dans le corpus oral ANCOR).
Par exemple nous mettons "répétitions" pour ces phrases : "cinq kilomètres d' ici ? ah non je crois que si j' ai [le temps] j' irai la voir" "oui mais vous préférez vous déplacer plutôt oui si j' ai [le temps] j' aime mieux j' aime mieux aller aller les voir" et "je ferais [un détour] pour aller à Chambord je ferais [un détour] vous voyez ça c' est c' est c' est c' est sans doute dans mon tempérament vous comprenez ça c' est c' est c' est personnel ça"
-
"DEGRE DE COMPOSITIONNALITE"
- Cette valeur n'est renseignée que pour les exemples vrais. 3 valeurs sont possibles : "faible", "moyen" ou "fort".
- Nous nous sommes inspirées de l'article Unsupervised Compositionality Prediction of Nominal Compounds (Cordeiro et al. 2019) pour créer un test de compositionnalité adapté aux expressions polylexicales verbales. Vous pouvez retrouver ce test et les annotations dans le dossier
4_compositionnalite/. Les expressions ont été annotées par 4 annotateurs indépendants.
-
"SOURCE D'ERREUR"
- Les erreurs peuvent venir de deux côtés : l'expression polylexicale ou la chaîne de coréférence. Nous les définissons avec 5 sources d'erreurs :
- "MWE incorrecte" : l'expression détectée n'est pas une vraie expression polylexicale malgré les lemmes corrects.
- "MWE littérale" : un sous-cas de l'erreur précédente, l'expression détectée demande une lecture littérale dans ce contexte.
eg. "Nous travaillons en accord avec les organisateurs et proposons à chaque personne qui s'apprête à reprendre le volant de souffler dans le ballon pour voir où il en est." - "MWE type incorrect" : L'expression détectée est correcte, mais elle est classée dans une catégorie incorrecte.
- "chaîne incorrecte" : Aucune des mentions de la chaîne n'est coréférente avec la mention de l'expression.
- "mention incorrecte" : La mention utilisée dans la chaîne détectée est incorrecte, mais la chaîne serait correcte si la mention prenait en compte plus ou moins de mots.
eg. "Pour la fin de l'année et après avoir distribué les colis aux anciens, M. Didier Louis, lors de son allocution, a fait tout d'abord [une rétrospective des travaux] [qui] ont été accomplis dans la commune.", la chaîne serait correcte si on changeait "une rétrospective des travaux" par "des travaux"
L'annotation a été réalisée lors de réunions, les annotateurs n'étaient donc pas indépendants des autres. Il y avait entre 2 et 7 annotateurs. Les phrases étaient lues et vérifiées puis les annotateurs discutaient entre eux de la validité ou non des exemples.
| Type | Nombre de croisements vrais | Nombre de EPV détectés |
|---|---|---|
| VID | 29 | 5266 |
| LVC.full | 245 | 1726 |
| LVC.cause | 1 | 18 |
| IRV | 1 | 996 |
| MVC | 0 | 41 |
| TOTAL | 276 | 8047 |
- Dès la fin de la guerre, la veuve de Théophile Maupas, soutenue par la Ligue des droits de l'Homme contactée dès le mois d'avril 1915, entama [un combat] pour la réhabilitation de son époux et des autres caporaux fusillés de Souain ; [combat] contre les institutions, mené sans relâche, qui dura près de deux décennies et qui, en dehors de son activité d'institutrice, l'occupa à plein temps. (FRWIKI)
- Aclasta ne doit être utilisé, chez les patients souffrant de [la maladie osseuse de Paget], que par un médecin expérimenté dans le traitement de [cette maladie]. (EMEA)
- Dans le cas où vous avez eu récemment [une fracture de hanche], il est recommandé qu'Aclasta soit administré 2 semaines ou plus après réparation de [votre fracture]. (EMEA)
- Il est utilisé en conjonction avec de l'aspirine et du clopidogel (médicaments contribuant à prévenir les caillots sanguins) chez les patients sur le point de subir [un traitement] pour leur SCA, comme un [traitement médicamenteux], subissant une angioplastie ou [un pontage coronarien]. (EMEA)
- Pour la fin de l'année et après avoir distribué les colis aux anciens, M. Didier Louis, lors de son allocution, a fait tout d'abord une rétrospective [des travaux] [qui] ont été accomplis dans la commune. (Est Républicain)
- Une course entamée à l'aube, 3 h 35, pour se terminer presque deux heures plus tard à l'hôtel de police... où sa cliente a avoué [le meurtre de l'homme] qui lui offrait l'hospitalité. [Un crime] commis une semaine plus tôt, dans un studio de la résidence Lemire. (Est Républicain)
- D'ores et déjà, Guy Rolland se demande « si l'année prochaine nous n'allons pas mener [des actions plus ciblées] comme [celles] que nous menons en direction des boîtes de nuit. (Est Républicain)
- j' aimerais vous poser [une dernière question] mais alors vous n' êtes pas obligée d' [y] répondre est -ce qu' il y a un parti politique qui représente bien vos opinions" (ESLO_ANCOR)
- à peu près pour la même raison mais seulement c' était moins développé dans mon temps enfin c' était [une impression] à moi j' ai [l' impression] que c' était moins développé que maintenant (ESLO_CO2)