User:TJones (WMF)/Notes/Serbian Stemmer Analysis/Stemmer No. 4

December 2017 — See TJones_(WMF)/Notes for other projects. See also T178926.

Intro
After testing three "Serbian" stemmers from the collection SCStemmers, I got feedback from the developer that the "Croatian" stemmer, with an appropriate Cyrillic-to-Latin filter in front of it, is probably better. It also doesn't have the "lost token" problem the other three stemmers did. I decided to create a separate page for this analysis, since the previous page was already very dense, covering three other stemmers. Please see that page, though, for more info on the stemmers and the data used in this analysis (briefly: 10K article bodies each from Serbian Wikipedia and Wiktionary).

Lost Tokens
One of the big problems with the first three stemmers was that some tokens were stemmed to nothing. The two causes of that were dropping non-Serbian characters (which has been fixed) and removing a "suffix" when that's all there is, leaving an empty "stem". Stemmer #4 has neither of those problems and there are no lost tokens!

Potential Problem Groups
There are no obvious potential problem groups—that is, groups that don't have any common letters at the beginning or ending of every word. Potential problem groups are only potentially problems because the vagaries of language are such that some related words in languages that normally use affixes have no common beginning or ending letters, such as English good/better/best or be/am/is/was/etc.

There were some potential problem groups before that turned out to be fine, so stemmer #4 is not grouping those together. However, as with English be, these are often very common words with low search value, so it's not a big red flag.

Big Groups
Really large groups are another potential problem area because there shouldn't normally be 100+ words that all have the same stem. The largest stemming groups for stemmer #4 aren't that big (the largest was 38 words), and are much smaller once you take transliteration into account.

For each of the examples below, we have the stem (e.g., ran) the number of unique words after transliteration and the total number of words (e.g., 22/38), the list of deduped words ("deduped (C2L)" where "C2L" means "Cyrillic to Latin"), and the full list of words in both the Cyrillic and Latin alphabets.

