###########################################################################
# FLEMM-v3.1 -- French Lemmatizer : Lemmatisation du franais  partir de # 
# corpus tiquets - Version 3.1				          #
# Copyright (C) 2004 (NAMER Fiammetta)					  #
###########################################################################



FLEMMv3.1 est un ensemble de modules Perl5 qui effectue l'analyse
flexionnelle de formes flchies de textes en franais qui ont au prallable t
tiquets, au moyen de l'un des deux catgorisateurs : Brill ou
TreeTagger. C'est un petit programme (60kb au format zipp, 
l'exclusion des programmes et corpus test), principalement bas sur
l'usage de rgles (un lexique de 3000 mots seulement est utilis pour
prendre en compte les exceptions). Il fonctionne sur PC ou station de
travail, sous Unix, Linux ou Windows9x/NT/XP.

Les objets rsultat renvoys par Flemm sont susceptibles d'tre
affichs en tant que structures XML.


	 - Pour tester Flemmv3.1
	 - Changements par rapport  la version prcdente
	 - Format d'entre
	 - Description
	 - Exemples et programmes de test
	 - Autres fonctionnalits
	 - Contenu de la distribution

=====================
Pour tester Flemmv3.1
=====================

1) S'assurer que l'adresse du rpertoire d'installation de Flemmv3.1
est ajoute  la variable d'environnement PER5LIB, e.g.:

   export PERL5LIB=~/Flemmv31

2) Excuter :

   perl flemm.pl --entree ~/Flemmv31/tests/agatha.input --log --logname test_bll_1 --progress --format normal --tagger brill
   perl flemm.pl --entree ~/Flemmv31/tests/test_tt_1.input --sortie ~/Flemmv31/tests/test_tt_1.xml --format xml --tagger treetagger




===============================================
Changements par rapport  la version prcdente
===============================================

- mise  jour par rapport au nouveau jeu d'tiquettes de TreeTagger
  (3.1)
- rsultats conus sous forme d'APIs en Perl
- modules entirement documents (voir fonction perldoc)
- traits flexionnels formats selon les recommandations de Multext
- les deux modes d'affichage possibles des rsultats sont le mode
linaire, et le format XML.


Voir dtails ci-dessous

===============
Format d'entre
===============

