Utilisation dans Lucene |
- L'analyseur arabe pour Lucene
- Le glosseur anglais pour Lucene
- Quelles sont les solutions retenues par les analyseurs et les glosseurs ?
L'analyseur arabe pour Lucene
Exécutons le code suivant :
java -cp build/ArabicAnalyzer.jar;lib/commons-collections.jar;lib/lucene-1.4.3.jar ¶ gpl.pierrick.brihaye.aramorph.test.TestArabicAnalyzer ¶ src/java/gpl/pierrick/brihaye/aramorph/test/testdocs/ktAb.txt CP1256 results.txt UTF-8
Examinons le fichier de sortie results.txt :
كِتاب NOUN [0-4] 1 كُتّاب NOUN [0-4] 0
Le principe est donc le suivant : chaque radical pertinent retourne un token au sens où l'entend Lucene. Ici apparaissent le texte du token (termText), sa catégorie grammaticale, sa position dans le flux d'entrée (startOffset et endOffset) et sa position relative par rapport au token précédent (positionIncrement).
Il faut en effet attirer l'attention sur le fait qu'un même mot arabe, parce qu'il est généralement réduit à son squelette consonnantique, donne souvent lieu à plusieurs solutions.
Essayons un autre exemple avec un fichier tktbn.txt contenant le mot تكتبن :
java -cp build/ArabicAnalyzer.jar;lib/commons-collections.jar;lib/lucene-1.4.3.jar ¶ gpl.pierrick.brihaye.aramorph.AraMorph ¶ src/java/gpl/pierrick/brihaye/aramorph/test/testdocs/tktbn.txt CP1256 results.txt UTF-8
Examinons le fichier de sortie results.txt :
Processing token : ????? SOLUTION #3 Lemma : >akotab Vocalized as : tukotibna Morphology : prefix : IVPref-Antn-tu stem : IV_yu suffix : IVSuff-n Grammatical category : prefix : tu IV2FP stem : kotib VERB_IMPERFECT suffix : na IVSUFF_SUBJ:FP Glossed as : prefix : you [fem.pl.] stem : dictate/make write suffix : [fem.pl.] SOLUTION #4 Lemma : >akotab Vocalized as : tukotabna Morphology : prefix : IVPref-Antn-tu stem : IV_Pass_yu suffix : IVSuff-n Grammatical category : prefix : tu IV2FP stem : kotab VERB_IMPERFECT suffix : na IVSUFF_SUBJ:FP Glossed as : prefix : you [fem.pl.] stem : be dictated suffix : [fem.pl.] SOLUTION #2 Lemma : katab Vocalized as : tukotabna Morphology : prefix : IVPref-Antn-tu stem : IV_Pass_yu suffix : IVSuff-n Grammatical category : prefix : tu IV2FP stem : kotab VERB_IMPERFECT suffix : na IVSUFF_SUBJ:FP Glossed as : prefix : you [fem.pl.] stem : be written/be fated/be destined suffix : [fem.pl.] SOLUTION #1 Lemma : katab Vocalized as : takotubna Morphology : prefix : IVPref-Antn-ta stem : IV suffix : IVSuff-n Grammatical category : prefix : ta IV2FP stem : kotub VERB_IMPERFECT suffix : na IVSUFF_SUBJ:FP Glossed as : prefix : you [fem.pl.] stem : write suffix : [fem.pl.]
Ici, le découpage en préfixe(s), radical et suffixe(s) devient très apparent.
Pour bien comprendre que l'analyse ne retourne que le radical :
java -cp build/ArabicAnalyzer.jar;lib/commons-collections.jar;lib/lucene-1.4.3.jar ¶ gpl.pierrick.brihaye.aramorph.test.TestArabicAnalyzer ¶ src/java/gpl/pierrick/brihaye/aramorph/test/testdocs/tktbn.txt results.txt
Examinons le fichier de sortie results.txt :
kotub VERB_IMPERFECT [0-5] 1 kotab VERB_IMPERFECT [0-5] 0 kotib VERB_IMPERFECT [0-5] 0
On constate que l'on obtient bien les radicaux des différentes formes que peut recouvrir la racine كتب pour un verbe à l'inaccompli. Ainsi, selon ce système, l'analyse d'un verbe à la deuxième personne du féminin pluriel de l'inaccompli est la même que celle de toute autre personne au même temps.
Le glosseur anglais pour Lucene
Exécutons le code suivant :
java -cp build/ArabicAnalyzer.jar;lib/commons-collections.jar;lib/lucene-1.4.3.jar ¶ gpl.pierrick.brihaye.aramorph.test.TestArabicGlosser ¶ src/java/gpl/pierrick/brihaye/aramorph/test/testdocs/ktAb.txt CP1256 results.txt UTF-8
Examinons le fichier de sortie results.txt :
kuttab NOUN [0-4] 1 village NOUN [0-4] 0 school NOUN [0-4] 0 quran NOUN [0-4] 0 school NOUN [0-4] 0 authors NOUN [0-4] 0 writers NOUN [0-4] 0 book NOUN [0-4] 0
Ici, le principe est strictement le même si ce n'est que les glosses sont elles-mêmes tokenisées par le WhitespaceFilter avant d'intégrer la chaîne de traitement standard de Lucene (StandardFilter, LowerCaseFilter et StopFilter).
Quelles sont les solutions retenues par les analyseurs et les glosseurs ?
Comme on peut le voir, les analyseurs renvoient des tokens dont le type est la catégorie grammaticale du radical.
Cependant, un analyseur considèrera certains types comme attribuables à des mots vides et ne renverra aucun token lorsqu'il les rencontrera ; il les filtrera. La liste des catégories grammaticales considérées comme non signifiantes est décrite ci-après :
- DEM_PRON_F
- DEM_PRON_FS
- DEM_PRON_FD
- DEM_PRON_MD
- DEM_PRON_MP
- DEM_PRON_MS
- DET
- INTERROG
- NO_STEM
- NUMERIC_COMMA
- PART
- PRON_1P
- PRON_1S
- PRON_2D
- PRON_2FP
- PRON_2FS
- PRON_2MP
- PRON_2MS
- PRON_3D
- PRON_3FP
- PRON_3FS
- PRON_3MP
- PRON_3MS
- REL_PRON
A contrario, voici la liste des catégories grammaticales considérées comme signifiantes :
- ABBREV
- ADJ
- ADV
- NOUN
- NOUN_PROP
- VERB_IMPERATIVE
- VERB_IMPERFECT
- VERB_PERFECT
-
NO_RESULT
WarningRésultat conservé dans la mesure où l'expérience semble montrer qu'il y a de fortes chances qu'il soit un mot étranger absent du dictionnaire. Il est naturellement tout à fait possible d'écrire un filtre Lucene spécifique pour affiner l'analyse de ce type de token.