These all look plausible, in that the stems resemble the words in the lists, but I'm a little concerned/curious about the shortest stems (im, on, ov).
 * ran: 22/38
 * deduped (C2L): ran, rana, rane, rani, ranih, ranije, ranijeg, ranijem, raniji, ranijih, ranijim, ranim, rano, ranog, ranom, ranu, ranama, ranimo, ranija, ranijoj, raniju, ranoj
 * full list:ran, rana, rane, rani, ranih, ranije, ranijeg, ranijem, raniji, ranijih, ranijim, ranim, rano, ranog, ranom, ranu, ран, рана, ранама, ране, рани, раним, ранимо, раних, ранија, раније, ранијег, ранијем, ранији, ранијим, ранијих, ранијој, ранију, рано, раног, раном, раној, рану


 * im: 20/36
 * deduped (C2L): im, ima, imaj, imaju, imajući, imala, imale, imali, imalo, imam, imamo, imao, imaš, ime, imo, imama, imahu, imaše, imajte, imu
 * full list:im, ima, imaj, imaju, imajući, imala, imale, imali, imalo, imam, imamo, imao, imaš, ime, imo, imао, им, имa, има, имала, имале, имали, имало, имам, имама, имамо, имао, имаху, имаш, имаше, имај, имајте, имају, имајући, име, иму


 * kasn: 20/34
 * deduped (C2L): kasna, kasni, kasnih, kasnija, kasnije, kasnijeg, kasniji, kasnijih, kasnijim, kasnijoj, kasnim, kasno, kasnog, kasnu, kasne, kasnijega, kasnijem, kasniju, kasnom, kasnoj
 * full list:kasna, kasni, kasnih, kasnija, kasnije, kasnijeg, kasniji, kasnijih, kasnijim, kasnijoj, kasnim, kasno, kasnog, kasnu, касна, касне, касни, касним, касних, каснија, касније, каснијег, каснијега, каснијем, каснији, каснијим, каснијих, каснијој, каснију, касно, касног, касном, касној, касну


 * značajn: 18/33
 * deduped (C2L): značajan, značajna, značajne, značajni, značajnih, značajnija, značajnije, značajnijeg, značajniji, značajnim, značajno, značajnog, značajnoj, značajnu, značajnijim, značajnijih, značajniju, značajnom
 * full list:značajan, značajna, značajne, značajni, značajnih, značajnija, značajnije, značajnijeg, značajniji, značajnim, značajno, značajnog, značajnoj, značajnu, znаčајne, значајан, значајна, значајне, значајни, значајним, значајних, значајнија, значајније, значајнијег, значајнији, значајнијим, значајнијих, значајнију, значајно, значајног, значајном, значајној, значајну


 * jednostavn: 17/28
 * deduped (C2L): jednostavan, jednostavna, jednostavni, jednostavnih, jednostavnije, jednostavniji, jednostavnijim, jednostavnim, jednostavno, jednostavnom, jednostavnu, jednostavne, jednostavnija, jednostavnijih, jednostavniju, jednostavnog, jednostavnoj
 * full list:jednostavan, jednostavna, jednostavni, jednostavnih, jednostavnije, jednostavniji, jednostavnijim, jednostavnim, jednostavno, jednostavnom, jednostavnu, једноставан, једноставна, једноставне, једноставни, једноставним, једноставних, једноставнија, једноставније, једноставнији, једноставнијим, једноставнијих, једноставнију, једноставно, једноставног, једноставном, једноставној, једноставну


 * važn: 17/28
 * deduped (C2L): važna, važne, važni, važnih, važnijih, važnijim, važnim, važno, važnog, važnom, važnu, važnija, važnije, važnijega, važniji, važniju, važnoj
 * full list:važna, važne, važni, važnih, važnijih, važnijim, važnim, važno, važnog, važnom, važnu, важна, важне, важни, важним, важних, важнија, важније, важнијега, важнији, важнијим, важнијих, важнију, важно, важног, важном, важној, важну


 * nek: 15/30
 * deduped (C2L): nek, neka, neke, neki, nekih, nekim, nekima, neko, nekog, nekoga, nekoj, nekom, nekome, neku, nekija
 * full list:nek, neka, neke, neki, nekih, nekim, nekima, neko, nekog, nekoga, nekoj, nekom, nekome, neku, нек, некe, нека, неке, неки, неким, некима, неких, некија, неко, неког, некога, неком, некоме, некој, неку


 * on: 14/29
 * deduped (C2L): on, ona, one, oni, onih, onim, onima, ono, onog, onoga, onoj, onom, onome, onu
 * full list:on, ona, one, oni, onih, onim, onima, ono, onog, onoga, onoj, onom, onome, onu, oн, он, она, оне, они, оним, онима, оних, оно, оног, онога, оном, ономе, оној, ону


 * ov: 13/27
 * deduped (C2L): ov, ova, ove, ovi, ovih, ovim, ovima, ovo, ovog, ovoga, ovoj, ovom, ovu
 * full list:ov, ova, ove, ovi, ovih, ovim, ovima, ovo, ovog, ovoga, ovoj, ovom, ovu, oв, ов, ова, ове, ови, овим, овима, ових, ово, овог, овога, овом, овој, ову


 * drug: 13/26
 * deduped (C2L): drug, druga, druge, drugi, drugih, drugim, drugima, drugo, drugog, drugoga, drugoj, drugom, drugu
 * full list:drug, druga, druge, drugi, drugih, drugim, drugima, drugo, drugog, drugoga, drugoj, drugom, drugu, друг, друга, друге, други, другим, другима, других, друго, другог, другога, другом, другој, другу


 * svak: 13/26
 * deduped (C2L): svaka, svake, svaki, svakih, svakim, svako, svakog, svakoga, svakoj, svakom, svaku, svak, svakome
 * full list:svaka, svake, svaki, svakih, svakim, svako, svakog, svakoga, svakoj, svakom, svaku, svакi, svакu, свак, свака, сваке, сваки, сваким, сваких, свако, сваког, свакога, сваком, свакоме, свакој, сваку