Il faut fournir  Flemm en entre une forme flchie munie d'une
catgorie grammaticale. A ce jour, les deux seuls tiqueteurs accepts
par Flemm sont Brill, entran pour le franais 
(http://www.atilf.fr/WinBrill)
et Treetagger
(http://www.ims.uni-stuttgart.de/projekte/corplex/TreeTagger/DecisionTreeTagger.html). 


===========
Description
===========

Flemm calcule le lemme de chaque mot flchie (en fonction de
l'tiquette) et fournit galement les traits flexionnels principaux :

- genre et nombre pour les adjectifs, dterminants, participes
- nombre pour les noms
- genre, nombre, personne et cas pour les pronoms
- nombre, personne, temps, mode and groupe de conjugaison pour les verbes

Les traits sont cods en fonction des spcifications lexicales
recommandes pour le franais par le consortium Multext
(http://www.lpl.univ-aix.fr/projects/multext), sous leur forme compacte.
En plus des traits standards, un champ a t ajout pour les verbes,
de manire  coder leur famille flexionnelle (1er, 2e ou 3e groupe).
Le tableau ci-dessous rsume les tables attribut-valeur pour les
partie du discours flchissables. Voir le site Multext pour une
information dtaille  propos de la signification des codes de
valeur, ainsi que leur correspondance.


==================================================================
Noms  | cat | type | Gend | Nb | Case | SemType
------------------------------------------------------------------
      | N   | c,p  | m,f  | s,p|  -   |  -
==================================================================
Verbes| cat | type | Mood | Tns| Pers | Nb | Gend | Clitics |Group
------------------------------------------------------------------
      | V   | m,a  |i,s,m,|p,i,|1,2,3 |s,p |m,f   | -       |1,2,3
                   |n,p   |f,s
==================================================================
Adj   | cat | type    | dgr  |gend| nb | Case
------------------------------------------------------------------
      | A   | f,o,i,s | -    |m,f |s,p | -
==================================================================
Pro   | cat | type         | pers |gend| nb | case | poss
------------------------------------------------------------------
      | P   |p,d,i,s,t,r,x |1,2,3 |m,f |s,p | n,j,o| s,p
==================================================================
Det   | Cat | Type    | Pers |gend| nb | case | poss | quant
------------------------------------------------------------------
      | D   |a,d,i,s,t| 1,2,3|m,f |s,p |  -   | s,p  |d,i
==================================================================
PrepDet| Cat| Type | Pers |gend| nb | case | poss | quant
------------------------------------------------------------------
       |Sp+D|  a   |   -  |m,f |s,p |  -   |  -   |d
==================================================================             
                    

De plus, Flemm vrifie et corrige un certain nombre d'erreurs de
segmentation ou d'tiquetage. 
Quand cela est demand par l'utilisateur, les erreurs dtectes, ainsi
que leurs corrections correspondantes sont reportes dans des fichiers spciaux.

Quel que soit le rsultat de la vrification de l'tiquetage, Flemm
renvoie l'tiquette d'origine, telle qu'elle avait t produite par l'tiqueteur.


========
Exemples
========


1) Les exemples ci-dessous produisent en sortie un rsultat linaire 
partir d'une forme d'entre tiquete par Brill:

----------------------------------------
exple.pl
----------------------------------------
use Flemm;
use Flemm::Result;
my $lemm=new Flemm("Tagger" => "brill");
while (<>) {
    chomp;
    my $res = $lemm->lemmatize($_);
    print $res->getResult."\n";
}
----------------------------------------
----------------------------------------

echo 'fabrique/VCJ:sg' | perl exple.pl   

     -->
     fabrique/VCJ:Vmip1s--1	fabriquer || fabrique/VCJ:Vmip3s--1	fabriquer || fabrique/VCJ:Vmmp2s--1	fabriquer || fabrique/VCJ:Vmsp1s--1	fabriquer || fabrique/VCJ:Vmsp3s--1	fabriquer   

2) L'exemple ci-dessous produit un rsultat formatt en XML  partir
d'un input tiquet par TreeTagger :

----------------------------------------
exple.pl
----------------------------------------
  use Flemm;
  use Flemm::Result;
  my $lemm=new Flemm( );
  print "<?xml version='1.0' encoding='ISO-8859-1'?>\n\n";
  print "<FlemmResults>\n";
  while (<>) {
    chomp;
    my $res=$lemm->lemmatize($_);
    print $res->asXML."\n";
  }
  print "</FlemmResults>\n";
----------------------------------------
----------------------------------------

echo 'gnralisent	VER:pres	gnraliser' | perl exple.pl

   -->

<FlemmResult>
      <InflectedForm>gnralisent</InflectedForm>
      <Category original-tagger='VER:pres'>VER(pres)</Category>
      <Analyses> <!-- gnralisent      VER(pres):Vmip3p--1      gnraliser || gnralisent      VER(pres):Vmsp3p--1      gnraliser -->
            <Analyse>
                  <Lemme>gnraliser</Lemme>
                  <Features>
                        <Feature name='catmultext' value='V'/>
                        <Feature name='type' value='m'/>
                        <Feature name='mood' value='i'/>
                        <Feature name='tense' value='p'/>
                        <Feature name='pers' value='3'/>
                        <Feature name='gend' value='-'/>
                        <Feature name='nb' value='p'/>
                        <Feature name='clitic' value='-'/>
                        <Feature name='vclass' value='1'/>
                  </Features>
            </Analyse>
            <Analyse>
                  <Lemme>gnraliser</Lemme>
                  <Features>
                        <Feature name='catmultext' value='V'/>
                        <Feature name='type' value='m'/>
                        <Feature name='mood' value='s'/>
                        <Feature name='tense' value='p'/>
                        <Feature name='pers' value='3'/>
                        <Feature name='gend' value='-'/>
                        <Feature name='nb' value='p'/>
                        <Feature name='clitic' value='-'/>
                        <Feature name='vclass' value='1'/>
                  </Features>
            </Analyse>
      </Analyses>

</FlemmResult>

3) Dans la distribution, plusieurs programmes de test sont fournis
avec les corpus d'entre pertinents :


Nom du Pgme  |  Etiqueteur requis| Format de sortie	| Fichiers
	     |  sur l'entre     |			|  log
==================================================================
flem_ex1.pl  |   brill		 | structures plates,   | oui
	     |			 |  1 par ligne		|
ex : 
perl flem_ex1.pl < tests/test_bll_1.input > tests/test_bll_1_1.plat
perl flem_ex1.pl < tests/agatha.bll > tests/agatha_bll_1.plat
------------------------------------------------------------------
flem_ex2.pl  |   tt		 | structures xml ,     | non
	     |			 |  1 par ligne		|
ex 
perl flem_ex2.pl < tests/test_tt_1.input > tests/test_tt_12.xml 
perl flem_ex2.pl < tests/pls.tt > tests/pls_2.xml
------------------------------------------------------------------
flem_ex3.pl  |   brill		 |structures plates,    | non
	     |			 |1 paragraphe par ligne|
ex 
perl flem_ex3.pl < tests/agatha.bll > tests/agatha_bll_3.plat
------------------------------------------------------------------
flem_ex4.pl  |   brill		 | structures   xml,    | non
	     |			 |  1 par ligne    	|
ex : 
perl flem_ex4.pl < tests/test_bll_1.input > tests/test_bll_1_4.xml
perl flem_ex4.pl < tests/agatha.bll > tests/agatha_bll_4.xml
------------------------------------------------------------------
flem_ex5.pl  |   tt		 | structures plates,   | oui
	     |			 |  1 par ligne 	|
ex 
perl flem_ex5.pl < tests/test_tt_1.input > tests/test_tt_15.plat 
perl flem_ex5.pl < tests/pls.tt > tests/pls_5.plat

4) flemm.pl est un programme de test plus complet. Il s'accompagne de
plusieurs options:


