diff --git a/README b/README index 6f238ac836768ef14d406502e04bd14f98545280..27c0e7c78803429330ddcd0dac796a1505b397fc 100644 --- a/README +++ b/README @@ -1,54 +1,46 @@ -DESCRIPTIF DU SYSTÈME: +SHORT DESCRIPTION : - FASTSEM est une suite d'outils d'analyse sémantique selon le - modèle FrameNet. Il peut apprendre un modèle à partir d'un corpus - annoté en frames sous le format décrit plus bas et décoder un texte - annoté en lemmes, POS et syntaxe. - - Le système repose sur la liblairie liblinear, qui implémente des - séparateurs linéaires. Pour chaque unité lexicale, nous avons un - séparateur linéaire décidant du frame associé à cette unité - lexicale. Une fois le frame décidé, nous avons un séparateur - linéaire par frame, décidant du rôle à donner à chaque frame + FASTSEM is a tool for semantic parsing. It produces frame semantic + representations using the conll format described below. FASTSEM can + learn and decode corpuses since they are annotated whith lemmas pos + and syntax. + + The system uses the liblinear library, which implement linear + separators. For each lexical unit, there is a linear separator + deciding which frame associate to it. The second step uses one + separator for each frame that decide which role give to each frame element. - Pour les classifieurs de triggers, nous utilisons des combinaisons - de différentes features: - - lemme du trigger; - - PoS du trigger; - - Chemins syntaxiques entre le trigger et les têtes syntaxiques des FE; - - Lemmes des FE; - - PoS des FE. - - Pour les classifieurs de FE, nous utiliserons: - - Chemin syntaxique entre le trigger et la tête syntaxique du FE; - - Lemme du FE; - - PoS du FE; - - Nom du Frame; - - Trigger du Frame. - - Nous utilisons comme features les chemins syntaxiques entre un - trigger et la tête syntaxique de chacun de ses FE, les lemmes des + For triggers classifiers, we use combinations of several features: + - trigger's lemma; + - trigger's PoS; + - Syntactic pathes from trigger to FE's syntactic head; + - Lemma of every frame element; + - PoS of every frame element. - -FORMAT CONLL: + For each frame element classifiers, we use: + - Syntactic paths from trigger to the frame element syntactic head; + - frame element head's lemma; + - frame element head's PoS; + - frame's name; + - frame's trigger. - Le format a un nombre variable de colonnes, ce nombre correspond à - 7 colonnes de base auxquelles s'ajoutent n colonnes, n étant le - nombre de frames dans la phrase. La septième colonne correspond au - Frame si le mot est un trigger, la 7+n ième colonne correspond au - rôle que joue un mot dans le n-ième frame. De ce fait un mot ne - peut être trigger que d'un seul frame, mais peut jouer un rôle dans - plusieurs frames. + +CONLL FILES : - Par soucis de simplicité, les frame elements composés de plusieurs - mots sont réduits à leur tête syntaxique. + This format is composed of 7+n columns, where n is the number of + frames in the sentence. The seventh column is the frame name if the + word is a trigger. The 7+i-th column is filled by a role name of + the i-th frame if the word is the syntactic head of the frame + element which plays this role. This format implies that each word + can at most be the trigger of one frame and each syntactic head can + play at most one role per frame. Le format: id Word Lemma PoS GovId labelSynt Frame Role_in_frame_1 Role_in_frame_2 Role_in_frame_3 ... - Exemple: + Example: 1 You you PRP 4 SBJ _ Agent _ _ Agent Partner_1 2 and and CC 1 COORD _ _ _ _ _ _ 3 I i PRP 2 CONJ _ _ _ _ _ Partner_2 @@ -61,11 +53,11 @@ FORMAT CONLL: 10 . . . 4 P _ _ _ _ _ _ -FORMAT lexical-units: +LEXICAL-UNITS FILE FORMAT: LU1 frame1 frame2 LU2 frame3 - Pour l'anglais on a des LU avec partie de discours, ce qui donne quelquechose du genre: + For English, lexical Units are embedded with PoS, like this: detain.v Detaining Inhibit_movement verdict.n Verdict @@ -75,30 +67,30 @@ FORMAT lexical-units: -LIBRAIRIES UTILISÉES: +LIBRARIES: - pickle - glob - getopt - begins - time - - zmq -INSTALLATION de liblinear: - Make dans utils/liblinear-1.96/ puis dans utils/liblinear-1.96/python +LIBLINEAR INSTALL : + In utils/liblinear-1.96/, do make then do make again in utils/liblinear-1.96/python -APPRENTISSAGE: - - agglutiner tous les fichiers conll enrichis de sémantique dans deux fichiers (un train et un test) - - on peut supprimer les lignes vides qui sont en trop avec la fonction removeEmptyLines de miniclean.py - - il vaut mieux aussi supprimer les phrases avec des cycles syntaxiques en utilisant removeSentencesWithLoops de miniclean.py - - pour l'apprentissage, on crée d'abord un fichier "premache" avec premacheCorpus.py pour le train et le test - - il est possible de réduire le corpus artificiellement en utilisant cutSomePathes.py - - on lance l'apprentissage avec fastsem.py train +LEARNING : + - Concatenante your conll files in two (or three) files : train, test (dev); + - you can delete empty lines using the removeEmptyLines function from miniclean.py; + - Two ways to learn: + * from an intermediate file with explicit syntactic paths : use premacheCorpus.py. This option can be usefull to prune files (PoS of the trigger, frequency of paths...); + * from the conll file; + - run the learning process with : fastsem.py train [options]. -TEST: - - utiliser fastsem.py test +TESTING : + - run fastsem.py test [options] -DECODAGE: - - pour décoder un fichier conll on utilise decodeConll.py qui ressort un fichier conll enrichi de la syntaxe à partir d'un fichier conll avec lemmes, PoS et syntaxe annotés. +DECODING : + - Using decodeConll.py, wich outputs a conll file with semantic frames from a conll file with lemmas, PoS and syntactic annotations and a model; + - Using the SemanticDecoder class from fastSem.py (recommanded).