Random Groups
Below are 50 random groups. Often, the "deduped" list is either the same as the full list of just a C2L transliteration of the full list. That's to be expected with the random groups, as they often contain less common words that don't occur all that often, so there aren't many variants of each word in the corpus. The list is mostly alphabetical, though the first four items include accents. See below for more on accents.
 * bíl: 4/4
 * deduped (C2L): bíla, bíle, bíli, bílo
 * full list:би́ла, би́ле, би́ли, би́ло


 * onàk: 3/3
 * deduped (C2L): onàke, onàko, onàkog
 * full list:она̀ке, она̀ко, она̀ког


 * štȉkovan: 2/2
 * deduped (C2L): štȉkovana, štȉkovano
 * full list:шти̏кована, шти̏ковано


 * trȅb: 2/2
 * deduped (C2L): trȅb, trȅba
 * full list:тре̏б, тре̏ба


 * alv: 2/2
 * deduped (C2L): alvu, alva
 * full list:alvu, алва


 * astronomij: 4/6
 * deduped (C2L): astronomije, astronomija, astronomiji, astronomiju
 * full list:astronomije, aстрономије, астрономија, астрономије, астрономији, астрономију


 * besmislic: 2/3
 * deduped (C2L): besmislica, besmislice
 * full list:besmislica, besmislice, бесмислица


 * bistric: 4/5
 * deduped (C2L): bistrica, bistrice, bistrici, bistricu
 * full list:bistrica, бистрица, бистрице, бистрици, бистрицу


 * boston: 3/4
 * deduped (C2L): boston, bostona, bostonu
 * full list:boston, бостон, бостона, бостону


 * brblja: 2/2
 * deduped (C2L): brbljati, brbljalo
 * full list:brbljati, брбљало


 * bušenj: 3/5
 * deduped (C2L): bušenja, bušenje, bušenju
 * full list:bušenja, bušenje, бушења, бушење, бушењу


 * dankerk: 2/2
 * deduped (C2L): dankerk, dankerka
 * full list:данкерк, данкерка


 * dinosaur: 3/4
 * deduped (C2L): dinosaur, dinosaura, dinosauri
 * full list:dinosaur, диносаур, диносаура, диносаури


 * dokumentuj: 2/2
 * deduped (C2L): dokumentuje, dokumentuju
 * full list:документује, документују


 * dvoslivn: 2/2
 * deduped (C2L): dvoslivnim, dvoslivnog
 * full list:двосливним, двосливног


 * foton: 6/7
 * deduped (C2L): fotona, foton, fotone, fotoni, fotonima, fotonu
 * full list:fotona, фотон, фотона, фотоне, фотони, фотонима, фотону


 * honorijev: 3/3
 * deduped (C2L): honorijevom, honorijevoj, honorijevu
 * full list:хоноријевом, хоноријевој, хоноријеву


 * inkorporiran: 3/3
 * deduped (C2L): inkorporirana, inkorporirane, inkorporirano
 * full list:inkorporirana, инкорпориране, инкорпорирано


 * iščezn: 2/3
 * deduped (C2L): iščeznuti, iščeznu
 * full list:iščeznuti, ишчезну, ишчезнути


 * jančik: 2/2
 * deduped (C2L): jančik, jančika
 * full list:jančik, jančika


 * lopatic: 3/6
 * deduped (C2L): lopatica, lopaticama, lopatice
 * full list:lopatica, lopaticama, lopatice, лопатица, лопатицама, лопатице


 * lopov: 5/6
 * deduped (C2L): lopov, lopova, lopove, lopovi, lopovima
 * full list:lopov, лопов, лопова, лопове, лопови, лоповима


 * lot: 3/3
 * deduped (C2L): lot, loti, loto
 * full list:лот, лоти, лото


 * membransk: 5/6
 * deduped (C2L): membranski, membranskim, membranskog, membransku, membranskih
 * full list:membranski, membranskim, membranskog, membransku, мембрански, мембранских


 * mesn: 10/11
 * deduped (C2L): mesni, mesna, mesne, mesnim, mesnih, mesno, mesnog, mesnom, mesnoj, mesnu
 * full list:mesni, месна, месне, месни, месним, месних, месно, месног, месном, месној, месну


 * mór: 2/2
 * deduped (C2L): mór, móro
 * full list:mór, móro


 * nadgled: 2/3
 * deduped (C2L): nadgled, nadgleda
 * full list:nadgled, nadgleda, надгледа


 * nadmetanj: 4/5
 * deduped (C2L): nadmetanju, nadmetanja, nadmetanje, nadmetanjima
 * full list:nadmetanju, надметања, надметање, надметањима, надметању


 * nagomilavanj: 3/5
 * deduped (C2L): nagomilavanja, nagomilavanje, nagomilavanjem
 * full list:nagomilavanja, nagomilavanje, нагомилавања, нагомилавање, нагомилавањем


 * narodi: 2/2
 * deduped (C2L): narodil, naroditi
 * full list:narodil, naroditi


 * nezavisnost: 3/5
 * deduped (C2L): nezavisnost, nezavisnosti, nezavisnošću
 * full list:nezavisnost, nezavisnosti, независност, независности, независношћу


 * otadžbinsk: 4/4
 * deduped (C2L): otadžbinski, otadžbinsko, otadžbinskog, otadžbinskom
 * full list:отаџбински, отаџбинско, отаџбинског, отаџбинском


 * otečen: 3/3
 * deduped (C2L): otečen, otečene, otečeni
 * full list:отечен, отечене, отечени


 * petl: 2/3
 * deduped (C2L): petlu, petla
 * full list:petlu, петла, петлу


 * proganjan: 2/2
 * deduped (C2L): proganjan, proganjana
 * full list:прогањан, прогањана


 * proporcionaln: 7/10
 * deduped (C2L): proporcionalan, proporcionalna, proporcionalno, proporcionalni, proporcionalnih, proporcionalnog, proporcionalnom
 * full list:proporcionalan, proporcionalna, proporcionalno, пропорционалан, пропорционална, пропорционални, пропорционалних, пропорционално, пропорционалног, пропорционалном


 * računarstv: 3/4
 * deduped (C2L): računarstvu, računarstva, računarstvo
 * full list:računarstvu, рачунарства, рачунарство, рачунарству


 * računsk: 4/4
 * deduped (C2L): računske, računski, računskih, računskom
 * full list:рачунске, рачунски, рачунских, рачунском


 * roug: 2/2
 * deduped (C2L): rouge, roug
 * full list:rouge, роуг


 * saćuríc: 2/2
 * deduped (C2L): saćuríca, saćurícu
 * full list:saćuríca, saćurícu


 * sinajsk: 2/2
 * deduped (C2L): sinajskom, sinajskoj
 * full list:синајском, синајској


 * smak: 2/2
 * deduped (C2L): smak, smaku
 * full list:смак, смаку


 * spav: 2/3
 * deduped (C2L): spava, spavo
 * full list:spava, spavo, спава


 * stipendist: 3/4
 * deduped (C2L): stipendist, stipendista, stipendisti
 * full list:stipendist, stipendista, стипендиста, стипендисти


 * teorijsk: 10/15
 * deduped (C2L): teorijska, teorijski, teorijskih, teorijsko, teorijskom, teorijske, teorijskim, teorijskog, teorijskoj, teorijsku
 * full list:teorijska, teorijski, teorijskih, teorijsko, teorijskom, теоријска, теоријске, теоријски, теоријским, теоријских, теоријско, теоријског, теоријском, теоријској, теоријску


 * udvaranj: 2/3
 * deduped (C2L): udvaranje, udvaranja
 * full list:udvaranje, удварања, удварање


 * unajmi: 3/4
 * deduped (C2L): unajmio, unajmili, unajmiti
 * full list:unajmio, унајмили, унајмио, унајмити


 * vicev: 3/3
 * deduped (C2L): viceva, viceve, vicevima
 * full list:вицева, вицеве, вицевима


 * vojvodin: 4/9
 * deduped (C2L): vojvodina, vojvodine, vojvodini, vojvodinu
 * full list:vojvodina, vojvodine, vojvodini, vojvodinu, војводинe, војводина, војводине, војводини, војводину


 * zvonik: 4/4
 * deduped (C2L): zvonik, zvonika, zvonikom, zvoniku
 * full list:звоник, звоника, звоником, звонику

