Étiquetage morphologique par Morphalou

Un programme de Frédéric Glorieux et un projet de INaLCO/M2-IM en 2008-2009

  1. But poursuivi
  2. Principe
  3. Réalisation
    1. Morphalou
    2. Réalisation en SAX
      1. La classe Grammairien
      2. La classe Lecteur

  1. But poursuivi

    À partir d'un texte (brut) en français, produire pour chacun des mots qui s'y trouvent
    • sa nature (part-of-speech)
    • son lemme
    • ses flexions

    Voici
    un exemple où l'analyse est restreinte aux noms communs.
    Essayez vous-même !
  2. Principe

    On procède en deux étapes d'inégale importance :

    1. On constitue un dictionnaire dont les mots du texte sont les clés.
      Lors de la création du dictionnaire, l'entrée associée à chaque mot est vide.

    2. On "cherche" chaque mot dans le lexique,
      et à partir des informations fournies par le lexique on compose l'entrée du dictionnaire.

      Toute la difficulté est dans cette recherche : une forme fléchie ne se trouve pas directement comme clé dans le lexique !
      On va donc renverser les rôles : au lieu de partir du mot à chercher, on va partir du lexique.
      La phase 2 devient donc .

      On lit intégralement le lexique.
      À chaque forme qu'on y rencontre, on regarde si elle figure (comme clé) dans notre dictionnaire
      (ce qui se fait en temps constant, grâce à la technique appelée hashing).
      Si oui, à partir des informations fournies par l'article on compose l'entrée du dictionnaire.
      On continue la lecture du lexique...

      De cette manière, le lexique est lu une seule fois - mais d'un bout à l'autre.

  3. Réalisation

    1. Morphalou

      Le lexique Morphalou est un lexique ouvert des formes fléchies du français.
      Il se présente comme un fichier XML de 155 Mo, dont voici un échantillon :


      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE lexicon SYSTEM "Morphalou-2.0.dtd">
      <lexicon>
          <lexiconInformation>
              <originatingData originatingDatabase="TLF" originatingInstitution="ATILF" />
              <originatingData originatingDatabase="Morphalou-1.0" originatingInstitution="ATILF" />
          </lexiconInformation>
          <lexicalEntry id="a_1">
              <formSet>
                  <lemmatizedForm>
                      <orthography>a</orthography>
                      <grammaticalCategory>commonNoun</grammaticalCategory>
                      <grammaticalGender>masculine</grammaticalGender>
                  </lemmatizedForm>
              </formSet>
              <originatingEntry target="TLF">A, subst. masc.</originatingEntry>
          </lexicalEntry>   
         
      <lexicalEntry id="championne_1">
          <feminineVariantOf target="champion_1">champion</feminineVariantOf>
          <formSet>
              <lemmatizedForm>
                  <orthography>championne</orthography>
                  <grammaticalCategory>commonNoun</grammaticalCategory>
                  <grammaticalGender>feminine</grammaticalGender>
              </lemmatizedForm>
              <inflectedForm>
                  <orthography>championne</orthography>
                  <grammaticalNumber>singular</grammaticalNumber>
              </inflectedForm>
              <inflectedForm>
                  <orthography>championnes</orthography>
                  <grammaticalNumber>plural</grammaticalNumber>
              </inflectedForm>
          </formSet>
          <originatingEntry target="TLF">CHAMPION, ONNE, subst.</originatingEntry>
      </lexicalEntry>

      </lexicon>



      Supposons que notre texte soit "une championne, des championnes".
      Le dictionnaire initial est
      • une :
      • championne :
      • des :
      • championnes :

      Lorsque notre lecture séquentielle du fichier nous amènera à la <lexicalEntry id="championne_1"> ,
      nous découvrirons successivement que les deux <inflectedForm> qui ont pour <orthography> 
      respectivement championne et championnes nous intéressent !
      Nous pourrons alors informer notre dictionnaire avec le genre feminine et les nombres singular et plural.
      La difficulté de détail est que nous ne lirons les formes fléchies qu'après avoir lu le lemme et le genre...
      il faudra donc lire soigneusement.
      En pratique, on empilera les informations à toutes fins utiles, et on les utilisera le cas échéant.

      Informations supplémentaires sur Morphalou :
    2. Réalisation en SAX

      Conformément aux indications du cours, on répartit le travail en deux classes : Lecteur et Grammairien.
      Grammairien est la sous-classe annoncée de org.xml.sax.helpers.DefaultHandler, et
      Lecteur effectue les 4 opérations de la phase 3.
      Les détails sont dans le code !