AraMorph

the AraMorph site
 
   

Principes techniques de l'analyse morphologique

L'analyseur morphologique

Créons un fichier src/java/gpl/pierrick/brihaye/aramorph/test/testdocs/ktAb.txt dans lequel nous allons saisir un seul mot, كتاب.

Exécutons ensuite le code suivant :

java -cp build/ArabicAnalyzer.jar;lib/commons-collections.jar ¶
gpl.pierrick.brihaye.aramorph.AraMorph ¶
src/java/gpl/pierrick/brihaye/aramorph/test/testdocs/ktAb.txt CP1256 ¶
results.txt UTF-8 -v
	
Warning
Naturellement, l'encodage du fichier d'entrée doit être adapté à celui utilisé par votre éditeur de texte.
Warning
Les dictionnaires occupent une place non négligeable en mémoire. Vous aurez peut-être à augmenter la mémoire allouée à Java en utilisant des options du type -Xms128M -Xmx192M

Examinons le fichier de sortie results.txt qui est, lui, en UTF-8 :

Processing token : 	كتاب
Transliteration : 	ktAb
Token not yet processed.
Token has direct solutions.

SOLUTION #3
Lemma  : 	kAtib
Vocalized as : 	كُتّاب
Morphology : 
	prefix : Pref-0
	stem : N
	suffix : Suff-0
Grammatical category : 
	stem : كُتّاب	NOUN
Glossed as : 
	stem : authors/writers


SOLUTION #1
Lemma  : 	kitAb
Vocalized as : 	كِتاب
Morphology : 
	prefix : Pref-0
	stem : Ndu
	suffix : Suff-0
Grammatical category : 
	stem : كِتاب	NOUN
Glossed as : 
	stem : book


SOLUTION #2
Lemma  : 	kut~Ab
Vocalized as : 	كُتّاب
Morphology : 
	prefix : Pref-0
	stem : N
	suffix : Suff-0
Grammatical category : 
	stem : كُتّاب	NOUN
Glossed as : 
	stem : kuttab (village school)/Quran school

	

Le fonctionnement de l'analyseur morphologique devient dès lors plus évident :

MessageSignification
Processing tokenle mot actuellement traité
Transliterationla translitération du mot dans le système de translitération de Buckwalter ; uniquement avec le paramètre -v et si aucun encodage de sortie n'est spécifié
Token not yet processed.indique que le mot n'a pas encore été analysé et qu'il n'est donc pas dans le cache d'AraMorph ; uniquement avec le paramètre -v
Token has direct solutions. indique que le mot est analysable dans son orthographe actuelle ; uniquement avec le paramètre -v.
En effet, AraMorph est capable de considérer des orthographes alternatives comme un ـه final en lieu et place de ـة ou un ـى final en lieu et place de ـي...
SOLUTION indique chacune des solutions pour le mot. L'ordre d'affichage n'est pas signifiant.
Lemmaindique l'identifant du lemme de la solution dans le dictionnaire des radicaux.
Vocalized as :indique la vocalisation de la solution.
Morphology :indique la catégorie morphologique du préfixe, du radical et du suffixe de la solution.
Grammatical category :indique la catégorie grammaticale du préfixe, du radical et du suffixe de la solution.
Glossed as :indique une ou plusieurs traductions anglaises pour le préfixe, le radical et le suffixe de la solution.
Note
Les explications sur les catégories morphologiques sont disponibles dans cette rubrique et celles concernant les catégories grammaticales dans cette rubrique.

Comment AraMorph parvient-il à proposer des solutions acceptables ?

Avant toute chose, il faut savoir que AraMorph, comme son ancêtre en Perl, travaille sur une translitération du mot arabe. Cette translitération utilise naturellement le système de translitération de Buckwalter. Ainsi, كتاب est translitéré en ktAb avant son analyse morphologique.

Fixme (PB)
Cette opération ne devrait pas être nécessaire car Java travaille nativement en Unicode. L'optimisation du code, qui permettrait de se passer de l'étape de translitération et donc de gagner de la performance, reste à réaliser.

Ensuite, AraMorph utilise un algorithme de force brute pour décomposer le mot en une succession de préfixe, radical et préfixe possibles :

préfixeradicalsuffixe
ktAbØØ
ktAbØ
ktAØb
ktAbØ
ktAb
ktØAb
ktAbØ
ktAb
ktAb
kØtAb
ØktAbØ
ØktAb
ØktAb
ØktAb
ØØktAb

Ensuite, AraMorph vérifie la présence de chacun des éléments dans trois dictionnaires :

  • le préfixe, dans gpl/pierrick/brihaye/aramorph/dictionaries/dictPrefixes
  • le radical, dans gpl/pierrick/brihaye/aramorph/dictionaries/dictStems
  • le suffixe, dans gpl/pierrick/brihaye/aramorph/dictionaries/dictSuffixes

En cas de succès, AraMorph récupère l'information morphologique de chacun des éléments.

Warning
Les préfixes ou les suffixes Ø sont morphologiquement signifiants.

Le cas échéant, AraMorph vérifie ensuite si les morphologies de chacun des éléments sont compatibles entre elles en examinant trois tables de correspondances licites :

  • entre le préfixe et le radical, dans gpl/pierrick/brihaye/aramorph/dictionaries/tableAB
  • entre le préfixe et le suffixe, dans gpl/pierrick/brihaye/aramorph/dictionaries/tableAC
  • entre le radical et le suffixe, dans gpl/pierrick/brihaye/aramorph/dictionaries/tableBC

Un mot pour lequel :

  1. préfixe, radical et suffixe disposent d'une entrée de dictionnaire,
  2. préfixe, radical et suffixe sont morphologiquement compatibles entre eux,

... est une solution. Pour كتاب, elle sont au nombre de trois ainsi qu'on le voit plus haut.

Warning
Certaines informations présentes dans le dictionnaire des radicaux sont en fait des informations relatives à des préfixes ou à des suffixes. AraMorph tente, lorsqu'il retourne une solution, de ventiler ces informations vers les préfixes ou les suffixes. Il est donc possible d'avoir plusieurs préfixes et/ou suffixes pour un seul mot.
En cas de problèmes d'interprétation, peu nombreux au demeurant, des messages sont émis sur la console.