Accents
A quick look at the English wiki page for Serbo-Croatian Phonology indicates that there's a pitch accent, and these diacritics are likely used to indicate that information but aren't really part of the word. Serbian Wiktionary seems to have entries for the same word with and without the accents, e.g., шти̏ковано пла́тно and штиковано платно.

There seem to be instances of ácute, gràve, double grȁve, mācron, and inverted brȇve. It seems like these should be normalized away.

We should also investigate what other normalization should be done as part of a new analysis chain for Serbian.

Next Steps
Assuming all goes well...
 * Get speaker review of the groups above (DONE)
 * Get verification of the role of accents (DONE)
 * Thanks to Vuk and Željko for reviewing this for me. There are the usual kind of issues expected because language is messy—a few ambiguous words, names of people or places, acronyms, foreign words, etc. But it's generally doing the right thing for Serbian, and it doesn't have any unwanted side effects for non-Serbian text.
 * Open Phab ticket to build an Elasticsearch plugin using the stemmer and put together an analysis chain for Serbian (DONE—see T183015)
 * Use the stemmer, accent folding, possibly other folding
 * Re-test the analysis chain, expecting results similar to what we have here, modulo additional folding
 * Deploy the analysis chain for Serbian!
 * Re-test the analysis chain for Croatian, Serbo-Croatian, and Bosnian and deploy it (or an appropriately modified version of it) wherever it will help.