====== Stemmer ====== Un stemmer es un otís de morfologia lingüistica o de ''IR (//information retrieval//)'' que permet de demesir un mot a quicòm pròche de sa raiça. Per exemple [oc]soncament -> sonca, [oc]braces -> brac e non pas braç !\\ Per trapar la raiça d'un mot, una besonha mai a propaus es lo lematizaire o lematizador.\\ La pròba de concèpte que seguís mòstra l'utilizacion d'una familha de //stemmers// per un dezenat de lengas. Dempuèi las annadas 80 del segle passat, los trabalhs del Dr Porter son venguts cavilha obrieira de l' ''IR''. ===== Interést per nòstre trabalh universitari ===== La basa de donadas textualas causida es SolR basada sus Lucene. Escricha en Java e fòrt modulara, ela balha la possibilitat d'extension amb de librarias java jos la forma de .JAR que s'apondon aisidament a l'ensemb.\\ L'idèa es de margar un otís de //stemming// especialament desenhat per l'occitan. Partem pas d'enlòc que i a ja de stemmers qu'existisson per lo basc e lo catalan. Solide que compte tengut de la similaritat dels idiòms, l'experiéncia catalana serà apreciada.\\ Pel moment i a de problèmas de compatilitat entre lo projècte ''snowballstem'' (qu'es mai avançat) amb la version utilizada dins SolR. Abans de passer bel temps dins aquò, per s'assegurar lo melhor es de far virar la pròba de concèpte dins lo site [[http://conjoc.macarel.net/stemming?sentence=understanding&language=english|conjoc]]. ==== Snowballstem ==== Lo Dr Porter fargèt una grammatica unica per engabiar la reglas de cesura de mot basadas sus una tiera de sufixes. Ansin cada lenga se pòt bastir sas reglas que contribuissan a definir lor lenga. La sintaxi es la meteissa per caduna e los fichièrs sorças son sul site Github de [[https://github.com/snowballstem|snowballstem]].\\ L'explicacion de la gramatica es vesidòira çai-i [[http://snowballstem.org/|Snowballstem]].\\ La beutat de l'otís es que produtz lo còde en mai d'un lengatge de programmacion (C/C++, Java, Jsx, Python, Go, Rust). Pel moment lo mai simple es de compilar totes los //stemmers// puèi de far una pagina d'ensaj en Python per comparar l'algoritme occitan e lo catalan. ==== La construccion de l'otís ==== Abans d'escriure lo fichièr de reglas, cal al mens bastir lo compilador ''snowball'' qu'es escrich en 'C' e que cal compilar el meteis. Per z-o far car un ordinador que vira una distribucion GNU/Linux, una machina Unix amb la cadena d'otís o encara una machina Windows dotada de l'environament Cygwin amb lo compilador.\\ De mon costat una distro Debian a fach l'afar. dc@teslo:~/w/$ git clone https://github.com/snowballstem/snowball.git # renomar lo dorsièr davalat amb quicòm de mai simple coma snowball ... # agachar se i a un fichièr GNUmakefile # lançar la bastison # dc@teslo:~/w/snowball$ make ... Dins lo dorsièr algorithms/occitan se tròban los fichièrs amb lor gramatica. Crear un dorsièr per l'occitan puèi i botar lo fichièr de reglas. : Per compilar en Python, lo fichièr de reglas en un //stemmer// per lo catalan e per l'occitan. ./snowball algorithms/catalan/stem_ISO_8859_1.sbl -parentclassname BaseStemmer -python -o python/snowballstemmer/catalan_stemmer -n CatalanStemmer ./snowball algorithms/occitan/stem_ISO_8859_1.sbl -parentclassname BaseStemmer -python -o python/snowballstemmer/occitan_stemmer -n OccitanStemmer ; primièr argument : ''algorithms/catalan/stem_ISO_8859_1.sbl'' es lo fichièr de reglas .sbl. ; -python o -p : lo còde generat es en Python. ; .sbl : per convencion es l'extension d'un fichièr de reglas per una lenga e un encodatge (opcional). ; -parentclassname : ''BaseStemmer'' lo nom de la classa parenta de CatalanStemmer. ; -o : ''python/snowballstemmer/occitan_stemmer'' nom del fichièr de sortida, l'extension es botada automaticament a **.py**. ; -n : ''CatalanStemmer'' es lo nom de la classa dins lo fichièr. ==== Los fichiérs de reglas ==== {{indexmenu>:user:domenge:stemmer#5}}