Installation et fonctionnement de Constraint Grammar
La partie installation d'Apertium et des paires de langues décrite ici se réfère à la distribution Ubuntu. Pour d'autres distributions Linux ou d'autres systèmes d'exploitation, voir la page d'installation générale.
Téléchargement
- Apertium
Comment télécharger Apertium pour Ubuntu. D'abord ouvrez votre terminal et copiez/collez
sudo apt-get install subversion build-essential g++ pkg-config libxml2 \ libxml2-dev libxml2-utils xsltproc flex automake autoconf libtool libpcre3-dev
Le terminal vous demandera alors votre mot de passe comme ceci :
[sudo] password for user
tapez le et appuyez sur la touche entrée.
Si vous avez déjà les pré requis, vous aurez des messages du genre X upgraded, X newly installed, X to remove and X not upgraded. Si vous ne les avez pas, vous devez attendre jusqu'à ce que le terminal affiche user@ubuntu:~$. Ça signifie que le processus est prêt et le terminal vous attend pour la prochaine étape, qui est de copier/coller ce code :
svn co http://apertium.svn.sourceforge.net/svnroot/apertium/trunk apertium
Cela chargera Apertium depuis SVN. Le processus prendra quelques minutes. Lorsque le téléchargement se termine c'est prêt pour installer apertium.
- Constraint grammar
Pour utiliser CG on a besoin de lttoolbox (on l'a), apertium (on l'a aussi) et ICU (on doit l'installer maintenant).
Comment installer ICU pour Ubuntu. Ouvrez votre terminal et copiez/collez ce code :
apt-get install libicu-dev
Maintenant on peut installer apertium, lttoolbox et CG.
Installation
- Apertium
Avant d'installer apertium on doit installer lttoolbox (qui a été téléchargé en même temps qu'apertium). Pour le faire vous devez copier/coller ce code :
cd apertium
cd lttoolbox/
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./autogen.sh
make
sudo make install
sudo ldconfig
Le terminal vous demandera de nouveau votre mot de passe [sudo] password for user: Après l'avoir tapé appuyez sur la touche entrée.
Attendez de voir sur votre terminal user@ubuntu:~/apertium/lttoolbox$ ensuite copiez/collez ce code :
cd ..
cd apertium/
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./autogen.sh
make
sudo make install
sudo ldconfig
Cela commencera l'installation d'apertium. Vous devez attendre quelques minutes. Quand vous voyez :
vasil@ubuntu:~/apertium/apertium$ sudo ldconfig
vasil@ubuntu:~/apertium/apertium$
le processus est prêt.
- Constraint grammar
Comment installer CG. Ouvrir le terminal et copiez/collez ce code :
$ svn co --username anonymous --password anonymous http://beta.visl.sdu.dk/svn/visl/tools/vislcg3/trunk vislcg3
$ cd vislcg3
$ sh autogen.sh --prefix=<prefix>
$ make
$ make install
Cela vous demandera votre mot de passe [sudo] password for user: . Après l'avoir tapé appuyez sur la touche entrée.
On est prêt.
Utilisation
Pour l'exemple qui suit, on utilise la paire de langue apertium-es-ca, mais les principes devraient être applicables pour chaque paire de langue. D'abord, il faut compiler cette paire. Allez dans le répertoire d'où vous avez extrait apertium depuis SVN, puis
cd apertium/apertium-es-ca sh autogen.sh make
Supposons que ce qu'on a installé fonctionne. D'abord copiez/collez ce code :
echo "vino a la playa" | lt-proc es-ca.automorf.bin
Ça devrait vous donner :
^vino/vino<n><m><sg>/venir<vblex><ifi><p3><sg>$ ^a/a<pr>$ ^la/el<det><def><f><sg>/lo<prn><pro><p3><f><sg>$ ^playa/playa<n><f><sg>$
Ici on a des ambiguïtés, une entre un nom et un verbe et l'autre entre un déterminant et un pronom. On peut écrire quelques règles qui peuvent imposer une catégorisation entre deux ambiguïtés. D'abord on définit nos catégories, ça peut être des balises, des formes de mots ou des lemmes. Ça peut aider de penser à elles comme des "étiquettes brutes", qui peuvent impliquer un ensemble de balises ou lemmes. Donc, créez un fichier grammar.txt, et ajoutez le texte qui suit :
DELIMITERS = "<$.>" ; LIST NOUN = n; LIST VERB = vblex; LIST DET = det; LIST PRN = prn; LIST PREP = pr; SECTION
Ainsi la première règle est states(?) "Quand l'unité lexicale courante peut être un pronom ou un déterminant, et est suivie à droite d'une unité lexicale qui peut être un nom, choisir le déterminant". On doit ajouter cette règle au fichier, et compiler en utilisant cg-comp :
règle :
# 1 SELECT DET IF (0 DET) (0 PRN) (1 NOUN) ;
compiler avec :
$ ./cg-comp grammar.txt grammar.bin Sections: 1, Rules: 1, Sets: 6, Tags: 7
Pour essayer ce qu'on a fait, copiez/collez ce code :
$ echo "vino a la playa" | lt-proc es-ca.automorf.bin | cg-proc grammar.bin ^vino/vino<n><m><sg>/venir<vblex><ifi><p3><sg>$ ^a/a<pr>$ ^la/el<det><def><f><sg>$ ^playa/playa<n><f><sg>$
La deuxième règle est states(?) "Quand l'unité lexicale courante peut être un nom ou un verbe, si les deux unités qui suivent à droite sont une préposition et un déterminant, enlever le nom". Maintenant On doit ajouter cette règle :
règle :
# 2 REMOVE NOUN IF (0 NOUN) (0 VERB) (1 PREP) (2 DET) ;
recompiler la grammaire et tester :
$ echo "vino a la playa" | lt-proc es-ca.automorf.bin | cg-proc grammar.bin ^vino/venir<vblex><ifi><p3><sg>$ ^a/a<pr>$ ^la/el<det><def><f><sg>$ ^playa/playa<n><f><sg>$
La troisième règle states(?) "Enlever l'interjection si le mot précédent est un verbe modal."