Skip to content
Snippets Groups Projects
Select Git revision
  • f4c9e8ff0a19af64c20a3e89e3f68e253e0e066c
  • master default protected
2 results

fastsem

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    Benoit Favre authored
    f4c9e8ff
    History
    DESCRIPTIF DU SYSTÈME:
    
        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
       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 
    
        
    FORMAT CONLL: 
    
        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.
    
        Par soucis de simplicité, les frame elements composés de plusieurs
       mots sont réduits à leur tête syntaxique.
    
       
       Le format:
           id	Word	Lemma	PoS	GovId	labelSynt	Frame	Role_in_frame_1	Role_in_frame_2	Role_in_frame_3 ...
    
       Exemple:
           1       You     you     PRP     4       SBJ     _       Agent   _       _     Agent   Partner_1
           2       and     and     CC      1       COORD   _       _       _       _     _       _
           3       I       i       PRP     2       CONJ    _       _       _       _     _       Partner_2
           4       have    have    VBP     0       ROOT    _       _       _       _     _       _
           5       done    do      VBN     4       VC      Intentionally_act       _     _       _       _       Undertaking
           6       some    some    DT      8       NMOD    Relational_quantity     _     Denoted_quantity        _       _       _
           7       important       important       JJ      8       NMOD    Importance    _       _       _       _       _
           8       work    work    NN      5       OBJ     Working_on      Act     Mass  Factor  _       _
           9       together        together        RB      5       MNR     Collaboration Manner  _       _       _       _
           10      .       .       .       4       P       _       _       _       _       _       _ 
    
    
    FORMAT lexical-units:
       LU1  frame1	frame2
       LU2  frame3	
    
       Pour l'anglais on a des LU avec partie de discours, ce qui donne quelquechose du genre:
    
       detain.v	Detaining	Inhibit_movement
       verdict.n	Verdict
       baron.n	Leadership
       on time.adv	Relative_time
       voice.v	Expressing_publicly
    
    
    
    LIBRAIRIES UTILISÉES:
     - pickle 
     - glob
     - getopt
     - begins
     - time
     - zmq
    
    INSTALLATION de liblinear:
      Make dans utils/liblinear-1.96/ puis dans 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
    
    TEST:
     - utiliser fastsem.py test
    
    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.