Package: uniparser-meadow-mari
Meadow Mari morphological analyzerThis is a rule-based morphological analyzer for Meadow Mari (mhr; Uralic > Mari). It is based on a formalized description of literary Meadow Mari morphology, which also includes a number of dialectal elements, and usesuniparser-morphfor parsing. It performs full morphological analysis of Meadow Mari words (lemmatization, POS tagging, grammatical tagging, glossing).How to usePython packageThe analyzer is available as a Python package. If you want to analyze Meadow Mari texts in Python, install the module:pip3 install uniparser-meadow-mariImport the module and create an instance ofMeadowMariAnalyzerclass. Setmode='strict'if you are going to process text in standard orthography, ormode='nodiacritics'if you expect some words to lack the diacritics (which often happens in social media). After that, you can either parse tokens or lists of tokens withanalyze_words(), or parse a frequency list withanalyze_wordlist(). Here is a simple example:fromuniparser_meadow_mariimportMeadowMariAnalyzera=MeadowMariAnalyzer(mode='strict')analyses=a.analyze_words('Морфологийыште')# The parser is initialized before first use, so expect# some delay here (usually several seconds)# You will get a list of Wordform objects# The analysis attributes are stored in its properties# as string values, e.g.:foranainanalyses:print(ana.wf,ana.lemma,ana.gramm,ana.gloss)# You can also pass lists (even nested lists) and specify# output format ('xml' or 'json')# If you pass a list, you will get a list of analyses# with the same structureanalyses=a.analyze_words([['А'],['Мый','тыйым','йӧратем','.']],format='xml')analyses=a.analyze_words(['Морфологийыште',[['А'],['Мый','тыйым','йӧратем','.']]],format='json')Refer to theuniparser-morph documentationfor the full list of options.DisambiguationApart from the analyzer, this repository contains a very small set ofConstraint Grammarrules that can be used for partial disambiguation of analyzed Meadow Mari texts, as well assigningnonposstag to all nominal forms without possessive affixes. If you want to use them, setdisambiguation=Truewhen callinganalyze_words:analyses=a.analyze_words(['Мый','тыйым','йӧратем'],disambiguate=True)In order for this to work, you have to install thecg3executable separately. On Ubuntu/Debian, you can useapt-get:sudo apt-get install cg3On Windows, download the binary and add the path to thePATHenvironment variable. Seethe documentationfor other options.Note that each time you callanalyze_words()withdisambiguate=True, the CG grammar is loaded and compiled from scratch, which makes the analysis even slower. If you are analyzing a large text, it would make sense to pass the entire text contents in a single function call rather than do it sentence-by-sentence, for optimal performance.Word listsAlternatively, you can use a preprocessed word list. Thewordlistsdirectory contains a list of words from a 2.6-million-wordMeadow Mari corpus(wordlist_main.csv), list of analyzed tokens (wordlist_analyzed.txt; each line contains all possible analyses for one word in an XML format), and list of tokens the parser could not analyze (wordlist_unanalyzed.txt). The recall of the analyzer on the standard corpus texts is about 91%.Description formatThe description is carried out in theuniparser-morphformat and involves a description of the inflection (paradigms.txt), a grammatical dictionary (mhr_lexemes_XXX.txt files), a list of rules that annotate combinations of lexemes and grammatical values with additional Russian translations (lex_rules.txt), and a short list of analyses that should be avoided (bad_analyses.txt). The dictionary contains descriptions of individual lexemes, each of which is accompanied by information about its stem, its part-of-speech tag and some other grammatical/borrowing information, its inflectional type (paradigm), and Russian translation. See more about the formatin the uniparser-morph documentation.