Usage: perl flemm.pl       --entree adresse_fichier_d_entree
                          [--sortie adresse_fichier_de_sortie]
                          [--log]
                          [--logname prefixe_fichiers_log]
                          [--progess]
                          [--format (normal|xml)]
                          [--tagger (brill|treetagger)]

Les arguments entre [] sont optionelles.

Quand --progress est choisi, une marque est affiche sur la sortie
standard, qui indique la progression de l'analyse.
 
Par dfaut :

- Quand --sortie n'est pas fourni, le rsultat est affich dans le
fichier adresse_fichier_d_entree.lemm

- Quand --log n'est pas mentionn, il n'y a pas de fichier log pour le
stockage de la correction des erreurs de segmentation/tiquetage
(quand il y en a). Quand --log est fourni, les noms des fichiers log
sont prfixs par adresse_fichier_d_entree, sauf si un prfixe est
fourni, comme valeur de --logname.

- Quand --tagger est omis, l'tiqueteur par dfaut est Treetagger


======================
Autres Fonctionnalits
======================

Flemm vrifie et corrige les erreurs de segmentation et tiquetage
Quand cela est demand par l'utilisateur, les erreurs dtectes, ainsi
que les corrections correspondantes, sont reportes dans des fichiers spciaux.


Exemples : 


1) Fichier log d'tiquetage
---------------------------

phytoplancton / VNCFF ==>  phytoplancton/SBC
phytoplanctivores / ADJ2PAR ==>  phytoplanctivores/ADJ

2) Fichier log de segmentation
------------------------------

,inhibiteurs  est rduit  inhibiteurs (SBC) 


==========================
Contenu de la Distribution
==========================

Les modules et sous-rpertoires suivants sont inclus dans
l'arborescence Flemmv3.1

Flemmv31:			 /Modules principaux, et programmes de test/
=========
Flemm.pm	LICENCE.txt	README.txt	flemm.pl
flem_ex1.pl	flem_ex2.pl	flem_ex3.pl	flem_ex4.pl
flem_ex5.pl


Flemmv31/Flemm:			/packages requis pour excuter Flemm.pm/
===============
Analyse.pm	Analyses.pm	Brill.pm	Exceptions.pm
Feature.pm	Features.pm	Lemmatizer.pm	Result.pm
TreeTagger.pm 

Flemmv31/Flemm/Utils:		/packages utilitaires/
=====================
List.pm

Flemmv31/tests:		         /chantillons de fichiers d'input, a xcuter
				 avec les programmes test :  test_bll_1.input et 
==========================       agatha.bll sont tiquets par Brill,
			         test_tt_1.input et pls.tt sont tiquets par
			         Treetagger/  

test_bll_1.input	test_tt_1.input
agatha.bll		pls.tt


Flemmv31/EXCEP:			/L'ensemble des listes d'exception/
===============
adjectifs_finissant_par_CCe	adjectifs_finissant_par_Ve	adjectifs_finissant_par_aOUos
adjectifs_finissant_par_an_e	adjectifs_finissant_par_ane	adjectifs_finissant_par_ere
adjectifs_finissant_par_ine	adjectifs_finissant_par_is	adjectifs_finissant_par_man_e
adjectifs_finissant_par_oOUil	adjectifs_finissant_par_ol	adjectifs_finissant_par_sOUte
adjectifs_finissant_par_sse_s	adjectifs_finissant_par_ure	adjectifs_finissant_par_us
noms_finissant_par_AEus		noms_finissant_par_Cs		noms_finissant_par_ail_x
noms_finissant_par_as		noms_finissant_par_au_x		noms_finissant_par_aux
noms_finissant_par_e_ee		noms_finissant_par_euse		noms_finissant_par_eux
noms_finissant_par_i_s		noms_finissant_par_ier_e	noms_finissant_par_os
noms_finissant_par_ou_x		noms_finissant_par_ous		noms_finissant_par_u_s
noms_finissant_par_ys		verbes_finissant_par_ERer	verbes_finissant_par_FPHer
verbes_finissant_par_ayer	verbes_finissant_par_eCer_naccent	verbes_finissant_par_eLer_aigu
verbes_finissant_par_eMer_naccent	verbes_finissant_par_eNTer_aigu	verbes_finissant_par_ePer_naccent
verbes_finissant_par_eRer_naccent	verbes_finissant_par_eSer_naccent	verbes_finissant_par_eVer_aigu
verbes_finissant_par_ier	verbes_finissant_par_igner	verbes_finissant_par_irer
verbes_finissant_par_isser	verbes_finissant_par_ller	verbes_finissant_par_tter






