From a3b84c7656b5e2a3f1cbc32851f7b1140ece73e9 Mon Sep 17 00:00:00 2001 From: Ines Montani Date: Thu, 15 Oct 2020 12:42:30 +0200 Subject: [PATCH 01/39] Update netlify.toml [ci skip] --- netlify.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/netlify.toml b/netlify.toml index 9cb11ae81..c83065855 100644 --- a/netlify.toml +++ b/netlify.toml @@ -3,6 +3,8 @@ redirects = [ {from = "https://spacy.netlify.com/*", to="https://spacy.io/:splat", force = true }, # Subdomain for branches {from = "https://nightly.spacy.io/*", to="https://nightly-spacy-io.spacy.io/:splat", force = true, status = 200}, + # TODO: update this with the v2 branch build once v3 is live (status = 200) + {from = "https://v2.spacy.io/*", to="https://spacy.io/:splat", force = true}, # Old subdomains {from = "https://survey.spacy.io/*", to = "https://spacy.io", force = true}, {from = "http://survey.spacy.io/*", to = "https://spacy.io", force = true}, From bc027dc35c7b2e4482561ca8a818a9b8904b4984 Mon Sep 17 00:00:00 2001 From: Ines Montani Date: Thu, 15 Oct 2020 12:43:35 +0200 Subject: [PATCH 02/39] Update .gitignore [ci skip] --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index eb6be73dd..e205db98f 100644 --- a/.gitignore +++ b/.gitignore @@ -18,8 +18,7 @@ website/.npm website/logs *.log npm-debug.log* -website/www/ -website/_deploy.sh +quickstart-training-generator.js # Cython / C extensions cythonize.json From 2311192ba1d3274ef25916fc25c83507f413d083 Mon Sep 17 00:00:00 2001 From: Borijan Georgievski Date: Thu, 15 Oct 2020 15:55:01 +0200 Subject: [PATCH 03/39] Include Macedonian language (#6230) * Include Macedonian language * Fix indentation at char_classes.py * Fix indentation at char_classes.py * Add Macedonian tests, update lex_attrs and char_classes * Import unicode literals for python 2 --- .github/contributors/borijang.md | 106 ++++ spacy/lang/char_classes.py | 10 +- spacy/lang/mk/__init__.py | 41 ++ spacy/lang/mk/lemmatizer.py | 64 ++ spacy/lang/mk/lex_attrs.py | 58 ++ spacy/lang/mk/morph_rules.py | 641 ++++++++++++++++++++ spacy/lang/mk/stop_words.py | 819 ++++++++++++++++++++++++++ spacy/lang/mk/tokenizer_exceptions.py | 103 ++++ spacy/tests/conftest.py | 5 + spacy/tests/lang/mk/__init__.py | 0 spacy/tests/lang/mk/test_text.py | 87 +++ 11 files changed, 1931 insertions(+), 3 deletions(-) create mode 100644 .github/contributors/borijang.md create mode 100644 spacy/lang/mk/__init__.py create mode 100644 spacy/lang/mk/lemmatizer.py create mode 100644 spacy/lang/mk/lex_attrs.py create mode 100644 spacy/lang/mk/morph_rules.py create mode 100644 spacy/lang/mk/stop_words.py create mode 100644 spacy/lang/mk/tokenizer_exceptions.py create mode 100644 spacy/tests/lang/mk/__init__.py create mode 100644 spacy/tests/lang/mk/test_text.py diff --git a/.github/contributors/borijang.md b/.github/contributors/borijang.md new file mode 100644 index 000000000..0f2763f2a --- /dev/null +++ b/.github/contributors/borijang.md @@ -0,0 +1,106 @@ +# spaCy contributor agreement + +This spaCy Contributor Agreement (**"SCA"**) is based on the +[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf). +The SCA applies to any contribution that you make to any product or project +managed by us (the **"project"**), and sets out the intellectual property rights +you grant to us in the contributed materials. The term **"us"** shall mean +[ExplosionAI GmbH](https://explosion.ai/legal). The term +**"you"** shall mean the person or entity identified below. + +If you agree to be bound by these terms, fill in the information requested +below and include the filled-in version with your first pull request, under the +folder [`.github/contributors/`](/.github/contributors/). The name of the file +should be your GitHub username, with the extension `.md`. For example, the user +example_user would create the file `.github/contributors/example_user.md`. + +Read this agreement carefully before signing. These terms and conditions +constitute a binding legal agreement. + +## Contributor Agreement + +1. The term "contribution" or "contributed materials" means any source code, +object code, patch, tool, sample, graphic, specification, manual, +documentation, or any other material posted or submitted by you to the project. + +2. With respect to any worldwide copyrights, or copyright applications and +registrations, in your contribution: + + * you hereby assign to us joint ownership, and to the extent that such + assignment is or becomes invalid, ineffective or unenforceable, you hereby + grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge, + royalty-free, unrestricted license to exercise all rights under those + copyrights. This includes, at our option, the right to sublicense these same + rights to third parties through multiple levels of sublicensees or other + licensing arrangements; + + * you agree that each of us can do all things in relation to your + contribution as if each of us were the sole owners, and if one of us makes + a derivative work of your contribution, the one who makes the derivative + work (or has it made will be the sole owner of that derivative work; + + * you agree that you will not assert any moral rights in your contribution + against us, our licensees or transferees; + + * you agree that we may register a copyright in your contribution and + exercise all ownership rights associated with it; and + + * you agree that neither of us has any duty to consult with, obtain the + consent of, pay or render an accounting to the other for any use or + distribution of your contribution. + +3. With respect to any patents you own, or that you can license without payment +to any third party, you hereby grant to us a perpetual, irrevocable, +non-exclusive, worldwide, no-charge, royalty-free license to: + + * make, have made, use, sell, offer to sell, import, and otherwise transfer + your contribution in whole or in part, alone or in combination with or + included in any product, work or materials arising out of the project to + which your contribution was submitted, and + + * at our option, to sublicense these same rights to third parties through + multiple levels of sublicensees or other licensing arrangements. + +4. Except as set out above, you keep all right, title, and interest in your +contribution. The rights that you grant to us under these terms are effective +on the date you first submitted a contribution to us, even if your submission +took place before the date you sign these terms. + +5. You covenant, represent, warrant and agree that: + + * Each contribution that you submit is and shall be an original work of + authorship and you can legally grant the rights set out in this SCA; + + * to the best of your knowledge, each contribution will not violate any + third party's copyrights, trademarks, patents, or other intellectual + property rights; and + + * each contribution shall be in compliance with U.S. export control laws and + other applicable export and import laws. You agree to notify us if you + become aware of any circumstance which would make any of the foregoing + representations inaccurate in any respect. We may publicly disclose your + participation in the project, including the fact that you have signed the SCA. + +6. This SCA is governed by the laws of the State of California and applicable +U.S. Federal law. Any choice of law rules will not apply. + +7. Please place an “x” on one of the applicable statement below. Please do NOT +mark both statements: + + * [ ] I am signing on behalf of myself as an individual and no other person + or entity, including my employer, has or will have rights with respect to my + contributions. + + * [x] I am signing on behalf of my employer or a legal entity and I have the + actual authority to contractually bind that entity. + +## Contributor Details + +| Field | Entry | +|------------------------------- | -------------------- | +| Name | Borijan Georgievski | +| Company name (if applicable) | Netcetera | +| Title or role (if applicable) | Deta Scientist | +| Date | 2020.10.09 | +| GitHub username | borijang | +| Website (optional) | | diff --git a/spacy/lang/char_classes.py b/spacy/lang/char_classes.py index bd0f7e437..8b8cf2236 100644 --- a/spacy/lang/char_classes.py +++ b/spacy/lang/char_classes.py @@ -213,8 +213,12 @@ _ukrainian_lower = r"а-щюяіїєґ" _ukrainian_upper = r"А-ЩЮЯІЇЄҐ" _ukrainian = r"а-щюяіїєґА-ЩЮЯІЇЄҐ" -_upper = LATIN_UPPER + _russian_upper + _tatar_upper + _greek_upper + _ukrainian_upper -_lower = LATIN_LOWER + _russian_lower + _tatar_lower + _greek_lower + _ukrainian_lower +_macedonian_lower = r"ѓѕјљњќѐѝ" +_macedonian_upper = r"ЃЅЈЉЊЌЀЍ" +_macedonian = r"ѓѕјљњќѐѝЃЅЈЉЊЌЀЍ" + +_upper = LATIN_UPPER + _russian_upper + _tatar_upper + _greek_upper + _ukrainian_upper + _macedonian_upper +_lower = LATIN_LOWER + _russian_lower + _tatar_lower + _greek_lower + _ukrainian_lower + _macedonian_lower _uncased = ( _bengali @@ -229,7 +233,7 @@ _uncased = ( + _cjk ) -ALPHA = group_chars(LATIN + _russian + _tatar + _greek + _ukrainian + _uncased) +ALPHA = group_chars(LATIN + _russian + _tatar + _greek + _ukrainian + _macedonian + _uncased) ALPHA_LOWER = group_chars(_lower + _uncased) ALPHA_UPPER = group_chars(_upper + _uncased) diff --git a/spacy/lang/mk/__init__.py b/spacy/lang/mk/__init__.py new file mode 100644 index 000000000..64894644d --- /dev/null +++ b/spacy/lang/mk/__init__.py @@ -0,0 +1,41 @@ +# coding: utf8 +from __future__ import unicode_literals + +from .lemmatizer import MacedonianLemmatizer +from .stop_words import STOP_WORDS +from .tokenizer_exceptions import TOKENIZER_EXCEPTIONS +from .lex_attrs import LEX_ATTRS +from ..tokenizer_exceptions import BASE_EXCEPTIONS +from .morph_rules import MORPH_RULES + +from ...language import Language +from ...attrs import LANG +from ...util import update_exc +from ...lookups import Lookups + + +class MacedonianDefaults(Language.Defaults): + lex_attr_getters = dict(Language.Defaults.lex_attr_getters) + lex_attr_getters[LANG] = lambda text: "mk" + + # Optional: replace flags with custom functions, e.g. like_num() + lex_attr_getters.update(LEX_ATTRS) + + # Merge base exceptions and custom tokenizer exceptions + tokenizer_exceptions = update_exc(BASE_EXCEPTIONS, TOKENIZER_EXCEPTIONS) + stop_words = STOP_WORDS + morph_rules = MORPH_RULES + + @classmethod + def create_lemmatizer(cls, nlp=None, lookups=None): + if lookups is None: + lookups = Lookups() + return MacedonianLemmatizer(lookups) + + +class Macedonian(Language): + lang = "mk" + Defaults = MacedonianDefaults + + +__all__ = ["Macedonian"] diff --git a/spacy/lang/mk/lemmatizer.py b/spacy/lang/mk/lemmatizer.py new file mode 100644 index 000000000..fcb1954c1 --- /dev/null +++ b/spacy/lang/mk/lemmatizer.py @@ -0,0 +1,64 @@ +# coding: utf8 +from __future__ import unicode_literals + +from collections import OrderedDict + +from ...lemmatizer import Lemmatizer +from ...parts_of_speech import NAMES as UPOS_NAMES + + +class MacedonianLemmatizer(Lemmatizer): + def __call__(self, string, univ_pos, morphology=None): + lookup_table = self.lookups.get_table("lemma_lookup", {}) + if "lemma_rules" not in self.lookups: + return [lookup_table.get(string, string)] + if isinstance(univ_pos, int): + univ_pos = UPOS_NAMES.get(univ_pos, "X") + univ_pos = univ_pos.lower() + + if univ_pos in ("", "eol", "space"): + return [string.lower()] + + if string[-3:] == 'јќи': + string = string[:-3] + univ_pos = "verb" + + if callable(self.is_base_form) and self.is_base_form(univ_pos, morphology): + return [string.lower()] + index_table = self.lookups.get_table("lemma_index", {}) + exc_table = self.lookups.get_table("lemma_exc", {}) + rules_table = self.lookups.get_table("lemma_rules", {}) + if not any((index_table.get(univ_pos), exc_table.get(univ_pos), rules_table.get(univ_pos))): + if univ_pos == "propn": + return [string] + else: + return [string.lower()] + lemmas = self.lemmatize( + string, + index_table.get(univ_pos, {}), + exc_table.get(univ_pos, {}), + rules_table.get(univ_pos, []), + ) + return lemmas + + def lemmatize(self, string, index, exceptions, rules): + orig = string + string = string.lower() + forms = [] + + for old, new in rules: + if string.endswith(old): + form = string[: len(string) - len(old)] + new + if not form: + continue + if form in index or not form.isalpha(): + forms.append(form) + + forms = list(OrderedDict.fromkeys(forms)) + for form in exceptions.get(string, []): + if form not in forms: + forms.insert(0, form) + if not forms: + forms.append(orig) + + return forms diff --git a/spacy/lang/mk/lex_attrs.py b/spacy/lang/mk/lex_attrs.py new file mode 100644 index 000000000..26bc2d8a6 --- /dev/null +++ b/spacy/lang/mk/lex_attrs.py @@ -0,0 +1,58 @@ +# coding: utf8 +from __future__ import unicode_literals + +from ...attrs import LIKE_NUM + +_num_words = [ + "нула", "еден", "една", "едно", "два", "две", "три", "четири", "пет", "шест", "седум", "осум", "девет", "десет", + "единаесет", "дванаесет", "тринаесет", "четиринаесет", "петнаесет", "шеснаесет", "седумнаесет", "осумнаесет", + "деветнаесет", "дваесет", "триесет", "четириесет", "педесет", "шеесет", "седумдесет", "осумдесет", "деведесет", + "сто", "двесте", "триста", "четиристотини", "петстотини", "шестотини", "седумстотини", "осумстотини", + "деветстотини", "илјада", "илјади", 'милион', 'милиони', 'милијарда', 'милијарди', 'билион', 'билиони', + + "двајца", "тројца", "четворица", "петмина", "шестмина", "седуммина", "осуммина", "деветмина", "обата", "обајцата", + + "прв", "втор", "трет", "четврт", "седм", "осм", "двестоти", + + "два-три", "два-триесет", "два-триесетмина", "два-тринаесет", "два-тројца", "две-три", "две-тристотини", + "пет-шеесет", "пет-шеесетмина", "пет-шеснаесетмина", "пет-шест", "пет-шестмина", "пет-шестотини", "петина", + "осмина", "седум-осум", "седум-осумдесет", "седум-осуммина", "седум-осумнаесет", "седум-осумнаесетмина", + "три-четириесет", "три-четиринаесет", "шеесет", "шеесетина", "шеесетмина", "шеснаесет", "шеснаесетмина", + "шест-седум", "шест-седумдесет", "шест-седумнаесет", "шест-седумстотини", "шестоти", "шестотини" +] + + +def like_num(text): + if text.startswith(("+", "-", "±", "~")): + text = text[1:] + text = text.replace(",", "").replace(".", "") + if text.isdigit(): + return True + if text.count("/") == 1: + num, denom = text.split("/") + if num.isdigit() and denom.isdigit(): + return True + + text_lower = text.lower() + if text_lower in _num_words: + return True + + if text_lower.endswith(("а", "о", "и")): + if text_lower[:-1] in _num_words: + return True + + if text_lower.endswith(("ти", "та", "то", "на")): + if text_lower[:-2] in _num_words: + return True + + if text_lower.endswith(("ата", "иот", "ите", "ина", "чки")): + if text_lower[:-3] in _num_words: + return True + + if text_lower.endswith(("мина", "тина")): + if text_lower[:-4] in _num_words: + return True + return False + + +LEX_ATTRS = {LIKE_NUM: like_num} diff --git a/spacy/lang/mk/morph_rules.py b/spacy/lang/mk/morph_rules.py new file mode 100644 index 000000000..1f5336782 --- /dev/null +++ b/spacy/lang/mk/morph_rules.py @@ -0,0 +1,641 @@ +# coding: utf8 +from __future__ import unicode_literals + +from ...symbols import LEMMA, PRON_LEMMA + +_subordinating_conjunctions = [ + "кога", + "штом", + "штотуку", + "тукушто", + "откако", + "откога", + "пред да ", + "дури", + "додека", + "затоа што", + "зашто", + "бидејќи", + "поради тоа што", + "дека", + "оти", + "така што", + "да", + "за да", + "ако", + "без да", + "ли", + "иако", + "макар што", + "и покрај тоа што", + "и да", + "така како што", + "како да", + "како божем", + "што", + "кој", + "којшто", + "чиј", + "чијшто", + "дали", + "каков што", + "колкав што", + "каде што", + "како што", + "колку што", + "како", +] + +_part = [ + "де", + "бе", + "ма", + "барем", + "пак", + "меѓутоа", + "просто", + "да", + "не", + "ниту", + "зар", + "ли", + "дали", + "единствено", + "само", + "точно", + "токму", + "скоро", + "речиси", + "рамно", + "нека", + "ќе", + "уште", + "притоа", + "исто така", + "би", +] +_modal_verbs = [ + "може", + "мора", + "треба", +] + +sum_aux = [ + "сум", + "си", + "е", + "сме", + "сте", + "се", +] + +MORPH_RULES = { + "SUM": {word: {"POS": "AUX"} for word in sum_aux}, + "IMA": { + "има": {"POS": "VERB"}, + "имала": {"POS": "VERB"}, + "имало": {"POS": "VERB"}, + "имал": {"POS": "VERB"}, + "имале": {"POS": "VERB"}, + "имав": {"POS": "VERB"}, + "имавте": {"POS": "VERB"}, + "имаа": {"POS": "VERB"}, + "имаше": {"POS": "VERB"}, + "имам": {"POS": "AUX"}, + "имаш": {"POS": "AUX"}, + "имаме": {"POS": "AUX"}, + "имате": {"POS": "AUX"}, + "имаат": {"POS": "AUX"}, + "имавме": {"POS": "AUX"}, + }, + "MD": {word: {"POS": "VERB"} for word in _modal_verbs}, + "NN": { + "нешто": {"POS": "PRON"}, + "некој": {"POS": "PRON"}, + "некоја": {"POS": "PRON"}, + "некое": {"POS": "PRON"}, + "некои": {"POS": "PRON"}, + "ништо": {"POS": "PRON"}, + }, + "PRP": { + "јас": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "One", + "Number": "Sing", + "Case": "Nom", + }, + "мене": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "One", + "Number": "Sing", + "Case": "Acc", + }, + "ме": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "One", + "Number": "Sing", + "Case": "Acc", + }, + "ми": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "One", + "Number": "Sing", + "Case": "Dat", + }, + "ти": {LEMMA: PRON_LEMMA, "POS": "PRON", "PronType": "Prs", "Person": "Two", "Number": "Sing", "Case": "Nom"}, + "тебе": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Two", + "Number": "Sing", + "Case": "Acc", + }, + "те": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Two", + "Number": "Sing", + "Case": "Acc", + }, + "тој": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Masc", + "Case": "Nom", + }, + "него": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Masc", + "Case": "Acc", + }, + "го": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Masc", + "Case": "Acc", + }, + "нему": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Masc", + "Case": "Dat", + }, + "му": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Masc", + "Case": "Dat", + }, + "таа": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Fem", + "Case": "Nom", + }, + "неа": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Fem", + "Case": "Acc", + }, + "ја": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Fem", + "Case": "Acc", + }, + "нејзе": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Fem", + "Case": "Dat", + }, + "ѝ": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Fem", + "Case": "Dat", + }, + "тоа": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Sing", + "Gender": "Neut", + }, + "ние": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "One", + "Number": "Plur", + "Case": "Nom", + }, + "нас": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "One", + "Number": "Plur", + "Case": "Acc", + }, + "нѐ": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "One", + "Number": "Plur", + "Case": "Acc", + }, + "нам": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "One", + "Number": "Plur", + "Case": "Dat", + }, + "ни": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "One", + "Number": "Plur", + "Case": "Dat", + }, + "вие": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Two", + "Number": "Plur", + "Case": "Nom", + }, + "вас": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Two", + "Number": "Plur", + "Case": "Acc", + }, + "ве": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Two", + "Number": "Plur", + "Case": "Acc", + }, + "вам": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Two", + "Number": "Plur", + "Case": "Dat", + }, + "ви": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Two", + "Number": "Plur", + "Case": "Dat", + }, + "тие": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Plur", + "Case": "Nom", + }, + "нив": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Plur", + "Case": "Acc", + }, + "ги": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Plur", + "Case": "Acc", + }, + "ним": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Plur", + "Case": "Dat", + }, + "им": { + LEMMA: PRON_LEMMA, + "POS": "PRON", + "PronType": "Prs", + "Person": "Three", + "Number": "Plur", + "Case": "Dat", + }, + + }, + + "VB": { + word: {"POS": "AUX"} + for word in ["сум", "има"] + }, + "VBT": { + "бев ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Person": "one" + }, + + "имав": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Person": "one" + + }, + + }, + "VBM": { + "беше ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Person": "two" + }, + "имаше": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Person": "two" + + }, + + }, + "VBK": { + "било ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Gender": "Neut", + "Person": "three", + }, + "била ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Gender": "Fem", + "Person": "three", + + }, + "бил ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Gender": "Masc", + "Person": "three", + + }, + "беше ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Person": "three", + "Person": "three", + }, + "имаше": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Person": "three", + }, + + }, + "VBTT": { + "бевме ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + + }, + "имавме": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + + }, + + }, + "VBMM": { + "бевте ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + + }, + "имавте": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + + }, + + }, + "VBKK": { + "биле ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Gender": "Plur", + + }, + "беа ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + + }, + "имаа": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + + }, + + }, + "VBP": { + "сум ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + + }, + "имам": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + + }, + + }, + "VBV": { + "си ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + + }, + "имаш": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + + }, + + }, + "VBZ": { + "е ": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + + }, + "има": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + + }, + + }, + "VBPP": { + "сме": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + "Number": "Plur", + }, + "имаме": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + "Number": "Plur", + }, + }, + "VBVV": { + "сте": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + "Number": "Plur", + }, + "имате": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + "Number": "Plur", + }, + + }, + "VBZZ": { + "се": { + LEMMA: "сум", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Pres", + "Number": "Plur", + }, + "имаат": { + LEMMA: "има", + "POS": "AUX", + "VerbForm": "Fin", + "Tense": "Past", + "Number": "Plur", + }, + + }, + +} + +for tag, rules in MORPH_RULES.items(): + for key, attrs in dict(rules).items(): + rules[key.title()] = attrs diff --git a/spacy/lang/mk/stop_words.py b/spacy/lang/mk/stop_words.py new file mode 100644 index 000000000..f5f62fca6 --- /dev/null +++ b/spacy/lang/mk/stop_words.py @@ -0,0 +1,819 @@ +# coding: utf8 +from __future__ import unicode_literals + + +STOP_WORDS = set( + """ +а +абре +aв +аи +ако +алало +ам +ама +аман +ами +амин +априли-ли-ли +ау +аух +ауч +ах +аха +аха-ха +аш +ашколсум +ашколсун +ај +ајде +ајс +аџаба +бавно +бам +бам-бум +бап +бар +баре +барем +бау +бау-бау +баш +бај +бе +беа +бев +бевме +бевте +без +безбели +бездруго +белки +беше +би +бидејќи +бим +бис +бла +блазе +богами +божем +боц +браво +бравос +бре +бреј +брзо +бришка +бррр +бу +бум +буф +буц +бујрум +ваа +вам +варај +варда +вас +вај +ве +велат +вели +версус +веќе +ви +виа +види +вие +вистина +витос +внатре +во +воз +вон +впрочем +врв +вред +време +врз +всушност +втор +галиба +ги +гитла +го +годе +годишник +горе +гра +гуц +гљу +да +даан +дава +дал +дали +дан +два +дваесет +дванаесет +двајца +две +двесте +движам +движат +движи +движиме +движите +движиш +де +деведесет +девет +деветнаесет +деветстотини +деветти +дека +дел +делми +демек +десет +десетина +десетти +деситици +дејгиди +дејди +ди +дилми +дин +дип +дно +до +доволно +додека +додуша +докај +доколку +доправено +доправи +досамоти +доста +држи +дрн +друг +друга +другата +други +другиот +другите +друго +другото +дум +дур +дури +е +евала +еве +евет +ега +егиди +еден +едикојси +единаесет +единствено +еднаш +едно +ексик +ела +елбете +елем +ели +ем +еми +ене +ете +еурека +ех +еј +жими +жити +за +завал +заврши +зад +задека +задоволна +задржи +заедно +зар +зарад +заради +заре +зарем +затоа +зашто +згора +зема +земе +земува +зер +значи +зошто +зуј +и +иако +из +извезен +изгледа +измеѓу +износ +или +или-или +илјада +илјади +им +има +имаа +имаат +имавме +имавте +имам +имаме +имате +имаш +имаше +име +имено +именува +имплицира +имплицираат +имплицирам +имплицираме +имплицирате +имплицираш +инаку +индицира +исечок +исклучен +исклучена +исклучени +исклучено +искористен +искористена +искористени +искористено +искористи +искрај +исти +исто +итака +итн +их +иха +ихуу +иш +ишала +иј +ка +каде +кажува +како +каков +камоли +кај +ква +ки +кит +кло +клум +кога +кого +кого-годе +кое +кои +количество +количина +колку +кому +кон +користена +користени +користено +користи +кот +котрр +кош-кош +кој +која +којзнае +којшто +кр-кр-кр +крај +крек +крз +крк +крц +куку +кукуригу +куш +ле +лебами +леле +лели +ли +лиду +луп +ма +макар +малку +марш +мат +мац +машала +ме +мене +место +меѓу +меѓувреме +меѓутоа +ми +мое +може +можеби +молам +моли +мор +мора +море +мори +мразец +му +муклец +мутлак +муц +мјау +на +навидум +навистина +над +надвор +назад +накај +накрај +нали +нам +наместо +наоколу +направено +направи +напред +нас +наспоред +наспрема +наспроти +насред +натаму +натема +начин +наш +наша +наше +наши +нај +најдоцна +најмалку +најмногу +не +неа +него +негов +негова +негови +негово +незе +нека +некаде +некако +некаков +некого +некое +некои +неколку +некому +некој +некојси +нели +немој +нему +неоти +нечиј +нешто +нејзе +нејзин +нејзини +нејзино +нејсе +ни +нив +нивен +нивна +нивни +нивно +ние +низ +никаде +никако +никогаш +никого +никому +никој +ним +нити +нито +ниту +ничиј +ништо +но +нѐ +о +обр +ова +ова-она +оваа +овај +овде +овега +овие +овој +од +одавде +оди +однесува +односно +одошто +околу +олеле +олкацок +он +она +онаа +онака +онаков +онде +они +оние +оно +оној +оп +освем +освен +осем +осми +осум +осумдесет +осумнаесет +осумстотитни +отаде +оти +откако +откај +откога +отколку +оттаму +оттука +оф +ох +ој +па +пак +папа +пардон +пате-ќуте +пати +пау +паче +пеесет +пеки +пет +петнаесет +петстотини +петти +пи +пи-пи +пис +плас +плус +по +побавно +поблиску +побрзо +побуни +повеќе +повторно +под +подалеку +подолу +подоцна +подруго +позади +поинаква +поинакви +поинакво +поинаков +поинаку +покаже +покажува +покрај +полно +помалку +помеѓу +понатаму +понекогаш +понекој +поради +поразличен +поразлична +поразлични +поразлично +поседува +после +последен +последна +последни +последно +поспоро +потег +потоа +пошироко +прави +празно +прв +пред +през +преку +претежно +претходен +претходна +претходни +претходник +претходно +при +присвои +притоа +причинува +пријатно +просто +против +прр +пст +пук +пусто +пуф +пуј +пфуј +пшт +ради +различен +различна +различни +различно +разни +разоружен +разредлив +рамките +рамнообразно +растревожено +растреперено +расчувствувано +ратоборно +рече +роден +с +сакан +сам +сама +сами +самите +само +самоти +свое +свои +свој +своја +се +себе +себеси +сега +седми +седум +седумдесет +седумнаесет +седумстотини +секаде +секаков +секи +секогаш +секого +секому +секој +секојдневно +сем +сенешто +сепак +сериозен +сериозна +сериозни +сериозно +сет +сечиј +сешто +си +сиктер +сиот +сип +сиреч +сите +сичко +скок +скоро +скрц +следбеник +следбеничка +следен +следователно +следствено +сме +со +соне +сопствен +сопствена +сопствени +сопствено +сосе +сосем +сполај +според +споро +спрема +спроти +спротив +сред +среде +среќно +срочен +сст +става +ставаат +ставам +ставаме +ставате +ставаш +стави +сте +сто +стоп +страна +сум +сума +супер +сус +сѐ +та +таа +така +таква +такви +таков +тамам +таму +тангар-мангар +тандар-мандар +тап +твое +те +тебе +тебека +тек +текот +ти +тие +тизе +тик-так +тики +тоа +тогаш +тој +трак +трака-трука +трас +треба +трет +три +триесет +тринаест +триста +труп +трупа +трус +ту +тука +туку +тукушто +туф +у +уа +убаво +уви +ужасно +уз +ура +уу +уф +уха +уш +уште +фазен +фала +фил +филан +фис +фиу +фиљан +фоб +фон +ха +ха-ха +хе +хеј +хеј +хи +хм +хо +цак +цап +целина +цело +цигу-лигу +циц +чекај +често +четврт +четири +четириесет +четиринаесет +четирстотини +чие +чии +чик +чик-чирик +чини +чиш +чиј +чија +чијшто +чкрап +чому +чук +чукш +чуму +чунки +шеесет +шеснаесет +шест +шести +шестотини +ширум +шлак +шлап +шлапа-шлупа +шлуп +шмрк +што +штогоде +штом +штотуку +штрак +штрап +штрап-штруп +шуќур +ѓиди +ѓоа +ѓоамити +ѕан +ѕе +ѕин +ја +јадец +јазе +јали +јас +јаска +јок +ќе +ќешки +ѝ +џагара-магара +џанам +џив-џив + """.split() +) diff --git a/spacy/lang/mk/tokenizer_exceptions.py b/spacy/lang/mk/tokenizer_exceptions.py new file mode 100644 index 000000000..2cecdb6b7 --- /dev/null +++ b/spacy/lang/mk/tokenizer_exceptions.py @@ -0,0 +1,103 @@ +# coding: utf8 +from __future__ import unicode_literals + +from ...symbols import ORTH, LEMMA, TAG, NORM, PRON_LEMMA + + +_exc = {} + + +_abbr_exc = [ + {ORTH: "м", LEMMA: "метар", NORM: "метар"}, + {ORTH: "мм", LEMMA: "милиметар", NORM: "милиметар"}, + {ORTH: "цм", LEMMA: "центиметар", NORM: "центиметар"}, + {ORTH: "см", LEMMA: "сантиметар", NORM: "сантиметар"}, + {ORTH: "дм", LEMMA: "дециметар", NORM: "дециметар"}, + {ORTH: "км", LEMMA: "километар", NORM: "километар"}, + {ORTH: "кг", LEMMA: "килограм", NORM: "килограм"}, + {ORTH: "дкг", LEMMA: "декаграм", NORM: "декаграм"}, + {ORTH: "дг", LEMMA: "дециграм", NORM: "дециграм"}, + {ORTH: "мг", LEMMA: "милиграм", NORM: "милиграм"}, + {ORTH: "г", LEMMA: "грам", NORM: "грам"}, + {ORTH: "т", LEMMA: "тон", NORM: "тон"}, + {ORTH: "кл", LEMMA: "килолитар", NORM: "килолитар"}, + {ORTH: "хл", LEMMA: "хектолитар", NORM: "хектолитар"}, + {ORTH: "дкл", LEMMA: "декалитар", NORM: "декалитар"}, + {ORTH: "л", LEMMA: "литар", NORM: "литар"}, + {ORTH: "дл", LEMMA: "децилитар", NORM: "децилитар"} + +] +for abbr in _abbr_exc: + _exc[abbr[ORTH]] = [abbr] + +_abbr_line_exc = [ + {ORTH: "д-р", LEMMA: "доктор", NORM: "доктор"}, + {ORTH: "м-р", LEMMA: "магистер", NORM: "магистер"}, + {ORTH: "г-ѓа", LEMMA: "госпоѓа", NORM: "госпоѓа"}, + {ORTH: "г-ца", LEMMA: "госпоѓица", NORM: "госпоѓица"}, + {ORTH: "г-дин", LEMMA: "господин", NORM: "господин"}, + +] + +for abbr in _abbr_line_exc: + _exc[abbr[ORTH]] = [abbr] + +_abbr_dot_exc = [ + {ORTH: "в.", LEMMA: "век", NORM: "век"}, + {ORTH: "в.д.", LEMMA: "вршител на должност", NORM: "вршител на должност"}, + {ORTH: "г.", LEMMA: "година", NORM: "година"}, + {ORTH: "г.г.", LEMMA: "господин господин", NORM: "господин господин"}, + {ORTH: "м.р.", LEMMA: "машки род", NORM: "машки род"}, + {ORTH: "год.", LEMMA: "женски род", NORM: "женски род"}, + {ORTH: "с.р.", LEMMA: "среден род", NORM: "среден род"}, + {ORTH: "н.е.", LEMMA: "наша ера", NORM: "наша ера"}, + {ORTH: "о.г.", LEMMA: "оваа година", NORM: "оваа година"}, + {ORTH: "о.м.", LEMMA: "овој месец", NORM: "овој месец"}, + {ORTH: "с.", LEMMA: "село", NORM: "село"}, + {ORTH: "т.", LEMMA: "точка", NORM: "точка"}, + {ORTH: "т.е.", LEMMA: "то ест", NORM: "то ест"}, + {ORTH: "т.н.", LEMMA: "таканаречен", NORM: "таканаречен"}, + + {ORTH: "бр.", LEMMA: "број", NORM: "број"}, + {ORTH: "гр.", LEMMA: "град", NORM: "град"}, + {ORTH: "др.", LEMMA: "другар", NORM: "другар"}, + {ORTH: "и др.", LEMMA: "и друго", NORM: "и друго"}, + {ORTH: "и сл.", LEMMA: "и слично", NORM: "и слично"}, + {ORTH: "кн.", LEMMA: "книга", NORM: "книга"}, + {ORTH: "мн.", LEMMA: "множина", NORM: "множина"}, + {ORTH: "на пр.", LEMMA: "на пример", NORM: "на пример"}, + {ORTH: "св.", LEMMA: "свети", NORM: "свети"}, + {ORTH: "сп.", LEMMA: "списание", NORM: "списание"}, + {ORTH: "с.", LEMMA: "страница", NORM: "страница"}, + {ORTH: "стр.", LEMMA: "страница", NORM: "страница"}, + {ORTH: "чл.", LEMMA: "член", NORM: "член"}, + + {ORTH: "арх.", LEMMA: "архитект", NORM: "архитект"}, + {ORTH: "бел.", LEMMA: "белешка", NORM: "белешка"}, + {ORTH: "гимн.", LEMMA: "гимназија", NORM: "гимназија"}, + {ORTH: "ден.", LEMMA: "денар", NORM: "денар"}, + {ORTH: "ул.", LEMMA: "улица", NORM: "улица"}, + {ORTH: "инж.", LEMMA: "инженер", NORM: "инженер"}, + {ORTH: "проф.", LEMMA: "професор", NORM: "професор"}, + {ORTH: "студ.", LEMMA: "студент", NORM: "студент"}, + {ORTH: "бот.", LEMMA: "ботаника", NORM: "ботаника"}, + {ORTH: "мат.", LEMMA: "математика", NORM: "математика"}, + {ORTH: "мед.", LEMMA: "медицина", NORM: "медицина"}, + {ORTH: "прил.", LEMMA: "прилог", NORM: "прилог"}, + {ORTH: "прид.", LEMMA: "придавка", NORM: "придавка"}, + {ORTH: "сврз.", LEMMA: "сврзник", NORM: "сврзник"}, + {ORTH: "физ.", LEMMA: "физика", NORM: "физика"}, + {ORTH: "хем.", LEMMA: "хемија", NORM: "хемија"}, + {ORTH: "пр. н.", LEMMA: "природни науки", NORM: "природни науки"}, + {ORTH: "истор.", LEMMA: "историја", NORM: "историја"}, + {ORTH: "геогр.", LEMMA: "географија", NORM: "географија"}, + {ORTH: "литер.", LEMMA: "литература", NORM: "литература"}, + + +] + +for abbr in _abbr_dot_exc: + _exc[abbr[ORTH]] = [abbr] + + +TOKENIZER_EXCEPTIONS = _exc diff --git a/spacy/tests/conftest.py b/spacy/tests/conftest.py index dc742ce30..83b0897c8 100644 --- a/spacy/tests/conftest.py +++ b/spacy/tests/conftest.py @@ -170,6 +170,11 @@ def lt_tokenizer(): return get_lang_class("lt").Defaults.create_tokenizer() +@pytest.fixture(scope="session") +def mk_tokenizer(): + return get_lang_class("mk").Defaults.create_tokenizer() + + @pytest.fixture(scope="session") def ml_tokenizer(): return get_lang_class("ml").Defaults.create_tokenizer() diff --git a/spacy/tests/lang/mk/__init__.py b/spacy/tests/lang/mk/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/spacy/tests/lang/mk/test_text.py b/spacy/tests/lang/mk/test_text.py new file mode 100644 index 000000000..7851f5125 --- /dev/null +++ b/spacy/tests/lang/mk/test_text.py @@ -0,0 +1,87 @@ +# coding: utf8 +from __future__ import unicode_literals + +import pytest +from spacy.lang.mk.lex_attrs import like_num + + +def test_tokenizer_handles_long_text(mk_tokenizer): + text = """ + Во организациските работи или на нашите собранија со членството, никој од нас не зборуваше за + организацијата и идеологијата. Работна беше нашата работа, а не идеолошка. Што се однесува до социјализмот на + Делчев, неговата дејност зборува сама за себе - спротивно. Во суштина, водачите си имаа свои основни погледи и + свои разбирања за положбата и работите, коишто стоеја пред нив и ги завршуваа со голема упорност, настојчивост и + насоченост. Значи, идеологија имаше, само што нивната идеологија имаше своја оригиналност. Македонија денеска, + чиста рожба на животот и положбата во Македонија, кои му служеа како база на неговите побуди, беше дејност која + имаше потреба од ум за да си најде своја смисла. Таквата идеологија и заемното дејство на умот и срцето му + помогнаа на Делчев да не се занесе по патот на својата идеологија... Во суштина, Организацијата и нејзините + водачи имаа свои разбирања за работите и положбата во идеен поглед, но тоа беше врската, животот и положбата во + Македонија и го внесуваа во својата идеологија гласот на своето срце, и на крај, прибегнуваа до умот, + за да најдат смисла или да ѝ дадат. Тоа содејство и заемен сооднос на умот и срцето му помогнаа на Делчев да ја + држи својата идеологија во сообразност со положбата на работите... Водачите навистина направија една жртва + бидејќи на населението не му зборуваа за своите мисли и идеи. Тие се одрекоа од секаква субјективност во своите + мисли. Целта беше да не се зголемуваат целите и задачите како и преданоста во работата. Населението не можеше да + ги разбере овие идеи... + """ + tokens = mk_tokenizer(text) + assert len(tokens) == 297 + + +@pytest.mark.parametrize( + "word,match", + [ + ("10", True), + ("1", True), + ("10.000", True), + ("1000", True), + ("бројка", False), + ("999,0", True), + ("еден", True), + ("два", True), + ("цифра", False), + ("десет", True), + ("сто", True), + ("број", False), + ("илјада", True), + ("илјади", True), + ("милион", True), + (",", False), + ("милијарда", True), + ("билион", True), + ] +) +def test_mk_lex_attrs_like_number(mk_tokenizer, word, match): + tokens = mk_tokenizer(word) + assert len(tokens) == 1 + assert tokens[0].like_num == match + + +@pytest.mark.parametrize( + "word", + [ + "двесте", + "два-три", + "пет-шест" + ] +) +def test_mk_lex_attrs_capitals(word): + assert like_num(word) + assert like_num(word.upper()) + + +@pytest.mark.parametrize( + "word", + [ + "првиот", + "втора", + "четврт", + "четвртата", + "петти", + "петто", + "стоти", + "шеесетите", + "седумдесетите" + ] +) +def test_mk_lex_attrs_like_number_for_ordinal(word): + assert like_num(word) From 3851300e8080a3a4272cb7b1194df43a12a5a69e Mon Sep 17 00:00:00 2001 From: Ines Montani Date: Fri, 16 Oct 2020 11:46:33 +0200 Subject: [PATCH 04/39] Update landing [ci skip] --- website/docs/images/prodigy_overview.jpg | Bin 0 -> 287823 bytes website/src/components/landing.js | 4 +- website/src/styles/landing.module.sass | 9 ++- website/src/widgets/landing.js | 98 +++++++++++++++-------- 4 files changed, 73 insertions(+), 38 deletions(-) create mode 100644 website/docs/images/prodigy_overview.jpg diff --git a/website/docs/images/prodigy_overview.jpg b/website/docs/images/prodigy_overview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84326cceaaaaa264a383719128ec55e631aa3bd6 GIT binary patch literal 287823 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⁢8wO1u9UHHI|~~d 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
    a+<6q}?k5F^UvbbaY?Am9@JP1ADFn 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 ( ) export const LandingGrid = ({ cols = 3, blocks = false, children }) => ( - - + + {children} diff --git a/website/src/styles/landing.module.sass b/website/src/styles/landing.module.sass index c29c0fffb..fc5dcea98 100644 --- a/website/src/styles/landing.module.sass +++ b/website/src/styles/landing.module.sass @@ -76,7 +76,7 @@ .banner background: var(--color-theme) color: var(--color-back) - padding: 5rem + padding: 1rem 5rem margin-bottom: var(--spacing-md) background-size: cover @@ -128,14 +128,17 @@ padding-right: 2rem @include breakpoint(max, md) + .banner + padding: 1rem 3rem + .banner-content display: block .banner-text padding-top: 0 - .col - grid-column: 1 / span 2 + .grid + grid-template-columns: 1fr !important .banner-button margin-bottom: var(--spacing-sm) diff --git a/website/src/widgets/landing.js b/website/src/widgets/landing.js index 1f788877c..9cb40acfe 100644 --- a/website/src/widgets/landing.js +++ b/website/src/widgets/landing.js @@ -20,6 +20,7 @@ import Button from '../components/button' import Link from '../components/link' import courseImage from '../../docs/images/course.jpg' +import prodigyImage from '../../docs/images/prodigy_overview.jpg' import BenchmarksChoi from 'usage/_benchmarks-choi.md' @@ -147,6 +148,59 @@ const Landing = ({ data }) => { + + + spaCy v3.0 features all new transformer-based pipelines that + bring spaCy's accuracy right up to the current state-of-the-art + . You can use any pretrained transformer to train your own pipelines, and even + share one transformer between multiple components with{' '} + multi-task learning. Training is now fully configurable and + extensible, and you can define your own custom models using{' '} + PyTorch, TensorFlow and other frameworks. The + new spaCy projects system lets you describe whole{' '} + end-to-end workflows in a single file, giving you an easy path + from prototype to production, and making it easy to clone and adapt + best-practice projects for your own use cases. + + + + + Prodigy: Radically efficient machine teaching + +
      +
      + Prodigy is an annotation tool so efficient that data scientists + can do the annotation themselves, enabling a new level of rapid iteration. + Whether you're working on entity recognition, intent detection or image + classification, Prodigy can help you train and evaluate your + models faster. +
      +
      + + + + + + { 55 exercises featuring videos, slide decks, multiple-choice questions and interactive coding practice in the browser. - - Prodigy is an annotation tool so efficient that data scientists - can do the annotation themselves, enabling a new level of rapid iteration. - Whether you're working on entity recognition, intent detection or image - classification, Prodigy can help you train and evaluate your - models faster. Stream in your own examples or real-world data from live APIs, - update your model in real-time and chain models together to build more complex - systems. + Learn more from small training corpora by initializing your models with{' '} + knowledge from raw text. The new pretrain command teaches + spaCy's CNN model to predict words based on their context, producing + representations of words in contexts. If you've seen Google's BERT system or + fast.ai's ULMFiT, spaCy's pretraining is similar – but much more efficient. It's + still experimental, but users are already reporting good results, so give it a + try! - - - - - - - Learn more from small training corpora by initializing your models with{' '} - knowledge from raw text. The new pretrain command teaches spaCy's - CNN model to predict words based on their context, producing representations of - words in contexts. If you've seen Google's BERT system or fast.ai's ULMFiT, spaCy's - pretraining is similar – but much more efficient. It's still experimental, but users - are already reporting good results, so give it a try! - -

      Benchmarks

      From ff826447461afb253c5f84a364f9a058d44ee645 Mon Sep 17 00:00:00 2001 From: walterhenry <55140654+walterhenry@users.noreply.github.com> Date: Mon, 19 Oct 2020 16:25:09 +0200 Subject: [PATCH 05/39] User contributor agreement Here it is! --- .github/contributors/walterhenry.md | 106 ++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 .github/contributors/walterhenry.md diff --git a/.github/contributors/walterhenry.md b/.github/contributors/walterhenry.md new file mode 100644 index 000000000..76026e1b7 --- /dev/null +++ b/.github/contributors/walterhenry.md @@ -0,0 +1,106 @@ +# spaCy contributor agreement + +This spaCy Contributor Agreement (**"SCA"**) is based on the +[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf). +The SCA applies to any contribution that you make to any product or project +managed by us (the **"project"**), and sets out the intellectual property rights +you grant to us in the contributed materials. The term **"us"** shall mean +[ExplosionAI GmbH](https://explosion.ai/legal). The term +**"you"** shall mean the person or entity identified below. + +If you agree to be bound by these terms, fill in the information requested +below and include the filled-in version with your first pull request, under the +folder [`.github/contributors/`](/.github/contributors/). The name of the file +should be your GitHub username, with the extension `.md`. For example, the user +example_user would create the file `.github/contributors/example_user.md`. + +Read this agreement carefully before signing. These terms and conditions +constitute a binding legal agreement. + +## Contributor Agreement + +1. The term "contribution" or "contributed materials" means any source code, +object code, patch, tool, sample, graphic, specification, manual, +documentation, or any other material posted or submitted by you to the project. + +2. With respect to any worldwide copyrights, or copyright applications and +registrations, in your contribution: + + * you hereby assign to us joint ownership, and to the extent that such + assignment is or becomes invalid, ineffective or unenforceable, you hereby + grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge, + royalty-free, unrestricted license to exercise all rights under those + copyrights. This includes, at our option, the right to sublicense these same + rights to third parties through multiple levels of sublicensees or other + licensing arrangements; + + * you agree that each of us can do all things in relation to your + contribution as if each of us were the sole owners, and if one of us makes + a derivative work of your contribution, the one who makes the derivative + work (or has it made will be the sole owner of that derivative work; + + * you agree that you will not assert any moral rights in your contribution + against us, our licensees or transferees; + + * you agree that we may register a copyright in your contribution and + exercise all ownership rights associated with it; and + + * you agree that neither of us has any duty to consult with, obtain the + consent of, pay or render an accounting to the other for any use or + distribution of your contribution. + +3. With respect to any patents you own, or that you can license without payment +to any third party, you hereby grant to us a perpetual, irrevocable, +non-exclusive, worldwide, no-charge, royalty-free license to: + + * make, have made, use, sell, offer to sell, import, and otherwise transfer + your contribution in whole or in part, alone or in combination with or + included in any product, work or materials arising out of the project to + which your contribution was submitted, and + + * at our option, to sublicense these same rights to third parties through + multiple levels of sublicensees or other licensing arrangements. + +4. Except as set out above, you keep all right, title, and interest in your +contribution. The rights that you grant to us under these terms are effective +on the date you first submitted a contribution to us, even if your submission +took place before the date you sign these terms. + +5. You covenant, represent, warrant and agree that: + + * Each contribution that you submit is and shall be an original work of + authorship and you can legally grant the rights set out in this SCA; + + * to the best of your knowledge, each contribution will not violate any + third party's copyrights, trademarks, patents, or other intellectual + property rights; and + + * each contribution shall be in compliance with U.S. export control laws and + other applicable export and import laws. You agree to notify us if you + become aware of any circumstance which would make any of the foregoing + representations inaccurate in any respect. We may publicly disclose your + participation in the project, including the fact that you have signed the SCA. + +6. This SCA is governed by the laws of the State of California and applicable +U.S. Federal law. Any choice of law rules will not apply. + +7. Please place an “x” on one of the applicable statement below. Please do NOT +mark both statements: + + * [x] I am signing on behalf of myself as an individual and no other person + or entity, including my employer, has or will have rights with respect to my + contributions. + + * [ ] I am signing on behalf of my employer or a legal entity and I have the + actual authority to contractually bind that entity. + +## Contributor Details + +| Field | Entry | +|------------------------------- | -------------------- | +| Name | Walter Henry | +| Company name (if applicable) | ExplosionAI GmbH | +| Title or role (if applicable) | Executive Assistant | +| Date | September 14, 2020 | +| GitHub username | walterhenry | +| Website (optional) | | From 01aec7a313753775603a9e6f752f75cc16ac43fb Mon Sep 17 00:00:00 2001 From: Kunal Sharma Date: Wed, 21 Oct 2020 09:42:11 -0700 Subject: [PATCH 06/39] Adding MindMeld to Universe JSON (#6275) * Adding Mindmeld to Universe JSON Mindmeld is a conversational AI platform for deep-domain voice interfaces and chatbots. https://www.mindmeld.com/ * Signing contribution agreement. Co-authored-by: kunshar2 --- .github/contributors/KKsharma99.md | 108 +++++++++++++++++++++++++++++ website/meta/universe.json | 16 +++++ 2 files changed, 124 insertions(+) create mode 100644 .github/contributors/KKsharma99.md diff --git a/.github/contributors/KKsharma99.md b/.github/contributors/KKsharma99.md new file mode 100644 index 000000000..468770278 --- /dev/null +++ b/.github/contributors/KKsharma99.md @@ -0,0 +1,108 @@ + + +# spaCy contributor agreement + +This spaCy Contributor Agreement (**"SCA"**) is based on the +[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf). +The SCA applies to any contribution that you make to any product or project +managed by us (the **"project"**), and sets out the intellectual property rights +you grant to us in the contributed materials. The term **"us"** shall mean +[ExplosionAI UG (haftungsbeschränkt)](https://explosion.ai/legal). The term +**"you"** shall mean the person or entity identified below. + +If you agree to be bound by these terms, fill in the information requested +below and include the filled-in version with your first pull request, under the +folder [`.github/contributors/`](/.github/contributors/). The name of the file +should be your GitHub username, with the extension `.md`. For example, the user +example_user would create the file `.github/contributors/example_user.md`. + +Read this agreement carefully before signing. These terms and conditions +constitute a binding legal agreement. + +## Contributor Agreement + +1. The term "contribution" or "contributed materials" means any source code, +object code, patch, tool, sample, graphic, specification, manual, +documentation, or any other material posted or submitted by you to the project. + +2. With respect to any worldwide copyrights, or copyright applications and +registrations, in your contribution: + + * you hereby assign to us joint ownership, and to the extent that such + assignment is or becomes invalid, ineffective or unenforceable, you hereby + grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge, + royalty-free, unrestricted license to exercise all rights under those + copyrights. This includes, at our option, the right to sublicense these same + rights to third parties through multiple levels of sublicensees or other + licensing arrangements; + + * you agree that each of us can do all things in relation to your + contribution as if each of us were the sole owners, and if one of us makes + a derivative work of your contribution, the one who makes the derivative + work (or has it made will be the sole owner of that derivative work; + + * you agree that you will not assert any moral rights in your contribution + against us, our licensees or transferees; + + * you agree that we may register a copyright in your contribution and + exercise all ownership rights associated with it; and + + * you agree that neither of us has any duty to consult with, obtain the + consent of, pay or render an accounting to the other for any use or + distribution of your contribution. + +3. With respect to any patents you own, or that you can license without payment +to any third party, you hereby grant to us a perpetual, irrevocable, +non-exclusive, worldwide, no-charge, royalty-free license to: + + * make, have made, use, sell, offer to sell, import, and otherwise transfer + your contribution in whole or in part, alone or in combination with or + included in any product, work or materials arising out of the project to + which your contribution was submitted, and + + * at our option, to sublicense these same rights to third parties through + multiple levels of sublicensees or other licensing arrangements. + +4. Except as set out above, you keep all right, title, and interest in your +contribution. The rights that you grant to us under these terms are effective +on the date you first submitted a contribution to us, even if your submission +took place before the date you sign these terms. + +5. You covenant, represent, warrant and agree that: + + * Each contribution that you submit is and shall be an original work of + authorship and you can legally grant the rights set out in this SCA; + + * to the best of your knowledge, each contribution will not violate any + third party's copyrights, trademarks, patents, or other intellectual + property rights; and + + * each contribution shall be in compliance with U.S. export control laws and + other applicable export and import laws. You agree to notify us if you + become aware of any circumstance which would make any of the foregoing + representations inaccurate in any respect. We may publicly disclose your + participation in the project, including the fact that you have signed the SCA. + +6. This SCA is governed by the laws of the State of California and applicable +U.S. Federal law. Any choice of law rules will not apply. + +7. Please place an “x” on one of the applicable statement below. Please do NOT +mark both statements: + + * [x] I am signing on behalf of myself as an individual and no other person + or entity, including my employer, has or will have rights with respect my + contributions. + + * [ ] I am signing on behalf of my employer or a legal entity and I have the + actual authority to contractually bind that entity. + +## Contributor Details + +| Field | Entry | +|------------------------------- | -------------------- | +| Name | Kunal Sharma | +| Company name (if applicable) | | +| Title or role (if applicable) | | +| Date | 10/19/2020 | +| GitHub username | KKsharma99 | +| Website (optional) | | diff --git a/website/meta/universe.json b/website/meta/universe.json index 2badbdeb7..2d144e691 100644 --- a/website/meta/universe.json +++ b/website/meta/universe.json @@ -776,6 +776,22 @@ "category": ["conversational"], "tags": ["chatbots"] }, + { + "id": "mindmeld", + "title": "MindMeld - Conversational AI platform", + "slogan": "Conversational AI platform for deep-domain voice interfaces and chatbots", + "description": "The MindMeld Conversational AI platform is among the most advanced AI platforms for building production-quality conversational applications. It is a Python-based machine learning framework which encompasses all of the algorithms and utilities required for this purpose. (https://github.com/cisco/mindmeld)", + "github": "cisco/mindmeld", + "pip": "mindmeld", + "thumb": "https://www.mindmeld.com/img/mindmeld-logo.png", + "category": ["conversational", "ner"], + "tags": ["chatbots"], + "author": "Cisco", + "author_links": { + "github": "cisco/mindmeld", + "website": "https://www.mindmeld.com/" + } + }, { "id": "torchtext", "title": "torchtext", From 260c29794a1caa70f8b0702c31fcfecad6bfdadc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20=C5=A0=C3=ADpek?= Date: Thu, 22 Oct 2020 22:13:17 +0200 Subject: [PATCH 07/39] Fill contributor agreement by robertsipek (#6285) * Fill contributor agreement by robertsipek * Fill contributor agreement by robertsipek --- .github/contributors/robertsipek.md | 106 ++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 .github/contributors/robertsipek.md diff --git a/.github/contributors/robertsipek.md b/.github/contributors/robertsipek.md new file mode 100644 index 000000000..888d79859 --- /dev/null +++ b/.github/contributors/robertsipek.md @@ -0,0 +1,106 @@ +# spaCy contributor agreement + +This spaCy Contributor Agreement (**"SCA"**) is based on the +[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf). +The SCA applies to any contribution that you make to any product or project +managed by us (the **"project"**), and sets out the intellectual property rights +you grant to us in the contributed materials. The term **"us"** shall mean +[ExplosionAI GmbH](https://explosion.ai/legal). The term +**"you"** shall mean the person or entity identified below. + +If you agree to be bound by these terms, fill in the information requested +below and include the filled-in version with your first pull request, under the +folder [`.github/contributors/`](/.github/contributors/). The name of the file +should be your GitHub username, with the extension `.md`. For example, the user +example_user would create the file `.github/contributors/example_user.md`. + +Read this agreement carefully before signing. These terms and conditions +constitute a binding legal agreement. + +## Contributor Agreement + +1. The term "contribution" or "contributed materials" means any source code, +object code, patch, tool, sample, graphic, specification, manual, +documentation, or any other material posted or submitted by you to the project. + +2. With respect to any worldwide copyrights, or copyright applications and +registrations, in your contribution: + + * you hereby assign to us joint ownership, and to the extent that such + assignment is or becomes invalid, ineffective or unenforceable, you hereby + grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge, + royalty-free, unrestricted license to exercise all rights under those + copyrights. This includes, at our option, the right to sublicense these same + rights to third parties through multiple levels of sublicensees or other + licensing arrangements; + + * you agree that each of us can do all things in relation to your + contribution as if each of us were the sole owners, and if one of us makes + a derivative work of your contribution, the one who makes the derivative + work (or has it made will be the sole owner of that derivative work; + + * you agree that you will not assert any moral rights in your contribution + against us, our licensees or transferees; + + * you agree that we may register a copyright in your contribution and + exercise all ownership rights associated with it; and + + * you agree that neither of us has any duty to consult with, obtain the + consent of, pay or render an accounting to the other for any use or + distribution of your contribution. + +3. With respect to any patents you own, or that you can license without payment +to any third party, you hereby grant to us a perpetual, irrevocable, +non-exclusive, worldwide, no-charge, royalty-free license to: + + * make, have made, use, sell, offer to sell, import, and otherwise transfer + your contribution in whole or in part, alone or in combination with or + included in any product, work or materials arising out of the project to + which your contribution was submitted, and + + * at our option, to sublicense these same rights to third parties through + multiple levels of sublicensees or other licensing arrangements. + +4. Except as set out above, you keep all right, title, and interest in your +contribution. The rights that you grant to us under these terms are effective +on the date you first submitted a contribution to us, even if your submission +took place before the date you sign these terms. + +5. You covenant, represent, warrant and agree that: + + * Each contribution that you submit is and shall be an original work of + authorship and you can legally grant the rights set out in this SCA; + + * to the best of your knowledge, each contribution will not violate any + third party's copyrights, trademarks, patents, or other intellectual + property rights; and + + * each contribution shall be in compliance with U.S. export control laws and + other applicable export and import laws. You agree to notify us if you + become aware of any circumstance which would make any of the foregoing + representations inaccurate in any respect. We may publicly disclose your + participation in the project, including the fact that you have signed the SCA. + +6. This SCA is governed by the laws of the State of California and applicable +U.S. Federal law. Any choice of law rules will not apply. + +7. Please place an “x” on one of the applicable statement below. Please do NOT +mark both statements: + + * [x] I am signing on behalf of myself as an individual and no other person + or entity, including my employer, has or will have rights with respect to my + contributions. + + * [ ] I am signing on behalf of my employer or a legal entity and I have the + actual authority to contractually bind that entity. + +## Contributor Details + +| Field | Entry | +|------------------------------- | -------------------- | +| Name | Robert Šípek | +| Company name (if applicable) | | +| Title or role (if applicable) | | +| Date | 22.10.2020 | +| GitHub username | @robertsipek | +| Website (optional) | | From 4dd86306e9b4d01c8126de46824b2d5e03965276 Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Wed, 28 Oct 2020 16:32:07 +0100 Subject: [PATCH 08/39] Add Nepali to supported languages on website (#6315) --- website/meta/languages.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/website/meta/languages.json b/website/meta/languages.json index facfc3541..a00098571 100644 --- a/website/meta/languages.json +++ b/website/meta/languages.json @@ -242,6 +242,11 @@ "name": "Malayalam", "has_examples": true }, + { + "code": "ne", + "name": "Nepali", + "has_examples": true + }, { "code": "xx", "name": "Multi-language", From 287be48ad0ad3824c98b2fe6b5ab80e2a7a25c20 Mon Sep 17 00:00:00 2001 From: Ines Montani Date: Wed, 28 Oct 2020 17:36:25 +0100 Subject: [PATCH 09/39] Test FUNDING.yml [ci skip] --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..5257283ac --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +custom: ["https://prodi.gy"] From 1e4d7e059fb403d40e40094b8bb8860900523b8c Mon Sep 17 00:00:00 2001 From: Ines Montani Date: Wed, 28 Oct 2020 17:42:23 +0100 Subject: [PATCH 10/39] Revert "Test FUNDING.yml [ci skip]" This reverts commit 287be48ad0ad3824c98b2fe6b5ab80e2a7a25c20. --- .github/FUNDING.yml | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 5257283ac..000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -custom: ["https://prodi.gy"] From 8cc5ed6771010322954c2211b0e1f5a0fd14828a Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Thu, 29 Oct 2020 08:49:56 +0100 Subject: [PATCH 11/39] Add Macedonian to website languages --- website/meta/languages.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/website/meta/languages.json b/website/meta/languages.json index a00098571..4975a1a1e 100644 --- a/website/meta/languages.json +++ b/website/meta/languages.json @@ -247,6 +247,10 @@ "name": "Nepali", "has_examples": true }, + { + "code": "mk", + "name": "Macedonian" + }, { "code": "xx", "name": "Multi-language", From 0e55f806dd557fb373e8d11e9562654971bfc031 Mon Sep 17 00:00:00 2001 From: Duygu Altinok Date: Thu, 29 Oct 2020 09:43:17 +0100 Subject: [PATCH 12/39] Turkish tokenization improvements (#6268) * added single and paired orth variants * added token match * added long text tokenization test * inverted init * normalized lemmas to lowercase * more abbrevs * tests for ordinals and abbrevs * separated period abbvrevs to another list * fiex typo * added ordinal and abbrev tests * added number tests for dates * minor refinement * added inflected abbrevs regex * added percentage and inflection * cosmetics * added token match * added url inflection tests * excluded url tokens from custom pattern * removed url match import --- spacy/lang/tr/__init__.py | 3 +- spacy/lang/tr/tokenizer_exceptions.py | 280 ++++++++++++++++---------- spacy/tests/lang/tr/test_text.py | 21 ++ spacy/tests/lang/tr/test_tokenizer.py | 164 +++++++++++++++ 4 files changed, 359 insertions(+), 109 deletions(-) create mode 100644 spacy/tests/lang/tr/test_tokenizer.py diff --git a/spacy/lang/tr/__init__.py b/spacy/lang/tr/__init__.py index fb0883a68..5ec5e80ae 100644 --- a/spacy/lang/tr/__init__.py +++ b/spacy/lang/tr/__init__.py @@ -1,7 +1,7 @@ # coding: utf8 from __future__ import unicode_literals -from .tokenizer_exceptions import TOKENIZER_EXCEPTIONS +from .tokenizer_exceptions import TOKENIZER_EXCEPTIONS, TOKEN_MATCH from .stop_words import STOP_WORDS from .syntax_iterators import SYNTAX_ITERATORS from .lex_attrs import LEX_ATTRS @@ -24,6 +24,7 @@ class TurkishDefaults(Language.Defaults): ) tokenizer_exceptions = update_exc(BASE_EXCEPTIONS, TOKENIZER_EXCEPTIONS) stop_words = STOP_WORDS + token_match = TOKEN_MATCH syntax_iterators = SYNTAX_ITERATORS morph_rules = MORPH_RULES diff --git a/spacy/lang/tr/tokenizer_exceptions.py b/spacy/lang/tr/tokenizer_exceptions.py index f48e035d4..57dc986f1 100644 --- a/spacy/lang/tr/tokenizer_exceptions.py +++ b/spacy/lang/tr/tokenizer_exceptions.py @@ -1,119 +1,183 @@ # coding: utf8 from __future__ import unicode_literals -from ...symbols import ORTH, NORM +import re -_exc = {"sağol": [{ORTH: "sağ"}, {ORTH: "ol", NORM: "olun"}]} +from ..punctuation import ALPHA_LOWER, ALPHA +from ...symbols import ORTH, LEMMA, NORM + +_exc = {} -for exc_data in [ - {ORTH: "A.B.D.", NORM: "Amerika Birleşik Devletleri"}, - {ORTH: "Alb.", NORM: "Albay"}, - {ORTH: "Ar.Gör.", NORM: "Araştırma Görevlisi"}, - {ORTH: "Arş.Gör.", NORM: "Araştırma Görevlisi"}, - {ORTH: "Asb.", NORM: "Astsubay"}, - {ORTH: "Astsb.", NORM: "Astsubay"}, - {ORTH: "As.İz.", NORM: "Askeri İnzibat"}, - {ORTH: "Atğm", NORM: "Asteğmen"}, - {ORTH: "Av.", NORM: "Avukat"}, - {ORTH: "Apt.", NORM: "Apartmanı"}, - {ORTH: "Bçvş.", NORM: "Başçavuş"}, - {ORTH: "bk.", NORM: "bakınız"}, - {ORTH: "bknz.", NORM: "bakınız"}, - {ORTH: "Bnb.", NORM: "Binbaşı"}, - {ORTH: "bnb.", NORM: "binbaşı"}, - {ORTH: "Böl.", NORM: "Bölümü"}, - {ORTH: "Bşk.", NORM: "Başkanlığı"}, - {ORTH: "Bştbp.", NORM: "Baştabip"}, - {ORTH: "Bul.", NORM: "Bulvarı"}, - {ORTH: "Cad.", NORM: "Caddesi"}, - {ORTH: "çev.", NORM: "çeviren"}, - {ORTH: "Çvş.", NORM: "Çavuş"}, - {ORTH: "dak.", NORM: "dakika"}, - {ORTH: "dk.", NORM: "dakika"}, - {ORTH: "Doç.", NORM: "Doçent"}, - {ORTH: "doğ.", NORM: "doğum tarihi"}, - {ORTH: "drl.", NORM: "derleyen"}, - {ORTH: "Dz.", NORM: "Deniz"}, - {ORTH: "Dz.K.K.lığı", NORM: "Deniz Kuvvetleri Komutanlığı"}, - {ORTH: "Dz.Kuv.", NORM: "Deniz Kuvvetleri"}, - {ORTH: "Dz.Kuv.K.", NORM: "Deniz Kuvvetleri Komutanlığı"}, - {ORTH: "dzl.", NORM: "düzenleyen"}, - {ORTH: "Ecz.", NORM: "Eczanesi"}, - {ORTH: "ekon.", NORM: "ekonomi"}, - {ORTH: "Fak.", NORM: "Fakültesi"}, - {ORTH: "Gn.", NORM: "Genel"}, - {ORTH: "Gnkur.", NORM: "Genelkurmay"}, - {ORTH: "Gn.Kur.", NORM: "Genelkurmay"}, - {ORTH: "gr.", NORM: "gram"}, - {ORTH: "Hst.", NORM: "Hastanesi"}, - {ORTH: "Hs.Uzm.", NORM: "Hesap Uzmanı"}, - {ORTH: "huk.", NORM: "hukuk"}, - {ORTH: "Hv.", NORM: "Hava"}, - {ORTH: "Hv.K.K.lığı", NORM: "Hava Kuvvetleri Komutanlığı"}, - {ORTH: "Hv.Kuv.", NORM: "Hava Kuvvetleri"}, - {ORTH: "Hv.Kuv.K.", NORM: "Hava Kuvvetleri Komutanlığı"}, - {ORTH: "Hz.", NORM: "Hazreti"}, - {ORTH: "Hz.Öz.", NORM: "Hizmete Özel"}, - {ORTH: "İng.", NORM: "İngilizce"}, - {ORTH: "Jeol.", NORM: "Jeoloji"}, - {ORTH: "jeol.", NORM: "jeoloji"}, - {ORTH: "Korg.", NORM: "Korgeneral"}, - {ORTH: "Kur.", NORM: "Kurmay"}, - {ORTH: "Kur.Bşk.", NORM: "Kurmay Başkanı"}, - {ORTH: "Kuv.", NORM: "Kuvvetleri"}, - {ORTH: "Ltd.", NORM: "Limited"}, - {ORTH: "Mah.", NORM: "Mahallesi"}, - {ORTH: "mah.", NORM: "mahallesi"}, - {ORTH: "max.", NORM: "maksimum"}, - {ORTH: "min.", NORM: "minimum"}, - {ORTH: "Müh.", NORM: "Mühendisliği"}, - {ORTH: "müh.", NORM: "mühendisliği"}, - {ORTH: "MÖ.", NORM: "Milattan Önce"}, - {ORTH: "Onb.", NORM: "Onbaşı"}, - {ORTH: "Ord.", NORM: "Ordinaryüs"}, - {ORTH: "Org.", NORM: "Orgeneral"}, - {ORTH: "Ped.", NORM: "Pedagoji"}, - {ORTH: "Prof.", NORM: "Profesör"}, - {ORTH: "Sb.", NORM: "Subay"}, - {ORTH: "Sn.", NORM: "Sayın"}, - {ORTH: "sn.", NORM: "saniye"}, - {ORTH: "Sok.", NORM: "Sokak"}, - {ORTH: "Şb.", NORM: "Şube"}, - {ORTH: "Şti.", NORM: "Şirketi"}, - {ORTH: "Tbp.", NORM: "Tabip"}, - {ORTH: "T.C.", NORM: "Türkiye Cumhuriyeti"}, - {ORTH: "Tel.", NORM: "Telefon"}, - {ORTH: "tel.", NORM: "telefon"}, - {ORTH: "telg.", NORM: "telgraf"}, - {ORTH: "Tğm.", NORM: "Teğmen"}, - {ORTH: "tğm.", NORM: "teğmen"}, - {ORTH: "tic.", NORM: "ticaret"}, - {ORTH: "Tug.", NORM: "Tugay"}, - {ORTH: "Tuğg.", NORM: "Tuğgeneral"}, - {ORTH: "Tümg.", NORM: "Tümgeneral"}, - {ORTH: "Uzm.", NORM: "Uzman"}, - {ORTH: "Üçvş.", NORM: "Üstçavuş"}, - {ORTH: "Üni.", NORM: "Üniversitesi"}, - {ORTH: "Ütğm.", NORM: "Üsteğmen"}, - {ORTH: "vb.", NORM: "ve benzeri"}, - {ORTH: "vs.", NORM: "vesaire"}, - {ORTH: "Yard.", NORM: "Yardımcı"}, - {ORTH: "Yar.", NORM: "Yardımcı"}, - {ORTH: "Yd.Sb.", NORM: "Yedek Subay"}, - {ORTH: "Yard.Doç.", NORM: "Yardımcı Doçent"}, - {ORTH: "Yar.Doç.", NORM: "Yardımcı Doçent"}, - {ORTH: "Yb.", NORM: "Yarbay"}, - {ORTH: "Yrd.", NORM: "Yardımcı"}, - {ORTH: "Yrd.Doç.", NORM: "Yardımcı Doçent"}, - {ORTH: "Y.Müh.", NORM: "Yüksek mühendis"}, - {ORTH: "Y.Mim.", NORM: "Yüksek mimar"}, -]: - _exc[exc_data[ORTH]] = [exc_data] +_abbr_period_exc = [ + {ORTH: "A.B.D.", LEMMA: "Amerika Birleşik Devletleri", NORM: "Amerika"}, + {ORTH: "Alb.", LEMMA: "albay", NORM: "albay"}, + {ORTH: "Ank.", LEMMA: "Ankara", NORM: "Ankara"}, + {ORTH: "Ar.Gör.", LEMMA: "araştırma görevlisi"}, + {ORTH: "Arş.Gör.", LEMMA: "araştırma görevlisi"}, + {ORTH: "Asb.", LEMMA: "astsubay", NORM: "astsubay"}, + {ORTH: "Astsb.", LEMMA: "astsubay", NORM: "astsubay"}, + {ORTH: "As.İz.", LEMMA: "askeri inzibat"}, + {ORTH: "as.iz.", LEMMA: "askeri inzibat"}, + {ORTH: "Atğm", LEMMA: "asteğmen", NORM: "asteğmen"}, + {ORTH: "Av.", LEMMA: "avukat", NORM: "avukat"}, + {ORTH: "Apt.", LEMMA: "apartmanı", NORM: "apartmanı"}, + {ORTH: "apt.", LEMMA: "apartmanı", NORM: "apartmanı"}, + {ORTH: "Bçvş.", LEMMA: "başçavuş", NORM: "başçavuş"}, + {ORTH: "bçvş.", LEMMA: "başçavuş", NORM: "başçavuş"}, + {ORTH: "bk.", LEMMA: "bakınız", NORM: "bakınız"}, + {ORTH: "bknz.", LEMMA: "bakınız", NORM: "bakınız"}, + {ORTH: "Bnb.", LEMMA: "binbaşı", NORM: "binbaşı"}, + {ORTH: "bnb.", LEMMA: "binbaşı", NORM: "binbaşı"}, + {ORTH: "Böl.", LEMMA: "bölümü", NORM: "bölümü"}, + {ORTH: "böl.", LEMMA: "bölümü", NORM: "bölümü"}, + {ORTH: "Bşk.", LEMMA: "başkanlığı", NORM: "başkanlığı"}, + {ORTH: "bşk.", LEMMA: "başkanlığı", NORM: "başkanlığı"}, + {ORTH: "Bştbp.", LEMMA: "baştabip", NORM: "baştabip"}, + {ORTH: "bştbp.", LEMMA: "baştabip", NORM: "baştabip"}, + {ORTH: "Bul.", LEMMA: "bulvarı", NORM: "bulvarı"}, + {ORTH: "bul.", LEMMA: "bulvarı", NORM: "bulvarı"}, + {ORTH: "Cad.", LEMMA: "caddesi", NORM: "caddesi"}, + {ORTH: "cad.", LEMMA: "caddesi", NORM: "caddesi"}, + {ORTH: "çev.", LEMMA: "çeviren", NORM: "çeviren"}, + {ORTH: "Çvş.", LEMMA: "çavuş", NORM: "çavuş"}, + {ORTH: "çvş.", LEMMA: "çavuş", NORM: "çavuş"}, + {ORTH: "dak.", LEMMA: "dakika", NORM: "dakika"}, + {ORTH: "dk.", LEMMA: "dakika", NORM: "dakika"}, + {ORTH: "Doç.", LEMMA: "doçent", NORM: "doçent"}, + {ORTH: "doğ.", LEMMA: "doğum tarihi"}, + {ORTH: "Dr.", LEMMA: "doktor", NORM: "doktor"}, + {ORTH: "dr.", LEMMA: "doktor", NORM:"doktor"}, + {ORTH: "drl.", LEMMA: "derleyen", NORM: "derleyen"}, + {ORTH: "Dz.", LEMMA: "deniz", NORM: "deniz"}, + {ORTH: "Dz.K.K.lığı", LEMMA: "Deniz Kuvvetleri Komutanlığı"}, + {ORTH: "Dz.Kuv.", LEMMA: "Deniz Kuvvetleri"}, + {ORTH: "Dz.Kuv.K.", LEMMA: "Deniz Kuvvetleri Komutanlığı"}, + {ORTH: "dzl.", LEMMA: "düzenleyen", NORM: "düzenleyen"}, + {ORTH: "Ecz.", LEMMA: "eczanesi", NORM: "eczanesi"}, + {ORTH: "ecz.", LEMMA: "eczanesi", NORM: "eczanesi"}, + {ORTH: "ekon.", LEMMA: "ekonomi", NORM: "ekonomi"}, + {ORTH: "Fak.", LEMMA: "fakültesi", NORM: "fakültesi"}, + {ORTH: "Gn.", LEMMA: "genel", NORM: "genel"}, + {ORTH: "Gnkur.", LEMMA: "Genelkurmay", NORM: "Genelkurmay"}, + {ORTH: "Gn.Kur.", LEMMA: "Genelkurmay", NORM: "Genelkurmay"}, + {ORTH: "gr.", LEMMA: "gram", NORM: "gram"}, + {ORTH: "Hst.", LEMMA: "hastanesi", NORM: "hastanesi"}, + {ORTH: "hst.", LEMMA: "hastanesi", NORM: "hastanesi"}, + {ORTH: "Hs.Uzm.", LEMMA: "hesap uzmanı"}, + {ORTH: "huk.", LEMMA: "hukuk", NORM: "hukuk"}, + {ORTH: "Hv.", LEMMA: "hava", NORM: "hava"}, + {ORTH: "Hv.K.K.lığı", LEMMA: "Hava Kuvvetleri Komutanlığı"}, + {ORTH: "Hv.Kuv.", LEMMA: "Hava Kuvvetleri"}, + {ORTH: "Hv.Kuv.K.", LEMMA: "Hava Kuvvetleri Komutanlığı"}, + {ORTH: "Hz.", LEMMA: "hazreti", NORM: "hazreti"}, + {ORTH: "Hz.Öz.", LEMMA: "hizmete özel"}, + {ORTH: "İng.", LEMMA: "ingilizce", NORM: "ingilizce"}, + {ORTH: "İst.", LEMMA: "İstanbul", NORM: "İstanbul"}, + {ORTH: "Jeol.", LEMMA: "jeoloji", NORM: "jeoloji"}, + {ORTH: "jeol.", LEMMA: "jeoloji", NORM: "jeoloji"}, + {ORTH: "Korg.", LEMMA: "korgeneral", NORM: "korgeneral"}, + {ORTH: "Kur.", LEMMA: "kurmay", NORM: "kurmay"}, + {ORTH: "Kur.Bşk.", LEMMA: "kurmay başkanı"}, + {ORTH: "Kuv.", LEMMA: "kuvvetleri", NORM: "kuvvetleri"}, + {ORTH: "Ltd.", LEMMA: "limited", NORM: "limited"}, + {ORTH: "ltd.", LEMMA: "limited", NORM: "limited"}, + {ORTH: "Mah.", LEMMA: "mahallesi", NORM: "mahallesi"}, + {ORTH: "mah.", LEMMA: "mahallesi", NORM: "mahallesi"}, + {ORTH: "max.", LEMMA: "maksimum", NORM: "maksimum"}, + {ORTH: "min.", LEMMA: "minimum", NORM: "minimum"}, + {ORTH: "Müh.", LEMMA: "mühendisliği", NORM: "mühendisliği"}, + {ORTH: "müh.", LEMMA: "mühendisliği", NORM: "mühendisliği"}, + {ORTH: "M.Ö.", LEMMA: "milattan önce"}, + {ORTH: "M.S.", LEMMA: "milattan sonra"}, + {ORTH: "Onb.", LEMMA: "onbaşı", NORM: "onbaşı"}, + {ORTH: "Ord.", LEMMA: "ordinaryüs", NORM: "ordinaryüs"}, + {ORTH: "Org.", LEMMA: "orgeneral", NORM: "orgeneral"}, + {ORTH: "Ped.", LEMMA: "pedagoji", NORM: "pedagoji"}, + {ORTH: "Prof.", LEMMA: "profesör", NORM: "profesör"}, + {ORTH: "prof.", LEMMA: "profesör", NORM: "profesör"}, + {ORTH: "Sb.", LEMMA: "subay", NORM: "subay"}, + {ORTH: "Sn.", LEMMA: "sayın", NORM: "sayın"}, + {ORTH: "sn.", LEMMA: "saniye", NORM: "saniye"}, + {ORTH: "Sok.", LEMMA: "sokak", NORM: "sokak"}, + {ORTH: "sok.", LEMMA: "sokak", NORM: "sokak"}, + {ORTH: "Şb.", LEMMA: "şube", NORM: "şube"}, + {ORTH: "şb.", LEMMA: "şube", NORM: "şube"}, + {ORTH: "Şti.", LEMMA: "şirketi", NORM: "şirketi"}, + {ORTH: "şti.", LEMMA: "şirketi", NORM: "şirketi"}, + {ORTH: "Tbp.", LEMMA: "tabip", NORM: "tabip"}, + {ORTH: "tbp.", LEMMA: "tabip", NORM: "tabip"}, + {ORTH: "T.C.", LEMMA: "Türkiye Cumhuriyeti"}, + {ORTH: "Tel.", LEMMA: "telefon", NORM: "telefon"}, + {ORTH: "tel.", LEMMA: "telefon", NORM: "telefon"}, + {ORTH: "telg.", LEMMA: "telgraf", NORM: "telgraf"}, + {ORTH: "Tğm.", LEMMA: "teğmen", NORM: "teğmen"}, + {ORTH: "tğm.", LEMMA: "teğmen", NORM: "teğmen"}, + {ORTH: "tic.", LEMMA: "ticaret", NORM: "ticaret"}, + {ORTH: "Tug.", LEMMA: "tugay", NORM: "tugay"}, + {ORTH: "Tuğg.", LEMMA: "tuğgeneral", NORM: "tuğgeneral"}, + {ORTH: "Tümg.", LEMMA: "tümgeneral", NORM: "tümgeneral"}, + {ORTH: "Uzm.", LEMMA: "uzman", NORM: "uzman"}, + {ORTH: "Üçvş.", LEMMA: "üstçavuş", NORM: "üstçavuş"}, + {ORTH: "Üni.", LEMMA: "üniversitesi", NORM: "üniversitesi"}, + {ORTH: "Ütğm.", LEMMA: "üsteğmen", NORM: "üsteğmen"}, + {ORTH: "vb.", LEMMA: "ve benzeri"}, + {ORTH: "vs.", LEMMA: "vesaire", NORM: "vesaire"}, + {ORTH: "Yard.", LEMMA: "yardımcı", NORM: "yardımcı"}, + {ORTH: "Yar.", LEMMA: "yardımcı", NORM: "yardımcı"}, + {ORTH: "Yd.Sb.", LEMMA: "yedek subay"}, + {ORTH: "Yard.Doç.", LEMMA: "yardımcı doçent"}, + {ORTH: "Yar.Doç.", LEMMA: "yardımcı doçent"}, + {ORTH: "Yb.", LEMMA: "yarbay", NORM: "yarbay"}, + {ORTH: "Yrd.", LEMMA: "yardımcı", NORM: "yardımcı"}, + {ORTH: "Yrd.Doç.", LEMMA: "yardımcı doçent"}, + {ORTH: "Y.Müh.", LEMMA: "yüksek mühendis"}, + {ORTH: "Y.Mim.", LEMMA: "yüksek mimar"}, + {ORTH: "yy.", LEMMA: "yüzyıl", NORM: "yüzyıl"}, +] + +for abbr in _abbr_period_exc: + _exc[abbr[ORTH]] = [abbr] + +_abbr_exc = [ + {ORTH: "AB", LEMMA: "Avrupa Birliği", NORM: "Avrupa Birliği"}, + {ORTH: "ABD", LEMMA: "Amerika Birleşik Devletleri", NORM: "Amerika"}, + {ORTH: "ABS", LEMMA: "fren", NORM: "fren"}, + {ORTH: "AOÇ", LEMMA: "Atatürk orman çiftliği"}, + {ORTH: "ASKİ", LEMMA: "Ankara su ve kanalizasyon idaresi"}, + {ORTH: "Bağ-kur", LEMMA: "Bağkur", NORM: "Bağkur"}, + {ORTH: "BDDK", LEMMA: "bankacılık düzenleme ve denetleme kurumu"}, + {ORTH: "BJK", LEMMA: "Beşiktaş", NORM: "Beşiktaş"}, + {ORTH: "ESA", LEMMA: "Avrupa uzay ajansı", NORM: "Avrupa uzay ajansı"}, + {ORTH: "FB", LEMMA: "Fenerbahçe", NORM: "Fenerbahçe"}, + {ORTH: "GATA", LEMMA: "Gülhane askeri tıp akademisi"}, + {ORTH: "GS", LEMMA: "Galatasaray", NORM: "Galatasaray"}, + {ORTH: "İSKİ", LEMMA: "İstanbul su ve kanalizasyon idaresi"}, + {ORTH: "KBB", LEMMA: "kulak burun boğaz"}, + {ORTH: "RTÜK", LEMMA: "radyo ve televizyon üst kurulu", NORM: "radyo ve televizyon üst kurulu"}, + {ORTH: "TBMM", LEMMA: "Türkiye Büyük Millet Meclisi"}, + {ORTH: "TC", LEMMA: "Türkiye Cumhuriyeti"}, + {ORTH: "TÜİK", LEMMA: "Türkiye istatistik kurumu", NORM: "Türkiye istatistik kurumu"}, + {ORTH: "YÖK", LEMMA: "Yüksek Öğrenim Kurumu"}, +] + +for abbr in _abbr_exc: + _exc[abbr[ORTH]] = [abbr] -for orth in ["Dr.", "yy."]: - _exc[orth] = [{ORTH: orth}] +_num = r"[+-]?\d+([,.]\d+)*" +_ord_num = r"(\d+\.)" +_date = r"(((\d{1,2}[./-]){2})?(\d{4})|(\d{1,2}[./]\d{1,2}(\.)?))" +_dash_num = r"(([{al}\d]+/\d+)|(\d+/[{al}]))".format(al=ALPHA) +_roman_num = "M{0,3}(?:C[MD]|D?C{0,3})(?:X[CL]|L?X{0,3})(?:I[XV]|V?I{0,3})" +_roman_ord = r"({rn})\.".format(rn=_roman_num) +_time_exp = r"\d+(:\d+)*" + +_inflections = r"'[{al}]+".format(al=ALPHA_LOWER) +_abbrev_inflected = r"[{a}]+\.'[{al}]+".format(a=ALPHA, al=ALPHA_LOWER) + +_nums = r"(({d})|({dn})|({te})|({on})|({n})|({ro})|({rn}))({inf})?".format(d=_date, dn=_dash_num, te=_time_exp, on=_ord_num, n=_num, ro=_roman_ord, rn=_roman_num, inf=_inflections) TOKENIZER_EXCEPTIONS = _exc +TOKEN_MATCH = re.compile(r"^({abbr})|({n})$".format(n=_nums, abbr=_abbrev_inflected)).match diff --git a/spacy/tests/lang/tr/test_text.py b/spacy/tests/lang/tr/test_text.py index 2fe638b5f..75ff649d3 100644 --- a/spacy/tests/lang/tr/test_text.py +++ b/spacy/tests/lang/tr/test_text.py @@ -5,6 +5,27 @@ import pytest from spacy.lang.tr.lex_attrs import like_num +def test_tr_tokenizer_handles_long_text(tr_tokenizer): + text = """Pamuk nasıl ipliğe dönüştürülür? + +Sıkıştırılmış balyalar halindeki pamuk, iplik fabrikasına getirildiğinde hem +lifleri birbirine dolaşmıştır, hem de tarladan toplanırken araya bitkinin +parçaları karışmıştır. Üstelik balyalardaki pamuğun cinsi aynı olsa bile kalitesi +değişeceğinden, önce bütün balyaların birbirine karıştırılarak harmanlanması gerekir. + +Daha sonra pamuk yığınları, liflerin açılıp temizlenmesi için tek bir birim halinde +birleştirilmiş çeşitli makinelerden geçirilir.Bunlardan biri, dönen tokmaklarıyla +pamuğu dövüp kabartarak dağınık yumaklar haline getiren ve liflerin arasındaki yabancı +maddeleri temizleyen hallaç makinesidir. Daha sonra tarak makinesine giren pamuk demetleri, +herbirinin yüzeyinde yüzbinlerce incecik iğne bulunan döner silindirlerin arasından geçerek lif lif ayrılır +ve tül inceliğinde gevşek bir örtüye dönüşür. Ama bir sonraki makine bu lifleri dağınık +ve gevşek bir biçimde birbirine yaklaştırarak 2 cm eninde bir pamuk şeridi haline getirir.""" + tokens = tr_tokenizer(text) + assert len(tokens) == 146 + + + + @pytest.mark.parametrize( "word", [ diff --git a/spacy/tests/lang/tr/test_tokenizer.py b/spacy/tests/lang/tr/test_tokenizer.py new file mode 100644 index 000000000..bc0e159e7 --- /dev/null +++ b/spacy/tests/lang/tr/test_tokenizer.py @@ -0,0 +1,164 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import pytest + + +ABBREV_TESTS = [ + ("Dr. Murat Bey ile görüştüm.", ["Dr.", "Murat", "Bey", "ile", "görüştüm", "."]), + ("Dr.la görüştüm.", ["Dr.la", "görüştüm", "."]), + ("Dr.'la görüştüm.", ["Dr.'la", "görüştüm", "."]), + ("TBMM'de çalışıyormuş.", ["TBMM'de", "çalışıyormuş", "."]), + ("Hem İst. hem Ank. bu konuda gayet iyi durumda.", ["Hem", "İst.", "hem", "Ank.", "bu", "konuda", "gayet", "iyi", "durumda", "."]), + ("Hem İst. hem Ank.'da yağış var.", ["Hem", "İst.", "hem", "Ank.'da", "yağış", "var", "."]), + ("Dr.", ["Dr."]), + ("Yrd.Doç.", ["Yrd.Doç."]), + ("Prof.'un", ["Prof.'un"]), + ("Böl.'nde", ["Böl.'nde"]), +] + + + +URL_TESTS = [ + ("Bizler de www.duygu.com.tr adında bir websitesi kurduk.", ["Bizler", "de", "www.duygu.com.tr", "adında", "bir", "websitesi", "kurduk", "."]), + ("Bizler de https://www.duygu.com.tr adında bir websitesi kurduk.", ["Bizler", "de", "https://www.duygu.com.tr", "adında", "bir", "websitesi", "kurduk", "."]), + ("Bizler de www.duygu.com.tr'dan satın aldık.", ["Bizler", "de", "www.duygu.com.tr'dan", "satın", "aldık", "."]), + ("Bizler de https://www.duygu.com.tr'dan satın aldık.", ["Bizler", "de", "https://www.duygu.com.tr'dan", "satın", "aldık", "."]), +] + + + +NUMBER_TESTS = [ + ("Rakamla 6 yazılıydı.", ["Rakamla", "6", "yazılıydı", "."]), + ("Hava -4 dereceydi.", ["Hava", "-4", "dereceydi", "."]), + ("Hava sıcaklığı -4ten +6ya yükseldi.", ["Hava", "sıcaklığı", "-4ten", "+6ya", "yükseldi", "."]), + ("Hava sıcaklığı -4'ten +6'ya yükseldi.", ["Hava", "sıcaklığı", "-4'ten", "+6'ya", "yükseldi", "."]), + ("Yarışta 6. oldum.", ["Yarışta", "6.", "oldum", "."]), + ("Yarışta 438547745. oldum.", ["Yarışta", "438547745.", "oldum", "."]), + ("Kitap IV. Murat hakkında.",["Kitap", "IV.", "Murat", "hakkında", "."]), + #("Bana söylediği sayı 6.", ["Bana", "söylediği", "sayı", "6", "."]), + ("Saat 6'da buluşalım.", ["Saat", "6'da", "buluşalım", "."]), + ("Saat 6dan sonra buluşalım.", ["Saat", "6dan", "sonra", "buluşalım", "."]), + ("6.dan sonra saymadım.", ["6.dan", "sonra", "saymadım", "."]), + ("6.'dan sonra saymadım.", ["6.'dan", "sonra", "saymadım", "."]), + ("Saat 6'ydı.", ["Saat", "6'ydı", "."]), + ("5'te", ["5'te"]), + ("6'da", ["6'da"]), + ("9dan", ["9dan"]), + ("19'da", ["19'da"]), + ("VI'da", ["VI'da"]), + ("5.", ["5."]), + ("72.", ["72."]), + ("VI.", ["VI."]), + ("6.'dan", ["6.'dan"]), + ("19.'dan", ["19.'dan"]), + ("6.dan", ["6.dan"]), + ("16.dan", ["16.dan"]), + ("VI.'dan", ["VI.'dan"]), + ("VI.dan", ["VI.dan"]), + ("Hepsi 1994 yılında oldu.", ["Hepsi", "1994", "yılında", "oldu", "."]), + ("Hepsi 1994'te oldu.", ["Hepsi", "1994'te", "oldu", "."]), + ("2/3 tarihli faturayı bulamadım.", ["2/3", "tarihli", "faturayı", "bulamadım", "."]), + ("2.3 tarihli faturayı bulamadım.", ["2.3", "tarihli", "faturayı", "bulamadım", "."]), + ("2.3. tarihli faturayı bulamadım.", ["2.3.", "tarihli", "faturayı", "bulamadım", "."]), + ("2/3/2020 tarihli faturayı bulamadm.", ["2/3/2020", "tarihli", "faturayı", "bulamadm", "."]), + ("2/3/1987 tarihinden beri burda yaşıyorum.", ["2/3/1987", "tarihinden", "beri", "burda", "yaşıyorum", "."]), + ("2-3-1987 tarihinden beri burdayım.", ["2-3-1987", "tarihinden", "beri", "burdayım", "."]), + ("2.3.1987 tarihinden beri burdayım.", ["2.3.1987", "tarihinden", "beri", "burdayım", "."]), + ("Bu olay 2005-2006 tarihleri arasında oldu.", ["Bu", "olay", "2005", "-", "2006", "tarihleri", "arasında", "oldu", "."]), + ("Bu olay 4/12/2005-21/3/2006 tarihleri arasında oldu.", ["Bu", "olay", "4/12/2005", "-", "21/3/2006", "tarihleri", "arasında", "oldu", ".",]), + ("Ek fıkra: 5/11/2003-4999/3 maddesine göre uygundur.", ["Ek", "fıkra", ":", "5/11/2003", "-", "4999/3", "maddesine", "göre", "uygundur", "."]), + ("2/A alanları: 6831 sayılı Kanunun 2nci maddesinin birinci fıkrasının (A) bendine göre", ["2/A", "alanları", ":", "6831", "sayılı", "Kanunun", "2nci", "maddesinin", "birinci", "fıkrasının", "(", "A", ")", "bendine", "göre"]), + ("ŞEHİTTEĞMENKALMAZ Cad. No: 2/311", ["ŞEHİTTEĞMENKALMAZ", "Cad.", "No", ":", "2/311"]), + ("2-3-2025", ["2-3-2025",]), + ("2/3/2025", ["2/3/2025"]), + ("Yıllardır 0.5 uç kullanıyorum.", ["Yıllardır", "0.5", "uç", "kullanıyorum", "."]), + ("Kan değerlerim 0.5-0.7 arasıydı.", ["Kan", "değerlerim", "0.5", "-", "0.7", "arasıydı", "."]), + ("0.5", ["0.5"]), + ("1/2", ["1/2"]), + ("%1", ["%", "1"]), + ("%1lik", ["%", "1lik"]), + ("%1'lik", ["%", "1'lik"]), + ("%1lik dilim", ["%", "1lik", "dilim"]), + ("%1'lik dilim", ["%", "1'lik", "dilim"]), + ("%1.5", ["%", "1.5"]), + #("%1-%2 arası büyüme bekleniyor.", ["%", "1", "-", "%", "2", "arası", "büyüme", "bekleniyor", "."]), + ("%1-2 arası büyüme bekliyoruz.", ["%", "1", "-", "2", "arası", "büyüme", "bekliyoruz", "."]), + ("%11-12 arası büyüme bekliyoruz.", ["%", "11", "-", "12", "arası", "büyüme", "bekliyoruz", "."]), + ("%1.5luk büyüme bekliyoruz.", ["%", "1.5luk", "büyüme", "bekliyoruz", "."]), + ("Saat 1-2 arası gelin lütfen.", ["Saat", "1", "-", "2", "arası", "gelin", "lütfen", "."]), + ("Saat 15:30 gibi buluşalım.", ["Saat", "15:30", "gibi", "buluşalım", "."]), + ("Saat 15:30'da buluşalım.", ["Saat", "15:30'da", "buluşalım", "."]), + ("Saat 15.30'da buluşalım.", ["Saat", "15.30'da", "buluşalım", "."]), + ("Saat 15.30da buluşalım.", ["Saat", "15.30da", "buluşalım", "."]), + ("Saat 15 civarı buluşalım.", ["Saat", "15", "civarı", "buluşalım", "."]), + ("9’daki otobüse binsek mi?", ["9’daki", "otobüse", "binsek", "mi", "?"]), + ("Okulumuz 3-B şubesi", ["Okulumuz", "3-B", "şubesi"]), + ("Okulumuz 3/B şubesi", ["Okulumuz", "3/B", "şubesi"]), + ("Okulumuz 3B şubesi", ["Okulumuz", "3B", "şubesi"]), + ("Okulumuz 3b şubesi", ["Okulumuz", "3b", "şubesi"]), + ("Antonio Gaudí 20. yüzyılda, 1904-1914 yılları arasında on yıl süren bir reform süreci getirmiştir.", ["Antonio", "Gaudí", "20.", "yüzyılda", ",", "1904", "-", "1914", "yılları", "arasında", "on", "yıl", "süren", "bir", "reform", "süreci", "getirmiştir", "."]), + ("Dizel yakıtın avro bölgesi ortalaması olan 1,165 avroya kıyasla litre başına 1,335 avroya mal olduğunu gösteriyor.", ["Dizel", "yakıtın", "avro", "bölgesi", "ortalaması", "olan", "1,165", "avroya", "kıyasla", "litre", "başına", "1,335", "avroya", "mal", "olduğunu", "gösteriyor", "."]), + ("Marcus Antonius M.Ö. 1 Ocak 49'da, Sezar'dan Vali'nin kendisini barış dostu ilan ettiği bir bildiri yayınlamıştır.", ["Marcus", "Antonius", "M.Ö.", "1", "Ocak", "49'da", ",", "Sezar'dan", "Vali'nin", "kendisini", "barış", "dostu", "ilan", "ettiği", "bir", "bildiri", "yayınlamıştır", "."]) +] + + +PUNCT_TESTS = [ + ("Gitmedim dedim ya!", ["Gitmedim", "dedim", "ya", "!"]), + ("Gitmedim dedim ya!!", ["Gitmedim", "dedim", "ya", "!", "!"]), + ("Gitsek mi?", ["Gitsek", "mi", "?"]), + ("Gitsek mi??", ["Gitsek", "mi", "?", "?"]), + ("Gitsek mi?!?", ["Gitsek", "mi", "?", "!", "?"]), + ("Ankara - Antalya arası otobüs işliyor.", ["Ankara", "-", "Antalya", "arası", "otobüs", "işliyor", "."]), + ("Ankara-Antalya arası otobüs işliyor.", ["Ankara", "-", "Antalya", "arası", "otobüs", "işliyor", "."]), + ("Sen--ben, ya da onlar.", ["Sen", "--", "ben", ",", "ya", "da", "onlar", "."]), + ("Senden, benden, bizden şarkısını biliyor musun?", ["Senden", ",", "benden", ",", "bizden", "şarkısını", "biliyor", "musun", "?"]), + ("Akif'le geldik, sonra da o ayrıldı.", ["Akif'le", "geldik", ",", "sonra", "da", "o", "ayrıldı", "."]), + ("Bu adam ne dedi şimdi???", ["Bu", "adam", "ne", "dedi", "şimdi", "?", "?", "?"]), + ("Yok hasta olmuş, yok annesi hastaymış, bahaneler işte...", ["Yok", "hasta", "olmuş", ",", "yok", "annesi", "hastaymış", ",", "bahaneler", "işte", "..."]), + ("Ankara'dan İstanbul'a ... bir aşk hikayesi.", ["Ankara'dan", "İstanbul'a", "...", "bir", "aşk", "hikayesi", "."]), + ("Ahmet'te", ["Ahmet'te"]), + ("İstanbul'da", ["İstanbul'da"]), +] + +GENERAL_TESTS = [ + ("1914'teki Endurance seferinde, Sir Ernest Shackleton'ın kaptanlığını yaptığı İngiliz Endurance gemisi yirmi sekiz kişi ile Antarktika'yı geçmek üzere yelken açtı.", ["1914'teki", "Endurance", "seferinde", ",", "Sir", "Ernest", "Shackleton'ın", "kaptanlığını", "yaptığı", "İngiliz", "Endurance", "gemisi", "yirmi", "sekiz", "kişi", "ile", "Antarktika'yı", "geçmek", "üzere", "yelken", "açtı", "."]), + ("Danışılan \"%100 Cospedal\" olduğunu belirtti.", ["Danışılan", '"', "%", "100", "Cospedal", '"', "olduğunu", "belirtti", "."]), + ("1976'da parkur artık kullanılmıyordu; 1990'da ise bir yangın, daha sonraları ahırlarla birlikte yıkılacak olan tahta tribünlerden geri kalanları da yok etmişti.", ["1976'da", "parkur", "artık", "kullanılmıyordu", ";", "1990'da", "ise", "bir", "yangın", ",", "daha", "sonraları", "ahırlarla", "birlikte", "yıkılacak", "olan", "tahta", "tribünlerden", "geri", "kalanları", "da", "yok", "etmişti", "."]), + ("Dahiyane bir ameliyat ve zorlu bir rehabilitasyon sürecinden sonra, tamamen iyileştim.", ["Dahiyane", "bir", "ameliyat", "ve", "zorlu", "bir", "rehabilitasyon", "sürecinden", "sonra", ",", "tamamen", "iyileştim", "."]), + ("Yaklaşık iki hafta süren bireysel erken oy kullanma döneminin ardından 5,7 milyondan fazla Floridalı sandık başına gitti.", ["Yaklaşık", "iki", "hafta", "süren", "bireysel", "erken", "oy", "kullanma", "döneminin", "ardından", "5,7", "milyondan", "fazla", "Floridalı", "sandık", "başına", "gitti", "."]), + ("Ancak, bu ABD Çevre Koruma Ajansı'nın dünyayı bu konularda uyarmasının ardından ortaya çıktı.", ["Ancak", ",", "bu", "ABD", "Çevre", "Koruma", "Ajansı'nın", "dünyayı", "bu", "konularda", "uyarmasının", "ardından", "ortaya", "çıktı", "."]), + ("Ortalama şansa ve 10.000 Sterlin değerinde tahvillere sahip bir yatırımcı yılda 125 Sterlin ikramiye kazanabilir.", ["Ortalama", "şansa", "ve", "10.000", "Sterlin", "değerinde", "tahvillere", "sahip", "bir", "yatırımcı", "yılda", "125", "Sterlin", "ikramiye", "kazanabilir", "."]), + ("Granit adaları; Seyşeller ve Tioman ile Saint Helena gibi volkanik adaları kapsar." , ["Granit", "adaları", ";", "Seyşeller", "ve", "Tioman", "ile", "Saint", "Helena", "gibi", "volkanik", "adaları", "kapsar", "."]), + ("Barış antlaşmasıyla İspanya, Amerika'ya Porto Riko, Guam ve Filipinler kolonilerini devretti.", ["Barış", "antlaşmasıyla", "İspanya", ",", "Amerika'ya", "Porto", "Riko", ",", "Guam", "ve", "Filipinler", "kolonilerini", "devretti", "."]), + ("Makedonya\'nın sınır bölgelerini güvence altına alan Philip, büyük bir Makedon ordusu kurdu ve uzun bir fetih seferi için Trakya\'ya doğru yürüdü.", ["Makedonya\'nın", "sınır", "bölgelerini", "güvence", "altına", "alan", "Philip", ",", "büyük", "bir", "Makedon", "ordusu", "kurdu", "ve", "uzun", "bir", "fetih", "seferi", "için", "Trakya\'ya", "doğru", "yürüdü", "."]), + ("Fransız gazetesi Le Figaro'ya göre bu hükumet planı sayesinde 42 milyon Euro kazanç sağlanabilir ve elde edilen paranın 15.5 milyonu ulusal güvenlik için kullanılabilir.", ["Fransız", "gazetesi", "Le", "Figaro'ya", "göre", "bu", "hükumet", "planı", "sayesinde", "42", "milyon", "Euro", "kazanç", "sağlanabilir", "ve", "elde", "edilen", "paranın", "15.5", "milyonu", "ulusal", "güvenlik", "için", "kullanılabilir", "."]), + ("Ortalama şansa ve 10.000 Sterlin değerinde tahvillere sahip bir yatırımcı yılda 125 Sterlin ikramiye kazanabilir.", ["Ortalama", "şansa", "ve", "10.000", "Sterlin", "değerinde", "tahvillere", "sahip", "bir", "yatırımcı", "yılda", "125", "Sterlin", "ikramiye", "kazanabilir", "."]), + ("3 Kasım Salı günü, Ankara Belediye Başkanı 2014'te hükümetle birlikte oluşturulan kentsel gelişim anlaşmasını askıya alma kararı verdi.", ["3", "Kasım", "Salı", "günü", ",", "Ankara", "Belediye", "Başkanı", "2014'te", "hükümetle", "birlikte", "oluşturulan", "kentsel", "gelişim", "anlaşmasını", "askıya", "alma", "kararı", "verdi", "."]), + ("Stalin, Abakumov'u Beria'nın enerji bakanlıkları üzerindeki baskınlığına karşı MGB içinde kendi ağını kurmaya teşvik etmeye başlamıştı.", ["Stalin", ",", "Abakumov'u", "Beria'nın", "enerji", "bakanlıkları", "üzerindeki", "baskınlığına", "karşı", "MGB", "içinde", "kendi", "ağını", "kurmaya", "teşvik", "etmeye", "başlamıştı", "."]), + ("Güney Avrupa'daki kazı alanlarının çoğunluğu gibi, bu bulgu M.Ö. 5. yüzyılın başlar", ["Güney", "Avrupa'daki", "kazı", "alanlarının", "çoğunluğu", "gibi", ",", "bu", "bulgu", "M.Ö.", "5.", "yüzyılın", "başlar"]), + ("Sağlığın bozulması Hitchcock hayatının son yirmi yılında üretimini azalttı.", ["Sağlığın", "bozulması", "Hitchcock", "hayatının", "son", "yirmi", "yılında", "üretimini", "azalttı", "."]), +] + + + +TESTS = (ABBREV_TESTS + URL_TESTS + NUMBER_TESTS + PUNCT_TESTS + GENERAL_TESTS) + + + +def test_tr_tokenizer_exc_lemma_in_text(tr_tokenizer): + text = "Dr. Murat Bey ile görüştüm." + tokens = tr_tokenizer(text) + assert len(tokens) == 6 + assert tokens[0].text == "Dr." + assert tokens[0].lemma_ == "doktor" + + + +@pytest.mark.parametrize("text,expected_tokens", TESTS) +def test_tr_tokenizer_handles_allcases(tr_tokenizer, text, expected_tokens): + tokens = tr_tokenizer(text) + token_list = [token.text for token in tokens if not token.is_space] + print(token_list) + assert expected_tokens == token_list + From 73d22d96ff5f601c36134f6ba0ddcd94aa2f2901 Mon Sep 17 00:00:00 2001 From: Alec Chapman Date: Thu, 29 Oct 2020 07:53:56 -0600 Subject: [PATCH 13/39] add medspacy to universe and fix example w/ cov-bsv --- website/meta/universe.json | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/website/meta/universe.json b/website/meta/universe.json index 2d144e691..dc323e078 100644 --- a/website/meta/universe.json +++ b/website/meta/universe.json @@ -2536,7 +2536,7 @@ "import cov_bsv", "", "nlp = cov_bsv.load()", - "text = 'Pt tested for COVID-19. His wife was recently diagnosed with novel coronavirus. SARS-COV-2: Detected'", + "doc = nlp('Pt tested for COVID-19. His wife was recently diagnosed with novel coronavirus. SARS-COV-2: Detected')", "", "print(doc.ents)", "print(doc._.cov_classification)", @@ -2548,6 +2548,35 @@ "author_links": { "github": "abchapman93" } + }, + { + "id": "medspacy", + "title": "medspaCy", + "thumb": "https://github.com/medspacy/medspacy/blob/master/images/medspacy_logo.png", + "slogan": "A toolkit for clinical NLP with spaCy.", + "github": "medspacy/medspacy", + "description": "A toolkit for clinical NLP with spaCy. Features include sentence splitting, section detection, and asserting negation, family history, and uncertainty.", + "pip": "medspacy", + "code_example": [ + "import medspacy", + "from medspacy.ner import TargetRule", + "", + "nlp = medspacy.load()", + "print(nlp.pipe_names)", + "", + "nlp.get_pipe('target_matcher').add([TargetRule('stroke', 'CONDITION'), TargetRule('diabetes', 'CONDITION'), TargetRule('pna', 'CONDITION')])", + "doc = nlp('Patient has hx of stroke. Mother diagnosed with diabetes. No evidence of pna.')", + "", + "for ent in doc.ents:", + " print(ent, ent._.is_negated, ent._.is_family, ent._.is_historical)", + "medspacy.visualization.visualize_ent(doc)" + ], + "category": ["biomedical", "scientific", "research"], + "tags": ["clinical"], + "author": "medspacy", + "author_links": { + "github": "medspacy" + } }, { "id": "rita-dsl", From 45c9a688285081cd69faa0627d9bcaf1f5e799a1 Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Sat, 31 Oct 2020 12:18:48 +0100 Subject: [PATCH 14/39] Identify final Matcher pattern node by quantifier (#6317) Modify the internal pattern representation in `Matcher` patterns to identify the final ID state using a unique quantifier rather than a combination of other attributes. It was insufficient to identify the final ID node based on an uninitialized `quantifier` (coincidentally being the same as the `ZERO`) with `nr_attr` as 0. (In addition, it was potentially bug-prone that `nr_attr` was set to 0 even though attrs were allocated.) In the case of `{"OP": "!"}` (a valid, if pointless, pattern), `nr_attr` is 0 and the quantifier is ZERO, so the previous methods for incrementing to the ID node at the end of the pattern weren't able to distinguish the final ID node from the `{"OP": "!"}` pattern. --- spacy/matcher/matcher.pxd | 1 + spacy/matcher/matcher.pyx | 30 ++++++------------------- spacy/tests/matcher/test_matcher_api.py | 12 ++++++++++ 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/spacy/matcher/matcher.pxd b/spacy/matcher/matcher.pxd index dd04153bf..a668dc142 100644 --- a/spacy/matcher/matcher.pxd +++ b/spacy/matcher/matcher.pxd @@ -26,6 +26,7 @@ cdef enum quantifier_t: ZERO_PLUS ONE ONE_PLUS + FINAL_ID cdef struct AttrValueC: diff --git a/spacy/matcher/matcher.pyx b/spacy/matcher/matcher.pyx index 8fbfe305a..bc615b07c 100644 --- a/spacy/matcher/matcher.pyx +++ b/spacy/matcher/matcher.pyx @@ -558,7 +558,7 @@ cdef char get_is_match(PatternStateC state, cdef char get_is_final(PatternStateC state) nogil: - if state.pattern[1].nr_attr == 0 and state.pattern[1].attrs != NULL: + if state.pattern[1].quantifier == FINAL_ID: id_attr = state.pattern[1].attrs[0] if id_attr.attr != ID: with gil: @@ -597,36 +597,20 @@ cdef TokenPatternC* init_pattern(Pool mem, attr_t entity_id, object token_specs) pattern[i].nr_py = len(predicates) pattern[i].key = hash64(pattern[i].attrs, pattern[i].nr_attr * sizeof(AttrValueC), 0) i = len(token_specs) - # Even though here, nr_attr == 0, we're storing the ID value in attrs[0] (bug-prone, thread carefully!) - pattern[i].attrs = mem.alloc(2, sizeof(AttrValueC)) + # Use quantifier to identify final ID pattern node (rather than previous + # uninitialized quantifier == 0/ZERO + nr_attr == 0 + non-zero-length attrs) + pattern[i].quantifier = FINAL_ID + pattern[i].attrs = mem.alloc(1, sizeof(AttrValueC)) pattern[i].attrs[0].attr = ID pattern[i].attrs[0].value = entity_id - pattern[i].nr_attr = 0 + pattern[i].nr_attr = 1 pattern[i].nr_extra_attr = 0 pattern[i].nr_py = 0 return pattern cdef attr_t get_ent_id(const TokenPatternC* pattern) nogil: - # There have been a few bugs here. We used to have two functions, - # get_ent_id and get_pattern_key that tried to do the same thing. These - # are now unified to try to solve the "ghost match" problem. - # Below is the previous implementation of get_ent_id and the comment on it, - # preserved for reference while we figure out whether the heisenbug in the - # matcher is resolved. - # - # - # cdef attr_t get_ent_id(const TokenPatternC* pattern) nogil: - # # The code was originally designed to always have pattern[1].attrs.value - # # be the ent_id when we get to the end of a pattern. However, Issue #2671 - # # showed this wasn't the case when we had a reject-and-continue before a - # # match. - # # The patch to #2671 was wrong though, which came up in #3839. - # while pattern.attrs.attr != ID: - # pattern += 1 - # return pattern.attrs.value - while pattern.nr_attr != 0 or pattern.nr_extra_attr != 0 or pattern.nr_py != 0 \ - or pattern.quantifier != ZERO: + while pattern.quantifier != FINAL_ID: pattern += 1 id_attr = pattern[0].attrs[0] if id_attr.attr != ID: diff --git a/spacy/tests/matcher/test_matcher_api.py b/spacy/tests/matcher/test_matcher_api.py index 1112195da..a23eb392d 100644 --- a/spacy/tests/matcher/test_matcher_api.py +++ b/spacy/tests/matcher/test_matcher_api.py @@ -479,3 +479,15 @@ def test_matcher_span(matcher): assert len(matcher(doc)) == 2 assert len(matcher(span_js)) == 1 assert len(matcher(span_java)) == 1 + + +def test_matcher_remove_zero_operator(en_vocab): + matcher = Matcher(en_vocab) + pattern = [{"OP": "!"}] + matcher.add("Rule", [pattern]) + doc = Doc(en_vocab, words=["This", "is", "a", "test", "."]) + matches = matcher(doc) + assert len(matches) == 0 + assert "Rule" in matcher + matcher.remove("Rule") + assert "Rule" not in matcher From 204c7c8a00194bf1443812788e319a6b3cfdd263 Mon Sep 17 00:00:00 2001 From: Alec Chapman Date: Sun, 1 Nov 2020 07:53:48 -0700 Subject: [PATCH 15/39] fix thumbnail link to be github raw url --- website/meta/universe.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/meta/universe.json b/website/meta/universe.json index dc323e078..5e5bf310e 100644 --- a/website/meta/universe.json +++ b/website/meta/universe.json @@ -2552,7 +2552,7 @@ { "id": "medspacy", "title": "medspaCy", - "thumb": "https://github.com/medspacy/medspacy/blob/master/images/medspacy_logo.png", + "thumb": "https://raw.githubusercontent.com/medspacy/medspacy/master/images/medspacy_logo.png", "slogan": "A toolkit for clinical NLP with spaCy.", "github": "medspacy/medspacy", "description": "A toolkit for clinical NLP with spaCy. Features include sentence splitting, section detection, and asserting negation, family history, and uncertainty.", From 31de700b0ff8d537b8e3215a7c7c5df0c86f71f9 Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Thu, 5 Nov 2020 09:16:26 +0100 Subject: [PATCH 16/39] Fix on_match callback and remove empty patterns (#6312) For the `DependencyMatcher`: * Fix on_match callback so that it is called once per matched pattern * Fix results so that patterns with empty match lists are not returned --- spacy/matcher/dependencymatcher.pyx | 12 ++--- spacy/tests/matcher/test_matcher_api.py | 59 +++++++++++++------------ 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/spacy/matcher/dependencymatcher.pyx b/spacy/matcher/dependencymatcher.pyx index 56d27024d..e93416043 100644 --- a/spacy/matcher/dependencymatcher.pyx +++ b/spacy/matcher/dependencymatcher.pyx @@ -235,12 +235,12 @@ cdef class DependencyMatcher: matched_trees = [] self.recurse(_tree,id_to_position,_node_operator_map,0,[],matched_trees) - matched_key_trees.append((key,matched_trees)) - - for i, (ent_id, nodes) in enumerate(matched_key_trees): - on_match = self._callbacks.get(ent_id) - if on_match is not None: - on_match(self, doc, i, matched_key_trees) + if len(matched_trees) > 0: + matched_key_trees.append((key,matched_trees)) + for i, (ent_id, nodes) in enumerate(matched_key_trees): + on_match = self._callbacks.get(ent_id) + if on_match is not None: + on_match(self, doc, i, matched_key_trees) return matched_key_trees def recurse(self,tree,id_to_position,_node_operator_map,int patternLength,visitedNodes,matched_trees): diff --git a/spacy/tests/matcher/test_matcher_api.py b/spacy/tests/matcher/test_matcher_api.py index a23eb392d..1873d3d2b 100644 --- a/spacy/tests/matcher/test_matcher_api.py +++ b/spacy/tests/matcher/test_matcher_api.py @@ -7,6 +7,7 @@ from mock import Mock from spacy.matcher import Matcher, DependencyMatcher from spacy.tokens import Doc, Token from ..doc.test_underscore import clean_underscore # noqa: F401 +from ..util import get_doc @pytest.fixture @@ -301,22 +302,6 @@ def test_matcher_extension_set_membership(en_vocab): assert len(matches) == 0 -@pytest.fixture -def text(): - return "The quick brown fox jumped over the lazy fox" - - -@pytest.fixture -def heads(): - return [3, 2, 1, 1, 0, -1, 2, 1, -3] - - -@pytest.fixture -def deps(): - return ["det", "amod", "amod", "nsubj", "prep", "pobj", "det", "amod"] - - -@pytest.fixture def dependency_matcher(en_vocab): def is_brown_yellow(text): return bool(re.compile(r"brown|yellow|over").match(text)) @@ -359,24 +344,40 @@ def dependency_matcher(en_vocab): }, ] + # pattern that doesn't match + pattern4 = [ + {"SPEC": {"NODE_NAME": "jumped"}, "PATTERN": {"ORTH": "NOMATCH"}}, + { + "SPEC": {"NODE_NAME": "fox", "NBOR_RELOP": ">", "NBOR_NAME": "jumped"}, + "PATTERN": {"ORTH": "fox"}, + }, + { + "SPEC": {"NODE_NAME": "r", "NBOR_RELOP": ">>", "NBOR_NAME": "fox"}, + "PATTERN": {"ORTH": "brown"}, + }, + ] + matcher = DependencyMatcher(en_vocab) - matcher.add("pattern1", [pattern1]) - matcher.add("pattern2", [pattern2]) - matcher.add("pattern3", [pattern3]) + on_match = Mock() + matcher.add("pattern1", [pattern1], on_match=on_match) + matcher.add("pattern2", [pattern2], on_match=on_match) + matcher.add("pattern3", [pattern3], on_match=on_match) + matcher.add("pattern4", [pattern4], on_match=on_match) - return matcher + assert len(dependency_matcher) == 4 + text = "The quick brown fox jumped over the lazy fox" + heads = [3, 2, 1, 1, 0, -1, 2, 1, -3] + deps = ["det", "amod", "amod", "nsubj", "ROOT", "prep", "pobj", "det", "amod"] -def test_dependency_matcher_compile(dependency_matcher): - assert len(dependency_matcher) == 3 + doc = get_doc(dependency_matcher.vocab, text.split(), heads=heads, deps=deps) + matches = dependency_matcher(doc) - -# def test_dependency_matcher(dependency_matcher, text, heads, deps): -# doc = get_doc(dependency_matcher.vocab, text.split(), heads=heads, deps=deps) -# matches = dependency_matcher(doc) -# assert matches[0][1] == [[3, 1, 2]] -# assert matches[1][1] == [[4, 3, 3]] -# assert matches[2][1] == [[4, 3, 2]] + assert len(matches) == 3 + assert matches[0][1] == [[3, 1, 2]] + assert matches[1][1] == [[4, 3, 3]] + assert matches[2][1] == [[4, 3, 2]] + assert on_match.call_count == 3 def test_matcher_basic_check(en_vocab): From 6d465ec52cc33e6fdfe93ba151e8691f4e7906ee Mon Sep 17 00:00:00 2001 From: Vu Ha Date: Thu, 5 Nov 2020 00:17:35 -0800 Subject: [PATCH 17/39] add oprd to the list of accepted deps for noun chunking (#6302) * add oprd to the list of accepted deps for noun chunking * add SCA --- .github/contributors/vha14.md | 106 ++++++++++++++++++++++++++++++ spacy/lang/en/syntax_iterators.py | 1 + 2 files changed, 107 insertions(+) create mode 100644 .github/contributors/vha14.md diff --git a/.github/contributors/vha14.md b/.github/contributors/vha14.md new file mode 100644 index 000000000..0d7c9b555 --- /dev/null +++ b/.github/contributors/vha14.md @@ -0,0 +1,106 @@ +# spaCy contributor agreement + +This spaCy Contributor Agreement (**"SCA"**) is based on the +[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf). +The SCA applies to any contribution that you make to any product or project +managed by us (the **"project"**), and sets out the intellectual property rights +you grant to us in the contributed materials. The term **"us"** shall mean +[ExplosionAI UG (haftungsbeschränkt)](https://explosion.ai/legal). The term +**"you"** shall mean the person or entity identified below. + +If you agree to be bound by these terms, fill in the information requested +below and include the filled-in version with your first pull request, under the +folder [`.github/contributors/`](/.github/contributors/). The name of the file +should be your GitHub username, with the extension `.md`. For example, the user +example_user would create the file `.github/contributors/example_user.md`. + +Read this agreement carefully before signing. These terms and conditions +constitute a binding legal agreement. + +## Contributor Agreement + +1. The term "contribution" or "contributed materials" means any source code, +object code, patch, tool, sample, graphic, specification, manual, +documentation, or any other material posted or submitted by you to the project. + +2. With respect to any worldwide copyrights, or copyright applications and +registrations, in your contribution: + + * you hereby assign to us joint ownership, and to the extent that such + assignment is or becomes invalid, ineffective or unenforceable, you hereby + grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge, + royalty-free, unrestricted license to exercise all rights under those + copyrights. This includes, at our option, the right to sublicense these same + rights to third parties through multiple levels of sublicensees or other + licensing arrangements; + + * you agree that each of us can do all things in relation to your + contribution as if each of us were the sole owners, and if one of us makes + a derivative work of your contribution, the one who makes the derivative + work (or has it made will be the sole owner of that derivative work; + + * you agree that you will not assert any moral rights in your contribution + against us, our licensees or transferees; + + * you agree that we may register a copyright in your contribution and + exercise all ownership rights associated with it; and + + * you agree that neither of us has any duty to consult with, obtain the + consent of, pay or render an accounting to the other for any use or + distribution of your contribution. + +3. With respect to any patents you own, or that you can license without payment +to any third party, you hereby grant to us a perpetual, irrevocable, +non-exclusive, worldwide, no-charge, royalty-free license to: + + * make, have made, use, sell, offer to sell, import, and otherwise transfer + your contribution in whole or in part, alone or in combination with or + included in any product, work or materials arising out of the project to + which your contribution was submitted, and + + * at our option, to sublicense these same rights to third parties through + multiple levels of sublicensees or other licensing arrangements. + +4. Except as set out above, you keep all right, title, and interest in your +contribution. The rights that you grant to us under these terms are effective +on the date you first submitted a contribution to us, even if your submission +took place before the date you sign these terms. + +5. You covenant, represent, warrant and agree that: + + * Each contribution that you submit is and shall be an original work of + authorship and you can legally grant the rights set out in this SCA; + + * to the best of your knowledge, each contribution will not violate any + third party's copyrights, trademarks, patents, or other intellectual + property rights; and + + * each contribution shall be in compliance with U.S. export control laws and + other applicable export and import laws. You agree to notify us if you + become aware of any circumstance which would make any of the foregoing + representations inaccurate in any respect. We may publicly disclose your + participation in the project, including the fact that you have signed the SCA. + +6. This SCA is governed by the laws of the State of California and applicable +U.S. Federal law. Any choice of law rules will not apply. + +7. Please place an “x” on one of the applicable statement below. Please do NOT +mark both statements: + + * [x] I am signing on behalf of myself as an individual and no other person + or entity, including my employer, has or will have rights with respect my + contributions. + + * [ ] I am signing on behalf of my employer or a legal entity and I have the + actual authority to contractually bind that entity. + +## Contributor Details + +| Field | Entry | +|------------------------------- | -------------------- | +| Name | Vu Ha | +| Company name (if applicable) | | +| Title or role (if applicable) | | +| Date | 10-23-2020 | +| GitHub username | vha14 | +| Website (optional) | | diff --git a/spacy/lang/en/syntax_iterators.py b/spacy/lang/en/syntax_iterators.py index 0f2b28b58..589c0b72f 100644 --- a/spacy/lang/en/syntax_iterators.py +++ b/spacy/lang/en/syntax_iterators.py @@ -10,6 +10,7 @@ def noun_chunks(doclike): Detect base noun phrases from a dependency parse. Works on both Doc and Span. """ labels = [ + "oprd", "nsubj", "dobj", "nsubjpass", From 8644ee3e3f6148301b8818baa6873bb3fb46f120 Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Thu, 5 Nov 2020 09:33:00 +0100 Subject: [PATCH 18/39] Update TIGER link and tag description (#6344) --- website/docs/api/annotation.md | 130 +++++++++++++++++---------------- 1 file changed, 66 insertions(+), 64 deletions(-) diff --git a/website/docs/api/annotation.md b/website/docs/api/annotation.md index 5ca5e91d9..3f2f4e36a 100644 --- a/website/docs/api/annotation.md +++ b/website/docs/api/annotation.md @@ -51,11 +51,11 @@ rely on simple lookup tables. spaCy adds a **special case for English pronouns**: all English pronouns are -lemmatized to the special token `-PRON-`. Unlike verbs and common nouns, -there's no clear base form of a personal pronoun. Should the lemma of "me" be -"I", or should we normalize person as well, giving "it" — or maybe "he"? -spaCy's solution is to introduce a novel symbol, `-PRON-`, which is used as the -lemma for all personal pronouns. +lemmatized to the special token `-PRON-`. Unlike verbs and common nouns, there's +no clear base form of a personal pronoun. Should the lemma of "me" be "I", or +should we normalize person as well, giving "it" — or maybe "he"? spaCy's +solution is to introduce a novel symbol, `-PRON-`, which is used as the lemma +for all personal pronouns. @@ -120,69 +120,70 @@ The English part-of-speech tagger uses the Treebank tag set. We also map the tags to the simpler Universal Dependencies v2 POS tag set. -| Tag |  POS | Morphology | Description | -| ------------------------------------- | ------- | --------------------------------------- | ----------------------------------------- | -| `$` | `SYM` | | symbol, currency | -| `` | `PUNCT` | `PunctType=quot PunctSide=ini` | opening quotation mark | -| `''` | `PUNCT` | `PunctType=quot PunctSide=fin` | closing quotation mark | -| `,` | `PUNCT` | `PunctType=comm` | punctuation mark, comma | -| `-LRB-` | `PUNCT` | `PunctType=brck PunctSide=ini` | left round bracket | -| `-RRB-` | `PUNCT` | `PunctType=brck PunctSide=fin` | right round bracket | -| `.` | `PUNCT` | `PunctType=peri` | punctuation mark, sentence closer | -| `:` | `PUNCT` | | punctuation mark, colon or ellipsis | -| `ADD` | `X` | | email | -| `AFX` | `ADJ` | `Hyph=yes` | affix | -| `CC` | `CCONJ` | `ConjType=comp` | conjunction, coordinating | -| `CD` | `NUM` | `NumType=card` | cardinal number | -| `DT` | `DET` | | determiner | -| `EX` | `PRON` | `AdvType=ex` | existential there | -| `FW` | `X` | `Foreign=yes` | foreign word | -| `GW` | `X` | | additional word in multi-word expression | -| `HYPH` | `PUNCT` | `PunctType=dash` | punctuation mark, hyphen | -| `IN` | `ADP` | | conjunction, subordinating or preposition | -| `JJ` | `ADJ` | `Degree=pos` | adjective | -| `JJR` | `ADJ` | `Degree=comp` | adjective, comparative | -| `JJS` | `ADJ` | `Degree=sup` | adjective, superlative | -| `LS` | `X` | `NumType=ord` | list item marker | -| `MD` | `VERB` | `VerbType=mod` | verb, modal auxiliary | -| `NFP` | `PUNCT` | | superfluous punctuation | -| `NIL` | `X` | | missing tag | -| `NN` | `NOUN` | `Number=sing` | noun, singular or mass | -| `NNP` | `PROPN` | `NounType=prop Number=sing` | noun, proper singular | -| `NNPS` | `PROPN` | `NounType=prop Number=plur` | noun, proper plural | -| `NNS` | `NOUN` | `Number=plur` | noun, plural | -| `PDT` | `DET` | | predeterminer | -| `POS` | `PART` | `Poss=yes` | possessive ending | -| `PRP` | `PRON` | `PronType=prs` | pronoun, personal | -| `PRP$` | `DET` | `PronType=prs Poss=yes` | pronoun, possessive | -| `RB` | `ADV` | `Degree=pos` | adverb | -| `RBR` | `ADV` | `Degree=comp` | adverb, comparative | -| `RBS` | `ADV` | `Degree=sup` | adverb, superlative | -| `RP` | `ADP` | | adverb, particle | -| `SP` | `SPACE` | | space | -| `SYM` | `SYM` | | symbol | -| `TO` | `PART` | `PartType=inf VerbForm=inf` | infinitival "to" | -| `UH` | `INTJ` | | interjection | -| `VB` | `VERB` | `VerbForm=inf` | verb, base form | -| `VBD` | `VERB` | `VerbForm=fin Tense=past` | verb, past tense | -| `VBG` | `VERB` | `VerbForm=part Tense=pres Aspect=prog` | verb, gerund or present participle | -| `VBN` | `VERB` | `VerbForm=part Tense=past Aspect=perf` | verb, past participle | -| `VBP` | `VERB` | `VerbForm=fin Tense=pres` | verb, non-3rd person singular present | -| `VBZ` | `VERB` | `VerbForm=fin Tense=pres Number=sing Person=three` | verb, 3rd person singular present | -| `WDT` | `DET` | | wh-determiner | -| `WP` | `PRON` | | wh-pronoun, personal | -| `WP$` | `DET` | `Poss=yes` | wh-pronoun, possessive | -| `WRB` | `ADV` | | wh-adverb | -| `XX` | `X` | | unknown | -| `_SP` | `SPACE` | | | +| Tag |  POS | Morphology | Description | +| ----------------------------------- | ------- | -------------------------------------------------- | ----------------------------------------- | +| `$` | `SYM` | | symbol, currency | +| `` | `PUNCT` | `PunctType=quot PunctSide=ini` | opening quotation mark | +| `''` | `PUNCT` | `PunctType=quot PunctSide=fin` | closing quotation mark | +| `,` | `PUNCT` | `PunctType=comm` | punctuation mark, comma | +| `-LRB-` | `PUNCT` | `PunctType=brck PunctSide=ini` | left round bracket | +| `-RRB-` | `PUNCT` | `PunctType=brck PunctSide=fin` | right round bracket | +| `.` | `PUNCT` | `PunctType=peri` | punctuation mark, sentence closer | +| `:` | `PUNCT` | | punctuation mark, colon or ellipsis | +| `ADD` | `X` | | email | +| `AFX` | `ADJ` | `Hyph=yes` | affix | +| `CC` | `CCONJ` | `ConjType=comp` | conjunction, coordinating | +| `CD` | `NUM` | `NumType=card` | cardinal number | +| `DT` | `DET` | | determiner | +| `EX` | `PRON` | `AdvType=ex` | existential there | +| `FW` | `X` | `Foreign=yes` | foreign word | +| `GW` | `X` | | additional word in multi-word expression | +| `HYPH` | `PUNCT` | `PunctType=dash` | punctuation mark, hyphen | +| `IN` | `ADP` | | conjunction, subordinating or preposition | +| `JJ` | `ADJ` | `Degree=pos` | adjective | +| `JJR` | `ADJ` | `Degree=comp` | adjective, comparative | +| `JJS` | `ADJ` | `Degree=sup` | adjective, superlative | +| `LS` | `X` | `NumType=ord` | list item marker | +| `MD` | `VERB` | `VerbType=mod` | verb, modal auxiliary | +| `NFP` | `PUNCT` | | superfluous punctuation | +| `NIL` | `X` | | missing tag | +| `NN` | `NOUN` | `Number=sing` | noun, singular or mass | +| `NNP` | `PROPN` | `NounType=prop Number=sing` | noun, proper singular | +| `NNPS` | `PROPN` | `NounType=prop Number=plur` | noun, proper plural | +| `NNS` | `NOUN` | `Number=plur` | noun, plural | +| `PDT` | `DET` | | predeterminer | +| `POS` | `PART` | `Poss=yes` | possessive ending | +| `PRP` | `PRON` | `PronType=prs` | pronoun, personal | +| `PRP$` | `DET` | `PronType=prs Poss=yes` | pronoun, possessive | +| `RB` | `ADV` | `Degree=pos` | adverb | +| `RBR` | `ADV` | `Degree=comp` | adverb, comparative | +| `RBS` | `ADV` | `Degree=sup` | adverb, superlative | +| `RP` | `ADP` | | adverb, particle | +| `SP` | `SPACE` | | space | +| `SYM` | `SYM` | | symbol | +| `TO` | `PART` | `PartType=inf VerbForm=inf` | infinitival "to" | +| `UH` | `INTJ` | | interjection | +| `VB` | `VERB` | `VerbForm=inf` | verb, base form | +| `VBD` | `VERB` | `VerbForm=fin Tense=past` | verb, past tense | +| `VBG` | `VERB` | `VerbForm=part Tense=pres Aspect=prog` | verb, gerund or present participle | +| `VBN` | `VERB` | `VerbForm=part Tense=past Aspect=perf` | verb, past participle | +| `VBP` | `VERB` | `VerbForm=fin Tense=pres` | verb, non-3rd person singular present | +| `VBZ` | `VERB` | `VerbForm=fin Tense=pres Number=sing Person=three` | verb, 3rd person singular present | +| `WDT` | `DET` | | wh-determiner | +| `WP` | `PRON` | | wh-pronoun, personal | +| `WP$` | `DET` | `Poss=yes` | wh-pronoun, possessive | +| `WRB` | `ADV` | | wh-adverb | +| `XX` | `X` | | unknown | +| `_SP` | `SPACE` | | | + The German part-of-speech tagger uses the -[TIGER Treebank](http://www.ims.uni-stuttgart.de/forschung/ressourcen/korpora/TIGERCorpus/annotation/index.html) -annotation scheme. We also map the tags to the simpler Universal Dependencies -v2 POS tag set. +[TIGER Treebank](https://www.ims.uni-stuttgart.de/forschung/ressourcen/korpora/tiger/) +annotation scheme. We also map the tags to the simpler Universal Dependencies v2 +POS tag set. | Tag |  POS | Morphology | Description | | --------- | ------- | ---------------------------------------- | ------------------------------------------------- | @@ -211,7 +212,7 @@ v2 POS tag set. | `PDS` | `PRON` | `PronType=dem` | substituting demonstrative pronoun | | `PIAT` | `DET` | `PronType=ind|neg|tot` | attributive indefinite pronoun without determiner | | `PIS` | `PRON` | `PronType=ind|neg|tot` | substituting indefinite pronoun | -| `PPER` | `PRON` | `PronType=prs` | non-reflexive personal pronoun | +| `PPER` | `PRON` | `PronType=prs` | replaceable personal pronoun | | `PPOSAT` | `DET` | `Poss=yes PronType=prs` | attributive possessive pronoun | | `PPOSS` | `PRON` | `Poss=yes PronType=prs` | substituting possessive pronoun | | `PRELAT` | `DET` | `PronType=rel` | attributive relative pronoun | @@ -241,6 +242,7 @@ v2 POS tag set. | `VVPP` | `VERB` | `Aspect=perf VerbForm=part` | perfect participle, full | | `XY` | `X` | | non-word containing non-letter | | `_SP` | `SPACE` | | | + --- From 6069efe57d0eefd30320373e49bc81567959bfa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20=C5=A0=C3=ADpek?= Date: Thu, 5 Nov 2020 10:13:11 +0100 Subject: [PATCH 19/39] Add tag map to cs language (#6284) --- spacy/lang/cs/__init__.py | 2 + spacy/lang/cs/tag_map.py | 4312 +++++++++++++++++++++++++++++++++++++ 2 files changed, 4314 insertions(+) create mode 100644 spacy/lang/cs/tag_map.py diff --git a/spacy/lang/cs/__init__.py b/spacy/lang/cs/__init__.py index baaaa162b..ca994f593 100644 --- a/spacy/lang/cs/__init__.py +++ b/spacy/lang/cs/__init__.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from .stop_words import STOP_WORDS +from .tag_map import TAG_MAP from ...language import Language from ...attrs import LANG from .lex_attrs import LEX_ATTRS @@ -11,6 +12,7 @@ class CzechDefaults(Language.Defaults): lex_attr_getters = dict(Language.Defaults.lex_attr_getters) lex_attr_getters.update(LEX_ATTRS) lex_attr_getters[LANG] = lambda text: "cs" + tag_map = TAG_MAP stop_words = STOP_WORDS diff --git a/spacy/lang/cs/tag_map.py b/spacy/lang/cs/tag_map.py new file mode 100644 index 000000000..80eed74e5 --- /dev/null +++ b/spacy/lang/cs/tag_map.py @@ -0,0 +1,4312 @@ +# coding: utf8 +from __future__ import unicode_literals + +from ...symbols import POS, AUX, ADJ, CCONJ, NUM, ADV, ADP, X, VERB, DET, SCONJ, PUNCT +from ...symbols import NOUN, PART, INTJ, PRON + +# Source https://universaldependencies.org/tagset-conversion/cs-pdt-uposf.html +# fmt: off +TAG_MAP = { + "A.-------------": {POS: ADJ, "morph": "Abbr=Yes"}, + "A2--------A----": {POS: ADJ, "morph": "Hyph=Yes|Polarity=Pos"}, + "A2--------A---1": {POS: ADJ, "morph": "Hyph=Yes|Polarity=Pos"}, + "A2--------N----": {POS: ADJ, "morph": "Hyph=Yes|Polarity=Neg"}, + "AAFD7----1A----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Dual|Polarity=Pos"}, + "AAFD7----1A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Dual|Polarity=Pos|Style=Coll"}, + "AAFD7----1N----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Dual|Polarity=Neg"}, + "AAFD7----1N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Dual|Polarity=Neg|Style=Coll"}, + "AAFD7----2A----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Dual|Polarity=Pos"}, + "AAFD7----2A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Dual|Polarity=Pos|Style=Coll"}, + "AAFD7----2N----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Dual|Polarity=Neg"}, + "AAFD7----2N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Dual|Polarity=Neg|Style=Coll"}, + "AAFD7----3A----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Dual|Polarity=Pos"}, + "AAFD7----3A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Dual|Polarity=Pos|Style=Coll"}, + "AAFD7----3N----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Dual|Polarity=Neg"}, + "AAFD7----3N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Dual|Polarity=Neg|Style=Coll"}, + "AAFP1----1A----": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP1----1A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP1----1N----": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP1----1N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP1----2A----": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP1----2A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP1----2N----": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP1----2N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP1----3A----": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP1----3A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP1----3N----": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP1----3N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP2----1A----": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP2----1A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP2----1N----": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP2----1N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP2----2A----": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP2----2A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP2----2N----": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP2----2N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP2----3A----": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP2----3A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP2----3N----": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP2----3N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP3----1A----": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP3----1A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP3----1N----": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP3----1N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP3----2A----": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP3----2A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP3----2N----": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP3----2N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP3----3A----": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP3----3A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP3----3N----": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP3----3N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP4----1A----": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP4----1A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP4----1N----": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP4----1N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP4----2A----": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP4----2A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP4----2N----": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP4----2N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP4----3A----": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP4----3A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP4----3N----": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP4----3N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP5----1A----": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP5----1A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP5----1N----": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP5----1N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP5----2A----": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP5----2A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP5----2N----": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP5----2N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP5----3A----": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP5----3A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP5----3N----": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP5----3N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP6----1A----": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP6----1A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP6----1N----": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP6----1N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP6----2A----": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP6----2A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP6----2N----": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP6----2N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP6----3A----": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP6----3A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP6----3N----": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP6----3N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP7----1A----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP7----1A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP7----1A---7": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP7----1N----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP7----1N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP7----1N---7": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP7----2A----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP7----2A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP7----2A---7": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP7----2N----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP7----2N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP7----2N---7": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP7----3A----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos"}, + "AAFP7----3A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP7----3A---7": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAFP7----3N----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg"}, + "AAFP7----3N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFP7----3N---7": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAFS1----1A----": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS1----1A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS1----1N----": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS1----1N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS1----2A----": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS1----2A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS1----2N----": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS1----2N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS1----3A----": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS1----3A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS1----3N----": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS1----3N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS2----1A----": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS2----1A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS2----1N----": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS2----1N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS2----2A----": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS2----2A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS2----2N----": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS2----2N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS2----3A----": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS2----3A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS2----3N----": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS2----3N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS3----1A----": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS3----1A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS3----1N----": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS3----1N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS3----2A----": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS3----2A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS3----2N----": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS3----2N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS3----3A----": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS3----3A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS3----3N----": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS3----3N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS4----1A----": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS4----1A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS4----1N----": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS4----1N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS4----2A----": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS4----2A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS4----2N----": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS4----2N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS4----3A----": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS4----3A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS4----3N----": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS4----3N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS5----1A----": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS5----1A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS5----1N----": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS5----1N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS5----2A----": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS5----2A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS5----2N----": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS5----2N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS5----3A----": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS5----3A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS5----3N----": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS5----3N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS6----1A----": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS6----1A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS6----1N----": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS6----1N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS6----2A----": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS6----2A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS6----2N----": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS6----2N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS6----3A----": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS6----3A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS6----3N----": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS6----3N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS7----1A----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS7----1A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS7----1N----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS7----1N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS7----2A----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS7----2A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS7----2N----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS7----2N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFS7----3A----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFS7----3A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAFS7----3N----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg"}, + "AAFS7----3N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAFSX----1A----": {POS: ADJ, "morph": "Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos"}, + "AAFXX----1A----": {POS: ADJ, "morph": "Degree=Pos|Gender=Fem|Polarity=Pos"}, + "AAFXX----1A---8": {POS: ADJ, "morph": "Abbr=Yes|Degree=Pos|Gender=Fem|Polarity=Pos"}, + "AAFXX----1N---8": {POS: ADJ, "morph": "Abbr=Yes|Degree=Pos|Gender=Fem|Polarity=Neg"}, + "AAIP1----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP1----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP1----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP1----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP1----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP1----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP1----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP1----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP1----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP1----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP1----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP1----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP2----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP2----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP2----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP2----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP2----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP2----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP2----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP2----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP2----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP2----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP2----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP2----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP3----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP3----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP3----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP3----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP3----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP3----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP3----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP3----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP3----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP3----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP3----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP3----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP4----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP4----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP4----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP4----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP4----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP4----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP4----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP4----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP4----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP4----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP4----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP4----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP5----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP5----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP5----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP5----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP5----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP5----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP5----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP5----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP5----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP5----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP5----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP5----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP6----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP6----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP6----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP6----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP6----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP6----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP6----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP6----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP6----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP6----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP6----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP6----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP7----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP7----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP7----1A---7": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP7----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP7----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP7----1N---7": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP7----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP7----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP7----2A---7": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP7----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP7----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP7----2N---7": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP7----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIP7----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP7----3A---7": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAIP7----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIP7----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIP7----3N---7": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAIPX----1A----": {POS: ADJ, "morph": "Animacy=Inan|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIPX----1N----": {POS: ADJ, "morph": "Animacy=Inan|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIPX----2A----": {POS: ADJ, "morph": "Animacy=Inan|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIPX----2N----": {POS: ADJ, "morph": "Animacy=Inan|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIPX----3A----": {POS: ADJ, "morph": "Animacy=Inan|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAIPX----3N----": {POS: ADJ, "morph": "Animacy=Inan|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAIS1----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS1----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS1----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS1----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS1----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS1----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS1----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS1----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS1----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS1----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS1----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS1----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS2----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS2----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS2----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS2----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS2----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS2----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS2----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS2----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS2----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS2----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS2----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS2----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS3----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS3----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS3----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS3----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS3----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS3----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS3----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS3----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS3----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS3----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS3----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS3----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS4----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS4----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS4----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS4----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS4----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS4----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS4----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS4----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS4----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS4----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS4----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS4----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS5----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS5----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS5----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS5----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS5----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS5----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS5----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS5----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS5----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS5----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS5----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS5----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS6----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS6----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS6----1A---7": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS6----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS6----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS6----1N---7": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS6----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS6----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS6----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS6----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS6----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS6----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS6----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS6----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS7----1A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS7----1A---2": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "AAIS7----1A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS7----1N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS7----1N---2": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "AAIS7----1N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS7----2A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS7----2A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS7----2N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS7----2N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAIS7----3A----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIS7----3A---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAIS7----3N----": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAIS7----3N---6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAISX----1A----": {POS: ADJ, "morph": "Animacy=Inan|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAIXX----1A----": {POS: ADJ, "morph": "Animacy=Inan|Degree=Pos|Gender=Masc|Polarity=Pos"}, + "AAMP1----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP1----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP1----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP1----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP1----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP1----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP1----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP1----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP1----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP1----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP1----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP1----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP2----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP2----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP2----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP2----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP2----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP2----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP2----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP2----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP2----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP2----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP2----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP2----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP3----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP3----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP3----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP3----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP3----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP3----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP3----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP3----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP3----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP3----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP3----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP3----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP4----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP4----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP4----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP4----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP4----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP4----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP4----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP4----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP4----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP4----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP4----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP4----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP5----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP5----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP5----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP5----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP5----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP5----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP5----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP5----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP5----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP5----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP5----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP5----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP6----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP6----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP6----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP6----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP6----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP6----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP6----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP6----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP6----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP6----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP6----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP6----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP7----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP7----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP7----1A---7": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP7----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP7----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP7----1N---7": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Pos|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP7----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP7----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP7----2A---7": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP7----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP7----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP7----2N---7": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Cmp|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP7----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos"}, + "AAMP7----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP7----3A---7": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "AAMP7----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg"}, + "AAMP7----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMP7----3N---7": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Sup|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "AAMS1----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS1----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS1----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS1----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS1----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS1----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS1----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS1----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS1----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS1----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS1----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS1----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS2----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS2----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS2----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS2----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS2----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS2----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS2----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS2----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS2----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS2----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS2----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS2----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS3----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS3----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS3----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS3----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS3----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS3----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS3----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS3----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS3----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS3----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS3----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS3----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS4----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS4----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS4----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS4----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS4----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS4----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS4----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS4----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS4----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS4----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS4----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS4----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS5----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS5----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS5----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS5----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS5----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS5----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS5----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS5----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS5----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS5----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS5----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS5----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS6----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS6----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS6----1A---7": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS6----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS6----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS6----1N---7": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS6----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS6----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS6----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS6----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS6----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS6----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS6----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS6----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS7----1A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS7----1A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS7----1N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS7----1N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS7----2A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS7----2A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS7----2N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS7----2N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Cmp|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMS7----3A----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAMS7----3A---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "AAMS7----3N----": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg"}, + "AAMS7----3N---6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Degree=Sup|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "AAMSX----1A----": {POS: ADJ, "morph": "Animacy=Anim|Degree=Pos|Gender=Masc|Number=Sing|Polarity=Pos"}, + "AAND7----1A----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Dual|Polarity=Pos"}, + "AAND7----1A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Dual|Polarity=Pos|Style=Coll"}, + "AAND7----1N----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Dual|Polarity=Neg"}, + "AAND7----1N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Dual|Polarity=Neg|Style=Coll"}, + "AAND7----2A----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Dual|Polarity=Pos"}, + "AAND7----2A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Dual|Polarity=Pos|Style=Coll"}, + "AAND7----2N----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Dual|Polarity=Neg"}, + "AAND7----2N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Dual|Polarity=Neg|Style=Coll"}, + "AAND7----3A----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Dual|Polarity=Pos"}, + "AAND7----3A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Dual|Polarity=Pos|Style=Coll"}, + "AAND7----3N----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Dual|Polarity=Neg"}, + "AAND7----3N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Dual|Polarity=Neg|Style=Coll"}, + "AANP1----1A----": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP1----1A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP1----1N----": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP1----1N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP1----2A----": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP1----2A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP1----2N----": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP1----2N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP1----3A----": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP1----3A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP1----3N----": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP1----3N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP2----1A----": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP2----1A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP2----1N----": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP2----1N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP2----2A----": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP2----2A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP2----2N----": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP2----2N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP2----3A----": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP2----3A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP2----3N----": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP2----3N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP3----1A----": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP3----1A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP3----1N----": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP3----1N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP3----2A----": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP3----2A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP3----2N----": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP3----2N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP3----3A----": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP3----3A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP3----3N----": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP3----3N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP4----1A----": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP4----1A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP4----1N----": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP4----1N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP4----2A----": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP4----2A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP4----2N----": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP4----2N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP4----3A----": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP4----3A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP4----3N----": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP4----3N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP5----1A----": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP5----1A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP5----1N----": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP5----1N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP5----2A----": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP5----2A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP5----2N----": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP5----2N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP5----3A----": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP5----3A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP5----3N----": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP5----3N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP6----1A----": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP6----1A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP6----1N----": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP6----1N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP6----2A----": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP6----2A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP6----2N----": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP6----2N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP6----3A----": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP6----3A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP6----3N----": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP6----3N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP7----1A----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP7----1A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP7----1A---7": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP7----1N----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP7----1N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP7----1N---7": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP7----2A----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP7----2A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP7----2A---7": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP7----2N----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP7----2N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP7----2N---7": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP7----3A----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos"}, + "AANP7----3A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP7----3A---7": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "AANP7----3N----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg"}, + "AANP7----3N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANP7----3N---7": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "AANS1----1A----": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS1----1A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS1----1N----": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS1----1N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS1----2A----": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS1----2A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS1----2N----": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS1----2N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS1----3A----": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS1----3A---6": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS1----3N----": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS1----3N---6": {POS: ADJ, "morph": "Case=Nom|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS2----1A----": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS2----1A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS2----1N----": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS2----1N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS2----2A----": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS2----2A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS2----2N----": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS2----2N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS2----3A----": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS2----3A---6": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS2----3N----": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS2----3N---6": {POS: ADJ, "morph": "Case=Gen|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS3----1A----": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS3----1A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS3----1N----": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS3----1N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS3----2A----": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS3----2A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS3----2N----": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS3----2N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS3----3A----": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS3----3A---6": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS3----3N----": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS3----3N---6": {POS: ADJ, "morph": "Case=Dat|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS4----1A----": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS4----1A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS4----1N----": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS4----1N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS4----2A----": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS4----2A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS4----2N----": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS4----2N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS4----3A----": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS4----3A---6": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS4----3N----": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS4----3N---6": {POS: ADJ, "morph": "Case=Acc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS5----1A----": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS5----1A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS5----1N----": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS5----1N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS5----2A----": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS5----2A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS5----2N----": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS5----2N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS5----3A----": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS5----3A---6": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS5----3N----": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS5----3N---6": {POS: ADJ, "morph": "Case=Voc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS6----1A----": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS6----1A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS6----1A---7": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS6----1N----": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS6----1N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS6----1N---7": {POS: ADJ, "morph": "Case=Loc|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS6----2A----": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS6----2A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS6----2N----": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS6----2N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS6----3A----": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS6----3A---6": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS6----3N----": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS6----3N---6": {POS: ADJ, "morph": "Case=Loc|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS7----1A----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS7----1A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS7----1A---8": {POS: ADJ, "morph": "Abbr=Yes|Case=Ins|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS7----1N----": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS7----1N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Pos|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS7----2A----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS7----2A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS7----2N----": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS7----2N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Cmp|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANS7----3A----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AANS7----3A---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "AANS7----3N----": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg"}, + "AANS7----3N---6": {POS: ADJ, "morph": "Case=Ins|Degree=Sup|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "AANSX----1A----": {POS: ADJ, "morph": "Degree=Pos|Gender=Neut|Number=Sing|Polarity=Pos"}, + "AAXPX----1A----": {POS: ADJ, "morph": "Degree=Pos|Number=Plur|Polarity=Pos"}, + "AAXPX----1N----": {POS: ADJ, "morph": "Degree=Pos|Number=Plur|Polarity=Neg"}, + "AAXXX----1A----": {POS: ADJ, "morph": "Degree=Pos|Polarity=Pos"}, + "AAXXX----1A---1": {POS: ADJ, "morph": "Degree=Pos|Polarity=Pos"}, + "AAXXX----1A---8": {POS: ADJ, "morph": "Abbr=Yes|Degree=Pos|Polarity=Pos"}, + "AAXXX----1A---9": {POS: ADJ, "morph": "Degree=Pos|Polarity=Pos"}, + "AAXXX----1N----": {POS: ADJ, "morph": "Degree=Pos|Polarity=Neg"}, + "AAXXX----1N---8": {POS: ADJ, "morph": "Abbr=Yes|Degree=Pos|Polarity=Neg"}, + "AAXXX----1N---9": {POS: ADJ, "morph": "Degree=Pos|Polarity=Neg"}, + "AAXXX----2A---8": {POS: ADJ, "morph": "Abbr=Yes|Degree=Cmp|Polarity=Pos"}, + "AAXXX----3A---8": {POS: ADJ, "morph": "Abbr=Yes|Degree=Sup|Polarity=Pos"}, + "ACFS4-----A----": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Number=Sing|Polarity=Pos|Variant=Short"}, + "ACFS4-----N----": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Number=Sing|Polarity=Neg|Variant=Short"}, + "ACMP------A----": {POS: ADJ, "morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos|Variant=Short"}, + "ACMP------N----": {POS: ADJ, "morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg|Variant=Short"}, + "ACNS------A----": {POS: ADJ, "morph": "Gender=Neut|Number=Sing|Polarity=Pos|Variant=Short"}, + "ACNS------N----": {POS: ADJ, "morph": "Gender=Neut|Number=Sing|Polarity=Neg|Variant=Short"}, + "ACQW------A----": {POS: ADJ, "morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Pos|Variant=Short"}, + "ACQW------N----": {POS: ADJ, "morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Neg|Variant=Short"}, + "ACTP------A----": {POS: ADJ, "morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Pos|Variant=Short"}, + "ACTP------N----": {POS: ADJ, "morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Neg|Variant=Short"}, + "ACYS------A----": {POS: ADJ, "morph": "Gender=Masc|Number=Sing|Polarity=Pos|Variant=Short"}, + "ACYS------N----": {POS: ADJ, "morph": "Gender=Masc|Number=Sing|Polarity=Neg|Variant=Short"}, + "AGFD7-----A----": {POS: ADJ, "morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Dual|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFD7-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Dual|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFD7-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Dual|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFD7-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Dual|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP1-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP1-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP1-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP1-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP2-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP2-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP2-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP2-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP3-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP3-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP3-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP3-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP4-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP4-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP4-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP4-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP5-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP5-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP5-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP5-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP6-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP6-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP6-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP6-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP7-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP7-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP7-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFP7-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS1-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS1-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS1-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS1-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS2-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS2-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS2-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS2-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS3-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS3-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS3-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS3-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS4-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS4-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS4-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS4-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS5-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS5-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS5-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS5-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS6-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS6-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS6-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS6-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS7-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS7-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS7-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGFS7-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP1-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP1-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP1-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP1-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP2-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP2-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP2-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP2-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP3-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP3-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP3-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP3-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP4-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP4-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP4-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP4-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP5-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP5-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP5-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP5-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP6-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP6-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP6-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP6-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP7-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP7-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP7-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIP7-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS1-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS1-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS1-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS1-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS2-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS2-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS2-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS2-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS3-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS3-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS3-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS3-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS4-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS4-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS4-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS4-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS5-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS5-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS5-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS5-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS6-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS6-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS6-----A---7": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS6-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS6-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS6-----N---7": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS7-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS7-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS7-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGIS7-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Imp|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP1-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP1-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP1-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP1-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP2-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP2-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP2-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP2-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP3-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP3-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP3-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP3-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP4-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP4-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP4-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP4-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP5-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP5-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP5-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP5-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP6-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP6-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP6-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP6-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP7-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP7-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP7-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMP7-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS1-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS1-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS1-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS1-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS2-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS2-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS2-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS2-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS3-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS3-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS3-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS3-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS4-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS4-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS4-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS4-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS5-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS5-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS5-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS5-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS6-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS6-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS6-----A---7": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS6-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS6-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS6-----N---7": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS7-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS7-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS7-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGMS7-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Imp|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGND7-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Dual|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGND7-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Dual|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGND7-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Dual|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGND7-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Dual|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP1-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP1-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP1-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP1-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP2-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP2-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP2-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP2-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP3-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP3-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP3-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP3-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP4-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP4-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP4-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP4-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP5-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP5-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP5-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP5-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP6-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP6-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP6-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP6-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP7-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP7-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP7-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNP7-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS1-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS1-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS1-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS1-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Nom|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS2-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS2-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS2-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS2-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Gen|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS3-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS3-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS3-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS3-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Dat|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS4-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS4-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS4-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS4-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Acc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS5-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS5-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS5-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS5-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Voc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS6-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS6-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS6-----A---7": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS6-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS6-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS6-----N---7": {POS: ADJ,"morph": "Aspect=Imp|Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS7-----A----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS7-----A---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS7-----N----": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AGNS7-----N---6": {POS: ADJ,"morph": "Aspect=Imp|Case=Ins|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Part|Voice=Act"}, + "AMFD7-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Dual|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFD7-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Dual|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFD7-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Dual|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFD7-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Dual|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP1-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP1-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP1-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP1-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP2-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP2-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP2-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP2-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP3-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP3-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP3-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP3-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP4-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP4-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP4-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP4-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP5-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP5-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP5-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP5-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP6-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP6-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP6-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP6-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP7-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP7-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP7-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFP7-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS1-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS1-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS1-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS1-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS2-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS2-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS2-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS2-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS3-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS3-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS3-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS3-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS4-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS4-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS4-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS4-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS5-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS5-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS5-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS5-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS6-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS6-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS6-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS6-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS7-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS7-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS7-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMFS7-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP1-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP1-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP1-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP1-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP2-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP2-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP2-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP2-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP3-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP3-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP3-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP3-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP4-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP4-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP4-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP4-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP5-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP5-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP5-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP5-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP6-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP6-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP6-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP6-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP7-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP7-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP7-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIP7-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS1-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS1-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS1-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS1-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS2-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS2-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS2-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS2-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS3-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS3-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS3-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS3-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS4-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS4-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS4-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS4-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS5-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS5-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS5-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS5-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS6-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS6-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS6-----A---7": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS6-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS6-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS6-----N---7": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS7-----A----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS7-----A---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS7-----N----": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMIS7-----N---6": {POS: ADJ,"morph": "Animacy=Inan|Aspect=Perf|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP1-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP1-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP1-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP1-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP2-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP2-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP2-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP2-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP3-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP3-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP3-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP3-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP4-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP4-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP4-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP4-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP5-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP5-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP5-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP5-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP6-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP6-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP6-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP6-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP7-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP7-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP7-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMP7-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS1-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS1-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS1-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS1-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS2-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS2-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS2-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS2-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS3-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS3-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS3-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS3-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS4-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS4-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS4-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS4-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS5-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS5-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS5-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS5-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS6-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS6-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS6-----A---7": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS6-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS6-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS6-----N---7": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS7-----A----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS7-----A---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS7-----N----": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMMS7-----N---6": {POS: ADJ,"morph": "Animacy=Anim|Aspect=Perf|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMND7-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Dual|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMND7-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Dual|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMND7-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Dual|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMND7-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Dual|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP1-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP1-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP1-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP1-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP2-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP2-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP2-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP2-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP3-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP3-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP3-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP3-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP4-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP4-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP4-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP4-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP5-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP5-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP5-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP5-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP6-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP6-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP6-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP6-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP7-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP7-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP7-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNP7-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS1-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS1-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS1-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS1-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Nom|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS2-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS2-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS2-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS2-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Gen|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS3-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS3-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS3-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS3-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Dat|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS4-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS4-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS4-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS4-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Acc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS5-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS5-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS5-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS5-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Voc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS6-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS6-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS6-----A---7": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS6-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS6-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS6-----N---7": {POS: ADJ,"morph": "Aspect=Perf|Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS7-----A----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS7-----A---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS7-----N----": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "AMNS7-----N---6": {POS: ADJ,"morph": "Aspect=Perf|Case=Ins|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "AOFP-----------": {POS: ADJ, "morph": "Gender=Fem|Number=Plur"}, + "AOFP----------1": {POS: ADJ, "morph": "Gender=Fem|Number=Plur"}, + "AOFP----------6": {POS: ADJ, "morph": "Gender=Fem|Number=Plur|Style=Coll"}, + "AOFS-----------": {POS: ADJ, "morph": "Gender=Fem|Number=Sing"}, + "AOFS----------1": {POS: ADJ, "morph": "Gender=Fem|Number=Sing"}, + "AOIP-----------": {POS: ADJ, "morph": "Animacy=Inan|Gender=Masc|Number=Plur"}, + "AOIP----------1": {POS: ADJ, "morph": "Animacy=Inan|Gender=Masc|Number=Plur"}, + "AOIP----------6": {POS: ADJ, "morph": "Animacy=Inan|Gender=Masc|Number=Plur|Style=Coll"}, + "AOMP-----------": {POS: ADJ, "morph": "Animacy=Anim|Gender=Masc|Number=Plur"}, + "AOMP----------1": {POS: ADJ, "morph": "Animacy=Anim|Gender=Masc|Number=Plur"}, + "AOMP----------6": {POS: ADJ, "morph": "Animacy=Anim|Gender=Masc|Number=Plur|Style=Coll"}, + "AONP-----------": {POS: ADJ, "morph": "Gender=Neut|Number=Plur"}, + "AONP----------1": {POS: ADJ, "morph": "Gender=Neut|Number=Plur"}, + "AONP----------6": {POS: ADJ, "morph": "Gender=Neut|Number=Plur|Style=Coll"}, + "AONS-----------": {POS: ADJ, "morph": "Gender=Neut|Number=Sing"}, + "AONS----------1": {POS: ADJ, "morph": "Gender=Neut|Number=Sing"}, + "AONS----------6": {POS: ADJ, "morph": "Gender=Neut|Number=Sing|Style=Coll"}, + "AOYS-----------": {POS: ADJ, "morph": "Gender=Masc|Number=Sing"}, + "AOYS----------6": {POS: ADJ, "morph": "Gender=Masc|Number=Sing|Style=Coll"}, + "AUFD7F---------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Fem|Number=Dual|Poss=Yes"}, + "AUFD7F--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Fem|Number=Dual|Poss=Yes|Style=Coll"}, + "AUFD7M---------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Masc|Number=Dual|Poss=Yes"}, + "AUFD7M--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Masc|Number=Dual|Poss=Yes|Style=Coll"}, + "AUFP1F---------": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUFP1F--------6": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP1M---------": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUFP1M--------5": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP1M--------6": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP2F---------": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUFP2F--------6": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP2M---------": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUFP2M--------6": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP3F---------": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUFP3F--------6": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP3M---------": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUFP3M--------6": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP4F---------": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUFP4F--------6": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP4M---------": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUFP4M--------6": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP5F---------": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUFP5F--------6": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP5M---------": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUFP5M--------6": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP6F---------": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUFP6F--------6": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP6M---------": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUFP6M--------6": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP7F---------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUFP7F--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP7F--------7": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP7M---------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUFP7M--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFP7M--------7": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUFS1F---------": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUFS1F--------6": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS1M---------": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUFS1M--------6": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS2F---------": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUFS2F--------6": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS2M---------": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUFS2M--------6": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS3F---------": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUFS3F--------6": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS3M---------": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUFS3M--------6": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS4F---------": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUFS4F--------6": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS4M---------": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUFS4M--------6": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS5F---------": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUFS5F--------6": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS5M---------": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUFS5M--------6": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS6F---------": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUFS6F--------6": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS6M---------": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUFS6M--------6": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS7F---------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUFS7F--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUFS7M---------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUFS7M--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIP1F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUIP1F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP1M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUIP1M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP2F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUIP2F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP2M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUIP2M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP3F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUIP3F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP3M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUIP3M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP4F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUIP4F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP4M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUIP4M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP5F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUIP5F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP5M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUIP5M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP6F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUIP6F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP6M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUIP6M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP7F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUIP7F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP7F--------7": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP7M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUIP7M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIP7M--------7": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUIS1F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUIS1F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS1M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUIS1M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS2F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUIS2F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS2M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUIS2M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS3F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUIS3F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS3M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUIS3M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS4F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUIS4F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS4M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUIS4M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS5F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUIS5F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS5M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUIS5M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS6F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUIS6F--------1": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUIS6F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS6M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUIS6M--------1": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUIS6M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS7F---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUIS7F--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUIS7M---------": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUIS7M--------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMP1F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUMP1F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP1M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUMP1M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP2F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUMP2F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP2M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUMP2M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP3F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUMP3F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP3M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUMP3M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP4F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUMP4F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP4M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUMP4M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP5F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUMP5F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP5M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUMP5M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP6F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUMP6F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP6M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUMP6M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP7F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUMP7F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP7F--------7": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Gender=Masc|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP7M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUMP7M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMP7M--------7": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Gender=Masc|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUMS1F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUMS1F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS1M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUMS1M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS2F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUMS2F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS2M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUMS2M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS3F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUMS3F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS3M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUMS3M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS4F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUMS4F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS4M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUMS4M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS5F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUMS5F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS5M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUMS5M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS6F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUMS6F--------1": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUMS6F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS6M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUMS6M--------1": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUMS6M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS7F---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUMS7F--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Gender=Masc|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUMS7M---------": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUMS7M--------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Gender=Masc|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUND7F---------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Fem|Number=Dual|Poss=Yes"}, + "AUND7F--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Fem|Number=Dual|Poss=Yes|Style=Coll"}, + "AUND7M---------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Masc|Number=Dual|Poss=Yes"}, + "AUND7M--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Masc|Number=Dual|Poss=Yes|Style=Coll"}, + "AUNP1F---------": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUNP1F--------6": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP1M---------": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUNP1M--------6": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP2F---------": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUNP2F--------6": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP2M---------": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUNP2M--------6": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP3F---------": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUNP3F--------6": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP3M---------": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUNP3M--------6": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP4F---------": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUNP4F--------6": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP4M---------": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUNP4M--------6": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP5F---------": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUNP5F--------6": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP5M---------": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUNP5M--------6": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP6F---------": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUNP6F--------6": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP6M---------": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUNP6M--------6": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP7F---------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes"}, + "AUNP7F--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP7F--------7": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Fem|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP7M---------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes"}, + "AUNP7M--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNP7M--------7": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Masc|Number=Plur|Poss=Yes|Style=Coll"}, + "AUNS1F---------": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUNS1F--------6": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS1M---------": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUNS1M--------6": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS2F---------": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUNS2F--------6": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS2M---------": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUNS2M--------6": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS3F---------": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUNS3F--------6": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS3M---------": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUNS3M--------6": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS4F---------": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUNS4F--------6": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS4M---------": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUNS4M--------6": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS5F---------": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUNS5F--------6": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS5M---------": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUNS5M--------6": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS6F---------": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUNS6F--------1": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUNS6F--------6": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS6M---------": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUNS6M--------1": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUNS6M--------6": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS7F---------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes"}, + "AUNS7F--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Fem|Number=Sing|Poss=Yes|Style=Coll"}, + "AUNS7M---------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes"}, + "AUNS7M--------6": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Gender[psor]=Masc|Number=Sing|Poss=Yes|Style=Coll"}, + "AUXXXF--------8": {POS: ADJ, "morph": "Abbr=Yes|Gender[psor]=Fem|Poss=Yes"}, + "AUXXXM---------": {POS: ADJ, "morph": "Gender[psor]=Masc|Poss=Yes"}, + "AUXXXM--------6": {POS: ADJ, "morph": "Gender[psor]=Masc|Poss=Yes|Style=Coll"}, + "AUXXXM--------8": {POS: ADJ, "morph": "Abbr=Yes|Gender[psor]=Masc|Poss=Yes"}, + "C=-------------": {POS: NUM, "morph": "NumForm=Digit|NumType=Card"}, + "C}-------------": {POS: NUM, "morph": "NumForm=Roman|NumType=Card"}, + "C?--1----------": {POS: DET, "morph": "Case=Nom|NumType=Card|PronType=Int,Rel"}, + "C}------------1": {POS: NUM, "morph": "NumForm=Roman|NumType=Card"}, + "C?--2----------": {POS: DET, "morph": "Case=Gen|NumType=Card|PronType=Int,Rel"}, + "C}------------2": {POS: NUM, "morph": "NumForm=Roman|NumType=Card|Style=Arch"}, + "C?--3----------": {POS: DET, "morph": "Case=Dat|NumType=Card|PronType=Int,Rel"}, + "C3-------------": {POS: NUM, "morph": "Abbr=Yes"}, + "C?--4----------": {POS: DET, "morph": "Case=Acc|NumType=Card|PronType=Int,Rel"}, + "C?--6----------": {POS: DET, "morph": "Case=Loc|NumType=Card|PronType=Int,Rel"}, + "C?--7----------": {POS: DET, "morph": "Case=Ins|NumType=Card|PronType=Int,Rel"}, + "Ca--1----------": {POS: DET, "morph": "Case=Nom|NumType=Card|PronType=Dem,Ind"}, + "Ca--2----------": {POS: DET, "morph": "Case=Gen|NumType=Card|PronType=Dem,Ind"}, + "Ca--2---------1": {POS: DET, "morph": "Case=Gen|NumType=Card|PronType=Dem,Ind"}, + "Ca--3----------": {POS: DET, "morph": "Case=Dat|NumType=Card|PronType=Dem,Ind"}, + "Ca--4----------": {POS: DET, "morph": "Case=Acc|NumType=Card|PronType=Dem,Ind"}, + "Ca--5----------": {POS: DET, "morph": "Case=Voc|NumType=Card|PronType=Dem,Ind"}, + "Ca--6----------": {POS: DET, "morph": "Case=Loc|NumType=Card|PronType=Dem,Ind"}, + "Ca--7----------": {POS: DET, "morph": "Case=Ins|NumType=Card|PronType=Dem,Ind"}, + "Ca--X----------": {POS: DET, "morph": "NumType=Card|PronType=Dem,Ind"}, + "Ca--X---------8": {POS: DET, "morph": "Abbr=Yes|NumType=Card|PronType=Dem,Ind"}, + "CdFD7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Dual|NumType=Mult,Sets"}, + "CdFD7---------6": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Dual|NumType=Mult,Sets|Style=Coll"}, + "CdFP1----------": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Number=Plur|NumType=Mult,Sets"}, + "CdFP1---------6": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdFP2----------": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Number=Plur|NumType=Mult,Sets"}, + "CdFP2---------6": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdFP3----------": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Number=Plur|NumType=Mult,Sets"}, + "CdFP3---------6": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdFP4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Number=Plur|NumType=Mult,Sets"}, + "CdFP4---------6": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdFP5----------": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Number=Plur|NumType=Mult,Sets"}, + "CdFP5---------6": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdFP6----------": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Number=Plur|NumType=Mult,Sets"}, + "CdFP6---------6": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdFP7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Plur|NumType=Mult,Sets"}, + "CdFP7---------6": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdFP7---------7": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdFS1----------": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Number=Sing|NumType=Mult,Sets"}, + "CdFS2----------": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Number=Sing|NumType=Mult,Sets"}, + "CdFS2---------6": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdFS3----------": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Number=Sing|NumType=Mult,Sets"}, + "CdFS3---------6": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdFS4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Number=Sing|NumType=Mult,Sets"}, + "CdFS4---------2": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Number=Sing|NumType=Mult,Sets|Style=Arch"}, + "CdFS5----------": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Number=Sing|NumType=Mult,Sets"}, + "CdFS6----------": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Number=Sing|NumType=Mult,Sets"}, + "CdFS6---------6": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdFS7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Sing|NumType=Mult,Sets"}, + "CdIP1----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdIP1---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdIP2----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdIP2---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdIP3----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdIP3---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdIP4----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdIP4---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdIP5----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdIP5---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdIP6----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdIP6---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdIP7----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdIP7---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdIP7---------7": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdIS1----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdIS1---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdIS2----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdIS2---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdIS3----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdIS3---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdIS4----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdIS4---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdIS5----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdIS5---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdIS6----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdIS6---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdIS7----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdIS7---------6": {POS: ADJ,"morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdMP1----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdMP1---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdMP2----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdMP2---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdMP3----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdMP3---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdMP4----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdMP4---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdMP5----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdMP5---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdMP6----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdMP6---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdMP7----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|NumType=Mult,Sets"}, + "CdMP7---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdMP7---------7": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdMS1----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdMS1---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdMS2----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdMS2---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdMS3----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdMS3---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdMS4----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdMS4---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdMS5----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdMS5---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdMS6----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdMS6---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdMS7----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdMS7---------6": {POS: ADJ,"morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdND7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Dual|NumType=Mult,Sets"}, + "CdNP1----------": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Number=Plur|NumType=Mult,Sets"}, + "CdNP1---------6": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdNP2----------": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Number=Plur|NumType=Mult,Sets"}, + "CdNP2---------6": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdNP3----------": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Number=Plur|NumType=Mult,Sets"}, + "CdNP3---------6": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdNP4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Number=Plur|NumType=Mult,Sets"}, + "CdNP4---------6": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdNP5----------": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Number=Plur|NumType=Mult,Sets"}, + "CdNP5---------6": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdNP6----------": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Number=Plur|NumType=Mult,Sets"}, + "CdNP6---------6": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdNP7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Plur|NumType=Mult,Sets"}, + "CdNP7---------6": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdNP7---------7": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Plur|NumType=Mult,Sets|Style=Coll"}, + "CdNS1----------": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Number=Sing|NumType=Mult,Sets"}, + "CdNS1---------1": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Number=Sing|NumType=Mult,Sets"}, + "CdNS1---------6": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdNS2----------": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Number=Sing|NumType=Mult,Sets"}, + "CdNS2---------6": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdNS3----------": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Number=Sing|NumType=Mult,Sets"}, + "CdNS3---------6": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdNS4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Number=Sing|NumType=Mult,Sets"}, + "CdNS4---------1": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Number=Sing|NumType=Mult,Sets"}, + "CdNS4---------6": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdNS5----------": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Number=Sing|NumType=Mult,Sets"}, + "CdNS5---------6": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdNS6----------": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Number=Sing|NumType=Mult,Sets"}, + "CdNS6---------6": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdNS7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Sing|NumType=Mult,Sets"}, + "CdNS7---------6": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Sing|NumType=Mult,Sets|Style=Coll"}, + "CdXP1----------": {POS: ADJ, "morph": "Case=Nom|Number=Plur|NumType=Mult,Sets"}, + "CdXP1---------1": {POS: ADJ, "morph": "Case=Nom|Number=Plur|NumType=Mult,Sets"}, + "CdXP2----------": {POS: ADJ, "morph": "Case=Gen|Number=Plur|NumType=Mult,Sets"}, + "CdXP3----------": {POS: ADJ, "morph": "Case=Dat|Number=Plur|NumType=Mult,Sets"}, + "CdXP4----------": {POS: ADJ, "morph": "Case=Acc|Number=Plur|NumType=Mult,Sets"}, + "CdXP4---------1": {POS: ADJ, "morph": "Case=Acc|Number=Plur|NumType=Mult,Sets"}, + "CdXP5----------": {POS: ADJ, "morph": "Case=Voc|Number=Plur|NumType=Mult,Sets"}, + "CdXP5---------1": {POS: ADJ, "morph": "Case=Voc|Number=Plur|NumType=Mult,Sets"}, + "CdXP6----------": {POS: ADJ, "morph": "Case=Loc|Number=Plur|NumType=Mult,Sets"}, + "CdXP7----------": {POS: ADJ, "morph": "Case=Ins|Number=Plur|NumType=Mult,Sets"}, + "CdXS1----------": {POS: ADJ, "morph": "Case=Nom|Number=Sing|NumType=Mult,Sets"}, + "CdXS5----------": {POS: ADJ, "morph": "Case=Voc|Number=Sing|NumType=Mult,Sets"}, + "CdYS2----------": {POS: ADJ, "morph": "Case=Gen|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdYS3----------": {POS: ADJ, "morph": "Case=Dat|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdYS6----------": {POS: ADJ, "morph": "Case=Loc|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "CdYS7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Masc|Number=Sing|NumType=Mult,Sets"}, + "ChFD7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Dual|NumType=Sets|NumValue=1"}, + "ChFP1----------": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Number=Plur|NumType=Sets|NumValue=1"}, + "ChFP4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Number=Plur|NumType=Sets|NumValue=1"}, + "ChFP5----------": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Number=Plur|NumType=Sets|NumValue=1"}, + "ChIP1----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|NumType=Sets|NumValue=1"}, + "ChIP5----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|NumType=Sets|NumValue=1"}, + "ChMP1----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|NumType=Sets|NumValue=1"}, + "ChMP5----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|NumType=Sets|NumValue=1"}, + "ChNP1----------": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Number=Plur|NumType=Sets|NumValue=1"}, + "ChNP4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Number=Plur|NumType=Sets|NumValue=1"}, + "ChNP5----------": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Number=Plur|NumType=Sets|NumValue=1"}, + "ChXP2----------": {POS: ADJ, "morph": "Case=Gen|Number=Plur|NumType=Sets|NumValue=1"}, + "ChXP3----------": {POS: ADJ, "morph": "Case=Dat|Number=Plur|NumType=Sets|NumValue=1"}, + "ChXP6----------": {POS: ADJ, "morph": "Case=Loc|Number=Plur|NumType=Sets|NumValue=1"}, + "ChXP7----------": {POS: ADJ, "morph": "Case=Ins|Number=Plur|NumType=Sets|NumValue=1"}, + "ChYP4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Masc|Number=Plur|NumType=Sets|NumValue=1"}, + "Cj-S1----------": {POS: NUM, "morph": "Case=Nom|Number=Sing|NumType=Card"}, + "Cj-S2----------": {POS: NUM, "morph": "Case=Gen|Number=Sing|NumType=Card"}, + "Cj-S2---------1": {POS: NUM, "morph": "Case=Gen|Number=Sing|NumType=Card"}, + "Cj-S3----------": {POS: NUM, "morph": "Case=Dat|Number=Sing|NumType=Card"}, + "Cj-S3---------1": {POS: NUM, "morph": "Case=Dat|Number=Sing|NumType=Card"}, + "Cj-S4----------": {POS: NUM, "morph": "Case=Acc|Number=Sing|NumType=Card"}, + "Cj-S5----------": {POS: NUM, "morph": "Case=Voc|Number=Sing|NumType=Card"}, + "Cj-S6----------": {POS: NUM, "morph": "Case=Loc|Number=Sing|NumType=Card"}, + "Cj-S6---------1": {POS: NUM, "morph": "Case=Loc|Number=Sing|NumType=Card"}, + "Cj-S7----------": {POS: NUM, "morph": "Case=Ins|Number=Sing|NumType=Card"}, + "Cj-S7---------1": {POS: NUM, "morph": "Case=Ins|Number=Sing|NumType=Card"}, + "Ck-P1----------": {POS: ADJ, "morph": "Case=Nom|Number=Plur|NumType=Ord"}, + "Ck-P2----------": {POS: ADJ, "morph": "Case=Gen|Number=Plur|NumType=Ord"}, + "Ck-P3----------": {POS: ADJ, "morph": "Case=Dat|Number=Plur|NumType=Ord"}, + "Ck-P4----------": {POS: ADJ, "morph": "Case=Acc|Number=Plur|NumType=Ord"}, + "Ck-P5----------": {POS: ADJ, "morph": "Case=Voc|Number=Plur|NumType=Ord"}, + "Ck-P6----------": {POS: ADJ, "morph": "Case=Loc|Number=Plur|NumType=Ord"}, + "Ck-P7----------": {POS: ADJ, "morph": "Case=Ins|Number=Plur|NumType=Ord"}, + "ClFD7----------": {POS: NUM, "morph": "Case=Ins|Gender=Fem|Number=Dual|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClFD7---------6": {POS: NUM,"morph": "Case=Ins|Gender=Fem|Number=Dual|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Coll"}, + "ClFD7---------9": {POS: NUM, "morph": "Case=Ins|Gender=Fem|Number=Dual|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClFS1----------": {POS: NUM, "morph": "Case=Nom|Gender=Fem|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClFS2----------": {POS: NUM, "morph": "Case=Gen|Gender=Fem|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClFS3----------": {POS: NUM, "morph": "Case=Dat|Gender=Fem|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClFS4----------": {POS: NUM, "morph": "Case=Acc|Gender=Fem|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClFS5----------": {POS: NUM, "morph": "Case=Voc|Gender=Fem|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClFS6----------": {POS: NUM, "morph": "Case=Loc|Gender=Fem|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClFS7----------": {POS: NUM, "morph": "Case=Ins|Gender=Fem|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClHP1----------": {POS: NUM,"morph": "Case=Nom|Gender=Fem,Neut|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClHP4----------": {POS: NUM,"morph": "Case=Acc|Gender=Fem,Neut|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClHP5----------": {POS: NUM,"morph": "Case=Voc|Gender=Fem,Neut|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClIS4----------": {POS: NUM,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClMS4----------": {POS: NUM,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClNS1----------": {POS: NUM, "morph": "Case=Nom|Gender=Neut|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClNS4----------": {POS: NUM, "morph": "Case=Acc|Gender=Neut|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClNS5----------": {POS: NUM, "morph": "Case=Voc|Gender=Neut|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP1----------": {POS: NUM, "morph": "Case=Nom|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP1---------6": {POS: NUM, "morph": "Case=Nom|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Coll"}, + "ClXP2----------": {POS: NUM, "morph": "Case=Gen|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP2---------1": {POS: NUM, "morph": "Case=Gen|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP2---------6": {POS: NUM, "morph": "Case=Gen|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Coll"}, + "ClXP3----------": {POS: NUM, "morph": "Case=Dat|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP3---------1": {POS: NUM, "morph": "Case=Dat|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP3---------2": {POS: NUM, "morph": "Case=Dat|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Arch"}, + "ClXP3---------6": {POS: NUM, "morph": "Case=Dat|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Coll"}, + "ClXP3---------9": {POS: NUM, "morph": "Case=Dat|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP4----------": {POS: NUM, "morph": "Case=Acc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP4---------6": {POS: NUM, "morph": "Case=Acc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Coll"}, + "ClXP5----------": {POS: NUM, "morph": "Case=Voc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP5---------6": {POS: NUM, "morph": "Case=Voc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Coll"}, + "ClXP6----------": {POS: NUM, "morph": "Case=Loc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP6---------1": {POS: NUM, "morph": "Case=Loc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP6---------2": {POS: NUM, "morph": "Case=Loc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Arch"}, + "ClXP6---------6": {POS: NUM, "morph": "Case=Loc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Coll"}, + "ClXP7----------": {POS: NUM, "morph": "Case=Ins|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP7---------1": {POS: NUM, "morph": "Case=Ins|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXP7---------2": {POS: NUM, "morph": "Case=Ins|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Arch"}, + "ClXP7---------6": {POS: NUM, "morph": "Case=Ins|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3|Style=Coll"}, + "ClXP7---------9": {POS: NUM, "morph": "Case=Ins|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXPX----------": {POS: NUM, "morph": "Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXS2----------": {POS: NUM, "morph": "Case=Gen|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXS3----------": {POS: NUM, "morph": "Case=Dat|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXS6----------": {POS: NUM, "morph": "Case=Loc|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXS7----------": {POS: NUM, "morph": "Case=Ins|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClXSX----------": {POS: NUM, "morph": "Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClYP1----------": {POS: NUM, "morph": "Case=Nom|Gender=Masc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClYP4----------": {POS: NUM, "morph": "Case=Acc|Gender=Masc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClYP5----------": {POS: NUM, "morph": "Case=Voc|Gender=Masc|Number=Plur|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClYS1----------": {POS: NUM, "morph": "Case=Nom|Gender=Masc|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClYS5----------": {POS: NUM, "morph": "Case=Voc|Gender=Masc|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClZS2----------": {POS: NUM,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClZS3----------": {POS: NUM,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClZS6----------": {POS: NUM,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "ClZS7----------": {POS: NUM,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|NumForm=Word|NumType=Card|NumValue=1,2,3"}, + "Cn-P2----------": {POS: NUM, "morph": "Case=Gen|Number=Plur|NumForm=Word|NumType=Card"}, + "Cn-P2---------1": {POS: NUM, "morph": "Case=Gen|Number=Plur|NumForm=Word|NumType=Card"}, + "Cn-P3----------": {POS: NUM, "morph": "Case=Dat|Number=Plur|NumForm=Word|NumType=Card"}, + "Cn-P3---------1": {POS: NUM, "morph": "Case=Dat|Number=Plur|NumForm=Word|NumType=Card"}, + "Cn-P6----------": {POS: NUM, "morph": "Case=Loc|Number=Plur|NumForm=Word|NumType=Card"}, + "Cn-P6---------1": {POS: NUM, "morph": "Case=Loc|Number=Plur|NumForm=Word|NumType=Card"}, + "Cn-P7----------": {POS: NUM, "morph": "Case=Ins|Number=Plur|NumForm=Word|NumType=Card"}, + "Cn-P7---------1": {POS: NUM, "morph": "Case=Ins|Number=Plur|NumForm=Word|NumType=Card"}, + "Cn-S1----------": {POS: NUM, "morph": "Case=Nom|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S1---------1": {POS: NUM, "morph": "Case=Nom|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S2----------": {POS: NUM, "morph": "Case=Gen|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S2---------1": {POS: NUM, "morph": "Case=Gen|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S3----------": {POS: NUM, "morph": "Case=Dat|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S3---------1": {POS: NUM, "morph": "Case=Dat|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S4----------": {POS: NUM, "morph": "Case=Acc|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S4---------1": {POS: NUM, "morph": "Case=Acc|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S5----------": {POS: NUM, "morph": "Case=Voc|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S5---------1": {POS: NUM, "morph": "Case=Voc|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S6----------": {POS: NUM, "morph": "Case=Loc|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S6---------1": {POS: NUM, "morph": "Case=Loc|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S7----------": {POS: NUM, "morph": "Case=Ins|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-S7---------1": {POS: NUM, "morph": "Case=Ins|Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-SX----------": {POS: NUM, "morph": "Number=Sing|NumForm=Word|NumType=Card"}, + "Cn-XX----------": {POS: NUM, "morph": "NumForm=Word|NumType=Card"}, + "Co-------------": {POS: ADV, "morph": "NumType=Mult|PronType=Dem,Ind"}, + "Co------------1": {POS: ADV, "morph": "NumType=Mult|PronType=Dem,Ind"}, + "CrFD7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Dual|NumType=Ord"}, + "CrFD7---------6": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Dual|NumType=Ord|Style=Coll"}, + "CrFP1----------": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Number=Plur|NumType=Ord"}, + "CrFP1---------6": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Number=Plur|NumType=Ord|Style=Coll"}, + "CrFP2----------": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Number=Plur|NumType=Ord"}, + "CrFP2---------6": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Number=Plur|NumType=Ord|Style=Coll"}, + "CrFP3----------": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Number=Plur|NumType=Ord"}, + "CrFP3---------6": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Number=Plur|NumType=Ord|Style=Coll"}, + "CrFP4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Number=Plur|NumType=Ord"}, + "CrFP4---------6": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Number=Plur|NumType=Ord|Style=Coll"}, + "CrFP5----------": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Number=Plur|NumType=Ord"}, + "CrFP5---------6": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Number=Plur|NumType=Ord|Style=Coll"}, + "CrFP6----------": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Number=Plur|NumType=Ord"}, + "CrFP6---------6": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Number=Plur|NumType=Ord|Style=Coll"}, + "CrFP7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Plur|NumType=Ord"}, + "CrFP7---------6": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Plur|NumType=Ord|Style=Coll"}, + "CrFP7---------7": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Plur|NumType=Ord|Style=Coll"}, + "CrFS1----------": {POS: ADJ, "morph": "Case=Nom|Gender=Fem|Number=Sing|NumType=Ord"}, + "CrFS2----------": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Number=Sing|NumType=Ord"}, + "CrFS2---------6": {POS: ADJ, "morph": "Case=Gen|Gender=Fem|Number=Sing|NumType=Ord|Style=Coll"}, + "CrFS3----------": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Number=Sing|NumType=Ord"}, + "CrFS3---------6": {POS: ADJ, "morph": "Case=Dat|Gender=Fem|Number=Sing|NumType=Ord|Style=Coll"}, + "CrFS4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Fem|Number=Sing|NumType=Ord"}, + "CrFS5----------": {POS: ADJ, "morph": "Case=Voc|Gender=Fem|Number=Sing|NumType=Ord"}, + "CrFS6----------": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Number=Sing|NumType=Ord"}, + "CrFS6---------6": {POS: ADJ, "morph": "Case=Loc|Gender=Fem|Number=Sing|NumType=Ord|Style=Coll"}, + "CrFS7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Fem|Number=Sing|NumType=Ord"}, + "CrIP1----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrIP1---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrIP2----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrIP2---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrIP3----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrIP3---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrIP4----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrIP4---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrIP5----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrIP5---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrIP6----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrIP6---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrIP7----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrIP7---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrIP7---------7": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrIS1----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrIS1---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrIS2----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrIS2---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrIS3----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrIS3---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrIS4----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrIS4---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrIS5----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrIS5---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrIS6----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrIS6---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrIS6---------7": {POS: ADJ, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrIS7----------": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrIS7---------6": {POS: ADJ, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrMP1----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrMP1---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrMP2----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrMP2---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrMP3----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrMP3---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrMP4----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrMP4---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrMP5----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrMP5---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrMP6----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrMP6---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrMP7----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|NumType=Ord"}, + "CrMP7---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrMP7---------7": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|NumType=Ord|Style=Coll"}, + "CrMS1----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrMS1---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrMS2----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrMS2---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrMS3----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrMS3---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrMS4----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrMS4---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrMS5----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrMS5---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrMS6----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrMS6---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrMS6---------7": {POS: ADJ, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrMS7----------": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|NumType=Ord"}, + "CrMS7---------6": {POS: ADJ, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|NumType=Ord|Style=Coll"}, + "CrND7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Dual|NumType=Ord"}, + "CrNP1----------": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Number=Plur|NumType=Ord"}, + "CrNP1---------6": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Number=Plur|NumType=Ord|Style=Coll"}, + "CrNP2----------": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Number=Plur|NumType=Ord"}, + "CrNP2---------6": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Number=Plur|NumType=Ord|Style=Coll"}, + "CrNP3----------": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Number=Plur|NumType=Ord"}, + "CrNP3---------6": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Number=Plur|NumType=Ord|Style=Coll"}, + "CrNP4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Number=Plur|NumType=Ord"}, + "CrNP4---------6": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Number=Plur|NumType=Ord|Style=Coll"}, + "CrNP5----------": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Number=Plur|NumType=Ord"}, + "CrNP5---------6": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Number=Plur|NumType=Ord|Style=Coll"}, + "CrNP6----------": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Number=Plur|NumType=Ord"}, + "CrNP6---------6": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Number=Plur|NumType=Ord|Style=Coll"}, + "CrNP7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Plur|NumType=Ord"}, + "CrNP7---------6": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Plur|NumType=Ord|Style=Coll"}, + "CrNP7---------7": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Plur|NumType=Ord|Style=Coll"}, + "CrNS1----------": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Number=Sing|NumType=Ord"}, + "CrNS1---------6": {POS: ADJ, "morph": "Case=Nom|Gender=Neut|Number=Sing|NumType=Ord|Style=Coll"}, + "CrNS2----------": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Number=Sing|NumType=Ord"}, + "CrNS2---------6": {POS: ADJ, "morph": "Case=Gen|Gender=Neut|Number=Sing|NumType=Ord|Style=Coll"}, + "CrNS3----------": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Number=Sing|NumType=Ord"}, + "CrNS3---------6": {POS: ADJ, "morph": "Case=Dat|Gender=Neut|Number=Sing|NumType=Ord|Style=Coll"}, + "CrNS4----------": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Number=Sing|NumType=Ord"}, + "CrNS4---------6": {POS: ADJ, "morph": "Case=Acc|Gender=Neut|Number=Sing|NumType=Ord|Style=Coll"}, + "CrNS5----------": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Number=Sing|NumType=Ord"}, + "CrNS5---------6": {POS: ADJ, "morph": "Case=Voc|Gender=Neut|Number=Sing|NumType=Ord|Style=Coll"}, + "CrNS6----------": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Number=Sing|NumType=Ord"}, + "CrNS6---------6": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Number=Sing|NumType=Ord|Style=Coll"}, + "CrNS6---------7": {POS: ADJ, "morph": "Case=Loc|Gender=Neut|Number=Sing|NumType=Ord|Style=Coll"}, + "CrNS7----------": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Sing|NumType=Ord"}, + "CrNS7---------6": {POS: ADJ, "morph": "Case=Ins|Gender=Neut|Number=Sing|NumType=Ord|Style=Coll"}, + "CrXXX----------": {POS: ADJ, "morph": "NumType=Ord"}, + "Cu-------------": {POS: ADV, "morph": "NumType=Mult|PronType=Int,Rel"}, + "Cv-------------": {POS: ADV, "morph": "NumType=Mult"}, + "Cv------------1": {POS: ADV, "morph": "NumType=Mult"}, + "Cv------------6": {POS: ADV, "morph": "NumType=Mult|Style=Coll"}, + "CwFD7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Dual|NumType=Ord|PronType=Dem,Ind"}, + "CwFP1----------": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwFP4----------": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwFP5----------": {POS: DET, "morph": "Case=Voc|Gender=Fem|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwFS1----------": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwFS2----------": {POS: DET, "morph": "Case=Gen|Gender=Fem|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwFS3----------": {POS: DET, "morph": "Case=Dat|Gender=Fem|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwFS4----------": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwFS5----------": {POS: DET, "morph": "Case=Voc|Gender=Fem|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwFS6----------": {POS: DET, "morph": "Case=Loc|Gender=Fem|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwFS7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwIP1----------": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwIP5----------": {POS: DET,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwIS4----------": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwMP1----------": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwMP5----------": {POS: DET,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwMS4----------": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwNP1----------": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwNP4----------": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwNP5----------": {POS: DET, "morph": "Case=Voc|Gender=Neut|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwNS1----------": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwNS4----------": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwNS5----------": {POS: DET, "morph": "Case=Voc|Gender=Neut|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwXP2----------": {POS: DET, "morph": "Case=Gen|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwXP3----------": {POS: DET, "morph": "Case=Dat|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwXP6----------": {POS: DET, "morph": "Case=Loc|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwXP7----------": {POS: DET, "morph": "Case=Ins|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwYP4----------": {POS: DET, "morph": "Case=Acc|Gender=Masc|Number=Plur|NumType=Ord|PronType=Dem,Ind"}, + "CwYS1----------": {POS: DET, "morph": "Case=Nom|Gender=Masc|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwYS5----------": {POS: DET, "morph": "Case=Voc|Gender=Masc|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwZS2----------": {POS: DET, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwZS3----------": {POS: DET, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwZS6----------": {POS: DET, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CwZS7----------": {POS: DET, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|NumType=Ord|PronType=Dem,Ind"}, + "CyFP1----------": {POS: NUM, "morph": "Case=Nom|Gender=Fem|Number=Plur|NumType=Frac"}, + "CyFP2----------": {POS: NUM, "morph": "Case=Gen|Gender=Fem|Number=Plur|NumType=Frac"}, + "CyFP3----------": {POS: NUM, "morph": "Case=Dat|Gender=Fem|Number=Plur|NumType=Frac"}, + "CyFP4----------": {POS: NUM, "morph": "Case=Acc|Gender=Fem|Number=Plur|NumType=Frac"}, + "CyFP5----------": {POS: NUM, "morph": "Case=Voc|Gender=Fem|Number=Plur|NumType=Frac"}, + "CyFP6----------": {POS: NUM, "morph": "Case=Loc|Gender=Fem|Number=Plur|NumType=Frac"}, + "CyFP7----------": {POS: NUM, "morph": "Case=Ins|Gender=Fem|Number=Plur|NumType=Frac"}, + "CyFP7---------6": {POS: NUM, "morph": "Case=Ins|Gender=Fem|Number=Plur|NumType=Frac|Style=Coll"}, + "CyFS1----------": {POS: NUM, "morph": "Case=Nom|Gender=Fem|Number=Sing|NumType=Frac"}, + "CyFS2----------": {POS: NUM, "morph": "Case=Gen|Gender=Fem|Number=Sing|NumType=Frac"}, + "CyFS3----------": {POS: NUM, "morph": "Case=Dat|Gender=Fem|Number=Sing|NumType=Frac"}, + "CyFS4----------": {POS: NUM, "morph": "Case=Acc|Gender=Fem|Number=Sing|NumType=Frac"}, + "CyFS5----------": {POS: NUM, "morph": "Case=Voc|Gender=Fem|Number=Sing|NumType=Frac"}, + "CyFS6----------": {POS: NUM, "morph": "Case=Loc|Gender=Fem|Number=Sing|NumType=Frac"}, + "CyFS7----------": {POS: NUM, "morph": "Case=Ins|Gender=Fem|Number=Sing|NumType=Frac"}, + "CzFD7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Dual|NumType=Ord|PronType=Int,Rel"}, + "CzFP1----------": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzFP4----------": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzFS1----------": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzFS2----------": {POS: DET, "morph": "Case=Gen|Gender=Fem|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzFS3----------": {POS: DET, "morph": "Case=Dat|Gender=Fem|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzFS4----------": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzFS6----------": {POS: DET, "morph": "Case=Loc|Gender=Fem|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzFS7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzIP1----------": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzIS4----------": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzMP1----------": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzMS4----------": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzNP1----------": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzNP4----------": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzNS1----------": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzNS4----------": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzXP2----------": {POS: DET, "morph": "Case=Gen|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzXP3----------": {POS: DET, "morph": "Case=Dat|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzXP6----------": {POS: DET, "morph": "Case=Loc|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzXP7----------": {POS: DET, "morph": "Case=Ins|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzYP4----------": {POS: DET, "morph": "Case=Acc|Gender=Masc|Number=Plur|NumType=Ord|PronType=Int,Rel"}, + "CzYS1----------": {POS: DET, "morph": "Case=Nom|Gender=Masc|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzZS2----------": {POS: DET, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzZS3----------": {POS: DET, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzZS6----------": {POS: DET, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "CzZS7----------": {POS: DET, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|NumType=Ord|PronType=Int,Rel"}, + "D!-------------": {POS: ADV, "morph": "Abbr=Yes"}, + "Db-------------": {POS: ADV, "morph": "_"}, + "Db------------1": {POS: ADV, "morph": "_"}, + "Db------------2": {POS: ADV, "morph": "Style=Arch"}, + "Db------------4": {POS: ADV, "morph": "Style=Arch"}, + "Db------------6": {POS: ADV, "morph": "Style=Coll"}, + "Db------------7": {POS: ADV, "morph": "Style=Coll"}, + "Db------------8": {POS: ADV, "morph": "Abbr=Yes"}, + "Db------------9": {POS: ADV, "morph": "_"}, + "Db--------A----": {POS: ADV, "morph": "Polarity=Pos"}, + "Db--------N----": {POS: ADV, "morph": "Polarity=Neg"}, + "Dg-------1A----": {POS: ADV, "morph": "Degree=Pos|Polarity=Pos"}, + "Dg-------1A---1": {POS: ADV, "morph": "Degree=Pos|Polarity=Pos"}, + "Dg-------1A---3": {POS: ADV, "morph": "Degree=Pos|Polarity=Pos|Style=Arch"}, + "Dg-------1A---8": {POS: ADV, "morph": "Abbr=Yes|Degree=Pos|Polarity=Pos"}, + "Dg-------1N----": {POS: ADV, "morph": "Degree=Pos|Polarity=Neg"}, + "Dg-------1N---3": {POS: ADV, "morph": "Degree=Pos|Polarity=Neg|Style=Arch"}, + "Dg-------1N---8": {POS: ADV, "morph": "Abbr=Yes|Degree=Pos|Polarity=Neg"}, + "Dg-------2A----": {POS: ADV, "morph": "Degree=Cmp|Polarity=Pos"}, + "Dg-------2A---1": {POS: ADV, "morph": "Degree=Cmp|Polarity=Pos"}, + "Dg-------2A---2": {POS: ADV, "morph": "Degree=Cmp|Polarity=Pos|Style=Arch"}, + "Dg-------2A---3": {POS: ADV, "morph": "Degree=Cmp|Polarity=Pos|Style=Arch"}, + "Dg-------2A---6": {POS: ADV, "morph": "Degree=Cmp|Polarity=Pos|Style=Coll"}, + "Dg-------2N----": {POS: ADV, "morph": "Degree=Cmp|Polarity=Neg"}, + "Dg-------2N---1": {POS: ADV, "morph": "Degree=Cmp|Polarity=Neg"}, + "Dg-------2N---2": {POS: ADV, "morph": "Degree=Cmp|Polarity=Neg|Style=Arch"}, + "Dg-------2N---3": {POS: ADV, "morph": "Degree=Cmp|Polarity=Neg|Style=Arch"}, + "Dg-------2N---6": {POS: ADV, "morph": "Degree=Cmp|Polarity=Neg|Style=Coll"}, + "Dg-------3A----": {POS: ADV, "morph": "Degree=Sup|Polarity=Pos"}, + "Dg-------3A---1": {POS: ADV, "morph": "Degree=Sup|Polarity=Pos"}, + "Dg-------3A---2": {POS: ADV, "morph": "Degree=Sup|Polarity=Pos|Style=Arch"}, + "Dg-------3A---3": {POS: ADV, "morph": "Degree=Sup|Polarity=Pos|Style=Arch"}, + "Dg-------3A---6": {POS: ADV, "morph": "Degree=Sup|Polarity=Pos|Style=Coll"}, + "Dg-------3N----": {POS: ADV, "morph": "Degree=Sup|Polarity=Neg"}, + "Dg-------3N---1": {POS: ADV, "morph": "Degree=Sup|Polarity=Neg"}, + "Dg-------3N---2": {POS: ADV, "morph": "Degree=Sup|Polarity=Neg|Style=Arch"}, + "Dg-------3N---3": {POS: ADV, "morph": "Degree=Sup|Polarity=Neg|Style=Arch"}, + "Dg-------3N---6": {POS: ADV, "morph": "Degree=Sup|Polarity=Neg|Style=Coll"}, + "II-------------": {POS: INTJ, "morph": "_"}, + "J^-------------": {POS: CCONJ, "morph": "_"}, + "J,-------------": {POS: SCONJ, "morph": "_"}, + "J*-------------": {POS: CCONJ, "morph": "ConjType=Oper"}, + "J^------------1": {POS: CCONJ, "morph": "_"}, + "J,------------1": {POS: SCONJ, "morph": "_"}, + "J^------------2": {POS: CCONJ, "morph": "Style=Arch"}, + "J^------------8": {POS: CCONJ, "morph": "Abbr=Yes"}, + "J,------------8": {POS: SCONJ, "morph": "Abbr=Yes"}, + "J,-P---1-------": {POS: SCONJ, "morph": "Number=Plur|Person=1"}, + "J,-P---2-------": {POS: SCONJ, "morph": "Number=Plur|Person=2"}, + "J,-S---1-------": {POS: SCONJ, "morph": "Number=Sing|Person=1"}, + "J,-S---2-------": {POS: SCONJ, "morph": "Number=Sing|Person=2"}, + "J,-X---3-------": {POS: SCONJ, "morph": "Person=3"}, + "N;-------------": {POS: NOUN, "morph": "Abbr=Yes"}, + "NNFD7-----A----": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Dual|Polarity=Pos"}, + "NNFD7-----N----": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Dual|Polarity=Neg"}, + "NNFP1-----A----": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP1-----A---1": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP1-----A---4": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNFP1-----A---6": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNFP1-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Nom|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP1-----N----": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP1-----N---1": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP1-----N---4": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNFP1-----N---6": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNFP1-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Nom|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP2-----A----": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP2-----A---1": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP2-----A---6": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNFP2-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Gen|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP2-----N----": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP2-----N---1": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP2-----N---6": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNFP2-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Gen|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP3-----A----": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP3-----A---1": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP3-----A---6": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNFP3-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Dat|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP3-----N----": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP3-----N---1": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP3-----N---6": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNFP3-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Dat|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP4-----A----": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP4-----A---1": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP4-----A---4": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNFP4-----A---6": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNFP4-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Acc|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP4-----N----": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP4-----N---1": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP4-----N---4": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNFP4-----N---6": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNFP4-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Acc|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP5-----A----": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP5-----A---1": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP5-----A---4": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNFP5-----A---6": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNFP5-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Voc|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP5-----N----": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP5-----N---1": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP5-----N---4": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNFP5-----N---6": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNFP5-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Voc|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP6-----A----": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP6-----A---1": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP6-----A---6": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNFP6-----A---7": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNFP6-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Loc|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP6-----N----": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP6-----N---1": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP6-----N---6": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNFP6-----N---7": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNFP6-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Loc|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP7-----A----": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP7-----A---1": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP7-----A---2": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNFP7-----A---6": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNFP7-----A---7": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNFP7-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Ins|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFP7-----N----": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP7-----N---1": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFP7-----N---2": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNFP7-----N---6": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNFP7-----N---7": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNFP7-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Ins|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFPX-----A----": {POS: NOUN, "morph": "Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFPX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Fem|Number=Plur|Polarity=Pos"}, + "NNFPX-----N----": {POS: NOUN, "morph": "Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFPX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Fem|Number=Plur|Polarity=Neg"}, + "NNFS1-----A----": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS1-----A---1": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS1-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Nom|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS1-----N----": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS1-----N---1": {POS: NOUN, "morph": "Case=Nom|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS1-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Nom|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS2-----A----": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS2-----A---1": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS2-----A---2": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNFS2-----A---6": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNFS2-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Gen|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS2-----N----": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS2-----N---1": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS2-----N---2": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNFS2-----N---6": {POS: NOUN, "morph": "Case=Gen|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNFS2-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Gen|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS3-----A----": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS3-----A---1": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS3-----A---2": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNFS3-----A---6": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNFS3-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Dat|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS3-----N----": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS3-----N---1": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS3-----N---2": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNFS3-----N---6": {POS: NOUN, "morph": "Case=Dat|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNFS3-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Dat|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS4-----A----": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS4-----A---1": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS4-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Acc|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS4-----N----": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS4-----N---1": {POS: NOUN, "morph": "Case=Acc|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS4-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Acc|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS5-----A----": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS5-----A---1": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS5-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Voc|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS5-----N----": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS5-----N---1": {POS: NOUN, "morph": "Case=Voc|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS5-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Voc|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS6-----A----": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS6-----A---1": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS6-----A---6": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNFS6-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Loc|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS6-----N----": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS6-----N---1": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS6-----N---6": {POS: NOUN, "morph": "Case=Loc|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNFS6-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Loc|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS7-----A----": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS7-----A---1": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS7-----A---3": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNFS7-----A---6": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNFS7-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Ins|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFS7-----N----": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS7-----N---1": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFS7-----N---3": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNFS7-----N---6": {POS: NOUN, "morph": "Case=Ins|Gender=Fem|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNFS7-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Ins|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFSX-----A----": {POS: NOUN, "morph": "Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFSX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Fem|Number=Sing|Polarity=Pos"}, + "NNFSX-----N----": {POS: NOUN, "morph": "Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFSX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Fem|Number=Sing|Polarity=Neg"}, + "NNFXX-----A----": {POS: NOUN, "morph": "Gender=Fem|Polarity=Pos"}, + "NNFXX-----A---1": {POS: NOUN, "morph": "Gender=Fem|Polarity=Pos"}, + "NNFXX-----A---2": {POS: NOUN, "morph": "Gender=Fem|Polarity=Pos|Style=Arch"}, + "NNFXX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Fem|Polarity=Pos"}, + "NNFXX-----A---9": {POS: NOUN, "morph": "Gender=Fem|Polarity=Pos"}, + "NNFXX-----N----": {POS: NOUN, "morph": "Gender=Fem|Polarity=Neg"}, + "NNFXX-----N---1": {POS: NOUN, "morph": "Gender=Fem|Polarity=Neg"}, + "NNFXX-----N---2": {POS: NOUN, "morph": "Gender=Fem|Polarity=Neg|Style=Arch"}, + "NNFXX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Fem|Polarity=Neg"}, + "NNFXX-----N---9": {POS: NOUN, "morph": "Gender=Fem|Polarity=Neg"}, + "NNIP1-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP1-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP1-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP1-----A---3": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP1-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNIP1-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP1-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP1-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP1-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP1-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP1-----N---3": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP1-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNIP1-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP1-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP2-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP2-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP2-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP2-----A---3": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP2-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNIP2-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP2-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP2-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP2-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP2-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP2-----N---3": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP2-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNIP2-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP2-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP3-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP3-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP3-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP3-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNIP3-----A---7": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNIP3-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP3-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP3-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP3-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP3-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP3-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNIP3-----N---7": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNIP3-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP3-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP4-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP4-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP4-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP4-----A---3": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP4-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNIP4-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP4-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP4-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP4-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP4-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP4-----N---3": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP4-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNIP4-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP4-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP5-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP5-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP5-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP5-----A---3": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP5-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNIP5-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP5-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP5-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP5-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP5-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP5-----N---3": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP5-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNIP5-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP5-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP6-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP6-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP6-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP6-----A---3": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP6-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNIP6-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP6-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP6-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP6-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP6-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP6-----N---3": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP6-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNIP6-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP6-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP7-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP7-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP7-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNIP7-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNIP7-----A---7": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNIP7-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP7-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIP7-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP7-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP7-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNIP7-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNIP7-----N---7": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNIP7-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIP7-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIPX-----A----": {POS: NOUN, "morph": "Animacy=Inan|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIPX-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIPX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNIPX-----N----": {POS: NOUN, "morph": "Animacy=Inan|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIPX-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIPX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNIS1-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS1-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS1-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNIS1-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNIS1-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS1-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS1-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS1-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNIS1-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNIS1-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS2-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS2-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS2-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNIS2-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNIS2-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS2-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS2-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS2-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS2-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNIS2-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNIS2-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS2-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS3-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS3-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS3-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNIS3-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNIS3-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS3-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS3-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS3-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS3-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNIS3-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNIS3-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS3-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS4-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS4-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS4-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNIS4-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNIS4-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS4-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS4-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS4-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNIS4-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNIS4-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS5-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS5-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS5-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNIS5-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNIS5-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS5-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS5-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS5-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS5-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNIS5-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNIS5-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS5-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS6-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS6-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS6-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNIS6-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNIS6-----A---7": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNIS6-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS6-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS6-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS6-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS6-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNIS6-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNIS6-----N---7": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNIS6-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS6-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS7-----A----": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS7-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS7-----A---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNIS7-----A---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNIS7-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS7-----A---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNIS7-----N----": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS7-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS7-----N---2": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNIS7-----N---6": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNIS7-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIS7-----N---9": {POS: NOUN, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNISX-----A----": {POS: NOUN, "morph": "Animacy=Inan|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNISX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNISX-----N----": {POS: NOUN, "morph": "Animacy=Inan|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNISX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNIXX-----A----": {POS: NOUN, "morph": "Animacy=Inan|Gender=Masc|Polarity=Pos"}, + "NNIXX-----A---1": {POS: NOUN, "morph": "Animacy=Inan|Gender=Masc|Polarity=Pos"}, + "NNIXX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Gender=Masc|Polarity=Pos"}, + "NNIXX-----N----": {POS: NOUN, "morph": "Animacy=Inan|Gender=Masc|Polarity=Neg"}, + "NNIXX-----N---1": {POS: NOUN, "morph": "Animacy=Inan|Gender=Masc|Polarity=Neg"}, + "NNIXX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Inan|Gender=Masc|Polarity=Neg"}, + "NNMP1-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP1-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP1-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNMP1-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP1-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP1-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP1-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP1-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP1-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNMP1-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP1-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP1-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP2-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP2-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP2-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNMP2-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP2-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP2-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP2-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP2-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNMP2-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP2-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP3-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP3-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP3-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNMP3-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP3-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP3-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP3-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP3-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP3-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNMP3-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP3-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP3-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP4-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP4-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP4-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNMP4-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP4-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP4-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP4-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP4-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP4-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNMP4-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP4-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP4-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP5-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP5-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP5-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNMP5-----A---5": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP5-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP5-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP5-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP5-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP5-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP5-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNMP5-----N---5": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP5-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP5-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP5-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP6-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP6-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP6-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNMP6-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP6-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP6-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP6-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP6-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP6-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNMP6-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP6-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP6-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP7-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP7-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP7-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNMP7-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP7-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNMP7-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMP7-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP7-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMP7-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNMP7-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP7-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNMP7-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMPX-----A----": {POS: NOUN, "morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMPX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos"}, + "NNMPX-----N----": {POS: NOUN, "morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMPX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg"}, + "NNMS1-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS1-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS1-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS1-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS1-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS1-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS1-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS1-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS1-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS1-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS2-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS2-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS2-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS2-----A---3": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS2-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS2-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS2-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS2-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS2-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS2-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS2-----N---3": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS2-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS2-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS2-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS3-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS3-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS3-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS3-----A---3": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS3-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS3-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS3-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS3-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS3-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS3-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS3-----N---3": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS3-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS3-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS3-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS4-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS4-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS4-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS4-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS4-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS4-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS4-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS4-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS4-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS4-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS4-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS4-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS5-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS5-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS5-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS5-----A---4": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS5-----A---5": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS5-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS5-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS5-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS5-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS5-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS5-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS5-----N---4": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS5-----N---5": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS5-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS5-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS5-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Voc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS6-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS6-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS6-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS6-----A---3": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS6-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS6-----A---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS6-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS6-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS6-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS6-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS6-----N---3": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS6-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS6-----N---7": {POS: NOUN, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS6-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS7-----A----": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS7-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS7-----A---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNMS7-----A---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNMS7-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMS7-----N----": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS7-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMS7-----N---2": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNMS7-----N---6": {POS: NOUN, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNMS7-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMSX-----A----": {POS: NOUN, "morph": "Animacy=Anim|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMSX-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMSX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Gender=Masc|Number=Sing|Polarity=Pos"}, + "NNMSX-----N----": {POS: NOUN, "morph": "Animacy=Anim|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMSX-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMSX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Gender=Masc|Number=Sing|Polarity=Neg"}, + "NNMXX-----A----": {POS: NOUN, "morph": "Animacy=Anim|Gender=Masc|Polarity=Pos"}, + "NNMXX-----A---1": {POS: NOUN, "morph": "Animacy=Anim|Gender=Masc|Polarity=Pos"}, + "NNMXX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Gender=Masc|Polarity=Pos"}, + "NNMXX-----N----": {POS: NOUN, "morph": "Animacy=Anim|Gender=Masc|Polarity=Neg"}, + "NNMXX-----N---1": {POS: NOUN, "morph": "Animacy=Anim|Gender=Masc|Polarity=Neg"}, + "NNMXX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Animacy=Anim|Gender=Masc|Polarity=Neg"}, + "NNNP1-----A----": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP1-----A---1": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP1-----A---2": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP1-----A---3": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP1-----A---6": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNNP1-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Nom|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP1-----N----": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP1-----N---1": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP1-----N---2": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP1-----N---3": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP1-----N---6": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNNP1-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Nom|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP2-----A----": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP2-----A---1": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP2-----A---2": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP2-----A---3": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP2-----A---6": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNNP2-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Gen|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP2-----N----": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP2-----N---1": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP2-----N---2": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP2-----N---3": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP2-----N---6": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNNP2-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Gen|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP3-----A----": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP3-----A---1": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP3-----A---2": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP3-----A---3": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP3-----A---6": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNNP3-----A---7": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNNP3-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Dat|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP3-----N----": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP3-----N---1": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP3-----N---2": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP3-----N---3": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP3-----N---6": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNNP3-----N---7": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNNP3-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Dat|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP4-----A----": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP4-----A---1": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP4-----A---2": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP4-----A---3": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP4-----A---6": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNNP4-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Acc|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP4-----N----": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP4-----N---1": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP4-----N---2": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP4-----N---3": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP4-----N---6": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNNP4-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Acc|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP5-----A----": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP5-----A---1": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP5-----A---2": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP5-----A---3": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP5-----A---6": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNNP5-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Voc|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP5-----N----": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP5-----N---1": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP5-----N---2": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP5-----N---3": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP5-----N---6": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNNP5-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Voc|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP6-----A----": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP6-----A---1": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP6-----A---2": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP6-----A---3": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP6-----A---6": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNNP6-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Loc|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP6-----N----": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP6-----N---1": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP6-----N---2": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP6-----N---3": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP6-----N---6": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNNP6-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Loc|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP7-----A----": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP7-----A---1": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP7-----A---2": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP7-----A---3": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos|Style=Arch"}, + "NNNP7-----A---6": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNNP7-----A---7": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos|Style=Coll"}, + "NNNP7-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Ins|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNP7-----N----": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP7-----N---1": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNP7-----N---2": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP7-----N---3": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg|Style=Arch"}, + "NNNP7-----N---6": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNNP7-----N---7": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg|Style=Coll"}, + "NNNP7-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Ins|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNPX-----A----": {POS: NOUN, "morph": "Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNPX-----A---1": {POS: NOUN, "morph": "Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNPX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Neut|Number=Plur|Polarity=Pos"}, + "NNNPX-----N----": {POS: NOUN, "morph": "Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNPX-----N---1": {POS: NOUN, "morph": "Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNPX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Neut|Number=Plur|Polarity=Neg"}, + "NNNS1-----A----": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS1-----A---1": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS1-----A---2": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNNS1-----A---6": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNNS1-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Nom|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS1-----N----": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS1-----N---1": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS1-----N---2": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNNS1-----N---6": {POS: NOUN, "morph": "Case=Nom|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNNS1-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Nom|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS2-----A----": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS2-----A---1": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS2-----A---2": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNNS2-----A---3": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNNS2-----A---6": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNNS2-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Gen|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS2-----N----": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS2-----N---1": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS2-----N---2": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNNS2-----N---3": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNNS2-----N---6": {POS: NOUN, "morph": "Case=Gen|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNNS2-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Gen|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS3-----A----": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS3-----A---1": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS3-----A---2": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNNS3-----A---3": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNNS3-----A---6": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNNS3-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Dat|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS3-----N----": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS3-----N---1": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS3-----N---2": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNNS3-----N---3": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNNS3-----N---6": {POS: NOUN, "morph": "Case=Dat|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNNS3-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Dat|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS4-----A----": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS4-----A---1": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS4-----A---2": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNNS4-----A---6": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNNS4-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Acc|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS4-----N----": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS4-----N---1": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS4-----N---2": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNNS4-----N---6": {POS: NOUN, "morph": "Case=Acc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNNS4-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Acc|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS5-----A----": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS5-----A---1": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS5-----A---2": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNNS5-----A---6": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNNS5-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Voc|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS5-----N----": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS5-----N---1": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS5-----N---2": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNNS5-----N---6": {POS: NOUN, "morph": "Case=Voc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNNS5-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Voc|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS6-----A----": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS6-----A---1": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS6-----A---2": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNNS6-----A---6": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNNS6-----A---7": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNNS6-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Loc|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS6-----N----": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS6-----N---1": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS6-----N---2": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNNS6-----N---6": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNNS6-----N---7": {POS: NOUN, "morph": "Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNNS6-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Loc|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS7-----A----": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS7-----A---1": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS7-----A---2": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch"}, + "NNNS7-----A---6": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll"}, + "NNNS7-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Ins|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNS7-----N----": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS7-----N---1": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNS7-----N---2": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch"}, + "NNNS7-----N---6": {POS: NOUN, "morph": "Case=Ins|Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll"}, + "NNNS7-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Case=Ins|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNSX-----A----": {POS: NOUN, "morph": "Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNSX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Neut|Number=Sing|Polarity=Pos"}, + "NNNSX-----N----": {POS: NOUN, "morph": "Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNSX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Neut|Number=Sing|Polarity=Neg"}, + "NNNXX-----A----": {POS: NOUN, "morph": "Gender=Neut|Polarity=Pos"}, + "NNNXX-----A---1": {POS: NOUN, "morph": "Gender=Neut|Polarity=Pos"}, + "NNNXX-----A---2": {POS: NOUN, "morph": "Gender=Neut|Polarity=Pos|Style=Arch"}, + "NNNXX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Neut|Polarity=Pos"}, + "NNNXX-----A---9": {POS: NOUN, "morph": "Gender=Neut|Polarity=Pos"}, + "NNNXX-----N----": {POS: NOUN, "morph": "Gender=Neut|Polarity=Neg"}, + "NNNXX-----N---1": {POS: NOUN, "morph": "Gender=Neut|Polarity=Neg"}, + "NNNXX-----N---2": {POS: NOUN, "morph": "Gender=Neut|Polarity=Neg|Style=Arch"}, + "NNNXX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Gender=Neut|Polarity=Neg"}, + "NNNXX-----N---9": {POS: NOUN, "morph": "Gender=Neut|Polarity=Neg"}, + "NNXPX-----A----": {POS: NOUN, "morph": "Number=Plur|Polarity=Pos"}, + "NNXPX-----N----": {POS: NOUN, "morph": "Number=Plur|Polarity=Neg"}, + "NNXSX-----A----": {POS: NOUN, "morph": "Number=Sing|Polarity=Pos"}, + "NNXSX-----N----": {POS: NOUN, "morph": "Number=Sing|Polarity=Neg"}, + "NNXXX-----A----": {POS: NOUN, "morph": "Polarity=Pos"}, + "NNXXX-----A---8": {POS: NOUN, "morph": "Abbr=Yes|Polarity=Pos"}, + "NNXXX-----N----": {POS: NOUN, "morph": "Polarity=Neg"}, + "NNXXX-----N---8": {POS: NOUN, "morph": "Abbr=Yes|Polarity=Neg"}, + "P0-------------": {POS: PRON, "morph": "AdpType=Preppron|PronType=Prs"}, + "P1FD7FS3-------": {POS: DET,"morph": "Case=Ins|Gender=Fem|Gender[psor]=Fem|Number=Dual|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1FD7FS3------2": {POS: DET,"morph": "Case=Ins|Gender=Fem|Gender[psor]=Fem|Number=Dual|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1FSXFS3-------": {POS: DET,"morph": "Gender=Fem|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1FSXFS3------2": {POS: DET,"morph": "Gender=Fem|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1IS4FS3-------": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1IS4FS3------2": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1MS4FS3-------": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1MS4FS3------2": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1NS4FS3-------": {POS: DET,"morph": "Case=Acc|Gender=Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1NS4FS3------2": {POS: DET,"morph": "Case=Acc|Gender=Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1XP1FS3-------": {POS: DET,"morph": "Case=Nom|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1XP1FS3------2": {POS: DET,"morph": "Case=Nom|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1XP2FS3-------": {POS: DET,"morph": "Case=Gen|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1XP2FS3------2": {POS: DET,"morph": "Case=Gen|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1XP3FS3-------": {POS: DET,"morph": "Case=Dat|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1XP3FS3------2": {POS: DET,"morph": "Case=Dat|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1XP4FS3-------": {POS: DET,"morph": "Case=Acc|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1XP4FS3------2": {POS: DET,"morph": "Case=Acc|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1XP6FS3-------": {POS: DET,"morph": "Case=Loc|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1XP6FS3------2": {POS: DET,"morph": "Case=Loc|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1XP7FS3-------": {POS: DET,"morph": "Case=Ins|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1XP7FS3------2": {POS: DET,"morph": "Case=Ins|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1XXXXP3-------": {POS: DET, "morph": "Number[psor]=Plur|Person=3|Poss=Yes|PronType=Rel"}, + "P1XXXXP3------2": {POS: DET, "morph": "Number[psor]=Plur|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1XXXZS3-------": {POS: DET, "morph": "Gender[psor]=Masc,Neut|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1XXXZS3------2": {POS: DET,"morph": "Gender[psor]=Masc,Neut|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1ZS1FS3-------": {POS: DET,"morph": "Case=Nom|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1ZS1FS3------2": {POS: DET,"morph": "Case=Nom|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1ZS2FS3-------": {POS: DET,"morph": "Case=Gen|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1ZS2FS3------2": {POS: DET,"morph": "Case=Gen|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1ZS3FS3-------": {POS: DET,"morph": "Case=Dat|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1ZS3FS3------2": {POS: DET,"morph": "Case=Dat|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1ZS6FS3-------": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1ZS6FS3------2": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P1ZS7FS3-------": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel"}, + "P1ZS7FS3------2": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Rel|Style=Arch"}, + "P4FD7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Int,Rel"}, + "P4FD7---------6": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Int,Rel|Style=Coll"}, + "P4FP1----------": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Int,Rel"}, + "P4FP1---------6": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4FP4----------": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Int,Rel"}, + "P4FP4---------6": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4FS1----------": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Int,Rel"}, + "P4FS1---------3": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Int,Rel|Style=Arch"}, + "P4FS1---------6": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4FS2----------": {POS: DET, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Int,Rel"}, + "P4FS2---------6": {POS: DET, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4FS3----------": {POS: DET, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Int,Rel"}, + "P4FS3---------6": {POS: DET, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4FS4----------": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Sing|PronType=Int,Rel"}, + "P4FS4---------6": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4FS6----------": {POS: DET, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Int,Rel"}, + "P4FS6---------6": {POS: DET, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4FS7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Sing|PronType=Int,Rel"}, + "P4FS7---------6": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4IP1----------": {POS: DET, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Int,Rel"}, + "P4IP1---------6": {POS: DET, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4IS4----------": {POS: DET, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Int,Rel"}, + "P4IS4---------6": {POS: DET, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4MP1----------": {POS: DET, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Int,Rel"}, + "P4MP1---------6": {POS: DET, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4MS4----------": {POS: DET, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Int,Rel"}, + "P4MS4---------6": {POS: DET, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4NP1----------": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Int,Rel"}, + "P4NP1---------6": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4NP1---------7": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4NP4----------": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Int,Rel"}, + "P4NP4---------6": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4NS1----------": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Int,Rel"}, + "P4NS1---------6": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4NS4----------": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Int,Rel"}, + "P4NS4---------6": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4XD7----------": {POS: DET, "morph": "Case=Ins|Number=Dual|PronType=Int,Rel"}, + "P4XP2----------": {POS: DET, "morph": "Case=Gen|Number=Plur|PronType=Int,Rel"}, + "P4XP2---------6": {POS: DET, "morph": "Case=Gen|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4XP3----------": {POS: DET, "morph": "Case=Dat|Number=Plur|PronType=Int,Rel"}, + "P4XP3---------6": {POS: DET, "morph": "Case=Dat|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4XP6----------": {POS: DET, "morph": "Case=Loc|Number=Plur|PronType=Int,Rel"}, + "P4XP6---------6": {POS: DET, "morph": "Case=Loc|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4XP7----------": {POS: DET, "morph": "Case=Ins|Number=Plur|PronType=Int,Rel"}, + "P4XP7---------6": {POS: DET, "morph": "Case=Ins|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4XP7---------7": {POS: DET, "morph": "Case=Ins|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4XXX----------": {POS: DET, "morph": "PronType=Int,Rel"}, + "P4YP4----------": {POS: DET, "morph": "Case=Acc|Gender=Masc|Number=Plur|PronType=Int,Rel"}, + "P4YP4---------6": {POS: DET, "morph": "Case=Acc|Gender=Masc|Number=Plur|PronType=Int,Rel|Style=Coll"}, + "P4YS1----------": {POS: DET, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Int,Rel"}, + "P4YS1---------3": {POS: DET, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Int,Rel|Style=Arch"}, + "P4YS1---------6": {POS: DET, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4ZS2----------": {POS: DET, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Int,Rel"}, + "P4ZS2---------6": {POS: DET, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4ZS3----------": {POS: DET, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Int,Rel"}, + "P4ZS3---------6": {POS: DET, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4ZS6----------": {POS: DET, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Int,Rel"}, + "P4ZS6---------6": {POS: DET, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P4ZS7----------": {POS: DET, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Int,Rel"}, + "P4ZS7---------6": {POS: DET, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Int,Rel|Style=Coll"}, + "P5FS2--3-------": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5FS3--3-------": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5FS4--3-------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5FS4--3------6": {POS: PRON,"morph": "Case=Acc|Gender=Fem|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs|Style=Coll"}, + "P5FS6--3-------": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5FS7--3-------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5NS4--3-------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5XP2--3-------": {POS: PRON, "morph": "Case=Gen|Number=Plur|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5XP3--3-------": {POS: PRON, "morph": "Case=Dat|Number=Plur|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5XP4--3-------": {POS: PRON, "morph": "Case=Acc|Number=Plur|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5XP6--3-------": {POS: PRON, "morph": "Case=Loc|Number=Plur|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5XP7--3-------": {POS: PRON, "morph": "Case=Ins|Number=Plur|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5ZS2--3-------": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5ZS2--3------1": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5ZS3--3-------": {POS: PRON, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5ZS4--3-------": {POS: PRON, "morph": "Case=Acc|Gender=Masc,Neut|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5ZS4--3------1": {POS: PRON, "morph": "Case=Acc|Gender=Masc,Neut|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5ZS6--3-------": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P5ZS7--3-------": {POS: PRON, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Person=3|PrepCase=Pre|PronType=Prs"}, + "P6-X2----------": {POS: PRON, "morph": "Case=Gen|PronType=Prs|Reflex=Yes"}, + "P6-X3----------": {POS: PRON, "morph": "Case=Dat|PronType=Prs|Reflex=Yes"}, + "P6-X4----------": {POS: PRON, "morph": "Case=Acc|PronType=Prs|Reflex=Yes"}, + "P6-X6----------": {POS: PRON, "morph": "Case=Loc|PronType=Prs|Reflex=Yes"}, + "P6-X7----------": {POS: PRON, "morph": "Case=Ins|PronType=Prs|Reflex=Yes"}, + "P7-S3----------": {POS: PRON, "morph": "Case=Dat|Number=Sing|PronType=Prs|Reflex=Yes|Variant=Short"}, + "P7-S3--2-------": {POS: PRON, "morph": "Case=Dat|Number=Sing|Person=2|PronType=Prs|Reflex=Yes|Variant=Short"}, + "P7-S4----------": {POS: PRON, "morph": "Case=Acc|Number=Sing|PronType=Prs|Reflex=Yes|Variant=Short"}, + "P7-S4--2-------": {POS: PRON, "morph": "Case=Acc|Number=Sing|Person=2|PronType=Prs|Reflex=Yes|Variant=Short"}, + "P7-X3----------": {POS: PRON, "morph": "Case=Dat|PronType=Prs|Reflex=Yes|Variant=Short"}, + "P7-X4----------": {POS: PRON, "morph": "Case=Acc|PronType=Prs|Reflex=Yes|Variant=Short"}, + "P8FD7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Dual|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FD7---------6": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Dual|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8FP1---------1": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FP4---------1": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS1---------1": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS2----------": {POS: DET, "morph": "Case=Gen|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS2---------1": {POS: DET, "morph": "Case=Gen|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS2---------6": {POS: DET,"morph": "Case=Gen|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8FS3----------": {POS: DET, "morph": "Case=Dat|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS3---------1": {POS: DET, "morph": "Case=Dat|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS3---------6": {POS: DET,"morph": "Case=Dat|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8FS4----------": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS4---------1": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS4---------6": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8FS5---------1": {POS: DET, "morph": "Case=Voc|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS6----------": {POS: DET, "morph": "Case=Loc|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS6---------1": {POS: DET, "morph": "Case=Loc|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS6---------6": {POS: DET,"morph": "Case=Loc|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8FS7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8FS7---------1": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8HP1----------": {POS: DET, "morph": "Case=Nom|Gender=Fem,Neut|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8HP5----------": {POS: DET, "morph": "Case=Voc|Gender=Fem,Neut|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8HP5---------7": {POS: DET,"morph": "Case=Voc|Gender=Fem,Neut|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8HS1----------": {POS: DET, "morph": "Case=Nom|Gender=Fem,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8HS5----------": {POS: DET, "morph": "Case=Voc|Gender=Fem,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8IP1----------": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8IP1---------1": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8IP1---------7": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8IP5----------": {POS: DET,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8IP5---------1": {POS: DET,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8IP5---------7": {POS: DET,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8IS4----------": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8IS4---------6": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8MP1----------": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8MP1---------1": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8MP5----------": {POS: DET,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8MP5---------1": {POS: DET,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8MS4----------": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8MS4---------6": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8NP1---------1": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8NP4---------1": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8NP5---------1": {POS: DET, "morph": "Case=Voc|Gender=Neut|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8NS1---------1": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8NS4----------": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8NS4---------1": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8NS5---------1": {POS: DET, "morph": "Case=Voc|Gender=Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8XP2----------": {POS: DET, "morph": "Case=Gen|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8XP2---------6": {POS: DET, "morph": "Case=Gen|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8XP3----------": {POS: DET, "morph": "Case=Dat|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8XP3---------6": {POS: DET, "morph": "Case=Dat|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8XP4----------": {POS: DET, "morph": "Case=Acc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8XP4---------7": {POS: DET, "morph": "Case=Acc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8XP6----------": {POS: DET, "morph": "Case=Loc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8XP6---------6": {POS: DET, "morph": "Case=Loc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8XP7----------": {POS: DET, "morph": "Case=Ins|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8YP4---------1": {POS: DET, "morph": "Case=Acc|Gender=Masc|Number=Plur|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8YS1----------": {POS: DET, "morph": "Case=Nom|Gender=Masc|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8YS1---------6": {POS: DET,"morph": "Case=Nom|Gender=Masc|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8YS5----------": {POS: DET, "morph": "Case=Voc|Gender=Masc|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8YS5---------6": {POS: DET,"morph": "Case=Voc|Gender=Masc|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8ZS2----------": {POS: DET, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8ZS2---------6": {POS: DET,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8ZS3----------": {POS: DET, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8ZS3---------6": {POS: DET,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8ZS6----------": {POS: DET, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8ZS6---------6": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8ZS6---------7": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P8ZS7----------": {POS: DET, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes"}, + "P8ZS7---------6": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Poss=Yes|PronType=Prs|Reflex=Yes|Style=Coll"}, + "P9FS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9FS2---------2": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9FS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9FS3---------2": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9FS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9FS4---------2": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9FS6----------": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9FS6---------2": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9FS7----------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9FS7---------2": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9NS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9NS4---------2": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9XP2----------": {POS: PRON, "morph": "Case=Gen|Number=Plur|PrepCase=Pre|PronType=Rel"}, + "P9XP2---------2": {POS: PRON, "morph": "Case=Gen|Number=Plur|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9XP3----------": {POS: PRON, "morph": "Case=Dat|Number=Plur|PrepCase=Pre|PronType=Rel"}, + "P9XP3---------2": {POS: PRON, "morph": "Case=Dat|Number=Plur|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9XP4----------": {POS: PRON, "morph": "Case=Acc|Number=Plur|PrepCase=Pre|PronType=Rel"}, + "P9XP4---------2": {POS: PRON, "morph": "Case=Acc|Number=Plur|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9XP6----------": {POS: PRON, "morph": "Case=Loc|Number=Plur|PrepCase=Pre|PronType=Rel"}, + "P9XP6---------2": {POS: PRON, "morph": "Case=Loc|Number=Plur|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9XP7----------": {POS: PRON, "morph": "Case=Ins|Number=Plur|PrepCase=Pre|PronType=Rel"}, + "P9XP7---------2": {POS: PRON, "morph": "Case=Ins|Number=Plur|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9ZS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9ZS2---------1": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9ZS2---------2": {POS: PRON,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9ZS2---------3": {POS: PRON,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9ZS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9ZS3---------2": {POS: PRON,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9ZS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9ZS4---------1": {POS: PRON, "morph": "Case=Acc|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9ZS4---------2": {POS: PRON,"morph": "Case=Acc|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9ZS4---------3": {POS: PRON,"morph": "Case=Acc|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9ZS6----------": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9ZS6---------2": {POS: PRON,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "P9ZS7----------": {POS: PRON, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel"}, + "P9ZS7---------2": {POS: PRON,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PrepCase=Pre|PronType=Rel|Style=Arch"}, + "PDFD7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Dem"}, + "PDFD7---------2": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Dem|Style=Arch"}, + "PDFD7---------5": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Dem|Style=Coll"}, + "PDFD7---------6": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Dem|Style=Coll"}, + "PDFP1----------": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Dem"}, + "PDFP1---------5": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Dem|Style=Coll"}, + "PDFP1---------6": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Dem|Style=Coll"}, + "PDFP2----------": {POS: DET, "morph": "Case=Gen|Gender=Fem|Number=Plur|PronType=Dem"}, + "PDFP3----------": {POS: DET, "morph": "Case=Dat|Gender=Fem|Number=Plur|PronType=Dem"}, + "PDFP4----------": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Dem"}, + "PDFP4---------5": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Dem|Style=Coll"}, + "PDFP4---------6": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Dem|Style=Coll"}, + "PDFP6----------": {POS: DET, "morph": "Case=Loc|Gender=Fem|Number=Plur|PronType=Dem"}, + "PDFP7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Plur|PronType=Dem"}, + "PDFS1----------": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS1---------5": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS1---------6": {POS: DET, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS1---------8": {POS: DET, "morph": "Abbr=Yes|Case=Nom|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS2----------": {POS: DET, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS2---------5": {POS: DET, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS2---------6": {POS: DET, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS2---------8": {POS: DET, "morph": "Abbr=Yes|Case=Gen|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS3----------": {POS: DET, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS3---------5": {POS: DET, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS3---------6": {POS: DET, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS3---------8": {POS: DET, "morph": "Abbr=Yes|Case=Dat|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS4----------": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS4---------5": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS4---------6": {POS: DET, "morph": "Case=Acc|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS4---------8": {POS: DET, "morph": "Abbr=Yes|Case=Acc|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS6----------": {POS: DET, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS6---------5": {POS: DET, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS6---------6": {POS: DET, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS6---------8": {POS: DET, "morph": "Abbr=Yes|Case=Loc|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS7----------": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDFS7---------5": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS7---------6": {POS: DET, "morph": "Case=Ins|Gender=Fem|Number=Sing|PronType=Dem|Style=Coll"}, + "PDFS7---------8": {POS: DET, "morph": "Abbr=Yes|Case=Ins|Gender=Fem|Number=Sing|PronType=Dem"}, + "PDIP1----------": {POS: DET, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDIP1---------5": {POS: DET, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Dem|Style=Coll"}, + "PDIP1---------6": {POS: DET, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Dem|Style=Coll"}, + "PDIP2----------": {POS: DET, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDIP3----------": {POS: DET, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDIP4----------": {POS: DET, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDIP4---------5": {POS: DET, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|PronType=Dem|Style=Coll"}, + "PDIP4---------6": {POS: DET, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|PronType=Dem|Style=Coll"}, + "PDIP6----------": {POS: DET, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDIP7----------": {POS: DET, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDIS1---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Inan|Case=Nom|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDIS2----------": {POS: DET, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDIS2---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDIS3----------": {POS: DET, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDIS3---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDIS4----------": {POS: DET, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDIS4---------5": {POS: DET, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Dem|Style=Coll"}, + "PDIS4---------6": {POS: DET, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Dem|Style=Coll"}, + "PDIS4---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDIS6----------": {POS: DET, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDIS6---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDIS7----------": {POS: DET, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDIS7---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMP1----------": {POS: DET, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDMP1---------1": {POS: DET, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDMP1---------5": {POS: DET, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Dem|Style=Coll"}, + "PDMP1---------6": {POS: DET, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Dem|Style=Coll"}, + "PDMP2----------": {POS: DET, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDMP3----------": {POS: DET, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDMP4----------": {POS: DET, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDMP4---------5": {POS: DET, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|PronType=Dem|Style=Coll"}, + "PDMP4---------6": {POS: DET, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|PronType=Dem|Style=Coll"}, + "PDMP6----------": {POS: DET, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDMP7----------": {POS: DET, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|PronType=Dem"}, + "PDMS1----------": {POS: DET, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMS1---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMS2----------": {POS: DET, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMS2---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMS3----------": {POS: DET, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMS3---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMS4----------": {POS: DET, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMS4---------5": {POS: DET, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Dem|Style=Coll"}, + "PDMS4---------6": {POS: DET, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Dem|Style=Coll"}, + "PDMS4---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMS6---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMS7----------": {POS: DET, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDMS7---------8": {POS: DET, "morph": "Abbr=Yes|Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDNP1----------": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Dem"}, + "PDNP1---------5": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Dem|Style=Coll"}, + "PDNP1---------6": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Dem|Style=Coll"}, + "PDNP2----------": {POS: DET, "morph": "Case=Gen|Gender=Neut|Number=Plur|PronType=Dem"}, + "PDNP3----------": {POS: DET, "morph": "Case=Dat|Gender=Neut|Number=Plur|PronType=Dem"}, + "PDNP4----------": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Dem"}, + "PDNP4---------5": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Dem|Style=Coll"}, + "PDNP4---------6": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Dem|Style=Coll"}, + "PDNP6----------": {POS: DET, "morph": "Case=Loc|Gender=Neut|Number=Plur|PronType=Dem"}, + "PDNP7----------": {POS: DET, "morph": "Case=Ins|Gender=Neut|Number=Plur|PronType=Dem"}, + "PDNS1----------": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS1---------2": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Dem|Style=Arch"}, + "PDNS1---------5": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDNS1---------6": {POS: DET, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDNS1---------8": {POS: DET, "morph": "Abbr=Yes|Case=Nom|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS2----------": {POS: DET, "morph": "Case=Gen|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS2---------8": {POS: DET, "morph": "Abbr=Yes|Case=Gen|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS3----------": {POS: DET, "morph": "Case=Dat|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS3---------8": {POS: DET, "morph": "Abbr=Yes|Case=Dat|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS4----------": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS4---------2": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Dem|Style=Arch"}, + "PDNS4---------5": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDNS4---------6": {POS: DET, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDNS4---------8": {POS: DET, "morph": "Abbr=Yes|Case=Acc|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS6----------": {POS: DET, "morph": "Case=Loc|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS6---------8": {POS: DET, "morph": "Abbr=Yes|Case=Loc|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS7----------": {POS: DET, "morph": "Case=Ins|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDNS7---------8": {POS: DET, "morph": "Abbr=Yes|Case=Ins|Gender=Neut|Number=Sing|PronType=Dem"}, + "PDXP2----------": {POS: DET, "morph": "Case=Gen|Number=Plur|PronType=Dem"}, + "PDXP2---------1": {POS: DET, "morph": "Case=Gen|Number=Plur|PronType=Dem"}, + "PDXP2---------2": {POS: DET, "morph": "Case=Gen|Number=Plur|PronType=Dem|Style=Arch"}, + "PDXP2---------5": {POS: DET, "morph": "Case=Gen|Number=Plur|PronType=Dem|Style=Coll"}, + "PDXP2---------6": {POS: DET, "morph": "Case=Gen|Number=Plur|PronType=Dem|Style=Coll"}, + "PDXP3----------": {POS: DET, "morph": "Case=Dat|Number=Plur|PronType=Dem"}, + "PDXP3---------1": {POS: DET, "morph": "Case=Dat|Number=Plur|PronType=Dem"}, + "PDXP3---------2": {POS: DET, "morph": "Case=Dat|Number=Plur|PronType=Dem|Style=Arch"}, + "PDXP3---------5": {POS: DET, "morph": "Case=Dat|Number=Plur|PronType=Dem|Style=Coll"}, + "PDXP3---------6": {POS: DET, "morph": "Case=Dat|Number=Plur|PronType=Dem|Style=Coll"}, + "PDXP6----------": {POS: DET, "morph": "Case=Loc|Number=Plur|PronType=Dem"}, + "PDXP6---------1": {POS: DET, "morph": "Case=Loc|Number=Plur|PronType=Dem"}, + "PDXP6---------2": {POS: DET, "morph": "Case=Loc|Number=Plur|PronType=Dem|Style=Arch"}, + "PDXP6---------5": {POS: DET, "morph": "Case=Loc|Number=Plur|PronType=Dem|Style=Coll"}, + "PDXP6---------6": {POS: DET, "morph": "Case=Loc|Number=Plur|PronType=Dem|Style=Coll"}, + "PDXP7----------": {POS: DET, "morph": "Case=Ins|Number=Plur|PronType=Dem"}, + "PDXP7---------2": {POS: DET, "morph": "Case=Ins|Number=Plur|PronType=Dem|Style=Arch"}, + "PDXP7---------5": {POS: DET, "morph": "Case=Ins|Number=Plur|PronType=Dem|Style=Coll"}, + "PDXP7---------6": {POS: DET, "morph": "Case=Ins|Number=Plur|PronType=Dem|Style=Coll"}, + "PDXPX----------": {POS: DET, "morph": "Number=Plur|PronType=Dem"}, + "PDXPX---------8": {POS: DET, "morph": "Abbr=Yes|Number=Plur|PronType=Dem"}, + "PDXS1----------": {POS: DET, "morph": "Case=Nom|Number=Sing|PronType=Dem"}, + "PDXS2----------": {POS: DET, "morph": "Case=Gen|Number=Sing|PronType=Dem"}, + "PDXS3----------": {POS: DET, "morph": "Case=Dat|Number=Sing|PronType=Dem"}, + "PDXS4----------": {POS: DET, "morph": "Case=Acc|Number=Sing|PronType=Dem"}, + "PDXS6----------": {POS: DET, "morph": "Case=Loc|Number=Sing|PronType=Dem"}, + "PDXS7----------": {POS: DET, "morph": "Case=Ins|Number=Sing|PronType=Dem"}, + "PDXSX----------": {POS: DET, "morph": "Number=Sing|PronType=Dem"}, + "PDXSX---------8": {POS: DET, "morph": "Abbr=Yes|Number=Sing|PronType=Dem"}, + "PDXXX----------": {POS: DET, "morph": "PronType=Dem"}, + "PDXXX---------8": {POS: DET, "morph": "Abbr=Yes|PronType=Dem"}, + "PDYS1----------": {POS: DET, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDYS1---------5": {POS: DET, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Dem|Style=Coll"}, + "PDYS1---------6": {POS: DET, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Dem|Style=Coll"}, + "PDYS4----------": {POS: DET, "morph": "Case=Acc|Gender=Masc|Number=Sing|PronType=Dem"}, + "PDZS2----------": {POS: DET, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Dem"}, + "PDZS2---------5": {POS: DET, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDZS2---------6": {POS: DET, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDZS3----------": {POS: DET, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Dem"}, + "PDZS3---------5": {POS: DET, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDZS3---------6": {POS: DET, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDZS6----------": {POS: DET, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Dem"}, + "PDZS6---------1": {POS: DET, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Dem"}, + "PDZS6---------2": {POS: DET, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Dem|Style=Arch"}, + "PDZS6---------5": {POS: DET, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDZS6---------6": {POS: DET, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDZS7----------": {POS: DET, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Dem"}, + "PDZS7---------5": {POS: DET, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PDZS7---------6": {POS: DET, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Dem|Style=Coll"}, + "PE--1----------": {POS: PRON, "morph": "Case=Nom|PronType=Rel"}, + "PE--2----------": {POS: PRON, "morph": "Case=Gen|PronType=Rel"}, + "PE--3----------": {POS: PRON, "morph": "Case=Dat|PronType=Rel"}, + "PE--4----------": {POS: PRON, "morph": "Case=Acc|PronType=Rel"}, + "PE--6----------": {POS: PRON, "morph": "Case=Loc|PronType=Rel"}, + "PE--7----------": {POS: PRON, "morph": "Case=Ins|PronType=Rel"}, + "PH-S2--1-------": {POS: PRON, "morph": "Case=Gen|Number=Sing|Person=1|PronType=Prs|Variant=Short"}, + "PH-S2--2-------": {POS: PRON, "morph": "Case=Gen|Number=Sing|Person=2|PronType=Prs|Variant=Short"}, + "PH-S3--1-------": {POS: PRON, "morph": "Case=Dat|Number=Sing|Person=1|PronType=Prs|Variant=Short"}, + "PH-S3--2-------": {POS: PRON, "morph": "Case=Dat|Number=Sing|Person=2|PronType=Prs|Variant=Short"}, + "PH-S4--1-------": {POS: PRON, "morph": "Case=Acc|Number=Sing|Person=1|PronType=Prs|Variant=Short"}, + "PH-S4--2-------": {POS: PRON, "morph": "Case=Acc|Number=Sing|Person=2|PronType=Prs|Variant=Short"}, + "PHZS2--3-------": {POS: PRON,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Person=3|PronType=Prs|Variant=Short"}, + "PHZS3--3-------": {POS: PRON,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Person=3|PronType=Prs|Variant=Short"}, + "PHZS4--3-------": {POS: PRON,"morph": "Case=Acc|Gender=Masc,Neut|Number=Sing|Person=3|PronType=Prs|Variant=Short"}, + "PJFD7----------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Dual|PrepCase=Npr|PronType=Rel"}, + "PJFP1----------": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJFP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJFS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJFS1---------2": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJFS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJFS2---------2": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJFS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJFS3---------2": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJFS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJFS4---------2": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJFS6----------": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJFS7----------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJFS7---------2": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJIP1----------": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJIS4----------": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJIS4---------2": {POS: PRON,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJMP1----------": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJMS4----------": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJMS4---------2": {POS: PRON,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJNP1----------": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJNP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJNS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJNS1---------2": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJNS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJNS4---------2": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJXP1----------": {POS: PRON, "morph": "Case=Nom|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJXP1---------2": {POS: PRON, "morph": "Case=Nom|Number=Plur|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJXP2----------": {POS: PRON, "morph": "Case=Gen|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJXP2---------2": {POS: PRON, "morph": "Case=Gen|Number=Plur|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJXP3----------": {POS: PRON, "morph": "Case=Dat|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJXP3---------2": {POS: PRON, "morph": "Case=Dat|Number=Plur|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJXP4----------": {POS: PRON, "morph": "Case=Acc|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJXP4---------2": {POS: PRON, "morph": "Case=Acc|Number=Plur|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJXP6----------": {POS: PRON, "morph": "Case=Loc|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJXP7----------": {POS: PRON, "morph": "Case=Ins|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJXP7---------2": {POS: PRON, "morph": "Case=Ins|Number=Plur|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJYP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Masc|Number=Plur|PrepCase=Npr|PronType=Rel"}, + "PJYS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Masc|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJYS1---------2": {POS: PRON, "morph": "Case=Nom|Gender=Masc|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJZS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJZS2---------1": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJZS2---------2": {POS: PRON,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJZS2---------3": {POS: PRON,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJZS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJZS3---------2": {POS: PRON,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJZS4---------1": {POS: PRON, "morph": "Case=Acc|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJZS4---------3": {POS: PRON,"morph": "Case=Acc|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PJZS6----------": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJZS7----------": {POS: PRON, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel"}, + "PJZS7---------2": {POS: PRON,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PrepCase=Npr|PronType=Rel|Style=Arch"}, + "PKM-1----------": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|PronType=Int,Rel"}, + "PKM-1---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|PronType=Int,Rel"}, + "PKM-1---------2": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|PronType=Int,Rel|Style=Arch"}, + "PKM-1--2-------": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Person=2|PronType=Int,Rel"}, + "PKM-2----------": {POS: PRON, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|PronType=Int,Rel"}, + "PKM-2---------2": {POS: PRON, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|PronType=Int,Rel|Style=Arch"}, + "PKM-2--2-------": {POS: PRON, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Person=2|PronType=Int,Rel"}, + "PKM-3----------": {POS: PRON, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|PronType=Int,Rel"}, + "PKM-3---------2": {POS: PRON, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|PronType=Int,Rel|Style=Arch"}, + "PKM-3--2-------": {POS: PRON, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Person=2|PronType=Int,Rel"}, + "PKM-4----------": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|PronType=Int,Rel"}, + "PKM-4---------2": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|PronType=Int,Rel|Style=Arch"}, + "PKM-4--2-------": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Person=2|PronType=Int,Rel"}, + "PKM-6----------": {POS: PRON, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|PronType=Int,Rel"}, + "PKM-6---------2": {POS: PRON, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|PronType=Int,Rel|Style=Arch"}, + "PKM-6--2-------": {POS: PRON, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Person=2|PronType=Int,Rel"}, + "PKM-7----------": {POS: PRON, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|PronType=Int,Rel"}, + "PKM-7---------2": {POS: PRON, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|PronType=Int,Rel|Style=Arch"}, + "PKM-7--2-------": {POS: PRON, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Person=2|PronType=Int,Rel"}, + "PLFD7----------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Tot"}, + "PLFP1----------": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Tot"}, + "PLFP1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Tot|Style=Coll"}, + "PLFP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Tot"}, + "PLFP5----------": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Plur|PronType=Tot"}, + "PLFS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Tot"}, + "PLFS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Tot"}, + "PLFS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Tot"}, + "PLFS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|PronType=Tot"}, + "PLFS5----------": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Sing|PronType=Tot"}, + "PLFS5---------1": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Sing|PronType=Tot"}, + "PLFS6----------": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Tot"}, + "PLFS7----------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|PronType=Tot"}, + "PLIP1----------": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Tot"}, + "PLIP1---------6": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Tot|Style=Coll"}, + "PLIP5----------": {POS: PRON, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|PronType=Tot"}, + "PLIS4----------": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Tot"}, + "PLIS4---------1": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Tot"}, + "PLMP1----------": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Tot"}, + "PLMP1---------6": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Tot|Style=Coll"}, + "PLMP5----------": {POS: PRON, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|PronType=Tot"}, + "PLMS4----------": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Tot"}, + "PLNP1----------": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Tot"}, + "PLNP1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Tot|Style=Coll"}, + "PLNP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Tot"}, + "PLNP5----------": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Plur|PronType=Tot"}, + "PLNS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Tot"}, + "PLNS1---------1": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Tot"}, + "PLNS1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Tot|Style=Coll"}, + "PLNS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Tot"}, + "PLNS4---------1": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Tot"}, + "PLNS4---------6": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Tot|Style=Coll"}, + "PLNS5----------": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Sing|PronType=Tot"}, + "PLNS5---------1": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Sing|PronType=Tot"}, + "PLXP2----------": {POS: PRON, "morph": "Case=Gen|Number=Plur|PronType=Tot"}, + "PLXP3----------": {POS: PRON, "morph": "Case=Dat|Number=Plur|PronType=Tot"}, + "PLXP6----------": {POS: PRON, "morph": "Case=Loc|Number=Plur|PronType=Tot"}, + "PLXP7----------": {POS: PRON, "morph": "Case=Ins|Number=Plur|PronType=Tot"}, + "PLXP7---------6": {POS: PRON, "morph": "Case=Ins|Number=Plur|PronType=Tot|Style=Coll"}, + "PLXXX----------": {POS: PRON, "morph": "PronType=Tot"}, + "PLXXX---------8": {POS: PRON, "morph": "Abbr=Yes|PronType=Tot"}, + "PLYP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Masc|Number=Plur|PronType=Tot"}, + "PLYS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Tot"}, + "PLYS1---------1": {POS: PRON, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Tot"}, + "PLYS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Masc|Number=Sing|PronType=Tot"}, + "PLYS5----------": {POS: PRON, "morph": "Case=Voc|Gender=Masc|Number=Sing|PronType=Tot"}, + "PLYS5---------1": {POS: PRON, "morph": "Case=Voc|Gender=Masc|Number=Sing|PronType=Tot"}, + "PLZS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Tot"}, + "PLZS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Tot"}, + "PLZS6----------": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Tot"}, + "PLZS7----------": {POS: PRON, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Tot"}, + "PPFP1--3-------": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Plur|Person=3|PronType=Prs"}, + "PPFP2--3-------": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Plur|Person=3|PronType=Prs"}, + "PPFP3--3-------": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Plur|Person=3|PronType=Prs"}, + "PPFP4--3-------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Plur|Person=3|PronType=Prs"}, + "PPFP6--3-------": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Plur|Person=3|PronType=Prs"}, + "PPFP7--3-------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Plur|Person=3|PronType=Prs"}, + "PPFPX--3-------": {POS: PRON, "morph": "Gender=Fem|Number=Plur|Person=3|PronType=Prs"}, + "PPFS1--3-------": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Sing|Person=3|PronType=Prs"}, + "PPFS2--3-------": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|Person=3|PronType=Prs"}, + "PPFS3--3-------": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|Person=3|PronType=Prs"}, + "PPFS4--3-------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|Person=3|PronType=Prs"}, + "PPFS6--3-------": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|Person=3|PronType=Prs"}, + "PPFS7--3-------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|Person=3|PronType=Prs"}, + "PPFSX--3-------": {POS: PRON, "morph": "Gender=Fem|Number=Sing|Person=3|PronType=Prs"}, + "PPIP1--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPIP2--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPIP3--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPIP4--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPIP6--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPIP7--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPIS2--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPIS3--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Dat|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPIS4--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPIS6--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPIS7--3-------": {POS: PRON, "morph": "Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPMP1--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPMP2--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPMP3--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPMP4--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPMP6--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPMP7--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPMPX--3-------": {POS: PRON, "morph": "Animacy=Anim|Gender=Masc|Number=Plur|Person=3|PronType=Prs"}, + "PPMS1--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPMS2--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPMS3--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPMS4--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPMS6--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPMS7--3-------": {POS: PRON, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPMSX--3-------": {POS: PRON, "morph": "Animacy=Anim|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPNP1--3-------": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Plur|Person=3|PronType=Prs"}, + "PPNP2--3-------": {POS: PRON, "morph": "Case=Gen|Gender=Neut|Number=Plur|Person=3|PronType=Prs"}, + "PPNP3--3-------": {POS: PRON, "morph": "Case=Dat|Gender=Neut|Number=Plur|Person=3|PronType=Prs"}, + "PPNP4--3-------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Plur|Person=3|PronType=Prs"}, + "PPNP7--3-------": {POS: PRON, "morph": "Case=Ins|Gender=Neut|Number=Plur|Person=3|PronType=Prs"}, + "PPNPX--3-------": {POS: PRON, "morph": "Gender=Neut|Number=Plur|Person=3|PronType=Prs"}, + "PPNS1--3-------": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|Person=3|PronType=Prs"}, + "PPNS2--3-------": {POS: PRON, "morph": "Case=Gen|Gender=Neut|Number=Sing|Person=3|PronType=Prs"}, + "PPNS4--3-------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|Person=3|PronType=Prs"}, + "PPNS6--3-------": {POS: PRON, "morph": "Case=Loc|Gender=Neut|Number=Sing|Person=3|PronType=Prs"}, + "PPNS7--3-------": {POS: PRON, "morph": "Case=Ins|Gender=Neut|Number=Sing|Person=3|PronType=Prs"}, + "PPNSX--3-------": {POS: PRON, "morph": "Gender=Neut|Number=Sing|Person=3|PronType=Prs"}, + "PP-P1--1-------": {POS: PRON, "morph": "Case=Nom|Number=Plur|Person=1|PronType=Prs"}, + "PP-P1--2-------": {POS: PRON, "morph": "Case=Nom|Number=Plur|Person=2|PronType=Prs"}, + "PP-P2--1-------": {POS: PRON, "morph": "Case=Gen|Number=Plur|Person=1|PronType=Prs"}, + "PP-P2--2-------": {POS: PRON, "morph": "Case=Gen|Number=Plur|Person=2|PronType=Prs"}, + "PP-P3--1-------": {POS: PRON, "morph": "Case=Dat|Number=Plur|Person=1|PronType=Prs"}, + "PP-P3--2-------": {POS: PRON, "morph": "Case=Dat|Number=Plur|Person=2|PronType=Prs"}, + "PP-P4--1-------": {POS: PRON, "morph": "Case=Acc|Number=Plur|Person=1|PronType=Prs"}, + "PP-P4--2-------": {POS: PRON, "morph": "Case=Acc|Number=Plur|Person=2|PronType=Prs"}, + "PP-P5--1-------": {POS: PRON, "morph": "Case=Voc|Number=Plur|Person=1|PronType=Prs"}, + "PP-P5--2-------": {POS: PRON, "morph": "Case=Voc|Number=Plur|Person=2|PronType=Prs"}, + "PP-P6--1-------": {POS: PRON, "morph": "Case=Loc|Number=Plur|Person=1|PronType=Prs"}, + "PP-P6--2-------": {POS: PRON, "morph": "Case=Loc|Number=Plur|Person=2|PronType=Prs"}, + "PP-P7--1-------": {POS: PRON, "morph": "Case=Ins|Number=Plur|Person=1|PronType=Prs"}, + "PP-P7--1------6": {POS: PRON, "morph": "Case=Ins|Number=Plur|Person=1|PronType=Prs|Style=Coll"}, + "PP-P7--2-------": {POS: PRON, "morph": "Case=Ins|Number=Plur|Person=2|PronType=Prs"}, + "PP-PX--1-------": {POS: PRON, "morph": "Number=Plur|Person=1|PronType=Prs"}, + "PP-PX--2-------": {POS: PRON, "morph": "Number=Plur|Person=2|PronType=Prs"}, + "PP-S1--1-------": {POS: PRON, "morph": "Case=Nom|Number=Sing|Person=1|PronType=Prs"}, + "PP-S1--2-------": {POS: PRON, "morph": "Case=Nom|Number=Sing|Person=2|PronType=Prs"}, + "PP-S1--2P-AA---": {POS: PRON,"morph": "Case=Nom|Number=Sing|Person=2|Polarity=Pos|PronType=Prs|Tense=Pres|Voice=Act"}, + "PP-S2--1-------": {POS: PRON, "morph": "Case=Gen|Number=Sing|Person=1|PronType=Prs"}, + "PP-S2--2-------": {POS: PRON, "morph": "Case=Gen|Number=Sing|Person=2|PronType=Prs"}, + "PP-S3--1-------": {POS: PRON, "morph": "Case=Dat|Number=Sing|Person=1|PronType=Prs"}, + "PP-S3--2-------": {POS: PRON, "morph": "Case=Dat|Number=Sing|Person=2|PronType=Prs"}, + "PP-S4--1-------": {POS: PRON, "morph": "Case=Acc|Number=Sing|Person=1|PronType=Prs"}, + "PP-S4--2-------": {POS: PRON, "morph": "Case=Acc|Number=Sing|Person=2|PronType=Prs"}, + "PP-S5--1-------": {POS: PRON, "morph": "Case=Voc|Number=Sing|Person=1|PronType=Prs"}, + "PP-S5--2-------": {POS: PRON, "morph": "Case=Voc|Number=Sing|Person=2|PronType=Prs"}, + "PP-S6--1-------": {POS: PRON, "morph": "Case=Loc|Number=Sing|Person=1|PronType=Prs"}, + "PP-S6--2-------": {POS: PRON, "morph": "Case=Loc|Number=Sing|Person=2|PronType=Prs"}, + "PP-S7--1-------": {POS: PRON, "morph": "Case=Ins|Number=Sing|Person=1|PronType=Prs"}, + "PP-S7--2-------": {POS: PRON, "morph": "Case=Ins|Number=Sing|Person=2|PronType=Prs"}, + "PP-SX--1-------": {POS: PRON, "morph": "Number=Sing|Person=1|PronType=Prs"}, + "PP-SX--2-------": {POS: PRON, "morph": "Number=Sing|Person=2|PronType=Prs"}, + "PPXP1--3-------": {POS: PRON, "morph": "Case=Nom|Number=Plur|Person=3|PronType=Prs"}, + "PPXP2--3-------": {POS: PRON, "morph": "Case=Gen|Number=Plur|Person=3|PronType=Prs"}, + "PPXP3--3-------": {POS: PRON, "morph": "Case=Dat|Number=Plur|Person=3|PronType=Prs"}, + "PPXP4--3-------": {POS: PRON, "morph": "Case=Acc|Number=Plur|Person=3|PronType=Prs"}, + "PPXP7--3-------": {POS: PRON, "morph": "Case=Ins|Number=Plur|Person=3|PronType=Prs"}, + "PPXPX--3-------": {POS: PRON, "morph": "Number=Plur|Person=3|PronType=Prs"}, + "PPXS3--3-------": {POS: PRON, "morph": "Case=Dat|Number=Sing|Person=3|PronType=Prs"}, + "PP-XX--2-------": {POS: PRON, "morph": "Person=2|PronType=Prs"}, + "PPYS1--3-------": {POS: PRON, "morph": "Case=Nom|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPYS2--3-------": {POS: PRON, "morph": "Case=Gen|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPYS4--3-------": {POS: PRON, "morph": "Case=Acc|Gender=Masc|Number=Sing|Person=3|PronType=Prs"}, + "PPZS2--3------1": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Person=3|PronType=Prs"}, + "PPZS3--3-------": {POS: PRON, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Person=3|PronType=Prs"}, + "PPZS4--3------2": {POS: PRON, "morph": "Case=Acc|Gender=Masc,Neut|Number=Sing|Person=3|PronType=Prs|Style=Arch"}, + "PPZS7--3-------": {POS: PRON, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Person=3|PronType=Prs"}, + "PQ--1----------": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|PronType=Int,Rel"}, + "PQ--1---------9": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|PronType=Int,Rel"}, + "PQ--2----------": {POS: PRON, "morph": "Animacy=Inan|Case=Gen|PronType=Int,Rel"}, + "PQ--2---------9": {POS: PRON, "morph": "Animacy=Inan|Case=Gen|PronType=Int,Rel"}, + "PQ--3----------": {POS: PRON, "morph": "Animacy=Inan|Case=Dat|PronType=Int,Rel"}, + "PQ--3---------9": {POS: PRON, "morph": "Animacy=Inan|Case=Dat|PronType=Int,Rel"}, + "PQ--4----------": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|PronType=Int,Rel"}, + "PQ--4---------9": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|PronType=Int,Rel"}, + "PQ--6----------": {POS: PRON, "morph": "Animacy=Inan|Case=Loc|PronType=Int,Rel"}, + "PQ--6---------9": {POS: PRON, "morph": "Animacy=Inan|Case=Loc|PronType=Int,Rel"}, + "PQ--7----------": {POS: PRON, "morph": "Animacy=Inan|Case=Ins|PronType=Int,Rel"}, + "PQ--7---------9": {POS: PRON, "morph": "Animacy=Inan|Case=Ins|PronType=Int,Rel"}, + "PQ--X----------": {POS: PRON, "morph": "Animacy=Inan|PronType=Int,Rel"}, + "PQ--X---------9": {POS: PRON, "morph": "Animacy=Inan|PronType=Int,Rel"}, + "PSFD7FS3-------": {POS: DET,"morph": "Case=Ins|Gender=Fem|Gender[psor]=Fem|Number=Dual|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSFD7-P1-------": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Dual|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSFD7-P2-------": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Dual|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSFD7-S1-------": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Dual|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFD7-S1------6": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Dual|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFD7-S2-------": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Dual|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFD7-S2------6": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Dual|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFP1-S1------1": {POS: DET,"morph": "Case=Nom|Gender=Fem|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFP1-S2------1": {POS: DET,"morph": "Case=Nom|Gender=Fem|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFP4-S1------1": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFP4-S2------1": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFPX-P1-------": {POS: DET, "morph": "Gender=Fem|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSFPX-S1-------": {POS: DET, "morph": "Gender=Fem|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFPX-X1-------": {POS: DET, "morph": "Gender=Fem|Number=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS1-S1------1": {POS: DET,"morph": "Case=Nom|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS1-S2------1": {POS: DET,"morph": "Case=Nom|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS2-P1-------": {POS: DET,"morph": "Case=Gen|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS2-P2-------": {POS: DET,"morph": "Case=Gen|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS2-S1-------": {POS: DET,"morph": "Case=Gen|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS2-S1------1": {POS: DET,"morph": "Case=Gen|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS2-S1------6": {POS: DET,"morph": "Case=Gen|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFS2-S2-------": {POS: DET,"morph": "Case=Gen|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS2-S2------1": {POS: DET,"morph": "Case=Gen|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS2-S2------6": {POS: DET,"morph": "Case=Gen|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFS3-P1-------": {POS: DET,"morph": "Case=Dat|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS3-P2-------": {POS: DET,"morph": "Case=Dat|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS3-S1-------": {POS: DET,"morph": "Case=Dat|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS3-S1------1": {POS: DET,"morph": "Case=Dat|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS3-S1------6": {POS: DET,"morph": "Case=Dat|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFS3-S2-------": {POS: DET,"morph": "Case=Dat|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS3-S2------1": {POS: DET,"morph": "Case=Dat|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS3-S2------6": {POS: DET,"morph": "Case=Dat|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFS4-P1-------": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS4-P1------6": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFS4-P2-------": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS4-P2------6": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFS4-S1-------": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS4-S1------1": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS4-S1------6": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFS4-S2-------": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS4-S2------1": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS4-S2------6": {POS: DET,"morph": "Case=Acc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFS5-S1------1": {POS: DET,"morph": "Case=Voc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS5-S2------1": {POS: DET,"morph": "Case=Voc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS6-P1-------": {POS: DET,"morph": "Case=Loc|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS6-P2-------": {POS: DET,"morph": "Case=Loc|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS6-S1-------": {POS: DET,"morph": "Case=Loc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS6-S1------1": {POS: DET,"morph": "Case=Loc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS6-S1------6": {POS: DET,"morph": "Case=Loc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFS6-S2-------": {POS: DET,"morph": "Case=Loc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS6-S2------1": {POS: DET,"morph": "Case=Loc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS6-S2------6": {POS: DET,"morph": "Case=Loc|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSFS7-P1-------": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS7-P2-------": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS7-S1-------": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS7-S1------1": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFS7-S2-------": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFS7-S2------1": {POS: DET,"morph": "Case=Ins|Gender=Fem|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSFSXFS3-------": {POS: DET,"morph": "Gender=Fem|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSFSX-P1-------": {POS: DET, "morph": "Gender=Fem|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSFSX-S1-------": {POS: DET, "morph": "Gender=Fem|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSFSX-X1-------": {POS: DET, "morph": "Gender=Fem|Number=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSHP1-P1-------": {POS: DET,"morph": "Case=Nom|Gender=Fem,Neut|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSHP1-P2-------": {POS: DET,"morph": "Case=Nom|Gender=Fem,Neut|Number=Plur|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSHP1-S1-------": {POS: DET,"morph": "Case=Nom|Gender=Fem,Neut|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSHP1-S2-------": {POS: DET,"morph": "Case=Nom|Gender=Fem,Neut|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSHP5-S1-------": {POS: DET,"morph": "Case=Voc|Gender=Fem,Neut|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSHP5-S1------7": {POS: DET,"morph": "Case=Voc|Gender=Fem,Neut|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSHP5-S2-------": {POS: DET,"morph": "Case=Voc|Gender=Fem,Neut|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSHP5-S2------7": {POS: DET,"morph": "Case=Voc|Gender=Fem,Neut|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSHS1-P1-------": {POS: DET,"morph": "Case=Nom|Gender=Fem,Neut|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSHS1-P2-------": {POS: DET,"morph": "Case=Nom|Gender=Fem,Neut|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSHS1-S1-------": {POS: DET,"morph": "Case=Nom|Gender=Fem,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSHS1-S2-------": {POS: DET,"morph": "Case=Nom|Gender=Fem,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSHS5-P1-------": {POS: DET,"morph": "Case=Voc|Gender=Fem,Neut|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSHS5-P2-------": {POS: DET,"morph": "Case=Voc|Gender=Fem,Neut|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSHS5-S1-------": {POS: DET,"morph": "Case=Voc|Gender=Fem,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSHS5-S2-------": {POS: DET,"morph": "Case=Voc|Gender=Fem,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSIP1-P1-------": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSIP1-P2-------": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSIP1-S1-------": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSIP1-S1------1": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSIP1-S1------7": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSIP1-S2-------": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSIP1-S2------1": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSIP1-S2------7": {POS: DET,"morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSIP5-S1-------": {POS: DET,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSIP5-S1------1": {POS: DET,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSIP5-S1------7": {POS: DET,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSIP5-S2-------": {POS: DET,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSIP5-S2------1": {POS: DET,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSIP5-S2------7": {POS: DET,"morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSIPX-P1-------": {POS: DET,"morph": "Animacy=Inan|Gender=Masc|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSIPX-S1-------": {POS: DET,"morph": "Animacy=Inan|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSIPX-X1-------": {POS: DET, "morph": "Animacy=Inan|Gender=Masc|Number=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSIS4FS3-------": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSIS4-P1-------": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSIS4-P2-------": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSIS4-S1-------": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSIS4-S1------6": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSIS4-S2-------": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSIS4-S2------6": {POS: DET,"morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSISX-P1-------": {POS: DET,"morph": "Animacy=Inan|Gender=Masc|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSISX-S1-------": {POS: DET,"morph": "Animacy=Inan|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSISX-X1-------": {POS: DET, "morph": "Animacy=Inan|Gender=Masc|Number=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSMP1-P1-------": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSMP1-P2-------": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSMP1-S1-------": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSMP1-S1------1": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSMP1-S1------7": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSMP1-S2-------": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSMP1-S2------1": {POS: DET,"morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSMP5-P1-------": {POS: DET,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSMP5-P2-------": {POS: DET,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSMP5-S1-------": {POS: DET,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSMP5-S1------1": {POS: DET,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSMP5-S1------7": {POS: DET,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSMP5-S2-------": {POS: DET,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSMP5-S2------1": {POS: DET,"morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSMPX-P1-------": {POS: DET,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSMPX-S1-------": {POS: DET,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSMPX-X1-------": {POS: DET, "morph": "Animacy=Anim|Gender=Masc|Number=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSMS4FS3-------": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSMS4-P1-------": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSMS4-P2-------": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSMS4-S1-------": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSMS4-S1------6": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSMS4-S2-------": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSMS4-S2------6": {POS: DET,"morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSMSX-P1-------": {POS: DET,"morph": "Animacy=Anim|Gender=Masc|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSMSX-S1-------": {POS: DET,"morph": "Animacy=Anim|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSMSX-X1-------": {POS: DET, "morph": "Animacy=Anim|Gender=Masc|Number=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSNP1-S1------1": {POS: DET,"morph": "Case=Nom|Gender=Neut|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSNP1-S2------1": {POS: DET,"morph": "Case=Nom|Gender=Neut|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSNP4-S1------1": {POS: DET,"morph": "Case=Acc|Gender=Neut|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSNP4-S2------1": {POS: DET,"morph": "Case=Acc|Gender=Neut|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSNP5-S1------1": {POS: DET,"morph": "Case=Voc|Gender=Neut|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSNP5-S2------1": {POS: DET,"morph": "Case=Voc|Gender=Neut|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSNPX-P1-------": {POS: DET, "morph": "Gender=Neut|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSNPX-S1-------": {POS: DET, "morph": "Gender=Neut|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSNPX-X1-------": {POS: DET, "morph": "Gender=Neut|Number=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSNS1-S1------1": {POS: DET,"morph": "Case=Nom|Gender=Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSNS1-S2------1": {POS: DET,"morph": "Case=Nom|Gender=Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSNS4FS3-------": {POS: DET,"morph": "Case=Acc|Gender=Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSNS4-P1-------": {POS: DET,"morph": "Case=Acc|Gender=Neut|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSNS4-P2-------": {POS: DET,"morph": "Case=Acc|Gender=Neut|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSNS4-S1-------": {POS: DET,"morph": "Case=Acc|Gender=Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSNS4-S1------1": {POS: DET,"morph": "Case=Acc|Gender=Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSNS4-S2-------": {POS: DET,"morph": "Case=Acc|Gender=Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSNS4-S2------1": {POS: DET,"morph": "Case=Acc|Gender=Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSNS5-S1------1": {POS: DET,"morph": "Case=Voc|Gender=Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSNS5-S2------1": {POS: DET,"morph": "Case=Voc|Gender=Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSNSX-P1-------": {POS: DET, "morph": "Gender=Neut|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSNSX-S1-------": {POS: DET, "morph": "Gender=Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSNSX-X1-------": {POS: DET, "morph": "Gender=Neut|Number=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP1FS3-------": {POS: DET,"morph": "Case=Nom|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSXP2FS3-------": {POS: DET,"morph": "Case=Gen|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSXP2-P1-------": {POS: DET, "morph": "Case=Gen|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP2-P2-------": {POS: DET, "morph": "Case=Gen|Number=Plur|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSXP2-S1-------": {POS: DET, "morph": "Case=Gen|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP2-S1------6": {POS: DET,"morph": "Case=Gen|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP2-S2-------": {POS: DET, "morph": "Case=Gen|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSXP2-S2------6": {POS: DET,"morph": "Case=Gen|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP3FS3-------": {POS: DET,"morph": "Case=Dat|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSXP3-P1-------": {POS: DET, "morph": "Case=Dat|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP3-P2-------": {POS: DET, "morph": "Case=Dat|Number=Plur|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSXP3-S1-------": {POS: DET, "morph": "Case=Dat|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP3-S1------6": {POS: DET,"morph": "Case=Dat|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP3-S2-------": {POS: DET, "morph": "Case=Dat|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSXP3-S2------6": {POS: DET,"morph": "Case=Dat|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP4FS3-------": {POS: DET,"morph": "Case=Acc|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSXP4-P1-------": {POS: DET, "morph": "Case=Acc|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP4-P2-------": {POS: DET, "morph": "Case=Acc|Number=Plur|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSXP4-S1-------": {POS: DET, "morph": "Case=Acc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP4-S1------7": {POS: DET,"morph": "Case=Acc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP4-S2-------": {POS: DET, "morph": "Case=Acc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSXP4-S2------7": {POS: DET,"morph": "Case=Acc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP5FS3-------": {POS: DET,"morph": "Case=Voc|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSXP6FS3-------": {POS: DET,"morph": "Case=Loc|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSXP6-P1-------": {POS: DET, "morph": "Case=Loc|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP6-P2-------": {POS: DET, "morph": "Case=Loc|Number=Plur|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSXP6-S1-------": {POS: DET, "morph": "Case=Loc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP6-S1------6": {POS: DET,"morph": "Case=Loc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP6-S2-------": {POS: DET, "morph": "Case=Loc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSXP6-S2------6": {POS: DET,"morph": "Case=Loc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP7FS3-------": {POS: DET,"morph": "Case=Ins|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSXP7FS3------6": {POS: DET,"morph": "Case=Ins|Gender[psor]=Fem|Number=Plur|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP7-P1-------": {POS: DET, "morph": "Case=Ins|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP7-P1------6": {POS: DET,"morph": "Case=Ins|Number=Plur|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP7-P2-------": {POS: DET, "morph": "Case=Ins|Number=Plur|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSXP7-P2------6": {POS: DET,"morph": "Case=Ins|Number=Plur|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSXP7-S1-------": {POS: DET, "morph": "Case=Ins|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSXP7-S2-------": {POS: DET, "morph": "Case=Ins|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSXXXNS3-------": {POS: DET, "morph": "Gender[psor]=Neut|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSXXX-P1-------": {POS: DET, "morph": "Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSXXX-S1-------": {POS: DET, "morph": "Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSXXX-X2-------": {POS: DET, "morph": "Person=2|Poss=Yes|PronType=Prs"}, + "PSXXXXP3-------": {POS: DET, "morph": "Number[psor]=Plur|Person=3|Poss=Yes|PronType=Prs"}, + "PSXXXYS3-------": {POS: DET, "morph": "Gender[psor]=Masc|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSXXXZS3-------": {POS: DET, "morph": "Gender[psor]=Masc,Neut|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSYP4-S1------1": {POS: DET,"morph": "Case=Acc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSYP4-S1------7": {POS: DET,"morph": "Case=Acc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSYP4-S2------1": {POS: DET,"morph": "Case=Acc|Gender=Masc|Number=Plur|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSYS1-P1-------": {POS: DET,"morph": "Case=Nom|Gender=Masc|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSYS1-P2-------": {POS: DET,"morph": "Case=Nom|Gender=Masc|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSYS1-S1-------": {POS: DET,"morph": "Case=Nom|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSYS1-S1------6": {POS: DET,"morph": "Case=Nom|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSYS1-S2-------": {POS: DET,"morph": "Case=Nom|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSYS1-S2------6": {POS: DET,"morph": "Case=Nom|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSYS5-P1-------": {POS: DET,"morph": "Case=Voc|Gender=Masc|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSYS5-P2-------": {POS: DET,"morph": "Case=Voc|Gender=Masc|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSYS5-S1-------": {POS: DET,"morph": "Case=Voc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSYS5-S1------6": {POS: DET,"morph": "Case=Voc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSYS5-S2-------": {POS: DET,"morph": "Case=Voc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSYS5-S2------6": {POS: DET,"morph": "Case=Voc|Gender=Masc|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS1FS3-------": {POS: DET,"morph": "Case=Nom|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSZS2FS3-------": {POS: DET,"morph": "Case=Gen|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSZS2-P1-------": {POS: DET,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSZS2-P2-------": {POS: DET,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSZS2-S1-------": {POS: DET,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSZS2-S1------6": {POS: DET,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS2-S2-------": {POS: DET,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSZS2-S2------6": {POS: DET,"morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS3FS3-------": {POS: DET,"morph": "Case=Dat|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSZS3-P1-------": {POS: DET,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSZS3-P2-------": {POS: DET,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSZS3-S1-------": {POS: DET,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSZS3-S1------6": {POS: DET,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS3-S2-------": {POS: DET,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSZS3-S2------6": {POS: DET,"morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS5FS3-------": {POS: DET,"morph": "Case=Voc|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSZS6FS3-------": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSZS6-P1-------": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSZS6-P2-------": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSZS6-S1-------": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSZS6-S1------6": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS6-S1------7": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS6-S2-------": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSZS6-S2------6": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS6-S2------7": {POS: DET,"morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS7FS3-------": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Gender[psor]=Fem|Number=Sing|Number[psor]=Sing|Person=3|Poss=Yes|PronType=Prs"}, + "PSZS7-P1-------": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSZS7-P1------6": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS7-P1------8": {POS: DET,"morph": "Abbr=Yes|Case=Ins|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=1|Poss=Yes|PronType=Prs"}, + "PSZS7-P2-------": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs"}, + "PSZS7-P2------6": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Number[psor]=Plur|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS7-S1-------": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs"}, + "PSZS7-S1------6": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=1|Poss=Yes|PronType=Prs|Style=Coll"}, + "PSZS7-S2-------": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs"}, + "PSZS7-S2------6": {POS: DET,"morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|Number[psor]=Sing|Person=2|Poss=Yes|PronType=Prs|Style=Coll"}, + "PW--1----------": {POS: PRON, "morph": "Case=Nom|PronType=Neg"}, + "PW--2----------": {POS: PRON, "morph": "Case=Gen|PronType=Neg"}, + "PW--2---------2": {POS: PRON, "morph": "Case=Gen|PronType=Neg|Style=Arch"}, + "PW--3----------": {POS: PRON, "morph": "Case=Dat|PronType=Neg"}, + "PW--3---------2": {POS: PRON, "morph": "Case=Dat|PronType=Neg|Style=Arch"}, + "PW--4----------": {POS: PRON, "morph": "Case=Acc|PronType=Neg"}, + "PW--6----------": {POS: PRON, "morph": "Case=Loc|PronType=Neg"}, + "PW--6---------2": {POS: PRON, "morph": "Case=Loc|PronType=Neg|Style=Arch"}, + "PW--7----------": {POS: PRON, "morph": "Case=Ins|PronType=Neg"}, + "PW--7---------2": {POS: PRON, "morph": "Case=Ins|PronType=Neg|Style=Arch"}, + "PWFD7----------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Neg"}, + "PWFD7---------6": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Neg|Style=Coll"}, + "PWFP1----------": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Neg"}, + "PWFP1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Neg|Style=Coll"}, + "PWFP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Neg"}, + "PWFP4---------6": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Neg|Style=Coll"}, + "PWFP5----------": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Plur|PronType=Neg"}, + "PWFP5---------6": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Plur|PronType=Neg|Style=Coll"}, + "PWFS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Neg"}, + "PWFS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Neg"}, + "PWFS2---------6": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Neg|Style=Coll"}, + "PWFS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Neg"}, + "PWFS3---------6": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Neg|Style=Coll"}, + "PWFS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|PronType=Neg"}, + "PWFS5----------": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Sing|PronType=Neg"}, + "PWFS6----------": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Neg"}, + "PWFS6---------6": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Neg|Style=Coll"}, + "PWFS7----------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|PronType=Neg"}, + "PWIP1----------": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Neg"}, + "PWIP1---------6": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Neg|Style=Coll"}, + "PWIP5----------": {POS: PRON, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|PronType=Neg"}, + "PWIP5---------6": {POS: PRON, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|PronType=Neg|Style=Coll"}, + "PWIS4----------": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Neg"}, + "PWIS4---------6": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Neg|Style=Coll"}, + "PWM-1----------": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|PronType=Neg"}, + "PWM-2----------": {POS: PRON, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|PronType=Neg"}, + "PWM-3----------": {POS: PRON, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|PronType=Neg"}, + "PWM-4----------": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|PronType=Neg"}, + "PWM-6----------": {POS: PRON, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|PronType=Neg"}, + "PWM-7----------": {POS: PRON, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|PronType=Neg"}, + "PWMP1----------": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Neg"}, + "PWMP1---------6": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Neg|Style=Coll"}, + "PWMP5----------": {POS: PRON, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|PronType=Neg"}, + "PWMP5---------6": {POS: PRON, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|PronType=Neg|Style=Coll"}, + "PWMS4----------": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Neg"}, + "PWMS4---------6": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Neg|Style=Coll"}, + "PWNP1----------": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Neg"}, + "PWNP1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Neg|Style=Coll"}, + "PWNP1---------7": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Neg|Style=Coll"}, + "PWNP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Neg"}, + "PWNP4---------6": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Neg|Style=Coll"}, + "PWNP5----------": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Plur|PronType=Neg"}, + "PWNP5---------6": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Plur|PronType=Neg|Style=Coll"}, + "PWNS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Neg"}, + "PWNS1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Neg|Style=Coll"}, + "PWNS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Neg"}, + "PWNS4---------6": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Neg|Style=Coll"}, + "PWNS5----------": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Sing|PronType=Neg"}, + "PWNS5---------6": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Sing|PronType=Neg|Style=Coll"}, + "PW--X----------": {POS: PRON, "morph": "PronType=Neg"}, + "PWXP2----------": {POS: PRON, "morph": "Case=Gen|Number=Plur|PronType=Neg"}, + "PWXP2---------6": {POS: PRON, "morph": "Case=Gen|Number=Plur|PronType=Neg|Style=Coll"}, + "PWXP3----------": {POS: PRON, "morph": "Case=Dat|Number=Plur|PronType=Neg"}, + "PWXP3---------6": {POS: PRON, "morph": "Case=Dat|Number=Plur|PronType=Neg|Style=Coll"}, + "PWXP6----------": {POS: PRON, "morph": "Case=Loc|Number=Plur|PronType=Neg"}, + "PWXP6---------6": {POS: PRON, "morph": "Case=Loc|Number=Plur|PronType=Neg|Style=Coll"}, + "PWXP7----------": {POS: PRON, "morph": "Case=Ins|Number=Plur|PronType=Neg"}, + "PWXP7---------6": {POS: PRON, "morph": "Case=Ins|Number=Plur|PronType=Neg|Style=Coll"}, + "PWXP7---------7": {POS: PRON, "morph": "Case=Ins|Number=Plur|PronType=Neg|Style=Coll"}, + "PWYP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Masc|Number=Plur|PronType=Neg"}, + "PWYP4---------6": {POS: PRON, "morph": "Case=Acc|Gender=Masc|Number=Plur|PronType=Neg|Style=Coll"}, + "PWYS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Neg"}, + "PWYS1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Neg|Style=Coll"}, + "PWYS5----------": {POS: PRON, "morph": "Case=Voc|Gender=Masc|Number=Sing|PronType=Neg"}, + "PWYS5---------6": {POS: PRON, "morph": "Case=Voc|Gender=Masc|Number=Sing|PronType=Neg|Style=Coll"}, + "PWZS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Neg"}, + "PWZS2---------6": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Neg|Style=Coll"}, + "PWZS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Neg"}, + "PWZS3---------6": {POS: PRON, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Neg|Style=Coll"}, + "PWZS6----------": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Neg"}, + "PWZS6---------6": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Neg|Style=Coll"}, + "PWZS6---------7": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Neg|Style=Coll"}, + "PWZS7----------": {POS: PRON, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Neg"}, + "PWZS7---------6": {POS: PRON, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Neg|Style=Coll"}, + "PY-------------": {POS: PRON, "morph": "AdpType=Preppron|PronType=Int,Rel"}, + "PZ--1----------": {POS: PRON, "morph": "Case=Nom|PronType=Ind"}, + "PZ--1---------1": {POS: PRON, "morph": "Case=Nom|PronType=Ind"}, + "PZ--1---------2": {POS: PRON, "morph": "Case=Nom|PronType=Ind|Style=Arch"}, + "PZ--1---------4": {POS: PRON, "morph": "Case=Nom|PronType=Ind|Style=Arch"}, + "PZ--2----------": {POS: PRON, "morph": "Case=Gen|PronType=Ind"}, + "PZ--2---------1": {POS: PRON, "morph": "Case=Gen|PronType=Ind"}, + "PZ--2---------2": {POS: PRON, "morph": "Case=Gen|PronType=Ind|Style=Arch"}, + "PZ--3----------": {POS: PRON, "morph": "Case=Dat|PronType=Ind"}, + "PZ--3---------1": {POS: PRON, "morph": "Case=Dat|PronType=Ind"}, + "PZ--3---------2": {POS: PRON, "morph": "Case=Dat|PronType=Ind|Style=Arch"}, + "PZ--4----------": {POS: PRON, "morph": "Case=Acc|PronType=Ind"}, + "PZ--4---------1": {POS: PRON, "morph": "Case=Acc|PronType=Ind"}, + "PZ--4---------2": {POS: PRON, "morph": "Case=Acc|PronType=Ind|Style=Arch"}, + "PZ--4---------4": {POS: PRON, "morph": "Case=Acc|PronType=Ind|Style=Arch"}, + "PZ--5----------": {POS: PRON, "morph": "Case=Voc|PronType=Ind"}, + "PZ--5---------1": {POS: PRON, "morph": "Case=Voc|PronType=Ind"}, + "PZ--5---------2": {POS: PRON, "morph": "Case=Voc|PronType=Ind|Style=Arch"}, + "PZ--6----------": {POS: PRON, "morph": "Case=Loc|PronType=Ind"}, + "PZ--6---------1": {POS: PRON, "morph": "Case=Loc|PronType=Ind"}, + "PZ--6---------2": {POS: PRON, "morph": "Case=Loc|PronType=Ind|Style=Arch"}, + "PZ--7----------": {POS: PRON, "morph": "Case=Ins|PronType=Ind"}, + "PZ--7---------1": {POS: PRON, "morph": "Case=Ins|PronType=Ind"}, + "PZ--7---------2": {POS: PRON, "morph": "Case=Ins|PronType=Ind|Style=Arch"}, + "PZFD7----------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Ind"}, + "PZFD7---------1": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Ind"}, + "PZFD7---------6": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Dual|PronType=Ind|Style=Coll"}, + "PZFP1----------": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Ind"}, + "PZFP1---------1": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Ind"}, + "PZFP1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Plur|PronType=Ind|Style=Coll"}, + "PZFP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Ind"}, + "PZFP4---------1": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Ind"}, + "PZFP4---------6": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Plur|PronType=Ind|Style=Coll"}, + "PZFP5----------": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Plur|PronType=Ind"}, + "PZFP5---------1": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Plur|PronType=Ind"}, + "PZFP5---------6": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Plur|PronType=Ind|Style=Coll"}, + "PZFS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS1---------1": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Fem|Number=Sing|PronType=Ind|Style=Coll"}, + "PZFS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS2---------1": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS2---------6": {POS: PRON, "morph": "Case=Gen|Gender=Fem|Number=Sing|PronType=Ind|Style=Coll"}, + "PZFS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS3---------1": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS3---------6": {POS: PRON, "morph": "Case=Dat|Gender=Fem|Number=Sing|PronType=Ind|Style=Coll"}, + "PZFS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS4---------1": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS4---------6": {POS: PRON, "morph": "Case=Acc|Gender=Fem|Number=Sing|PronType=Ind|Style=Coll"}, + "PZFS5----------": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS5---------1": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS5---------6": {POS: PRON, "morph": "Case=Voc|Gender=Fem|Number=Sing|PronType=Ind|Style=Coll"}, + "PZFS6----------": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS6---------1": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS6---------6": {POS: PRON, "morph": "Case=Loc|Gender=Fem|Number=Sing|PronType=Ind|Style=Coll"}, + "PZFS7----------": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS7---------1": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|PronType=Ind"}, + "PZFS7---------6": {POS: PRON, "morph": "Case=Ins|Gender=Fem|Number=Sing|PronType=Ind|Style=Coll"}, + "PZIP1----------": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Ind"}, + "PZIP1---------1": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Ind"}, + "PZIP1---------6": {POS: PRON, "morph": "Animacy=Inan|Case=Nom|Gender=Masc|Number=Plur|PronType=Ind|Style=Coll"}, + "PZIP5----------": {POS: PRON, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|PronType=Ind"}, + "PZIP5---------1": {POS: PRON, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|PronType=Ind"}, + "PZIP5---------6": {POS: PRON, "morph": "Animacy=Inan|Case=Voc|Gender=Masc|Number=Plur|PronType=Ind|Style=Coll"}, + "PZIS4----------": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Ind"}, + "PZIS4---------1": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Ind"}, + "PZIS4---------6": {POS: PRON, "morph": "Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|PronType=Ind|Style=Coll"}, + "PZIS6---------7": {POS: PRON, "morph": "Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|PronType=Ind|Style=Coll"}, + "PZM-1----------": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|PronType=Ind"}, + "PZM-1---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|PronType=Ind"}, + "PZM-2----------": {POS: PRON, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|PronType=Ind"}, + "PZM-2---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Gen|Gender=Masc|PronType=Ind"}, + "PZM-3----------": {POS: PRON, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|PronType=Ind"}, + "PZM-3---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Dat|Gender=Masc|PronType=Ind"}, + "PZM-4----------": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|PronType=Ind"}, + "PZM-4---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|PronType=Ind"}, + "PZM-5----------": {POS: PRON, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|PronType=Ind"}, + "PZM-5---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|PronType=Ind"}, + "PZM-6----------": {POS: PRON, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|PronType=Ind"}, + "PZM-6---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|PronType=Ind"}, + "PZM-7----------": {POS: PRON, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|PronType=Ind"}, + "PZM-7---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Ins|Gender=Masc|PronType=Ind"}, + "PZMP1----------": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Ind"}, + "PZMP1---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Ind"}, + "PZMP1---------6": {POS: PRON, "morph": "Animacy=Anim|Case=Nom|Gender=Masc|Number=Plur|PronType=Ind|Style=Coll"}, + "PZMP5----------": {POS: PRON, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|PronType=Ind"}, + "PZMP5---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|PronType=Ind"}, + "PZMP5---------6": {POS: PRON, "morph": "Animacy=Anim|Case=Voc|Gender=Masc|Number=Plur|PronType=Ind|Style=Coll"}, + "PZMS4----------": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Ind"}, + "PZMS4---------1": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Ind"}, + "PZMS4---------6": {POS: PRON, "morph": "Animacy=Anim|Case=Acc|Gender=Masc|Number=Sing|PronType=Ind|Style=Coll"}, + "PZMS6---------7": {POS: PRON, "morph": "Animacy=Anim|Case=Loc|Gender=Masc|Number=Sing|PronType=Ind|Style=Coll"}, + "PZNP1----------": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Ind"}, + "PZNP1---------1": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Ind"}, + "PZNP1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Plur|PronType=Ind|Style=Coll"}, + "PZNP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Ind"}, + "PZNP4---------1": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Ind"}, + "PZNP4---------6": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Plur|PronType=Ind|Style=Coll"}, + "PZNP5----------": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Plur|PronType=Ind"}, + "PZNP5---------1": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Plur|PronType=Ind"}, + "PZNP5---------6": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Plur|PronType=Ind|Style=Coll"}, + "PZNS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Ind"}, + "PZNS1---------1": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Ind"}, + "PZNS1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Neut|Number=Sing|PronType=Ind|Style=Coll"}, + "PZNS4----------": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Ind"}, + "PZNS4---------1": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Ind"}, + "PZNS4---------6": {POS: PRON, "morph": "Case=Acc|Gender=Neut|Number=Sing|PronType=Ind|Style=Coll"}, + "PZNS5----------": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Sing|PronType=Ind"}, + "PZNS5---------1": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Sing|PronType=Ind"}, + "PZNS5---------6": {POS: PRON, "morph": "Case=Voc|Gender=Neut|Number=Sing|PronType=Ind|Style=Coll"}, + "PZNS6---------7": {POS: PRON, "morph": "Case=Loc|Gender=Neut|Number=Sing|PronType=Ind|Style=Coll"}, + "PZXP2----------": {POS: PRON, "morph": "Case=Gen|Number=Plur|PronType=Ind"}, + "PZXP2---------1": {POS: PRON, "morph": "Case=Gen|Number=Plur|PronType=Ind"}, + "PZXP2---------6": {POS: PRON, "morph": "Case=Gen|Number=Plur|PronType=Ind|Style=Coll"}, + "PZXP3----------": {POS: PRON, "morph": "Case=Dat|Number=Plur|PronType=Ind"}, + "PZXP3---------1": {POS: PRON, "morph": "Case=Dat|Number=Plur|PronType=Ind"}, + "PZXP3---------6": {POS: PRON, "morph": "Case=Dat|Number=Plur|PronType=Ind|Style=Coll"}, + "PZXP6----------": {POS: PRON, "morph": "Case=Loc|Number=Plur|PronType=Ind"}, + "PZXP6---------1": {POS: PRON, "morph": "Case=Loc|Number=Plur|PronType=Ind"}, + "PZXP6---------6": {POS: PRON, "morph": "Case=Loc|Number=Plur|PronType=Ind|Style=Coll"}, + "PZXP7----------": {POS: PRON, "morph": "Case=Ins|Number=Plur|PronType=Ind"}, + "PZXP7---------1": {POS: PRON, "morph": "Case=Ins|Number=Plur|PronType=Ind"}, + "PZXP7---------6": {POS: PRON, "morph": "Case=Ins|Number=Plur|PronType=Ind|Style=Coll"}, + "PZXP7---------7": {POS: PRON, "morph": "Case=Ins|Number=Plur|PronType=Ind|Style=Coll"}, + "PZXXX----------": {POS: PRON, "morph": "PronType=Ind"}, + "PZYP4----------": {POS: PRON, "morph": "Case=Acc|Gender=Masc|Number=Plur|PronType=Ind"}, + "PZYP4---------1": {POS: PRON, "morph": "Case=Acc|Gender=Masc|Number=Plur|PronType=Ind"}, + "PZYP4---------6": {POS: PRON, "morph": "Case=Acc|Gender=Masc|Number=Plur|PronType=Ind|Style=Coll"}, + "PZYS1----------": {POS: PRON, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Ind"}, + "PZYS1---------1": {POS: PRON, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Ind"}, + "PZYS1---------6": {POS: PRON, "morph": "Case=Nom|Gender=Masc|Number=Sing|PronType=Ind|Style=Coll"}, + "PZYS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Masc|Number=Sing|PronType=Ind"}, + "PZYS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Masc|Number=Sing|PronType=Ind"}, + "PZYS5----------": {POS: PRON, "morph": "Case=Voc|Gender=Masc|Number=Sing|PronType=Ind"}, + "PZYS5---------1": {POS: PRON, "morph": "Case=Voc|Gender=Masc|Number=Sing|PronType=Ind"}, + "PZYS5---------6": {POS: PRON, "morph": "Case=Voc|Gender=Masc|Number=Sing|PronType=Ind|Style=Coll"}, + "PZZS2----------": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Ind"}, + "PZZS2---------1": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Ind"}, + "PZZS2---------6": {POS: PRON, "morph": "Case=Gen|Gender=Masc,Neut|Number=Sing|PronType=Ind|Style=Coll"}, + "PZZS3----------": {POS: PRON, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Ind"}, + "PZZS3---------1": {POS: PRON, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Ind"}, + "PZZS3---------6": {POS: PRON, "morph": "Case=Dat|Gender=Masc,Neut|Number=Sing|PronType=Ind|Style=Coll"}, + "PZZS6----------": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Ind"}, + "PZZS6---------1": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Ind"}, + "PZZS6---------6": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Ind|Style=Coll"}, + "PZZS6---------7": {POS: PRON, "morph": "Case=Loc|Gender=Masc,Neut|Number=Sing|PronType=Ind|Style=Coll"}, + "PZZS7----------": {POS: PRON, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Ind"}, + "PZZS7---------1": {POS: PRON, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Ind"}, + "PZZS7---------6": {POS: PRON, "morph": "Case=Ins|Gender=Masc,Neut|Number=Sing|PronType=Ind|Style=Coll"}, + "RF-------------": {POS: ADP, "morph": "AdpType=Comprep"}, + "RR--1----------": {POS: ADP, "morph": "AdpType=Prep|Case=Nom"}, + "RR--1---------8": {POS: ADP, "morph": "Abbr=Yes|AdpType=Prep|Case=Nom"}, + "RR--2----------": {POS: ADP, "morph": "AdpType=Prep|Case=Gen"}, + "RR--2---------1": {POS: ADP, "morph": "AdpType=Prep|Case=Gen"}, + "RR--2---------3": {POS: ADP, "morph": "AdpType=Prep|Case=Gen|Style=Arch"}, + "RR--2---------8": {POS: ADP, "morph": "Abbr=Yes|AdpType=Prep|Case=Gen"}, + "RR--3----------": {POS: ADP, "morph": "AdpType=Prep|Case=Dat"}, + "RR--3---------8": {POS: ADP, "morph": "Abbr=Yes|AdpType=Prep|Case=Dat"}, + "RR--4----------": {POS: ADP, "morph": "AdpType=Prep|Case=Acc"}, + "RR--4---------8": {POS: ADP, "morph": "Abbr=Yes|AdpType=Prep|Case=Acc"}, + "RR--6----------": {POS: ADP, "morph": "AdpType=Prep|Case=Loc"}, + "RR--7----------": {POS: ADP, "morph": "AdpType=Prep|Case=Ins"}, + "RR--7---------8": {POS: ADP, "morph": "Abbr=Yes|AdpType=Prep|Case=Ins"}, + "RR--X----------": {POS: ADP, "morph": "AdpType=Prep"}, + "RR--X---------8": {POS: ADP, "morph": "Abbr=Yes|AdpType=Prep"}, + "RV--1----------": {POS: ADP, "morph": "AdpType=Voc|Case=Nom"}, + "RV--2----------": {POS: ADP, "morph": "AdpType=Voc|Case=Gen"}, + "RV--2---------1": {POS: ADP, "morph": "AdpType=Voc|Case=Gen"}, + "RV--3----------": {POS: ADP, "morph": "AdpType=Voc|Case=Dat"}, + "RV--3---------1": {POS: ADP, "morph": "AdpType=Voc|Case=Dat"}, + "RV--4----------": {POS: ADP, "morph": "AdpType=Voc|Case=Acc"}, + "RV--4---------1": {POS: ADP, "morph": "AdpType=Voc|Case=Acc"}, + "RV--6----------": {POS: ADP, "morph": "AdpType=Voc|Case=Loc"}, + "RV--7----------": {POS: ADP, "morph": "AdpType=Voc|Case=Ins"}, + "TT-------------": {POS: PART, "morph": "_"}, + "TT------------1": {POS: PART, "morph": "_"}, + "TT------------8": {POS: PART, "morph": "Abbr=Yes"}, + "V~-------------": {POS: VERB, "morph": "Abbr=Yes"}, + "VB-P---1F-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---1F-AA--6": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---1F-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---1F-AA--8": {POS: VERB,"morph": "Abbr=Yes|Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---1F-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---1F-NA--6": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---1F-NA--7": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---1F-NA--8": {POS: VERB,"morph": "Abbr=Yes|Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-AA--1": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-AA--6": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-NA--1": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-NA--6": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---1P-NA--7": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---2F-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Pos|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---2F-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Pos|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---2F-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Neg|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---2F-NA--7": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Neg|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---2P-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---2P-AA--1": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---2P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---2P-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---2P-AA--6": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---2P-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---2P-NA--1": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---2P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---2P-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---2P-NA--6": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3F-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---3F-AA--1": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---3F-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---3F-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---3F-NA--1": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---3F-NA--7": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-AA--1": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-AA--4": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-AA--5": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-AA--6": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-NA--1": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-NA--4": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-NA--5": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-NA--6": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-P---3P-NA--7": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1F-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---1F-AA--1": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---1F-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---1F-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---1F-NA--1": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---1F-NA--7": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-AA--1": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-AA--4": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-AA--6": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-NA--1": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-NA--4": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---1P-NA--6": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2F-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Pos|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---2F-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Pos|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---2F-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Neg|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---2F-NA--7": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Neg|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-AA--1": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-AA--6": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-NA--1": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---2P-NA--6": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3F-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---3F-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---3F-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---3F-NA--7": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Style=Coll|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-AA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-AA--1": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-AA--4": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-AA--5": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-AA--6": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-AA--7": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-AA--8": {POS: VERB,"morph": "Abbr=Yes|Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-NA---": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-NA--1": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-NA--4": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-NA--5": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-NA--6": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-S---3P-NA--7": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Style=Coll|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-X---XF-AA---": {POS: VERB, "morph": "Mood=Ind|Polarity=Pos|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-X---XF-NA---": {POS: VERB, "morph": "Mood=Ind|Polarity=Neg|Tense=Fut|VerbForm=Fin|Voice=Act"}, + "VB-X---XP-AA---": {POS: VERB, "morph": "Mood=Ind|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "VB-X---XP-NA---": {POS: VERB, "morph": "Mood=Ind|Polarity=Neg|Tense=Pres|VerbForm=Fin|Voice=Act"}, + "Vc-P---1-------": {POS: VERB, "morph": "Mood=Cnd|Number=Plur|Person=1|VerbForm=Fin"}, + "Vc-P---1------6": {POS: VERB, "morph": "Mood=Cnd|Number=Plur|Person=1|Style=Coll|VerbForm=Fin"}, + "Vc-P---2-------": {POS: VERB, "morph": "Mood=Cnd|Number=Plur|Person=2|VerbForm=Fin"}, + "Vc-S---1-------": {POS: VERB, "morph": "Mood=Cnd|Number=Sing|Person=1|VerbForm=Fin"}, + "Vc-S---1------6": {POS: VERB, "morph": "Mood=Cnd|Number=Sing|Person=1|Style=Coll|VerbForm=Fin"}, + "Vc-S---2-------": {POS: VERB, "morph": "Mood=Cnd|Number=Sing|Person=2|VerbForm=Fin"}, + "Vc-X---3-------": {POS: VERB, "morph": "Mood=Cnd|Person=3|VerbForm=Fin"}, + "VeHS------A----": {POS: VERB,"morph": "Aspect=Imp|Gender=Fem,Neut|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Conv|Voice=Act"}, + "VeHS------A---2": {POS: VERB,"morph": "Aspect=Imp|Gender=Fem,Neut|Number=Sing|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Conv|Voice=Act"}, + "VeHS------N----": {POS: VERB,"morph": "Aspect=Imp|Gender=Fem,Neut|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Conv|Voice=Act"}, + "VeHS------N---2": {POS: VERB,"morph": "Aspect=Imp|Gender=Fem,Neut|Number=Sing|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Conv|Voice=Act"}, + "VeXP------A----": {POS: VERB, "morph": "Aspect=Imp|Number=Plur|Polarity=Pos|Tense=Pres|VerbForm=Conv|Voice=Act"}, + "VeXP------A---2": {POS: VERB,"morph": "Aspect=Imp|Number=Plur|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Conv|Voice=Act"}, + "VeXP------N----": {POS: VERB, "morph": "Aspect=Imp|Number=Plur|Polarity=Neg|Tense=Pres|VerbForm=Conv|Voice=Act"}, + "VeXP------N---2": {POS: VERB,"morph": "Aspect=Imp|Number=Plur|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Conv|Voice=Act"}, + "VeYS------A----": {POS: VERB,"morph": "Aspect=Imp|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Pres|VerbForm=Conv|Voice=Act"}, + "VeYS------N----": {POS: VERB,"morph": "Aspect=Imp|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Pres|VerbForm=Conv|Voice=Act"}, + "Vf--------A----": {POS: VERB, "morph": "Polarity=Pos|VerbForm=Inf"}, + "Vf--------A---1": {POS: VERB, "morph": "Polarity=Pos|VerbForm=Inf"}, + "Vf--------A---2": {POS: VERB, "morph": "Polarity=Pos|Style=Arch|VerbForm=Inf"}, + "Vf--------A---3": {POS: VERB, "morph": "Polarity=Pos|Style=Arch|VerbForm=Inf"}, + "Vf--------A---4": {POS: VERB, "morph": "Polarity=Pos|Style=Arch|VerbForm=Inf"}, + "Vf--------A---6": {POS: VERB, "morph": "Polarity=Pos|Style=Coll|VerbForm=Inf"}, + "Vf--------A---8": {POS: VERB, "morph": "Abbr=Yes|Polarity=Pos|VerbForm=Inf"}, + "Vf--------N----": {POS: VERB, "morph": "Polarity=Neg|VerbForm=Inf"}, + "Vf--------N---1": {POS: VERB, "morph": "Polarity=Neg|VerbForm=Inf"}, + "Vf--------N---2": {POS: VERB, "morph": "Polarity=Neg|Style=Arch|VerbForm=Inf"}, + "Vf--------N---3": {POS: VERB, "morph": "Polarity=Neg|Style=Arch|VerbForm=Inf"}, + "Vf--------N---4": {POS: VERB, "morph": "Polarity=Neg|Style=Arch|VerbForm=Inf"}, + "Vf--------N---6": {POS: VERB, "morph": "Polarity=Neg|Style=Coll|VerbForm=Inf"}, + "Vi-P---1--A----": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=1|Polarity=Pos|VerbForm=Fin"}, + "Vi-P---1--A---1": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=1|Polarity=Pos|VerbForm=Fin"}, + "Vi-P---1--A---2": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=1|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-P---1--A---3": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=1|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-P---1--A---6": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=1|Polarity=Pos|Style=Coll|VerbForm=Fin"}, + "Vi-P---1--N----": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=1|Polarity=Neg|VerbForm=Fin"}, + "Vi-P---1--N---1": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=1|Polarity=Neg|VerbForm=Fin"}, + "Vi-P---1--N---2": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=1|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-P---1--N---3": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=1|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-P---1--N---6": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=1|Polarity=Neg|Style=Coll|VerbForm=Fin"}, + "Vi-P---2--A----": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Pos|VerbForm=Fin"}, + "Vi-P---2--A---1": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Pos|VerbForm=Fin"}, + "Vi-P---2--A---2": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-P---2--A---3": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-P---2--A---6": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Pos|Style=Coll|VerbForm=Fin"}, + "Vi-P---2--A---7": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Pos|Style=Coll|VerbForm=Fin"}, + "Vi-P---2--N----": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Neg|VerbForm=Fin"}, + "Vi-P---2--N---1": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Neg|VerbForm=Fin"}, + "Vi-P---2--N---2": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-P---2--N---3": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-P---2--N---6": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Neg|Style=Coll|VerbForm=Fin"}, + "Vi-P---2--N---7": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=2|Polarity=Neg|Style=Coll|VerbForm=Fin"}, + "Vi-P---3--A---1": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=3|Polarity=Pos|VerbForm=Fin"}, + "Vi-P---3--A---2": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=3|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-P---3--A---3": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=3|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-P---3--A---4": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=3|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-P---3--A---9": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=3|Polarity=Pos|VerbForm=Fin"}, + "Vi-P---3--N---1": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=3|Polarity=Neg|VerbForm=Fin"}, + "Vi-P---3--N---2": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=3|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-P---3--N---3": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=3|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-P---3--N---4": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=3|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-P---3--N---9": {POS: VERB, "morph": "Mood=Imp|Number=Plur|Person=3|Polarity=Neg|VerbForm=Fin"}, + "Vi-S---2--A----": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=2|Polarity=Pos|VerbForm=Fin"}, + "Vi-S---2--A---1": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=2|Polarity=Pos|VerbForm=Fin"}, + "Vi-S---2--A---2": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=2|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-S---2--A---6": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=2|Polarity=Pos|Style=Coll|VerbForm=Fin"}, + "Vi-S---2--A---7": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=2|Polarity=Pos|Style=Coll|VerbForm=Fin"}, + "Vi-S---2--A---8": {POS: VERB, "morph": "Abbr=Yes|Mood=Imp|Number=Sing|Person=2|Polarity=Pos|VerbForm=Fin"}, + "Vi-S---2--N----": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=2|Polarity=Neg|VerbForm=Fin"}, + "Vi-S---2--N---1": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=2|Polarity=Neg|VerbForm=Fin"}, + "Vi-S---2--N---2": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=2|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-S---2--N---6": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=2|Polarity=Neg|Style=Coll|VerbForm=Fin"}, + "Vi-S---2--N---7": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=2|Polarity=Neg|Style=Coll|VerbForm=Fin"}, + "Vi-S---3--A----": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=3|Polarity=Pos|VerbForm=Fin"}, + "Vi-S---3--A---2": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=3|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-S---3--A---3": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=3|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-S---3--A---4": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=3|Polarity=Pos|Style=Arch|VerbForm=Fin"}, + "Vi-S---3--A---9": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=3|Polarity=Pos|VerbForm=Fin"}, + "Vi-S---3--N----": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=3|Polarity=Neg|VerbForm=Fin"}, + "Vi-S---3--N---2": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=3|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-S---3--N---3": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=3|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-S---3--N---4": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=3|Polarity=Neg|Style=Arch|VerbForm=Fin"}, + "Vi-S---3--N---9": {POS: VERB, "morph": "Mood=Imp|Number=Sing|Person=3|Polarity=Neg|VerbForm=Fin"}, + "Vi-X---2--A----": {POS: VERB, "morph": "Mood=Imp|Person=2|Polarity=Pos|VerbForm=Fin"}, + "Vi-X---2--N----": {POS: VERB, "morph": "Mood=Imp|Person=2|Polarity=Neg|VerbForm=Fin"}, + "VmHS------A----": {POS: VERB,"morph": "Aspect=Perf|Gender=Fem,Neut|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmHS------A---4": {POS: VERB,"morph": "Aspect=Perf|Gender=Fem,Neut|Number=Sing|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmHS------N----": {POS: VERB,"morph": "Aspect=Perf|Gender=Fem,Neut|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmHS------N---4": {POS: VERB,"morph": "Aspect=Perf|Gender=Fem,Neut|Number=Sing|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmXP------A----": {POS: VERB, "morph": "Aspect=Perf|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmXP------A---4": {POS: VERB,"morph": "Aspect=Perf|Number=Plur|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmXP------N----": {POS: VERB, "morph": "Aspect=Perf|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmXP------N---4": {POS: VERB,"morph": "Aspect=Perf|Number=Plur|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmYS------A----": {POS: VERB,"morph": "Aspect=Perf|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmYS------A---4": {POS: VERB,"morph": "Aspect=Perf|Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmYS------N----": {POS: VERB,"morph": "Aspect=Perf|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VmYS------N---4": {POS: VERB,"morph": "Aspect=Perf|Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Conv|Voice=Act"}, + "VpFS---2R-AA---": {POS: VERB,"morph": "Gender=Fem|Number=Sing|Person=2|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpFS---2R-AA--1": {POS: VERB,"morph": "Gender=Fem|Number=Sing|Person=2|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpFS---2R-AA--6": {POS: VERB,"morph": "Gender=Fem|Number=Sing|Person=2|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpFS---2R-NA---": {POS: VERB,"morph": "Gender=Fem|Number=Sing|Person=2|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpFS---2R-NA--1": {POS: VERB,"morph": "Gender=Fem|Number=Sing|Person=2|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpFS---2R-NA--6": {POS: VERB,"morph": "Gender=Fem|Number=Sing|Person=2|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpMP---XR-AA---": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpMP---XR-AA--1": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpMP---XR-AA--3": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpMP---XR-AA--6": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpMP---XR-NA---": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpMP---XR-NA--1": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpMP---XR-NA--3": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpMP---XR-NA--6": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---2R-AA---": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Person=2|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---2R-AA--1": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Person=2|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---2R-AA--6": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Person=2|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---2R-NA---": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Person=2|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---2R-NA--1": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Person=2|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---2R-NA--6": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Person=2|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---XR-AA---": {POS: VERB, "morph": "Gender=Neut|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---XR-AA--1": {POS: VERB, "morph": "Gender=Neut|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---XR-AA--3": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---XR-AA--6": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---XR-NA---": {POS: VERB, "morph": "Gender=Neut|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---XR-NA--1": {POS: VERB, "morph": "Gender=Neut|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---XR-NA--3": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpNS---XR-NA--6": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpQW---XR-AA---": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpQW---XR-AA--1": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpQW---XR-AA--3": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpQW---XR-AA--6": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpQW---XR-NA---": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpQW---XR-NA--1": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpQW---XR-NA--3": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpQW---XR-NA--6": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpTP---XR-AA---": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpTP---XR-AA--1": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpTP---XR-AA--3": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpTP---XR-AA--6": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpTP---XR-NA---": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpTP---XR-NA--1": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpTP---XR-NA--3": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpTP---XR-NA--6": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpXP---XR-AA---": {POS: VERB, "morph": "Number=Plur|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpXP---XR-NA---": {POS: VERB, "morph": "Number=Plur|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpXS---XR-AA---": {POS: VERB, "morph": "Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpXS---XR-NA---": {POS: VERB, "morph": "Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpXX---XR-AA---": {POS: VERB, "morph": "Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpXX---XR-NA---": {POS: VERB, "morph": "Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---2R-AA---": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Person=2|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---2R-AA--1": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Person=2|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---2R-AA--6": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Person=2|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---2R-NA---": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Person=2|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---2R-NA--1": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Person=2|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---2R-NA--6": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Person=2|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---XR-AA---": {POS: VERB, "morph": "Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---XR-AA--1": {POS: VERB, "morph": "Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---XR-AA--6": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---XR-AA--8": {POS: VERB,"morph": "Abbr=Yes|Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---XR-AA--9": {POS: VERB, "morph": "Gender=Masc|Number=Sing|Polarity=Pos|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---XR-NA---": {POS: VERB, "morph": "Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---XR-NA--1": {POS: VERB, "morph": "Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---XR-NA--6": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|Voice=Act"}, + "VpYS---XR-NA--8": {POS: VERB,"morph": "Abbr=Yes|Gender=Masc|Number=Sing|Polarity=Neg|Tense=Past|VerbForm=Part|Voice=Act"}, + "VqMP---XR-AA--2": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqMP---XR-AA--3": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqMP---XR-AA--7": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqMP---XR-NA--2": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqMP---XR-NA--3": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqMP---XR-NA--7": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqNS---XR-AA--2": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqNS---XR-AA--3": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqNS---XR-AA--7": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqNS---XR-NA--2": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqNS---XR-NA--3": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqNS---XR-NA--7": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqQW---XR-AA--2": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqQW---XR-AA--3": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqQW---XR-AA--7": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqQW---XR-NA--2": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqQW---XR-NA--3": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqQW---XR-NA--7": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqTP---XR-AA--2": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqTP---XR-AA--3": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqTP---XR-AA--7": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqTP---XR-NA--2": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqTP---XR-NA--3": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqTP---XR-NA--7": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqYS---XR-AA--2": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqYS---XR-AA--3": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqYS---XR-AA--7": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Polarity=Pos|Style=Coll|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqYS---XR-NA--2": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqYS---XR-NA--3": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VqYS---XR-NA--7": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Polarity=Neg|Style=Coll|Tense=Past|VerbForm=Part|VerbType=Verbconj|Voice=Act"}, + "VsFS---2H-AP---": {POS: VERB,"morph": "Gender=Fem|Number=Sing|Person=2|Polarity=Pos|Tense=Past,Pres|VerbForm=Part|Voice=Pass"}, + "VsFS---2H-AP--2": {POS: VERB,"morph": "Gender=Fem|Number=Sing|Person=2|Polarity=Pos|Style=Arch|Tense=Past,Pres|VerbForm=Part|Voice=Pass"}, + "VsFS---2H-NP---": {POS: VERB,"morph": "Gender=Fem|Number=Sing|Person=2|Polarity=Neg|Tense=Past,Pres|VerbForm=Part|Voice=Pass"}, + "VsFS---2H-NP--2": {POS: VERB,"morph": "Gender=Fem|Number=Sing|Person=2|Polarity=Neg|Style=Arch|Tense=Past,Pres|VerbForm=Part|Voice=Pass"}, + "VsFS4--XX-AP---": {POS: VERB, "morph": "Case=Acc|Gender=Fem|Number=Sing|Polarity=Pos|VerbForm=Part|Voice=Pass"}, + "VsFS4--XX-AP--2": {POS: VERB,"morph": "Case=Acc|Gender=Fem|Number=Sing|Polarity=Pos|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsFS4--XX-NP---": {POS: VERB, "morph": "Case=Acc|Gender=Fem|Number=Sing|Polarity=Neg|VerbForm=Part|Voice=Pass"}, + "VsFS4--XX-NP--2": {POS: VERB,"morph": "Case=Acc|Gender=Fem|Number=Sing|Polarity=Neg|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsMP---XX-AP---": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos|VerbForm=Part|Voice=Pass"}, + "VsMP---XX-AP--2": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Pos|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsMP---XX-NP---": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg|VerbForm=Part|Voice=Pass"}, + "VsMP---XX-NP--2": {POS: VERB,"morph": "Animacy=Anim|Gender=Masc|Number=Plur|Polarity=Neg|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsNS---2H-AP---": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Person=2|Polarity=Pos|Tense=Past,Pres|VerbForm=Part|Voice=Pass"}, + "VsNS---2H-AP--2": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Person=2|Polarity=Pos|Style=Arch|Tense=Past,Pres|VerbForm=Part|Voice=Pass"}, + "VsNS---2H-NP---": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Person=2|Polarity=Neg|Tense=Past,Pres|VerbForm=Part|Voice=Pass"}, + "VsNS---2H-NP--2": {POS: VERB,"morph": "Gender=Neut|Number=Sing|Person=2|Polarity=Neg|Style=Arch|Tense=Past,Pres|VerbForm=Part|Voice=Pass"}, + "VsNS---XX-AP---": {POS: VERB, "morph": "Gender=Neut|Number=Sing|Polarity=Pos|VerbForm=Part|Voice=Pass"}, + "VsNS---XX-AP--2": {POS: VERB, "morph": "Gender=Neut|Number=Sing|Polarity=Pos|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsNS---XX-NP---": {POS: VERB, "morph": "Gender=Neut|Number=Sing|Polarity=Neg|VerbForm=Part|Voice=Pass"}, + "VsNS---XX-NP--2": {POS: VERB, "morph": "Gender=Neut|Number=Sing|Polarity=Neg|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsQW---XX-AP---": {POS: VERB, "morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Pos|VerbForm=Part|Voice=Pass"}, + "VsQW---XX-AP--2": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Pos|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsQW---XX-NP---": {POS: VERB, "morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Neg|VerbForm=Part|Voice=Pass"}, + "VsQW---XX-NP--2": {POS: VERB,"morph": "Gender=Fem,Neut|Number=Plur,Sing|Polarity=Neg|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsTP---XX-AP---": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Pos|VerbForm=Part|Voice=Pass"}, + "VsTP---XX-AP--2": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Pos|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsTP---XX-NP---": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Neg|VerbForm=Part|Voice=Pass"}, + "VsTP---XX-NP--2": {POS: VERB,"morph": "Animacy=Inan|Gender=Fem,Masc|Number=Plur|Polarity=Neg|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsYS---2H-AP---": {POS: VERB,"morph": "Gender=Masc|Number=Sing|Person=2|Polarity=Pos|Tense=Past,Pres|VerbForm=Part|Voice=Pass"}, + "VsYS---XX-AP---": {POS: VERB, "morph": "Gender=Masc|Number=Sing|Polarity=Pos|VerbForm=Part|Voice=Pass"}, + "VsYS---XX-AP--2": {POS: VERB, "morph": "Gender=Masc|Number=Sing|Polarity=Pos|Style=Arch|VerbForm=Part|Voice=Pass"}, + "VsYS---XX-NP---": {POS: VERB, "morph": "Gender=Masc|Number=Sing|Polarity=Neg|VerbForm=Part|Voice=Pass"}, + "VsYS---XX-NP--2": {POS: VERB, "morph": "Gender=Masc|Number=Sing|Polarity=Neg|Style=Arch|VerbForm=Part|Voice=Pass"}, + "Vt-P---1F-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---1F-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---1F-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---1F-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---1P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---1P-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---1P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---1P-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=1|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---2F-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Pos|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---2F-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Neg|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---2P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---2P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=2|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---3F-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---3F-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---3F-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---3F-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---3P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---3P-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---3P-AA--9": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Pos|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---3P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---3P-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-P---3P-NA--9": {POS: VERB,"morph": "Mood=Ind|Number=Plur|Person=3|Polarity=Neg|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---1F-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---1F-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---1F-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---1F-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---1P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---1P-AA--3": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---1P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---1P-NA--3": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=1|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---2F-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Pos|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---2F-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Neg|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---2P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---2P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=2|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---3F-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---3F-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Style=Arch|Tense=Fut|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---3P-AA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "Vt-S---3P-NA--2": {POS: VERB,"morph": "Mood=Ind|Number=Sing|Person=3|Polarity=Neg|Style=Arch|Tense=Pres|VerbForm=Fin|VerbType=Verbconj|Voice=Act"}, + "X@-------------": {POS: X, "morph": "_"}, + "X@------------0": {POS: X, "morph": "_"}, + "X@------------1": {POS: X, "morph": "_"}, + "Xx-------------": {POS: X, "morph": "Abbr=Yes"}, + "XX-------------": {POS: X, "morph": "_"}, + "XX------------8": {POS: X, "morph": "Abbr=Yes"}, + "Z:-------------": {POS: PUNCT, "morph": "_"}, + "Z#-------------": {POS: PUNCT, "morph": "PunctType=Root"}, +} From 20d72de9864209e36669a3b2382b3521118e99a3 Mon Sep 17 00:00:00 2001 From: Daniel Vasic Date: Thu, 5 Nov 2020 12:19:22 +0100 Subject: [PATCH 20/39] Added Multext-East V5 tagset for Croatian language (#6248) * Added Multext-East V5 tagset for Croatian language * Create danielvasic.md * Update danielvasic.md * Update danielvasic.md * Add tag map to CroatianDefaults Co-authored-by: Adriane Boyd --- .github/contributors/danielvasic.md | 106 + spacy/lang/hr/__init__.py | 2 + spacy/lang/hr/tag_map.py | 11506 ++++++++++++++++++++++++++ 3 files changed, 11614 insertions(+) create mode 100644 .github/contributors/danielvasic.md create mode 100644 spacy/lang/hr/tag_map.py diff --git a/.github/contributors/danielvasic.md b/.github/contributors/danielvasic.md new file mode 100644 index 000000000..03606c8d9 --- /dev/null +++ b/.github/contributors/danielvasic.md @@ -0,0 +1,106 @@ +# spaCy contributor agreement + +This spaCy Contributor Agreement (**"SCA"**) is based on the +[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf). +The SCA applies to any contribution that you make to any product or project +managed by us (the **"project"**), and sets out the intellectual property rights +you grant to us in the contributed materials. The term **"us"** shall mean +[ExplosionAI GmbH](https://explosion.ai/legal). The term +**"you"** shall mean the person or entity identified below. + +If you agree to be bound by these terms, fill in the information requested +below and include the filled-in version with your first pull request, under the +folder [`.github/contributors/`](/.github/contributors/). The name of the file +should be your GitHub username, with the extension `.md`. For example, the user +example_user would create the file `.github/contributors/example_user.md`. + +Read this agreement carefully before signing. These terms and conditions +constitute a binding legal agreement. + +## Contributor Agreement + +1. The term "contribution" or "contributed materials" means any source code, +object code, patch, tool, sample, graphic, specification, manual, +documentation, or any other material posted or submitted by you to the project. + +2. With respect to any worldwide copyrights, or copyright applications and +registrations, in your contribution: + + * you hereby assign to us joint ownership, and to the extent that such + assignment is or becomes invalid, ineffective or unenforceable, you hereby + grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge, + royalty-free, unrestricted license to exercise all rights under those + copyrights. This includes, at our option, the right to sublicense these same + rights to third parties through multiple levels of sublicensees or other + licensing arrangements; + + * you agree that each of us can do all things in relation to your + contribution as if each of us were the sole owners, and if one of us makes + a derivative work of your contribution, the one who makes the derivative + work (or has it made will be the sole owner of that derivative work; + + * you agree that you will not assert any moral rights in your contribution + against us, our licensees or transferees; + + * you agree that we may register a copyright in your contribution and + exercise all ownership rights associated with it; and + + * you agree that neither of us has any duty to consult with, obtain the + consent of, pay or render an accounting to the other for any use or + distribution of your contribution. + +3. With respect to any patents you own, or that you can license without payment +to any third party, you hereby grant to us a perpetual, irrevocable, +non-exclusive, worldwide, no-charge, royalty-free license to: + + * make, have made, use, sell, offer to sell, import, and otherwise transfer + your contribution in whole or in part, alone or in combination with or + included in any product, work or materials arising out of the project to + which your contribution was submitted, and + + * at our option, to sublicense these same rights to third parties through + multiple levels of sublicensees or other licensing arrangements. + +4. Except as set out above, you keep all right, title, and interest in your +contribution. The rights that you grant to us under these terms are effective +on the date you first submitted a contribution to us, even if your submission +took place before the date you sign these terms. + +5. You covenant, represent, warrant and agree that: + + * Each contribution that you submit is and shall be an original work of + authorship and you can legally grant the rights set out in this SCA; + + * to the best of your knowledge, each contribution will not violate any + third party's copyrights, trademarks, patents, or other intellectual + property rights; and + + * each contribution shall be in compliance with U.S. export control laws and + other applicable export and import laws. You agree to notify us if you + become aware of any circumstance which would make any of the foregoing + representations inaccurate in any respect. We may publicly disclose your + participation in the project, including the fact that you have signed the SCA. + +6. This SCA is governed by the laws of the State of California and applicable +U.S. Federal law. Any choice of law rules will not apply. + +7. Please place an “x” on one of the applicable statement below. Please do NOT +mark both statements: + + * [x] I am signing on behalf of myself as an individual and no other person + or entity, including my employer, has or will have rights with respect to my + contributions. + + * [ ] I am signing on behalf of my employer or a legal entity and I have the + actual authority to contractually bind that entity. + +## Contributor Details + +| Field | Entry | +|------------------------------- | -------------------- | +| Name | Daniel Vasić | +| Company name (if applicable) | University of Mostar | +| Title or role (if applicable) | Teaching asistant | +| Date | 13/10/2020 | +| GitHub username | danielvasic | +| Website (optional) | | diff --git a/spacy/lang/hr/__init__.py b/spacy/lang/hr/__init__.py index 539b164d7..3c135f5b0 100644 --- a/spacy/lang/hr/__init__.py +++ b/spacy/lang/hr/__init__.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from .stop_words import STOP_WORDS +from .tag_map import TAG_MAP from ..tokenizer_exceptions import BASE_EXCEPTIONS from ..norm_exceptions import BASE_NORMS @@ -18,6 +19,7 @@ class CroatianDefaults(Language.Defaults): ) tokenizer_exceptions = update_exc(BASE_EXCEPTIONS) stop_words = STOP_WORDS + tag_map = TAG_MAP class Croatian(Language): diff --git a/spacy/lang/hr/tag_map.py b/spacy/lang/hr/tag_map.py new file mode 100644 index 000000000..9467d3506 --- /dev/null +++ b/spacy/lang/hr/tag_map.py @@ -0,0 +1,11506 @@ +TAG_MAP = { + 'Ncmsn':{ + 74:92, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Ncmsg':{ + 74:92, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Ncmsd':{ + 74:92, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Ncmsan':{ + 74:92, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Ncmsay':{ + 74:92, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Ncmsv':{ + 74:92, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Ncmsl':{ + 74:92, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Ncmsi':{ + 74:92, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Ncmpn':{ + 74:92, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Ncmpg':{ + 74:92, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Ncmpd':{ + 74:92, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Ncmpa':{ + 74:92, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Ncmpv':{ + 74:92, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Ncmpl':{ + 74:92, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Ncmpi':{ + 74:92, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Ncfsn':{ + 74:92, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Ncfsg':{ + 74:92, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Ncfsd':{ + 74:92, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Ncfsa':{ + 74:92, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Ncfsv':{ + 74:92, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Ncfsl':{ + 74:92, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Ncfsi':{ + 74:92, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Ncfpn':{ + 74:92, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Ncfpg':{ + 74:92, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Ncfpd':{ + 74:92, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Ncfpa':{ + 74:92, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Ncfpv':{ + 74:92, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Ncfpl':{ + 74:92, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Ncfpi':{ + 74:92, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Ncnsn':{ + 74:92, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Ncnsg':{ + 74:92, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Ncnsd':{ + 74:92, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Ncnsa':{ + 74:92, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Ncnsv':{ + 74:92, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Ncnsl':{ + 74:92, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Ncnsi':{ + 74:92, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Ncnpn':{ + 74:92, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Ncnpg':{ + 74:92, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Ncnpd':{ + 74:92, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Ncnpa':{ + 74:92, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Ncnpv':{ + 74:92, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Ncnpl':{ + 74:92, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Ncnpi':{ + 74:92, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Np-pn':{ + 74:96, + 'Case':'Nom', + 'Number':'Plur' + }, + 'Np-pg':{ + 74:96, + 'Case':'Gen', + 'Number':'Plur' + }, + 'Npmsn':{ + 74:96, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Npmsg':{ + 74:96, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Npmsd':{ + 74:96, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Npmsan':{ + 74:96, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Npmsay':{ + 74:96, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Npmsv':{ + 74:96, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Npmsl':{ + 74:96, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Npmsi':{ + 74:96, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Npmpn':{ + 74:96, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Npmpg':{ + 74:96, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Npmpd':{ + 74:96, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Npmpa':{ + 74:96, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Npmpv':{ + 74:96, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Npmpl':{ + 74:96, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Npmpi':{ + 74:96, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Npfsn':{ + 74:96, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Npfsg':{ + 74:96, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Npfsd':{ + 74:96, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Npfsa':{ + 74:96, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Npfsv':{ + 74:96, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Npfsl':{ + 74:96, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Npfsi':{ + 74:96, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Npfpn':{ + 74:96, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Npfpg':{ + 74:96, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Npfpd':{ + 74:96, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Npfpa':{ + 74:96, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Npfpv':{ + 74:96, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Npfpl':{ + 74:96, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Npfpi':{ + 74:96, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Npnsn':{ + 74:96, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Npnsg':{ + 74:96, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Npnsd':{ + 74:96, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Npnsa':{ + 74:96, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Npnsv':{ + 74:96, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Npnsl':{ + 74:96, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Npnsi':{ + 74:96, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Npnpn':{ + 74:96, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Npnpg':{ + 74:96, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Npnpd':{ + 74:96, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Npnpa':{ + 74:96, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Npnpv':{ + 74:96, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Npnpl':{ + 74:96, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Npnpi':{ + 74:96, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Vmn':{ + 74:100, + 'VerbForm':'Inf' + }, + 'Vmp-sm':{ + 74:100, + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Vmp-sf':{ + 74:100, + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Vmp-sn':{ + 74:100, + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Vmp-pm':{ + 74:100, + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Vmp-pf':{ + 74:100, + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Vmp-pn':{ + 74:100, + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Vmr1s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Vmr1p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'One', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Vmr2s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Two', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Vmr2p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Two', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Vmr3s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Vmr3s-y':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Vmr3p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Vmr3p-y':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Vmm1p':{ + 74:100, + 'Mood':'Imp', + 'Number':'Plur', + 'Person':'One', + 'VerbForm':'Fin' + }, + 'Vmm2s':{ + 74:100, + 'Mood':'Imp', + 'Number':'Sing', + 'Person':'Two', + 'VerbForm':'Fin' + }, + 'Vmm2p':{ + 74:100, + 'Mood':'Imp', + 'Number':'Plur', + 'Person':'Two', + 'VerbForm':'Fin' + }, + 'Vma1s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Tense':'Aor', + 'VerbForm':'Fin' + }, + 'Vma1p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'One', + 'Tense':'Aor', + 'VerbForm':'Fin' + }, + 'Vma2s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Two', + 'Tense':'Aor', + 'VerbForm':'Fin' + }, + 'Vma2p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Two', + 'Tense':'Aor', + 'VerbForm':'Fin' + }, + 'Vma3s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Tense':'Aor', + 'VerbForm':'Fin' + }, + 'Vma3p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Tense':'Aor', + 'VerbForm':'Fin' + }, + 'Vme1s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vme1p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'One', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vme2s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Two', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vme2p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Two', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vme3s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vme3p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Van':{ + 74:87, + 'VerbForm':'Inf' + }, + 'Vap-sm':{ + 74:87, + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Vap-sf':{ + 74:87, + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Vap-sn':{ + 74:87, + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Vap-pm':{ + 74:87, + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Vap-pf':{ + 74:87, + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Vap-pn':{ + 74:87, + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Var1s':{ + 74:87, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Var1s-y':{ + 74:87, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Var1p':{ + 74:87, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'One', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Var1p-y':{ + 74:87, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'One', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Var2s':{ + 74:87, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Two', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Var2p':{ + 74:87, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Two', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Var3s':{ + 74:87, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Var3s-y':{ + 74:87, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Var3p':{ + 74:87, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Var3p-y':{ + 74:87, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin' + }, + 'Vam1p':{ + 74:87, + 'Mood':'Imp', + 'Number':'Plur', + 'Person':'One', + 'VerbForm':'Fin' + }, + 'Vam2s':{ + 74:87, + 'Mood':'Imp', + 'Number':'Sing', + 'Person':'Two', + 'VerbForm':'Fin' + }, + 'Vam2p':{ + 74:87, + 'Mood':'Imp', + 'Number':'Plur', + 'Person':'Two', + 'VerbForm':'Fin' + }, + 'Vaa1s':{ + 74:87, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Tense':'Aor', + 'VerbForm':'Fin' + }, + 'Vae1s':{ + 74:87, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vae1p':{ + 74:87, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'One', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vae2s':{ + 74:87, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Two', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vae2p':{ + 74:87, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Two', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vae3s':{ + 74:87, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vae3p':{ + 74:87, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Tense':'Imp', + 'VerbForm':'Fin' + }, + 'Vcn':{ + 74:100, + 'VerbForm':'Inf', + 'VerbType':'Cop' + }, + 'Vcp-sm':{ + 74:100, + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part', + 'VerbType':'Cop' + }, + 'Vcp-sf':{ + 74:100, + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part', + 'VerbType':'Cop' + }, + 'Vcp-sn':{ + 74:100, + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part', + 'VerbType':'Cop' + }, + 'Vcp-pm':{ + 74:100, + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part', + 'VerbType':'Cop' + }, + 'Vcp-pf':{ + 74:100, + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part', + 'VerbType':'Cop' + }, + 'Vcp-pn':{ + 74:100, + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part', + 'VerbType':'Cop' + }, + 'Vcr1s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr1s-y':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr1p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'One', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr1p-y':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'One', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr2s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Two', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr2p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Two', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr2p-y':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Two', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr3':{ + 74:100, + 'Mood':'Ind', + 'Person':'Three', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr3s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr3s-y':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr3p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcr3p-y':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Polarity':'Neg', + 'Tense':'Pres', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcm1p':{ + 74:100, + 'Mood':'Imp', + 'Number':'Plur', + 'Person':'One', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcm2s':{ + 74:100, + 'Mood':'Imp', + 'Number':'Sing', + 'Person':'Two', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vcm2p':{ + 74:100, + 'Mood':'Imp', + 'Number':'Plur', + 'Person':'Two', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vca1s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Tense':'Aor', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vca1p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'One', + 'Tense':'Aor', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vca2s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Two', + 'Tense':'Aor', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vca2p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Two', + 'Tense':'Aor', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vca3s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Tense':'Aor', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vca3p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Tense':'Aor', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vce1s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'One', + 'Tense':'Imp', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vce1p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'One', + 'Tense':'Imp', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vce2s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Two', + 'Tense':'Imp', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vce2p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Two', + 'Tense':'Imp', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vce3s':{ + 74:100, + 'Mood':'Ind', + 'Number':'Sing', + 'Person':'Three', + 'Tense':'Imp', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Vce3p':{ + 74:100, + 'Mood':'Ind', + 'Number':'Plur', + 'Person':'Three', + 'Tense':'Imp', + 'VerbForm':'Fin', + 'VerbType':'Cop' + }, + 'Agpmsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsann':{ + 74:84, + 'Animacy':'Inan', + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsany':{ + 74:84, + 'Animacy':'Anim', + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsayn':{ + 74:84, + 'Animacy':'Inan', + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsayy':{ + 74:84, + 'Animacy':'Anim', + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agpmpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpdn':{ + 74:84, + 'Case':'Dat', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmply':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpmpiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agpfsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsdn':{ + 74:84, + 'Case':'Dat', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agpfpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfply':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpfpiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agpnsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agpnpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpdn':{ + 74:84, + 'Case':'Dat', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnply':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agpnpiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agcmsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsayn':{ + 74:84, + 'Animacy':'Inan', + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agcmpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmpny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmpay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmply':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcmpiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agcfsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agcfpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfpny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfpay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfply':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcfpiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agcnsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agcnpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agcnpny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agcnpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agcnpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agcnpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agcnpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agcnpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agcnpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agcnpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsmsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsayn':{ + 74:84, + 'Animacy':'Inan', + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsayy':{ + 74:84, + 'Animacy':'Anim', + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Sing' + }, + 'Agsmpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmply':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsmpiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur' + }, + 'Agsfsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing' + }, + 'Agsfpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsfpny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsfpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsfpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsfpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsfpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsfpay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsfpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsfpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsfpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsfpiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur' + }, + 'Agsnsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnsa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Sing' + }, + 'Agsnpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsnpny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsnpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsnpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsnpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsnpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsnpay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsnpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsnpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsnply':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Agsnpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur' + }, + 'Aspmsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsdn':{ + 74:84, + 'Case':'Dat', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsann':{ + 74:84, + 'Animacy':'Inan', + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspmpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspmpnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspmpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspmpgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspmpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspmpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspmpan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspmpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspmpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspmpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsdn':{ + 74:84, + 'Case':'Dat', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspfpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspfpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspnsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsdn':{ + 74:84, + 'Case':'Dat', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes' + }, + 'Aspnpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspnpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspnpgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspnpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspnpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspnpan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspnpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspnpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Aspnpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes' + }, + 'Appmsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsann':{ + 74:84, + 'Animacy':'Inan', + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsayn':{ + 74:84, + 'Animacy':'Inan', + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsayy':{ + 74:84, + 'Animacy':'Anim', + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appmpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpdn':{ + 74:84, + 'Case':'Dat', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appmpin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsdn':{ + 74:84, + 'Case':'Dat', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfsin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appfpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpdn':{ + 74:84, + 'Case':'Dat', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpdy':{ + 74:84, + 'Case':'Dat', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpay':{ + 74:84, + 'Case':'Acc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appfpin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnsn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsvy':{ + 74:84, + 'Case':'Voc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnsin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Appnpn':{ + 74:84, + 'Case':'Nom', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpnn':{ + 74:84, + 'Case':'Nom', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpg':{ + 74:84, + 'Case':'Gen', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpgn':{ + 74:84, + 'Case':'Gen', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpd':{ + 74:84, + 'Case':'Dat', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpa':{ + 74:84, + 'Case':'Acc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpan':{ + 74:84, + 'Case':'Acc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpv':{ + 74:84, + 'Case':'Voc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpl':{ + 74:84, + 'Case':'Loc', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpln':{ + 74:84, + 'Case':'Loc', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpi':{ + 74:84, + 'Case':'Ins', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Appnpin':{ + 74:84, + 'Case':'Ins', + 'Definite':'Ind', + 'Degree':'Pos', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Apcmsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Masc', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Apcfsny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Apcnsly':{ + 74:84, + 'Case':'Loc', + 'Definite':'Def', + 'Degree':'Cmp', + 'Gender':'Neut', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Apsmpny':{ + 74:84, + 'Case':'Nom', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Apsmpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Masc', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Apsfsgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Apsfsiy':{ + 74:84, + 'Case':'Ins', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Sing', + 'VerbForm':'Part' + }, + 'Apsfpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Fem', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Apsnpgy':{ + 74:84, + 'Case':'Gen', + 'Definite':'Def', + 'Degree':'Sup', + 'Gender':'Neut', + 'Number':'Plur', + 'VerbForm':'Part' + }, + 'Pp1-sn--n-n':{ + 74:95, + 'Case':'Nom', + 'Number':'Sing', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-sg--n-n':{ + 74:95, + 'Case':'Gen', + 'Number':'Sing', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-sg--y-n':{ + 74:95, + 'Case':'Gen', + 'Number':'Sing', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp1-sd--n-n':{ + 74:95, + 'Case':'Dat', + 'Number':'Sing', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-sd--y-n':{ + 74:95, + 'Case':'Dat', + 'Number':'Sing', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp1-sa--n-n':{ + 74:95, + 'Case':'Acc', + 'Number':'Sing', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-sa--y-n':{ + 74:95, + 'Case':'Acc', + 'Number':'Sing', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp1-sl--n-n':{ + 74:95, + 'Case':'Loc', + 'Number':'Sing', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-si--n-n':{ + 74:95, + 'Case':'Ins', + 'Number':'Sing', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-si--y-n':{ + 74:95, + 'Case':'Ins', + 'Number':'Sing', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp1-pn--n-n':{ + 74:95, + 'Case':'Nom', + 'Number':'Plur', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-pg--n-n':{ + 74:95, + 'Case':'Gen', + 'Number':'Plur', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-pd--n-n':{ + 74:95, + 'Case':'Dat', + 'Number':'Plur', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-pd--y-n':{ + 74:95, + 'Case':'Dat', + 'Number':'Plur', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp1-pa--n-n':{ + 74:95, + 'Case':'Acc', + 'Number':'Plur', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-pv--n-n':{ + 74:95, + 'Case':'Voc', + 'Number':'Plur', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-pl--n-n':{ + 74:95, + 'Case':'Loc', + 'Number':'Plur', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp1-pi--n-n':{ + 74:95, + 'Case':'Ins', + 'Number':'Plur', + 'Person':'One', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-sn--n-n':{ + 74:95, + 'Case':'Nom', + 'Number':'Sing', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-sg--n-n':{ + 74:95, + 'Case':'Gen', + 'Number':'Sing', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-sg--y-n':{ + 74:95, + 'Case':'Gen', + 'Number':'Sing', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp2-sd--n-n':{ + 74:95, + 'Case':'Dat', + 'Number':'Sing', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-sd--y-n':{ + 74:95, + 'Case':'Dat', + 'Number':'Sing', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp2-sa--n-n':{ + 74:95, + 'Case':'Acc', + 'Number':'Sing', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-sa--y-n':{ + 74:95, + 'Case':'Acc', + 'Number':'Sing', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp2-sv--n-n':{ + 74:95, + 'Case':'Voc', + 'Number':'Sing', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-sl--n-n':{ + 74:95, + 'Case':'Loc', + 'Number':'Sing', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-si--n-n':{ + 74:95, + 'Case':'Ins', + 'Number':'Sing', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-pn--n-n':{ + 74:95, + 'Case':'Nom', + 'Number':'Plur', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-pg--n-n':{ + 74:95, + 'Case':'Gen', + 'Number':'Plur', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-pd--n-n':{ + 74:95, + 'Case':'Dat', + 'Number':'Plur', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-pd--y-n':{ + 74:95, + 'Case':'Dat', + 'Number':'Plur', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp2-pa--n-n':{ + 74:95, + 'Case':'Acc', + 'Number':'Plur', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-pv--n-n':{ + 74:95, + 'Case':'Voc', + 'Number':'Plur', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-pl--n-n':{ + 74:95, + 'Case':'Loc', + 'Number':'Plur', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp2-pi--n-n':{ + 74:95, + 'Case':'Ins', + 'Number':'Plur', + 'Person':'Two', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3-pg--n-n':{ + 74:95, + 'Case':'Gen', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3-pg--y-n':{ + 74:95, + 'Case':'Gen', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3-pd--n-n':{ + 74:95, + 'Case':'Dat', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3-pd--y-n':{ + 74:95, + 'Case':'Dat', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3-pa--n-n':{ + 74:95, + 'Case':'Acc', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3-pa--y-n':{ + 74:95, + 'Case':'Acc', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3-pl--n-n':{ + 74:95, + 'Case':'Loc', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3-pi--n-n':{ + 74:95, + 'Case':'Ins', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3msn--n-n':{ + 74:95, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3msg--n-n':{ + 74:95, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3msg--y-n':{ + 74:95, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3msd--n-n':{ + 74:95, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3msd--y-n':{ + 74:95, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3msa--n-n':{ + 74:95, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3msa--y-n':{ + 74:95, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3msl--n-n':{ + 74:95, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3msl--y-n':{ + 74:95, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3msi--n-n':{ + 74:95, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3msi--y-n':{ + 74:95, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3mpn--n-n':{ + 74:95, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3fsn--n-n':{ + 74:95, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3fsg--n-n':{ + 74:95, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3fsg--y-n':{ + 74:95, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3fsd--n-n':{ + 74:95, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3fsd--y-n':{ + 74:95, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3fsa--n-n':{ + 74:95, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3fsa--y-n':{ + 74:95, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3fsl--n-n':{ + 74:95, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3fsi--n-n':{ + 74:95, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3fsi--y-n':{ + 74:95, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3fpn--n-n':{ + 74:95, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3nsn--n-n':{ + 74:95, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3nsg--n-n':{ + 74:95, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3nsg--y-n':{ + 74:95, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3nsd--n-n':{ + 74:95, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3nsd--y-n':{ + 74:95, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3nsa--n-n':{ + 74:95, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3nsa--y-n':{ + 74:95, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3nsl--n-n':{ + 74:95, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3nsl--y-n':{ + 74:95, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3nsi--n-n':{ + 74:95, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pp3nsi--y-n':{ + 74:95, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Short' + }, + 'Pp3npn--n-n':{ + 74:95, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'Person':'Three', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pd-msn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-msg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-msd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-msa--n-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-msa--n-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-msv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-msl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-msi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-mpn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-mpn':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-mpg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-mpd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-mpa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-mpa':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-mpv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-mpl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-mpi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fsn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fsg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fsd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fsa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fsv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fsl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fsi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fpn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fpg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fpd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fpa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fpv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fpl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-fpi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-nsn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-nsg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-nsd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-nsa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-nsv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-nsl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-nsi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-npn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-npg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-npd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-npa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-npv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-npl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pd-npi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Dem', + 'Variant':'Long' + }, + 'Pi-msn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-msg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-msd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-msa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-msa--n-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-msa--n-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-msv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-msl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-msi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-mpn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-mpn':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-mpg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-mpd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-mpa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-mpv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-mpl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-mpi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsa':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsv':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsl':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fsi':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpn':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsa----a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind' + }, + 'Pi-nsa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpg':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpd':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpa':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpv':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpl':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-fpi':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsn':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsg':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsd':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsa':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsv':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsl':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-nsi':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npn':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npg':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npd':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npa':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npv':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npl':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi-npi':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3m-n--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Nom', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3m-g--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Gen', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3m-d--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Dat', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3m-a--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3m-l--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Loc', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3m-i--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Ins', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3n-n--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Nom', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3n-g--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Gen', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3n-d--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Dat', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3n-a--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3n-l--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Loc', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3n-i--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Ins', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Long' + }, + 'Pi3n-i--y-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Ins', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Ind', + 'Variant':'Short' + }, + 'Pi3nsn----a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'Person':'Three', + 'PronType':'Ind' + }, + 'Ps1msns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msas-n-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msas-n-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msap-n-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msap-n-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mslp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1msip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpas-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mplp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1mpip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsas-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fslp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fsip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpas-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fplp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1fpip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsas-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nslp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nsip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npas-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1nplp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps1npip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'One', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msas-n-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msas-n-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msap-n-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msap-n-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mslp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2msip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpas-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mplp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2mpip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsas-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fslp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fsip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpas-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fplp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2fpip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsas-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nslp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nsip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npns-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npgs-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npds-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npas-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npvs-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npvp-n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npls-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2nplp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npis-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps2npip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Two', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msnsmn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msnsfn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msnsnn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msgsmn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msgsfn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msgsnn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msdsmn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msdsfn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msdsnn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msasmn-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msasmn-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msasfn-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msasfn-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msasnn-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msasnn-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msap-n-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msap-n-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mslsmn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mslsfn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mslsnn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mslp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msismn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msisfn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msisnn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3msip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpnsmn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpnsfn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpnsnn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpgsmn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpgsfn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpgsnn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpdsmn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpdsfn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpdsnn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpasmn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpasfn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpasnn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mplsmn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mplsfn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mplsnn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mplp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpismn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpisfn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpisnn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3mpip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsnsmn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsnsfn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsnsnn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsgsmn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsgsfn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsgsnn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsdsmn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsdsfn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsdsnn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsasmn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsasfn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsasnn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fslsmn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fslsfn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fslsnn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fslp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsismn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsisfn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsisnn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fsip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpnsmn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpnsfn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpnsnn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpgsmn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpgsfn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpgsnn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpdsmn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpdsfn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpdsnn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpasmn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpasfn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpasnn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fplsmn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fplsfn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fplsnn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fplp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpismn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpisfn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpisnn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3fpip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsnsmn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsnsfn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsnsnn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsgsmn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsgsfn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsgsnn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsdsmn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsdsfn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsdsnn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsasmn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsasfn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsasnn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nslsmn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nslsfn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nslsnn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nslp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsismn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsisfn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsisnn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Sing', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nsip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npnsmn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npnsfn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npnsnn-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npnp-n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npgsmn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npgsfn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npgsnn-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npgp-n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npdsmn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npdsfn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npdsnn-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npdp-n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npasmn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npasfn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npasnn-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npap-n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nplsmn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nplsfn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nplsnn-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3nplp-n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npismn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Gender[psor]':'Masc', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npisfn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Gender[psor]':'Fem', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npisnn-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Gender[psor]':'Neut', + 'Number':'Plur', + 'Number[psor]':'Sing', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Ps3npip-n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur', + 'Number[psor]':'Plur', + 'Person':'Three', + 'Poss':'Yes', + 'PronType':'Prs', + 'Variant':'Long' + }, + 'Pq-msn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-msg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-msd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-msa--n-an':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-msa--n-ay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-msv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-msl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-msi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-mpn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-mpg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-mpd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-mpa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-mpv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-mpl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-mpi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fsn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fsg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fsd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fsa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fsv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fsl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fsi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fpn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fpg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fpd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fpa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fpv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fpl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-fpi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-nsn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-nsg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-nsd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-nsa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-nsv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-nsl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-nsi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-npn--n-a':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-npg--n-a':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-npd--n-a':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-npa--n-a':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-npv--n-a':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-npl--n-a':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq-npi--n-a':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3m-n--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Nom', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3m-g--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Gen', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3m-g--y-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Gen', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Short' + }, + 'Pq3m-d--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Dat', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3m-d--y-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Dat', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Short' + }, + 'Pq3m-a--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3m-a--y-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Short' + }, + 'Pq3m-l--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Loc', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3m-l--y-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Loc', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Short' + }, + 'Pq3m-i--n-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Ins', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3m-i--y-ny':{ + 74:95, + 'Animacy':'Anim', + 'Case':'Ins', + 'Gender':'Masc', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Short' + }, + 'Pq3n-n--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Nom', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3n-g--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Gen', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3n-g--y-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Gen', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Short' + }, + 'Pq3n-d--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Dat', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3n-d--y-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Dat', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Short' + }, + 'Pq3n-a--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3n-l--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Loc', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3n-l--y-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Loc', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Short' + }, + 'Pq3n-i--n-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Ins', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Long' + }, + 'Pq3n-i--y-nn':{ + 74:95, + 'Animacy':'Inan', + 'Case':'Ins', + 'Gender':'Neut', + 'Person':'Three', + 'PronType':'Int', + 'Variant':'Short' + }, + 'Px--sg--npn':{ + 74:95, + 'Case':'Gen', + 'Number':'Sing', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px--sg--ypn':{ + 74:95, + 'Case':'Gen', + 'Number':'Sing', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Short' + }, + 'Px--sd--npn':{ + 74:95, + 'Case':'Dat', + 'Number':'Sing', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px--sd--ypn':{ + 74:95, + 'Case':'Dat', + 'Number':'Sing', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Short' + }, + 'Px--sa--npn':{ + 74:95, + 'Case':'Acc', + 'Number':'Sing', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px--sa--ypn':{ + 74:95, + 'Case':'Acc', + 'Number':'Sing', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Short' + }, + 'Px--sl--npn':{ + 74:95, + 'Case':'Loc', + 'Number':'Sing', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px--si--npn':{ + 74:95, + 'Case':'Ins', + 'Number':'Sing', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-msn--nsa':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-msg--nsa':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-msd--nsa':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-msa--nsan':{ + 74:90, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-msa--nsay':{ + 74:90, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-msv--nsa':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-msl--nsa':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-msi--nsa':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-mpn--nsa':{ + 74:90, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-mpg--nsa':{ + 74:90, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-mpd--nsa':{ + 74:90, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-mpa--nsa':{ + 74:90, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-mpv--nsa':{ + 74:90, + 'Case':'Voc', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-mpl--nsa':{ + 74:90, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-mpi--nsa':{ + 74:90, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fsn--nsa':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fsg--nsa':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fsd--nsa':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fsa--nsa':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fsv--nsa':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fsl--nsa':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fsi--nsa':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fpn--nsa':{ + 74:90, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fpg--nsa':{ + 74:90, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fpd--nsa':{ + 74:90, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fpa--nsa':{ + 74:90, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fpv--nsa':{ + 74:90, + 'Case':'Voc', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fpl--nsa':{ + 74:90, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-fpi--nsa':{ + 74:90, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-nsn--nsa':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-nsg--nsa':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-nsd--nsa':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-nsa--nsa':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-nsv--nsa':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-nsl--nsa':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-nsi--nsa':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Sing', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-npn--nsa':{ + 74:90, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-npg--nsa':{ + 74:90, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-npd--nsa':{ + 74:90, + 'Case':'Dat', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-npa--nsa':{ + 74:90, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-npv--nsa':{ + 74:90, + 'Case':'Voc', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-npl--nsa':{ + 74:90, + 'Case':'Loc', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Px-npi--nsa':{ + 74:90, + 'Case':'Ins', + 'Gender':'Neut', + 'Number':'Plur', + 'Poss':'Yes', + 'PronType':'Prs', + 'Reflex':'Yes', + 'Variant':'Long' + }, + 'Rgp':{ + 74:86, + 'Degree':'Pos' + }, + 'Rgc':{ + 74:86, + 'Degree':'Cmp' + }, + 'Rgs':{ + 74:86, + 'Degree':'Sup' + }, + 'Rr':{ + 74:86, + 'VerbForm':'Conv' + }, + 'Sg':{ + 74:85, + 'AdpType':'Prep', + 'Case':'Gen' + }, + 'Sd':{ + 74:85, + 'AdpType':'Prep', + 'Case':'Dat' + }, + 'Sa':{ + 74:85, + 'AdpType':'Prep', + 'Case':'Acc' + }, + 'Sl':{ + 74:85, + 'AdpType':'Prep', + 'Case':'Loc' + }, + 'Si':{ + 74:85, + 'AdpType':'Prep', + 'Case':'Ins' + }, + 'Cc':{ + 74:89 + }, + 'Cs':{ + 74:98 + }, + 'Md':{ + 74:93, + 'NumForm':'Digit' + }, + 'Mdo':{ + 74:93, + 'NumForm':'Digit' + }, + 'Mdc':{ + 74:93, + 'NumForm':'Digit' + }, + 'Mro-p':{ + 74:84, + 'Number':'Plur', + 'NumForm':'Roman', + 'NumType':'Ord' + }, + 'Mlc-s':{ + 74:93, + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlc-p':{ + 74:93, + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlc-pn':{ + 74:93, + 'Case':'Nom', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlc-pg':{ + 74:93, + 'Case':'Gen', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlc-pd':{ + 74:93, + 'Case':'Dat', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlc-pa':{ + 74:93, + 'Case':'Acc', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmsn':{ + 74:93, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmsg':{ + 74:93, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmsd':{ + 74:93, + 'Case':'Dat', + 'Gender':'Masc', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmsan':{ + 74:93, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmsay':{ + 74:93, + 'Animacy':'Anim', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmsl':{ + 74:93, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmsi':{ + 74:93, + 'Case':'Ins', + 'Gender':'Masc', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmpn':{ + 74:93, + 'Case':'Nom', + 'Gender':'Masc', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmpg':{ + 74:93, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmpa':{ + 74:93, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmpan':{ + 74:93, + 'Animacy':'Inan', + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcmpl':{ + 74:93, + 'Case':'Loc', + 'Gender':'Masc', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfs':{ + 74:93, + 'Gender':'Fem', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfsn':{ + 74:93, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfsg':{ + 74:93, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfsd':{ + 74:93, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfsa':{ + 74:93, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfsl':{ + 74:93, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfsi':{ + 74:93, + 'Case':'Ins', + 'Gender':'Fem', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfp':{ + 74:93, + 'Gender':'Fem', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfpn':{ + 74:93, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfpg':{ + 74:93, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcfpa':{ + 74:93, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcnsn':{ + 74:93, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcnsg':{ + 74:93, + 'Case':'Gen', + 'Gender':'Neut', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcnsa':{ + 74:93, + 'Case':'Acc', + 'Gender':'Neut', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mlcnpn':{ + 74:93, + 'Case':'Nom', + 'Gender':'Neut', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Card' + }, + 'Mls-s':{ + 74:84, + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mls-sa':{ + 74:84, + 'Case':'Acc', + 'Number':'Sing', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mls-p':{ + 74:84, + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mls-pn':{ + 74:84, + 'Case':'Nom', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mlsmpg':{ + 74:84, + 'Case':'Gen', + 'Gender':'Masc', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mlsmpa':{ + 74:84, + 'Case':'Acc', + 'Gender':'Masc', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mlsfp':{ + 74:84, + 'Gender':'Fem', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mlsfpn':{ + 74:84, + 'Case':'Nom', + 'Gender':'Fem', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mlsfpg':{ + 74:84, + 'Case':'Gen', + 'Gender':'Fem', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mlsfpd':{ + 74:84, + 'Case':'Dat', + 'Gender':'Fem', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mlsfpa':{ + 74:84, + 'Case':'Acc', + 'Gender':'Fem', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Mlsfpl':{ + 74:84, + 'Case':'Loc', + 'Gender':'Fem', + 'Number':'Plur', + 'NumForm':'Word', + 'NumType':'Sets' + }, + 'Qz':{ + 74:94, + 'Polarity':'Neg' + }, + 'Qq':{ + 74:94, + 'PronType':'Int' + }, + 'Qo':{ + 74:94, + 'PartType':'Mod' + }, + 'Qr':{ + 74:94, + 'Polarity':'Pos' + }, + 'I':{ + 74:91 + }, + 'Y':{ + 74:101, + 'Abbr':'Yes' + }, + 'X':{ + 74:101 + }, + 'Xf':{ + 74:101, + 'Foreign':'Yes' + }, + 'Px--sa':{ + 74:95, + 'Case':'Acc', + 'Number':'Sing', + 'PronType':'Prs' + }, + 'Z':{ + 74:97 + } +} \ No newline at end of file From 90550552a0fdfb2088beaf82187afe35f23050fd Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Fri, 6 Nov 2020 13:35:51 +0100 Subject: [PATCH 21/39] CI updates for python 3.5 (#6354) * Update pip in CI * Use --prefer-binary * Use `--prefer-binary` * Delete all installed packages before testing source install * sdist install with --only-binary :all: --- azure-pipelines.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 147d2e903..991d4cc33 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -81,7 +81,7 @@ jobs: - script: | python -m pip install -U setuptools - pip install -r requirements.txt + pip install -r requirements.txt --prefer-binary displayName: 'Install dependencies' - script: | @@ -95,9 +95,13 @@ jobs: displayName: 'Delete source directory' - bash: | + pip freeze > installed.txt + pip uninstall -y -r installed.txt SDIST=$(python -c "import os;print(os.listdir('./dist')[-1])" 2>&1) - pip install dist/$SDIST + pip install dist/$SDIST --only-binary :all: displayName: 'Install from sdist' - - script: python -m pytest --pyargs spacy + - script: | + pip install -r requirements.txt --prefer-binary + python -m pytest --pyargs spacy displayName: 'Run tests' From d490428089c41a5f003c81b21a4003459f4dae44 Mon Sep 17 00:00:00 2001 From: Ines Montani Date: Tue, 10 Nov 2020 09:51:20 +0800 Subject: [PATCH 22/39] Update README.md [ci skip] --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 4b5f3d0fa..c5f1a2b78 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,9 @@ It's commercial open-source software, released under the MIT license. 💫 **Version 2.3 out now!** [Check out the release notes here.](https://github.com/explosion/spaCy/releases) +🌙 **Version 3.0 (nightly) out now!** +[Check out the release notes here.](https://github.com/explosion/spaCy/releases/tag/v3.0.0rc1) + [![Azure Pipelines]()](https://dev.azure.com/explosion-ai/public/_build?definitionId=8) [![Travis Build Status]()](https://travis-ci.org/explosion/spaCy) [![Current Release Version](https://img.shields.io/github/release/explosion/spacy.svg?style=flat-square&logo=github)](https://github.com/explosion/spaCy/releases) From 320a8b14814c7e0c6dce705ad7bf0f13bf64b61c Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Tue, 10 Nov 2020 13:16:07 +0100 Subject: [PATCH 23/39] Add ent_id_ to strings serialized with Doc (#6353) --- spacy/tests/doc/test_doc_api.py | 2 ++ spacy/tests/pipeline/test_entity_ruler.py | 19 +++++++++++++++++++ spacy/tokens/doc.pyx | 1 + 3 files changed, 22 insertions(+) diff --git a/spacy/tests/doc/test_doc_api.py b/spacy/tests/doc/test_doc_api.py index 388cd78fe..8b135a4ab 100644 --- a/spacy/tests/doc/test_doc_api.py +++ b/spacy/tests/doc/test_doc_api.py @@ -109,6 +109,7 @@ def test_doc_api_serialize(en_tokenizer, text): tokens[0].lemma_ = "lemma" tokens[0].norm_ = "norm" tokens[0].ent_kb_id_ = "ent_kb_id" + tokens[0].ent_id_ = "ent_id" new_tokens = Doc(tokens.vocab).from_bytes(tokens.to_bytes()) assert tokens.text == new_tokens.text assert [t.text for t in tokens] == [t.text for t in new_tokens] @@ -116,6 +117,7 @@ def test_doc_api_serialize(en_tokenizer, text): assert new_tokens[0].lemma_ == "lemma" assert new_tokens[0].norm_ == "norm" assert new_tokens[0].ent_kb_id_ == "ent_kb_id" + assert new_tokens[0].ent_id_ == "ent_id" new_tokens = Doc(tokens.vocab).from_bytes( tokens.to_bytes(exclude=["tensor"]), exclude=["tensor"] diff --git a/spacy/tests/pipeline/test_entity_ruler.py b/spacy/tests/pipeline/test_entity_ruler.py index 9e22c9cc7..ef6cdbab3 100644 --- a/spacy/tests/pipeline/test_entity_ruler.py +++ b/spacy/tests/pipeline/test_entity_ruler.py @@ -166,3 +166,22 @@ def test_entity_ruler_overlapping_spans(nlp): doc = ruler(nlp.make_doc("foo bar baz")) assert len(doc.ents) == 1 assert doc.ents[0].label_ == "FOOBAR" + + +@pytest.mark.parametrize("n_process", [1, 2]) +def test_entity_ruler_multiprocessing(nlp, n_process): + ruler = EntityRuler(nlp) + texts = [ + "I enjoy eating Pizza Hut pizza." + ] + + patterns = [ + {"label": "FASTFOOD", "pattern": "Pizza Hut", "id": "1234"} + ] + + ruler.add_patterns(patterns) + nlp.add_pipe(ruler) + + for doc in nlp.pipe(texts, n_process=2): + for ent in doc.ents: + assert ent.ent_id_ == "1234" diff --git a/spacy/tokens/doc.pyx b/spacy/tokens/doc.pyx index 89573ba09..aa8d1cc19 100644 --- a/spacy/tokens/doc.pyx +++ b/spacy/tokens/doc.pyx @@ -933,6 +933,7 @@ cdef class Doc: strings.add(token.dep_) strings.add(token.ent_type_) strings.add(token.ent_kb_id_) + strings.add(token.ent_id_) strings.add(token.norm_) # Msgpack doesn't distinguish between lists and tuples, which is # vexing for user data. As a best guess, we *know* that within From 78913a4f95f7007b27e976a76d0eaabec7f98eed Mon Sep 17 00:00:00 2001 From: Sam Edwardes Date: Tue, 17 Nov 2020 05:38:34 -0800 Subject: [PATCH 24/39] Added spaCyTextBlob to universe.json (#6395) --- website/meta/universe.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/website/meta/universe.json b/website/meta/universe.json index 5e5bf310e..e9ebf2bd8 100644 --- a/website/meta/universe.json +++ b/website/meta/universe.json @@ -1,5 +1,36 @@ { "resources": [ + { + "id": "spacy-textblob", + "title": "spaCyTextBlob", + "slogan": "Easy sentiment analysis for spaCy using TextBlob", + "description": "spaCyTextBlob is a pipeline component that enables sentiment analysis using the [TextBlob](https://github.com/sloria/TextBlob) library. It will add the additional extenstion `._.sentiment` to `Doc`, `Span`, and `Token` objects.", + "github": "SamEdwardes/spaCyTextBlob", + "pip": "spacytextblob", + "code_example": [ + "import spacy", + "from spacytextblob.spacytextblob import SpacyTextBlob", + "", + "nlp = spacy.load('en_core_web_sm')", + "spacy_text_blob = SpacyTextBlob()", + "nlp.add_pipe(spacy_text_blob)", + "text = 'I had a really horrible day. It was the worst day ever! But every now and then I have a really good day that makes me happy.'", + "doc = nlp(text)", + "doc._.sentiment.polarity # Polarity: -0.125", + "doc._.sentiment.subjectivity # Sujectivity: 0.9", + "doc._.sentiment.assessments # Assessments: [(['really', 'horrible'], -1.0, 1.0, None), (['worst', '!'], -1.0, 1.0, None), (['really', 'good'], 0.7, 0.6000000000000001, None), (['happy'], 0.8, 1.0, None)]", + ], + "code_language": "python", + "url": "https://spacytextblob.netlify.app/", + "author": "Sam Edwardes", + "author_links": { + "twitter": "TheReaLSamlam", + "github": "SamEdwardes", + "website": "https://samedwardes.com" + }, + "category": ["pipeline"], + "tags": ["sentiment", "textblob"] + }, { "id": "spacy-sentence-bert", "title": "spaCy - sentence-transformers", From 3cf6479467b62e3a497f8d40b2134931c419fade Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Tue, 17 Nov 2020 15:24:38 +0100 Subject: [PATCH 25/39] Fix JSON in #6395 --- website/meta/universe.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/meta/universe.json b/website/meta/universe.json index e9ebf2bd8..3b693064f 100644 --- a/website/meta/universe.json +++ b/website/meta/universe.json @@ -18,7 +18,7 @@ "doc = nlp(text)", "doc._.sentiment.polarity # Polarity: -0.125", "doc._.sentiment.subjectivity # Sujectivity: 0.9", - "doc._.sentiment.assessments # Assessments: [(['really', 'horrible'], -1.0, 1.0, None), (['worst', '!'], -1.0, 1.0, None), (['really', 'good'], 0.7, 0.6000000000000001, None), (['happy'], 0.8, 1.0, None)]", + "doc._.sentiment.assessments # Assessments: [(['really', 'horrible'], -1.0, 1.0, None), (['worst', '!'], -1.0, 1.0, None), (['really', 'good'], 0.7, 0.6000000000000001, None), (['happy'], 0.8, 1.0, None)]" ], "code_language": "python", "url": "https://spacytextblob.netlify.app/", From 51232ffb9e20bec522a12a3da720efee4097cd08 Mon Sep 17 00:00:00 2001 From: "M. Revuelta Espinosa" Date: Thu, 19 Nov 2020 13:15:50 +0100 Subject: [PATCH 26/39] Update universe.json (include PatternOmatic) (#6399) Request to include PatternOmatic in spaCy Universe Adds @revuel to contributors --- .github/contributors/revuel.md | 106 +++++++++++++++++++++++++++++++++ website/meta/universe.json | 26 ++++++++ 2 files changed, 132 insertions(+) create mode 100644 .github/contributors/revuel.md diff --git a/.github/contributors/revuel.md b/.github/contributors/revuel.md new file mode 100644 index 000000000..51cc5faad --- /dev/null +++ b/.github/contributors/revuel.md @@ -0,0 +1,106 @@ +# spaCy contributor agreement + +This spaCy Contributor Agreement (**"SCA"**) is based on the +[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf). +The SCA applies to any contribution that you make to any product or project +managed by us (the **"project"**), and sets out the intellectual property rights +you grant to us in the contributed materials. The term **"us"** shall mean +[ExplosionAI UG (haftungsbeschränkt)](https://explosion.ai/legal). The term +**"you"** shall mean the person or entity identified below. + +If you agree to be bound by these terms, fill in the information requested +below and include the filled-in version with your first pull request, under the +folder [`.github/contributors/`](/.github/contributors/). The name of the file +should be your GitHub username, with the extension `.md`. For example, the user +example_user would create the file `.github/contributors/example_user.md`. + +Read this agreement carefully before signing. These terms and conditions +constitute a binding legal agreement. + +## Contributor Agreement + +1. The term "contribution" or "contributed materials" means any source code, +object code, patch, tool, sample, graphic, specification, manual, +documentation, or any other material posted or submitted by you to the project. + +2. With respect to any worldwide copyrights, or copyright applications and +registrations, in your contribution: + + * you hereby assign to us joint ownership, and to the extent that such + assignment is or becomes invalid, ineffective or unenforceable, you hereby + grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge, + royalty-free, unrestricted license to exercise all rights under those + copyrights. This includes, at our option, the right to sublicense these same + rights to third parties through multiple levels of sublicensees or other + licensing arrangements; + + * you agree that each of us can do all things in relation to your + contribution as if each of us were the sole owners, and if one of us makes + a derivative work of your contribution, the one who makes the derivative + work (or has it made will be the sole owner of that derivative work; + + * you agree that you will not assert any moral rights in your contribution + against us, our licensees or transferees; + + * you agree that we may register a copyright in your contribution and + exercise all ownership rights associated with it; and + + * you agree that neither of us has any duty to consult with, obtain the + consent of, pay or render an accounting to the other for any use or + distribution of your contribution. + +3. With respect to any patents you own, or that you can license without payment +to any third party, you hereby grant to us a perpetual, irrevocable, +non-exclusive, worldwide, no-charge, royalty-free license to: + + * make, have made, use, sell, offer to sell, import, and otherwise transfer + your contribution in whole or in part, alone or in combination with or + included in any product, work or materials arising out of the project to + which your contribution was submitted, and + + * at our option, to sublicense these same rights to third parties through + multiple levels of sublicensees or other licensing arrangements. + +4. Except as set out above, you keep all right, title, and interest in your +contribution. The rights that you grant to us under these terms are effective +on the date you first submitted a contribution to us, even if your submission +took place before the date you sign these terms. + +5. You covenant, represent, warrant and agree that: + + * Each contribution that you submit is and shall be an original work of + authorship and you can legally grant the rights set out in this SCA; + + * to the best of your knowledge, each contribution will not violate any + third party's copyrights, trademarks, patents, or other intellectual + property rights; and + + * each contribution shall be in compliance with U.S. export control laws and + other applicable export and import laws. You agree to notify us if you + become aware of any circumstance which would make any of the foregoing + representations inaccurate in any respect. We may publicly disclose your + participation in the project, including the fact that you have signed the SCA. + +6. This SCA is governed by the laws of the State of California and applicable +U.S. Federal law. Any choice of law rules will not apply. + +7. Please place an “x” on one of the applicable statement below. Please do NOT +mark both statements: + + * [x] I am signing on behalf of myself as an individual and no other person + or entity, including my employer, has or will have rights with respect my + contributions. + + * [ ] I am signing on behalf of my employer or a legal entity and I have the + actual authority to contractually bind that entity. + +## Contributor Details + +| Field | Entry | +|------------------------------- | -------------------- | +| Name | Miguel Revuelta | +| Company name (if applicable) | | +| Title or role (if applicable) | | +| Date | 2020-11-17 | +| GitHub username | revuel | +| Website (optional) | | diff --git a/website/meta/universe.json b/website/meta/universe.json index 3b693064f..8bf06df69 100644 --- a/website/meta/universe.json +++ b/website/meta/universe.json @@ -2644,6 +2644,32 @@ "author_links": { "github": "zaibacu" } + }, + { + "id": "PatternOmatic", + "title": "PatternOmatic", + "slogan": "Finds linguistic patterns effortlessly", + "description": "Discover spaCy's linguistic patterns matching a given set of String samples to be used by the spaCy's Rule Based Matcher", + "github": "revuel/PatternOmatic", + "pip": "PatternOmatic", + "code_example": [ + "from PatternOmatic.api import find_patterns", + "", + "samples = ['I am a cat!', 'You are a dog!', 'She is an owl!']", + "", + "patterns_found, _ = find_patterns(samples)", + "", + "print(f'Patterns found: {patterns_found}')" + ], + "code_language": "python", + "thumb": "https://svgshare.com/i/R3P.svg", + "image": "https://svgshare.com/i/R3P.svg", + "author": "Miguel Revuelta Espinosa", + "author_links": { + "github": "revuel" + }, + "category": ["scientific", "research", "standalone"], + "tags": ["Evolutionary Computation", "Grammatical Evolution"] } ], From e3ac90b03543b647799ef98dadbe06ab3ee2c4ce Mon Sep 17 00:00:00 2001 From: Yusuke Mori Date: Mon, 23 Nov 2020 05:59:37 +0900 Subject: [PATCH 27/39] Avoid a SyntaxError in self-attentive-parser (#6428) * Avoid a SyntaxError in self-attentive-parser Fix a usage of quotation marks in the example of spaCy Universe self-attentive-parser * Create forest1988.md Fill in the spaCy contributor agreement --- .github/contributors/forest1988.md | 106 +++++++++++++++++++++++++++++ website/meta/universe.json | 2 +- 2 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 .github/contributors/forest1988.md diff --git a/.github/contributors/forest1988.md b/.github/contributors/forest1988.md new file mode 100644 index 000000000..486764b31 --- /dev/null +++ b/.github/contributors/forest1988.md @@ -0,0 +1,106 @@ +# spaCy contributor agreement + +This spaCy Contributor Agreement (**"SCA"**) is based on the +[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf). +The SCA applies to any contribution that you make to any product or project +managed by us (the **"project"**), and sets out the intellectual property rights +you grant to us in the contributed materials. The term **"us"** shall mean +[ExplosionAI GmbH](https://explosion.ai/legal). The term +**"you"** shall mean the person or entity identified below. + +If you agree to be bound by these terms, fill in the information requested +below and include the filled-in version with your first pull request, under the +folder [`.github/contributors/`](/.github/contributors/). The name of the file +should be your GitHub username, with the extension `.md`. For example, the user +example_user would create the file `.github/contributors/example_user.md`. + +Read this agreement carefully before signing. These terms and conditions +constitute a binding legal agreement. + +## Contributor Agreement + +1. The term "contribution" or "contributed materials" means any source code, +object code, patch, tool, sample, graphic, specification, manual, +documentation, or any other material posted or submitted by you to the project. + +2. With respect to any worldwide copyrights, or copyright applications and +registrations, in your contribution: + + * you hereby assign to us joint ownership, and to the extent that such + assignment is or becomes invalid, ineffective or unenforceable, you hereby + grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge, + royalty-free, unrestricted license to exercise all rights under those + copyrights. This includes, at our option, the right to sublicense these same + rights to third parties through multiple levels of sublicensees or other + licensing arrangements; + + * you agree that each of us can do all things in relation to your + contribution as if each of us were the sole owners, and if one of us makes + a derivative work of your contribution, the one who makes the derivative + work (or has it made will be the sole owner of that derivative work; + + * you agree that you will not assert any moral rights in your contribution + against us, our licensees or transferees; + + * you agree that we may register a copyright in your contribution and + exercise all ownership rights associated with it; and + + * you agree that neither of us has any duty to consult with, obtain the + consent of, pay or render an accounting to the other for any use or + distribution of your contribution. + +3. With respect to any patents you own, or that you can license without payment +to any third party, you hereby grant to us a perpetual, irrevocable, +non-exclusive, worldwide, no-charge, royalty-free license to: + + * make, have made, use, sell, offer to sell, import, and otherwise transfer + your contribution in whole or in part, alone or in combination with or + included in any product, work or materials arising out of the project to + which your contribution was submitted, and + + * at our option, to sublicense these same rights to third parties through + multiple levels of sublicensees or other licensing arrangements. + +4. Except as set out above, you keep all right, title, and interest in your +contribution. The rights that you grant to us under these terms are effective +on the date you first submitted a contribution to us, even if your submission +took place before the date you sign these terms. + +5. You covenant, represent, warrant and agree that: + + * Each contribution that you submit is and shall be an original work of + authorship and you can legally grant the rights set out in this SCA; + + * to the best of your knowledge, each contribution will not violate any + third party's copyrights, trademarks, patents, or other intellectual + property rights; and + + * each contribution shall be in compliance with U.S. export control laws and + other applicable export and import laws. You agree to notify us if you + become aware of any circumstance which would make any of the foregoing + representations inaccurate in any respect. We may publicly disclose your + participation in the project, including the fact that you have signed the SCA. + +6. This SCA is governed by the laws of the State of California and applicable +U.S. Federal law. Any choice of law rules will not apply. + +7. Please place an “x” on one of the applicable statement below. Please do NOT +mark both statements: + + * [x] I am signing on behalf of myself as an individual and no other person + or entity, including my employer, has or will have rights with respect to my + contributions. + + * [ ] I am signing on behalf of my employer or a legal entity and I have the + actual authority to contractually bind that entity. + +## Contributor Details + +| Field | Entry | +|------------------------------- | -------------------- | +| Name | Yusuke Mori | +| Company name (if applicable) | | +| Title or role (if applicable) | Ph.D. student | +| Date | 2020/11/22 | +| GitHub username | forest1988 | +| Website (optional) | https://forest1988.github.io | diff --git a/website/meta/universe.json b/website/meta/universe.json index 8bf06df69..00ad77dac 100644 --- a/website/meta/universe.json +++ b/website/meta/universe.json @@ -1683,7 +1683,7 @@ "", "nlp = spacy.load('en')", "nlp.add_pipe(BeneparComponent('benepar_en'))", - "doc = nlp('The time for action is now. It's never too late to do something.')", + "doc = nlp('The time for action is now. It is never too late to do something.')", "sent = list(doc.sents)[0]", "print(sent._.parse_string)", "# (S (NP (NP (DT The) (NN time)) (PP (IN for) (NP (NN action)))) (VP (VBZ is) (ADVP (RB now))) (. .))", From 13f0676f0431c31b011b2191c13041c0e65352c5 Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Mon, 23 Nov 2020 09:45:18 +0100 Subject: [PATCH 28/39] Updates for python 3.9 (#6338) * Update blis and thinc version ranges * Update thinc version range * Update setup.cfg for python 3.9 * Adjust blis and thinc ranges * Add python 3.9 classifier * Update CI for python 3.9 * Add --prefer-binary to CI sdist install * Update CI python 3.7 mac image * Add --prefer-binary to Travis CI * Update install instructions in README * Specify blis versions separately for < / >= 3.6 * Update --prefer-binary in README * Test cleaner sdist install * Also upgrade pip (This is kind of unnecessary given --prefer-binary but may avoid other issues related to sdist installs in the future.) * Compile with -j 2 * Remove wheel from setup_requires * Update to have separate CI uninstall step * Remove wheel from pyproject.toml * Recommend upgrading setuptools in addition to pip --- README.md | 12 +++++++++++- azure-pipelines.yml | 36 ++++++++++++++++++++++++------------ pyproject.toml | 3 +-- requirements.txt | 5 +++-- setup.cfg | 9 +++++---- 5 files changed, 44 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index c5f1a2b78..e488bc117 100644 --- a/README.md +++ b/README.md @@ -110,12 +110,22 @@ For detailed installation instructions, see the ### pip Using pip, spaCy releases are available as source packages and binary wheels (as -of `v2.0.13`). +of `v2.0.13`). Before you install spaCy and its dependencies, make sure that +`pip` and `setuptools` are up to date. ```bash +pip install -U pip setuptools pip install spacy ``` +For installation on python 3.5 where binary wheels are not provided for the most +recent versions of the dependencies, you can prefer older binary wheels over +newer source packages with `--prefer-binary`: + +```bash +pip install spacy --prefer-binary +``` + To install additional data tables for lemmatization and normalization in **spaCy v2.2+** you can run `pip install spacy[lookups]` or install [`spacy-lookups-data`](https://github.com/explosion/spacy-lookups-data) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 991d4cc33..95a76abcd 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -51,15 +51,15 @@ jobs: imageName: 'macos-10.14' python.version: '3.6' # Don't test on 3.7 for now to speed up builds - # Python37Linux: - # imageName: 'ubuntu-16.04' - # python.version: '3.7' - # Python37Windows: - # imageName: 'vs2017-win2016' - # python.version: '3.7' - # Python37Mac: - # imageName: 'macos-10.13' - # python.version: '3.7' + Python37Linux: + imageName: 'ubuntu-16.04' + python.version: '3.7' + Python37Windows: + imageName: 'vs2017-win2016' + python.version: '3.7' + Python37Mac: + imageName: 'macos-10.14' + python.version: '3.7' Python38Linux: imageName: 'ubuntu-16.04' python.version: '3.8' @@ -69,6 +69,15 @@ jobs: Python38Mac: imageName: 'macos-10.14' python.version: '3.8' + Python39Linux: + imageName: 'ubuntu-16.04' + python.version: '3.9' + Python39Windows: + imageName: 'vs2017-win2016' + python.version: '3.9' + Python39Mac: + imageName: 'macos-10.14' + python.version: '3.9' maxParallel: 4 pool: vmImage: $(imageName) @@ -80,12 +89,12 @@ jobs: architecture: 'x64' - script: | - python -m pip install -U setuptools + python -m pip install -U pip setuptools pip install -r requirements.txt --prefer-binary displayName: 'Install dependencies' - script: | - python setup.py build_ext --inplace + python setup.py build_ext --inplace -j 2 python setup.py sdist --formats=gztar displayName: 'Compile and build sdist' @@ -94,9 +103,12 @@ jobs: contents: 'spacy' displayName: 'Delete source directory' - - bash: | + - script: | pip freeze > installed.txt pip uninstall -y -r installed.txt + displayName: 'Uninstall all packages' + + - bash: | SDIST=$(python -c "import os;print(os.listdir('./dist')[-1])" 2>&1) pip install dist/$SDIST --only-binary :all: displayName: 'Install from sdist' diff --git a/pyproject.toml b/pyproject.toml index fe66494ff..c5cc5a06c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,10 @@ [build-system] requires = [ "setuptools", - "wheel", "cython>=0.25", "cymem>=2.0.2,<2.1.0", "preshed>=3.0.2,<3.1.0", "murmurhash>=0.28.0,<1.1.0", - "thinc==7.4.1", + "thinc>=7.4.1,<7.5.0", ] build-backend = "setuptools.build_meta" diff --git a/requirements.txt b/requirements.txt index 367eef111..91996b261 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,9 @@ # Our libraries cymem>=2.0.2,<2.1.0 preshed>=3.0.2,<3.1.0 -thinc==7.4.1 -blis>=0.4.0,<0.5.0 +thinc>=7.4.1,<7.5.0 +blis>=0.4.0,<0.8.0; python_version >= "3.6" +blis>=0.4.0,<0.5.0; python_version < "3.6" murmurhash>=0.28.0,<1.1.0 wasabi>=0.4.0,<1.1.0 srsly>=1.0.2,<1.1.0 diff --git a/setup.cfg b/setup.cfg index 9bd45d45d..8e40a7afd 100644 --- a/setup.cfg +++ b/setup.cfg @@ -23,6 +23,7 @@ classifiers = Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 + Programming Language :: Python :: 3.9 Topic :: Scientific/Engineering [options] @@ -32,20 +33,20 @@ scripts = bin/spacy python_requires = >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.* setup_requires = - wheel cython>=0.25 # We also need our Cython packages here to compile against cymem>=2.0.2,<2.1.0 preshed>=3.0.2,<3.1.0 murmurhash>=0.28.0,<1.1.0 - thinc==7.4.1 + thinc>=7.4.1,<7.5.0 install_requires = # Our libraries murmurhash>=0.28.0,<1.1.0 cymem>=2.0.2,<2.1.0 preshed>=3.0.2,<3.1.0 - thinc==7.4.1 - blis>=0.4.0,<0.5.0 + thinc>=7.4.1,<7.5.0 + blis>=0.4.0,<0.8.0; python_version >= "3.6" + blis>=0.4.0,<0.5.0; python_version < "3.6" wasabi>=0.4.0,<1.1.0 srsly>=1.0.2,<1.1.0 catalogue>=0.0.7,<1.1.0 From a8c2dad466e5c5ec62532fea8156c744efa180eb Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Mon, 23 Nov 2020 10:00:59 +0100 Subject: [PATCH 29/39] Add all vectors to vocab before pruning (#6408) Add all vectors to the vocab before pruning to correct the selection of vectors to prioritize. --- spacy/vocab.pyx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spacy/vocab.pyx b/spacy/vocab.pyx index 1b1b04e13..3617e70bb 100644 --- a/spacy/vocab.pyx +++ b/spacy/vocab.pyx @@ -316,6 +316,9 @@ cdef class Vocab: DOCS: https://spacy.io/api/vocab#prune_vectors """ xp = get_array_module(self.vectors.data) + # Make sure all vectors are in the vocab + for orth in self.vectors: + self[orth] # Make prob negative so it sorts by rank ascending # (key2row contains the rank) priority = [(-lex.prob, self.vectors.key2row[lex.orth], lex.orth) From 4284605683dc6b1e4b9b9d64fe5f0bf6304bd901 Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Mon, 23 Nov 2020 10:01:46 +0100 Subject: [PATCH 30/39] Remove Beam cleanup (#6414) Beam cleanup is handled through the Beam finalization method. --- spacy/syntax/_beam_utils.pyx | 24 ------------------------ spacy/syntax/nn_parser.pyx | 5 ----- 2 files changed, 29 deletions(-) diff --git a/spacy/syntax/_beam_utils.pyx b/spacy/syntax/_beam_utils.pyx index b1085c762..93f5c6fdd 100644 --- a/spacy/syntax/_beam_utils.pyx +++ b/spacy/syntax/_beam_utils.pyx @@ -304,27 +304,3 @@ def get_gradient(nr_class, beam_maps, histories, losses): grads[j][i, clas] += loss key = key + tuple([clas]) return grads - - -def cleanup_beam(Beam beam): - cdef StateC* state - # Once parsing has finished, states in beam may not be unique. Is this - # correct? - seen = set() - for i in range(beam.width): - addr = beam._parents[i].content - if addr not in seen: - state = addr - del state - seen.add(addr) - else: - raise ValueError(Errors.E023.format(addr=addr, i=i)) - addr = beam._states[i].content - if addr not in seen: - state = addr - del state - seen.add(addr) - else: - raise ValueError(Errors.E023.format(addr=addr, i=i)) - - diff --git a/spacy/syntax/nn_parser.pyx b/spacy/syntax/nn_parser.pyx index 145c382a5..5a79ddee2 100644 --- a/spacy/syntax/nn_parser.pyx +++ b/spacy/syntax/nn_parser.pyx @@ -373,8 +373,6 @@ cdef class Parser: self.moves.finalize_doc(doc) for hook in self.postprocesses: hook(doc) - for beam in beams: - _beam_utils.cleanup_beam(beam) def transition_states(self, states, float[:, ::1] scores): cdef StateClass state @@ -527,9 +525,6 @@ cdef class Parser: else: model.backprops.append((ids, d_vector, bp_vectors)) model.make_updates(sgd) - cdef Beam beam - for beam in beams: - _beam_utils.cleanup_beam(beam) def _init_gold_batch(self, whole_docs, whole_golds, min_length=5, max_length=500): """Make a square batch, of length equal to the shortest doc. A long From 3f61f5eb546c90aa483afbab8d91508f3d887acb Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Mon, 23 Nov 2020 10:26:47 +0100 Subject: [PATCH 31/39] Use int8_t instead of char in Matcher (#6413) * Use signed char instead of char in Matcher Remove unused char* utf8_t typedef * Use int8_t instead of signed char --- spacy/matcher/matcher.pyx | 20 ++++++++++---------- spacy/typedefs.pxd | 1 - spacy/vocab.pxd | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/spacy/matcher/matcher.pyx b/spacy/matcher/matcher.pyx index bc615b07c..644f7704b 100644 --- a/spacy/matcher/matcher.pyx +++ b/spacy/matcher/matcher.pyx @@ -3,7 +3,7 @@ from __future__ import unicode_literals from libcpp.vector cimport vector -from libc.stdint cimport int32_t +from libc.stdint cimport int32_t, int8_t from cymem.cymem cimport Pool from murmurhash.mrmr cimport hash64 @@ -279,7 +279,7 @@ cdef find_matches(TokenPatternC** patterns, int n, object doclike, int length, e # avoid any processing or mem alloc if the document is empty return output if len(predicates) > 0: - predicate_cache = mem.alloc(length * len(predicates), sizeof(char)) + predicate_cache = mem.alloc(length * len(predicates), sizeof(int8_t)) if extensions is not None and len(extensions) >= 1: nr_extra_attr = max(extensions.values()) + 1 extra_attr_values = mem.alloc(length * nr_extra_attr, sizeof(attr_t)) @@ -320,7 +320,7 @@ cdef find_matches(TokenPatternC** patterns, int n, object doclike, int length, e cdef void transition_states(vector[PatternStateC]& states, vector[MatchC]& matches, - char* cached_py_predicates, + int8_t* cached_py_predicates, Token token, const attr_t* extra_attrs, py_predicates) except *: cdef int q = 0 cdef vector[PatternStateC] new_states @@ -392,7 +392,7 @@ cdef void transition_states(vector[PatternStateC]& states, vector[MatchC]& match states.push_back(new_states[i]) -cdef int update_predicate_cache(char* cache, +cdef int update_predicate_cache(int8_t* cache, const TokenPatternC* pattern, Token token, predicates) except -1: # If the state references any extra predicates, check whether they match. # These are cached, so that we don't call these potentially expensive @@ -430,7 +430,7 @@ cdef void finish_states(vector[MatchC]& matches, vector[PatternStateC]& states) cdef action_t get_action(PatternStateC state, const TokenC* token, const attr_t* extra_attrs, - const char* predicate_matches) nogil: + const int8_t* predicate_matches) nogil: """We need to consider: a) Does the token match the specification? [Yes, No] b) What's the quantifier? [1, 0+, ?] @@ -488,7 +488,7 @@ cdef action_t get_action(PatternStateC state, Problem: If a quantifier is matching, we're adding a lot of open partials """ - cdef char is_match + cdef int8_t is_match is_match = get_is_match(state, token, extra_attrs, predicate_matches) quantifier = get_quantifier(state) is_final = get_is_final(state) @@ -540,9 +540,9 @@ cdef action_t get_action(PatternStateC state, return RETRY -cdef char get_is_match(PatternStateC state, +cdef int8_t get_is_match(PatternStateC state, const TokenC* token, const attr_t* extra_attrs, - const char* predicate_matches) nogil: + const int8_t* predicate_matches) nogil: for i in range(state.pattern.nr_py): if predicate_matches[state.pattern.py_predicates[i]] == -1: return 0 @@ -557,7 +557,7 @@ cdef char get_is_match(PatternStateC state, return True -cdef char get_is_final(PatternStateC state) nogil: +cdef int8_t get_is_final(PatternStateC state) nogil: if state.pattern[1].quantifier == FINAL_ID: id_attr = state.pattern[1].attrs[0] if id_attr.attr != ID: @@ -568,7 +568,7 @@ cdef char get_is_final(PatternStateC state) nogil: return 0 -cdef char get_quantifier(PatternStateC state) nogil: +cdef int8_t get_quantifier(PatternStateC state) nogil: return state.pattern.quantifier diff --git a/spacy/typedefs.pxd b/spacy/typedefs.pxd index bd5b38958..b04781107 100644 --- a/spacy/typedefs.pxd +++ b/spacy/typedefs.pxd @@ -3,7 +3,6 @@ from libc.stdint cimport uint8_t ctypedef uint64_t hash_t -ctypedef char* utf8_t ctypedef uint64_t attr_t ctypedef uint64_t flags_t ctypedef uint16_t len_t diff --git a/spacy/vocab.pxd b/spacy/vocab.pxd index 73754eb02..f394c6d4e 100644 --- a/spacy/vocab.pxd +++ b/spacy/vocab.pxd @@ -5,7 +5,7 @@ from cymem.cymem cimport Pool from murmurhash.mrmr cimport hash64 from .structs cimport LexemeC, TokenC -from .typedefs cimport utf8_t, attr_t, hash_t +from .typedefs cimport attr_t, hash_t from .strings cimport StringStore from .morphology cimport Morphology From cdca44ac11d7688c8620c0e058f8894e530cb79e Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Mon, 23 Nov 2020 11:15:11 +0100 Subject: [PATCH 32/39] Dynamically include numpy headers (#6418) * Dynamically include numpy headers * Add `build-constraints.txt` with numpy version pins for building wheels with `pip` and `wheelwright` * Update `setup.py` to add current numpy include directory * Assume `cython` and `numpy` are installed for `setup.py` * Remove included numpy headers * Fix typo in requirements.txt * Use script in CI --- build-constraints.txt | 5 + include/numpy/__multiarray_api.h | 1686 -------------- include/numpy/__ufunc_api.h | 323 --- include/numpy/_neighborhood_iterator_imp.h | 90 - include/numpy/_numpyconfig.h | 29 - include/numpy/arrayobject.h | 22 - include/numpy/arrayscalars.h | 175 -- include/numpy/halffloat.h | 69 - include/numpy/multiarray_api.txt | 2375 -------------------- include/numpy/ndarrayobject.h | 244 -- include/numpy/ndarraytypes.h | 1731 -------------- include/numpy/noprefix.h | 209 -- include/numpy/npy_3kcompat.h | 417 ---- include/numpy/npy_common.h | 930 -------- include/numpy/npy_cpu.h | 109 - include/numpy/npy_deprecated_api.h | 129 -- include/numpy/npy_endian.h | 46 - include/numpy/npy_interrupt.h | 117 - include/numpy/npy_math.h | 438 ---- include/numpy/npy_no_deprecated_api.h | 19 - include/numpy/npy_os.h | 30 - include/numpy/numpyconfig.h | 33 - include/numpy/old_defines.h | 187 -- include/numpy/oldnumeric.h | 23 - include/numpy/ufunc_api.txt | 312 --- include/numpy/ufuncobject.h | 446 ---- include/numpy/utils.h | 19 - pyproject.toml | 4 + setup.cfg | 1 + setup.py | 2 + 30 files changed, 12 insertions(+), 10208 deletions(-) create mode 100644 build-constraints.txt delete mode 100644 include/numpy/__multiarray_api.h delete mode 100644 include/numpy/__ufunc_api.h delete mode 100644 include/numpy/_neighborhood_iterator_imp.h delete mode 100644 include/numpy/_numpyconfig.h delete mode 100644 include/numpy/arrayobject.h delete mode 100644 include/numpy/arrayscalars.h delete mode 100644 include/numpy/halffloat.h delete mode 100644 include/numpy/multiarray_api.txt delete mode 100644 include/numpy/ndarrayobject.h delete mode 100644 include/numpy/ndarraytypes.h delete mode 100644 include/numpy/noprefix.h delete mode 100644 include/numpy/npy_3kcompat.h delete mode 100644 include/numpy/npy_common.h delete mode 100644 include/numpy/npy_cpu.h delete mode 100644 include/numpy/npy_deprecated_api.h delete mode 100644 include/numpy/npy_endian.h delete mode 100644 include/numpy/npy_interrupt.h delete mode 100644 include/numpy/npy_math.h delete mode 100644 include/numpy/npy_no_deprecated_api.h delete mode 100644 include/numpy/npy_os.h delete mode 100644 include/numpy/numpyconfig.h delete mode 100644 include/numpy/old_defines.h delete mode 100644 include/numpy/oldnumeric.h delete mode 100644 include/numpy/ufunc_api.txt delete mode 100644 include/numpy/ufuncobject.h delete mode 100644 include/numpy/utils.h diff --git a/build-constraints.txt b/build-constraints.txt new file mode 100644 index 000000000..23e660096 --- /dev/null +++ b/build-constraints.txt @@ -0,0 +1,5 @@ +# build version constraints for use with wheelwright + multibuild +numpy==1.15.0; python_version<='3.7' +numpy==1.17.3; python_version=='3.8' +numpy==1.19.3; python_version=='3.9' +numpy; python_version>='3.10' diff --git a/include/numpy/__multiarray_api.h b/include/numpy/__multiarray_api.h deleted file mode 100644 index c949d732f..000000000 --- a/include/numpy/__multiarray_api.h +++ /dev/null @@ -1,1686 +0,0 @@ - -#ifdef _MULTIARRAYMODULE - -typedef struct { - PyObject_HEAD - npy_bool obval; -} PyBoolScalarObject; - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION -extern NPY_NO_EXPORT PyTypeObject PyArrayMapIter_Type; -extern NPY_NO_EXPORT PyTypeObject PyArrayNeighborhoodIter_Type; -extern NPY_NO_EXPORT PyBoolScalarObject _PyArrayScalar_BoolValues[2]; -#else -NPY_NO_EXPORT PyTypeObject PyArrayMapIter_Type; -NPY_NO_EXPORT PyTypeObject PyArrayNeighborhoodIter_Type; -NPY_NO_EXPORT PyBoolScalarObject _PyArrayScalar_BoolValues[2]; -#endif - -NPY_NO_EXPORT unsigned int PyArray_GetNDArrayCVersion \ - (void); -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyBigArray_Type; -#else - NPY_NO_EXPORT PyTypeObject PyBigArray_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyArray_Type; -#else - NPY_NO_EXPORT PyTypeObject PyArray_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyArrayDescr_Type; -#else - NPY_NO_EXPORT PyTypeObject PyArrayDescr_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyArrayFlags_Type; -#else - NPY_NO_EXPORT PyTypeObject PyArrayFlags_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyArrayIter_Type; -#else - NPY_NO_EXPORT PyTypeObject PyArrayIter_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyArrayMultiIter_Type; -#else - NPY_NO_EXPORT PyTypeObject PyArrayMultiIter_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT int NPY_NUMUSERTYPES; -#else - NPY_NO_EXPORT int NPY_NUMUSERTYPES; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyBoolArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyBoolArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION -extern NPY_NO_EXPORT PyBoolScalarObject _PyArrayScalar_BoolValues[2]; -#else -NPY_NO_EXPORT PyBoolScalarObject _PyArrayScalar_BoolValues[2]; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyGenericArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyGenericArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyNumberArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyNumberArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyIntegerArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyIntegerArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PySignedIntegerArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PySignedIntegerArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyUnsignedIntegerArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyUnsignedIntegerArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyInexactArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyInexactArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyFloatingArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyFloatingArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyComplexFloatingArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyComplexFloatingArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyFlexibleArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyFlexibleArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyCharacterArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyCharacterArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyByteArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyByteArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyShortArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyShortArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyIntArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyIntArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyLongArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyLongArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyLongLongArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyLongLongArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyUByteArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyUByteArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyUShortArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyUShortArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyUIntArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyUIntArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyULongArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyULongArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyULongLongArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyULongLongArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyFloatArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyFloatArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyDoubleArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyDoubleArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyLongDoubleArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyLongDoubleArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyCFloatArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyCFloatArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyCDoubleArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyCDoubleArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyCLongDoubleArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyCLongDoubleArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyObjectArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyObjectArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyStringArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyStringArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyUnicodeArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyUnicodeArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyVoidArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyVoidArrType_Type; -#endif - -NPY_NO_EXPORT int PyArray_SetNumericOps \ - (PyObject *); -NPY_NO_EXPORT PyObject * PyArray_GetNumericOps \ - (void); -NPY_NO_EXPORT int PyArray_INCREF \ - (PyArrayObject *); -NPY_NO_EXPORT int PyArray_XDECREF \ - (PyArrayObject *); -NPY_NO_EXPORT void PyArray_SetStringFunction \ - (PyObject *, int); -NPY_NO_EXPORT PyArray_Descr * PyArray_DescrFromType \ - (int); -NPY_NO_EXPORT PyObject * PyArray_TypeObjectFromType \ - (int); -NPY_NO_EXPORT char * PyArray_Zero \ - (PyArrayObject *); -NPY_NO_EXPORT char * PyArray_One \ - (PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_CastToType \ - (PyArrayObject *, PyArray_Descr *, int); -NPY_NO_EXPORT int PyArray_CastTo \ - (PyArrayObject *, PyArrayObject *); -NPY_NO_EXPORT int PyArray_CastAnyTo \ - (PyArrayObject *, PyArrayObject *); -NPY_NO_EXPORT int PyArray_CanCastSafely \ - (int, int); -NPY_NO_EXPORT npy_bool PyArray_CanCastTo \ - (PyArray_Descr *, PyArray_Descr *); -NPY_NO_EXPORT int PyArray_ObjectType \ - (PyObject *, int); -NPY_NO_EXPORT PyArray_Descr * PyArray_DescrFromObject \ - (PyObject *, PyArray_Descr *); -NPY_NO_EXPORT PyArrayObject ** PyArray_ConvertToCommonType \ - (PyObject *, int *); -NPY_NO_EXPORT PyArray_Descr * PyArray_DescrFromScalar \ - (PyObject *); -NPY_NO_EXPORT PyArray_Descr * PyArray_DescrFromTypeObject \ - (PyObject *); -NPY_NO_EXPORT npy_intp PyArray_Size \ - (PyObject *); -NPY_NO_EXPORT PyObject * PyArray_Scalar \ - (void *, PyArray_Descr *, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_FromScalar \ - (PyObject *, PyArray_Descr *); -NPY_NO_EXPORT void PyArray_ScalarAsCtype \ - (PyObject *, void *); -NPY_NO_EXPORT int PyArray_CastScalarToCtype \ - (PyObject *, void *, PyArray_Descr *); -NPY_NO_EXPORT int PyArray_CastScalarDirect \ - (PyObject *, PyArray_Descr *, void *, int); -NPY_NO_EXPORT PyObject * PyArray_ScalarFromObject \ - (PyObject *); -NPY_NO_EXPORT PyArray_VectorUnaryFunc * PyArray_GetCastFunc \ - (PyArray_Descr *, int); -NPY_NO_EXPORT PyObject * PyArray_FromDims \ - (int, int *, int); -NPY_NO_EXPORT PyObject * PyArray_FromDimsAndDataAndDescr \ - (int, int *, PyArray_Descr *, char *); -NPY_NO_EXPORT PyObject * PyArray_FromAny \ - (PyObject *, PyArray_Descr *, int, int, int, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_EnsureArray \ - (PyObject *); -NPY_NO_EXPORT PyObject * PyArray_EnsureAnyArray \ - (PyObject *); -NPY_NO_EXPORT PyObject * PyArray_FromFile \ - (FILE *, PyArray_Descr *, npy_intp, char *); -NPY_NO_EXPORT PyObject * PyArray_FromString \ - (char *, npy_intp, PyArray_Descr *, npy_intp, char *); -NPY_NO_EXPORT PyObject * PyArray_FromBuffer \ - (PyObject *, PyArray_Descr *, npy_intp, npy_intp); -NPY_NO_EXPORT PyObject * PyArray_FromIter \ - (PyObject *, PyArray_Descr *, npy_intp); -NPY_NO_EXPORT PyObject * PyArray_Return \ - (PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_GetField \ - (PyArrayObject *, PyArray_Descr *, int); -NPY_NO_EXPORT int PyArray_SetField \ - (PyArrayObject *, PyArray_Descr *, int, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_Byteswap \ - (PyArrayObject *, npy_bool); -NPY_NO_EXPORT PyObject * PyArray_Resize \ - (PyArrayObject *, PyArray_Dims *, int, NPY_ORDER); -NPY_NO_EXPORT int PyArray_MoveInto \ - (PyArrayObject *, PyArrayObject *); -NPY_NO_EXPORT int PyArray_CopyInto \ - (PyArrayObject *, PyArrayObject *); -NPY_NO_EXPORT int PyArray_CopyAnyInto \ - (PyArrayObject *, PyArrayObject *); -NPY_NO_EXPORT int PyArray_CopyObject \ - (PyArrayObject *, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_NewCopy \ - (PyArrayObject *, NPY_ORDER); -NPY_NO_EXPORT PyObject * PyArray_ToList \ - (PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_ToString \ - (PyArrayObject *, NPY_ORDER); -NPY_NO_EXPORT int PyArray_ToFile \ - (PyArrayObject *, FILE *, char *, char *); -NPY_NO_EXPORT int PyArray_Dump \ - (PyObject *, PyObject *, int); -NPY_NO_EXPORT PyObject * PyArray_Dumps \ - (PyObject *, int); -NPY_NO_EXPORT int PyArray_ValidType \ - (int); -NPY_NO_EXPORT void PyArray_UpdateFlags \ - (PyArrayObject *, int); -NPY_NO_EXPORT PyObject * PyArray_New \ - (PyTypeObject *, int, npy_intp *, int, npy_intp *, void *, int, int, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_NewFromDescr \ - (PyTypeObject *, PyArray_Descr *, int, npy_intp *, npy_intp *, void *, int, PyObject *); -NPY_NO_EXPORT PyArray_Descr * PyArray_DescrNew \ - (PyArray_Descr *); -NPY_NO_EXPORT PyArray_Descr * PyArray_DescrNewFromType \ - (int); -NPY_NO_EXPORT double PyArray_GetPriority \ - (PyObject *, double); -NPY_NO_EXPORT PyObject * PyArray_IterNew \ - (PyObject *); -NPY_NO_EXPORT PyObject * PyArray_MultiIterNew \ - (int, ...); -NPY_NO_EXPORT int PyArray_PyIntAsInt \ - (PyObject *); -NPY_NO_EXPORT npy_intp PyArray_PyIntAsIntp \ - (PyObject *); -NPY_NO_EXPORT int PyArray_Broadcast \ - (PyArrayMultiIterObject *); -NPY_NO_EXPORT void PyArray_FillObjectArray \ - (PyArrayObject *, PyObject *); -NPY_NO_EXPORT int PyArray_FillWithScalar \ - (PyArrayObject *, PyObject *); -NPY_NO_EXPORT npy_bool PyArray_CheckStrides \ - (int, int, npy_intp, npy_intp, npy_intp *, npy_intp *); -NPY_NO_EXPORT PyArray_Descr * PyArray_DescrNewByteorder \ - (PyArray_Descr *, char); -NPY_NO_EXPORT PyObject * PyArray_IterAllButAxis \ - (PyObject *, int *); -NPY_NO_EXPORT PyObject * PyArray_CheckFromAny \ - (PyObject *, PyArray_Descr *, int, int, int, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_FromArray \ - (PyArrayObject *, PyArray_Descr *, int); -NPY_NO_EXPORT PyObject * PyArray_FromInterface \ - (PyObject *); -NPY_NO_EXPORT PyObject * PyArray_FromStructInterface \ - (PyObject *); -NPY_NO_EXPORT PyObject * PyArray_FromArrayAttr \ - (PyObject *, PyArray_Descr *, PyObject *); -NPY_NO_EXPORT NPY_SCALARKIND PyArray_ScalarKind \ - (int, PyArrayObject **); -NPY_NO_EXPORT int PyArray_CanCoerceScalar \ - (int, int, NPY_SCALARKIND); -NPY_NO_EXPORT PyObject * PyArray_NewFlagsObject \ - (PyObject *); -NPY_NO_EXPORT npy_bool PyArray_CanCastScalar \ - (PyTypeObject *, PyTypeObject *); -NPY_NO_EXPORT int PyArray_CompareUCS4 \ - (npy_ucs4 *, npy_ucs4 *, size_t); -NPY_NO_EXPORT int PyArray_RemoveSmallest \ - (PyArrayMultiIterObject *); -NPY_NO_EXPORT int PyArray_ElementStrides \ - (PyObject *); -NPY_NO_EXPORT void PyArray_Item_INCREF \ - (char *, PyArray_Descr *); -NPY_NO_EXPORT void PyArray_Item_XDECREF \ - (char *, PyArray_Descr *); -NPY_NO_EXPORT PyObject * PyArray_FieldNames \ - (PyObject *); -NPY_NO_EXPORT PyObject * PyArray_Transpose \ - (PyArrayObject *, PyArray_Dims *); -NPY_NO_EXPORT PyObject * PyArray_TakeFrom \ - (PyArrayObject *, PyObject *, int, PyArrayObject *, NPY_CLIPMODE); -NPY_NO_EXPORT PyObject * PyArray_PutTo \ - (PyArrayObject *, PyObject*, PyObject *, NPY_CLIPMODE); -NPY_NO_EXPORT PyObject * PyArray_PutMask \ - (PyArrayObject *, PyObject*, PyObject*); -NPY_NO_EXPORT PyObject * PyArray_Repeat \ - (PyArrayObject *, PyObject *, int); -NPY_NO_EXPORT PyObject * PyArray_Choose \ - (PyArrayObject *, PyObject *, PyArrayObject *, NPY_CLIPMODE); -NPY_NO_EXPORT int PyArray_Sort \ - (PyArrayObject *, int, NPY_SORTKIND); -NPY_NO_EXPORT PyObject * PyArray_ArgSort \ - (PyArrayObject *, int, NPY_SORTKIND); -NPY_NO_EXPORT PyObject * PyArray_SearchSorted \ - (PyArrayObject *, PyObject *, NPY_SEARCHSIDE, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_ArgMax \ - (PyArrayObject *, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_ArgMin \ - (PyArrayObject *, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Reshape \ - (PyArrayObject *, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_Newshape \ - (PyArrayObject *, PyArray_Dims *, NPY_ORDER); -NPY_NO_EXPORT PyObject * PyArray_Squeeze \ - (PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_View \ - (PyArrayObject *, PyArray_Descr *, PyTypeObject *); -NPY_NO_EXPORT PyObject * PyArray_SwapAxes \ - (PyArrayObject *, int, int); -NPY_NO_EXPORT PyObject * PyArray_Max \ - (PyArrayObject *, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Min \ - (PyArrayObject *, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Ptp \ - (PyArrayObject *, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Mean \ - (PyArrayObject *, int, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Trace \ - (PyArrayObject *, int, int, int, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Diagonal \ - (PyArrayObject *, int, int, int); -NPY_NO_EXPORT PyObject * PyArray_Clip \ - (PyArrayObject *, PyObject *, PyObject *, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Conjugate \ - (PyArrayObject *, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Nonzero \ - (PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Std \ - (PyArrayObject *, int, int, PyArrayObject *, int); -NPY_NO_EXPORT PyObject * PyArray_Sum \ - (PyArrayObject *, int, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_CumSum \ - (PyArrayObject *, int, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Prod \ - (PyArrayObject *, int, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_CumProd \ - (PyArrayObject *, int, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_All \ - (PyArrayObject *, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Any \ - (PyArrayObject *, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Compress \ - (PyArrayObject *, PyObject *, int, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_Flatten \ - (PyArrayObject *, NPY_ORDER); -NPY_NO_EXPORT PyObject * PyArray_Ravel \ - (PyArrayObject *, NPY_ORDER); -NPY_NO_EXPORT npy_intp PyArray_MultiplyList \ - (npy_intp *, int); -NPY_NO_EXPORT int PyArray_MultiplyIntList \ - (int *, int); -NPY_NO_EXPORT void * PyArray_GetPtr \ - (PyArrayObject *, npy_intp*); -NPY_NO_EXPORT int PyArray_CompareLists \ - (npy_intp *, npy_intp *, int); -NPY_NO_EXPORT int PyArray_AsCArray \ - (PyObject **, void *, npy_intp *, int, PyArray_Descr*); -NPY_NO_EXPORT int PyArray_As1D \ - (PyObject **, char **, int *, int); -NPY_NO_EXPORT int PyArray_As2D \ - (PyObject **, char ***, int *, int *, int); -NPY_NO_EXPORT int PyArray_Free \ - (PyObject *, void *); -NPY_NO_EXPORT int PyArray_Converter \ - (PyObject *, PyObject **); -NPY_NO_EXPORT int PyArray_IntpFromSequence \ - (PyObject *, npy_intp *, int); -NPY_NO_EXPORT PyObject * PyArray_Concatenate \ - (PyObject *, int); -NPY_NO_EXPORT PyObject * PyArray_InnerProduct \ - (PyObject *, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_MatrixProduct \ - (PyObject *, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_CopyAndTranspose \ - (PyObject *); -NPY_NO_EXPORT PyObject * PyArray_Correlate \ - (PyObject *, PyObject *, int); -NPY_NO_EXPORT int PyArray_TypestrConvert \ - (int, int); -NPY_NO_EXPORT int PyArray_DescrConverter \ - (PyObject *, PyArray_Descr **); -NPY_NO_EXPORT int PyArray_DescrConverter2 \ - (PyObject *, PyArray_Descr **); -NPY_NO_EXPORT int PyArray_IntpConverter \ - (PyObject *, PyArray_Dims *); -NPY_NO_EXPORT int PyArray_BufferConverter \ - (PyObject *, PyArray_Chunk *); -NPY_NO_EXPORT int PyArray_AxisConverter \ - (PyObject *, int *); -NPY_NO_EXPORT int PyArray_BoolConverter \ - (PyObject *, npy_bool *); -NPY_NO_EXPORT int PyArray_ByteorderConverter \ - (PyObject *, char *); -NPY_NO_EXPORT int PyArray_OrderConverter \ - (PyObject *, NPY_ORDER *); -NPY_NO_EXPORT unsigned char PyArray_EquivTypes \ - (PyArray_Descr *, PyArray_Descr *); -NPY_NO_EXPORT PyObject * PyArray_Zeros \ - (int, npy_intp *, PyArray_Descr *, int); -NPY_NO_EXPORT PyObject * PyArray_Empty \ - (int, npy_intp *, PyArray_Descr *, int); -NPY_NO_EXPORT PyObject * PyArray_Where \ - (PyObject *, PyObject *, PyObject *); -NPY_NO_EXPORT PyObject * PyArray_Arange \ - (double, double, double, int); -NPY_NO_EXPORT PyObject * PyArray_ArangeObj \ - (PyObject *, PyObject *, PyObject *, PyArray_Descr *); -NPY_NO_EXPORT int PyArray_SortkindConverter \ - (PyObject *, NPY_SORTKIND *); -NPY_NO_EXPORT PyObject * PyArray_LexSort \ - (PyObject *, int); -NPY_NO_EXPORT PyObject * PyArray_Round \ - (PyArrayObject *, int, PyArrayObject *); -NPY_NO_EXPORT unsigned char PyArray_EquivTypenums \ - (int, int); -NPY_NO_EXPORT int PyArray_RegisterDataType \ - (PyArray_Descr *); -NPY_NO_EXPORT int PyArray_RegisterCastFunc \ - (PyArray_Descr *, int, PyArray_VectorUnaryFunc *); -NPY_NO_EXPORT int PyArray_RegisterCanCast \ - (PyArray_Descr *, int, NPY_SCALARKIND); -NPY_NO_EXPORT void PyArray_InitArrFuncs \ - (PyArray_ArrFuncs *); -NPY_NO_EXPORT PyObject * PyArray_IntTupleFromIntp \ - (int, npy_intp *); -NPY_NO_EXPORT int PyArray_TypeNumFromName \ - (char *); -NPY_NO_EXPORT int PyArray_ClipmodeConverter \ - (PyObject *, NPY_CLIPMODE *); -NPY_NO_EXPORT int PyArray_OutputConverter \ - (PyObject *, PyArrayObject **); -NPY_NO_EXPORT PyObject * PyArray_BroadcastToShape \ - (PyObject *, npy_intp *, int); -NPY_NO_EXPORT void _PyArray_SigintHandler \ - (int); -NPY_NO_EXPORT void* _PyArray_GetSigintBuf \ - (void); -NPY_NO_EXPORT int PyArray_DescrAlignConverter \ - (PyObject *, PyArray_Descr **); -NPY_NO_EXPORT int PyArray_DescrAlignConverter2 \ - (PyObject *, PyArray_Descr **); -NPY_NO_EXPORT int PyArray_SearchsideConverter \ - (PyObject *, void *); -NPY_NO_EXPORT PyObject * PyArray_CheckAxis \ - (PyArrayObject *, int *, int); -NPY_NO_EXPORT npy_intp PyArray_OverflowMultiplyList \ - (npy_intp *, int); -NPY_NO_EXPORT int PyArray_CompareString \ - (char *, char *, size_t); -NPY_NO_EXPORT PyObject * PyArray_MultiIterFromObjects \ - (PyObject **, int, int, ...); -NPY_NO_EXPORT int PyArray_GetEndianness \ - (void); -NPY_NO_EXPORT unsigned int PyArray_GetNDArrayCFeatureVersion \ - (void); -NPY_NO_EXPORT PyObject * PyArray_Correlate2 \ - (PyObject *, PyObject *, int); -NPY_NO_EXPORT PyObject* PyArray_NeighborhoodIterNew \ - (PyArrayIterObject *, npy_intp *, int, PyArrayObject*); -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyTimeIntegerArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyTimeIntegerArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyDatetimeArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyDatetimeArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyTimedeltaArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyTimedeltaArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyHalfArrType_Type; -#else - NPY_NO_EXPORT PyTypeObject PyHalfArrType_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject NpyIter_Type; -#else - NPY_NO_EXPORT PyTypeObject NpyIter_Type; -#endif - -NPY_NO_EXPORT void PyArray_SetDatetimeParseFunction \ - (PyObject *); -NPY_NO_EXPORT void PyArray_DatetimeToDatetimeStruct \ - (npy_datetime, NPY_DATETIMEUNIT, npy_datetimestruct *); -NPY_NO_EXPORT void PyArray_TimedeltaToTimedeltaStruct \ - (npy_timedelta, NPY_DATETIMEUNIT, npy_timedeltastruct *); -NPY_NO_EXPORT npy_datetime PyArray_DatetimeStructToDatetime \ - (NPY_DATETIMEUNIT, npy_datetimestruct *); -NPY_NO_EXPORT npy_datetime PyArray_TimedeltaStructToTimedelta \ - (NPY_DATETIMEUNIT, npy_timedeltastruct *); -NPY_NO_EXPORT NpyIter * NpyIter_New \ - (PyArrayObject *, npy_uint32, NPY_ORDER, NPY_CASTING, PyArray_Descr*); -NPY_NO_EXPORT NpyIter * NpyIter_MultiNew \ - (int, PyArrayObject **, npy_uint32, NPY_ORDER, NPY_CASTING, npy_uint32 *, PyArray_Descr **); -NPY_NO_EXPORT NpyIter * NpyIter_AdvancedNew \ - (int, PyArrayObject **, npy_uint32, NPY_ORDER, NPY_CASTING, npy_uint32 *, PyArray_Descr **, int, int **, npy_intp *, npy_intp); -NPY_NO_EXPORT NpyIter * NpyIter_Copy \ - (NpyIter *); -NPY_NO_EXPORT int NpyIter_Deallocate \ - (NpyIter *); -NPY_NO_EXPORT npy_bool NpyIter_HasDelayedBufAlloc \ - (NpyIter *); -NPY_NO_EXPORT npy_bool NpyIter_HasExternalLoop \ - (NpyIter *); -NPY_NO_EXPORT int NpyIter_EnableExternalLoop \ - (NpyIter *); -NPY_NO_EXPORT npy_intp * NpyIter_GetInnerStrideArray \ - (NpyIter *); -NPY_NO_EXPORT npy_intp * NpyIter_GetInnerLoopSizePtr \ - (NpyIter *); -NPY_NO_EXPORT int NpyIter_Reset \ - (NpyIter *, char **); -NPY_NO_EXPORT int NpyIter_ResetBasePointers \ - (NpyIter *, char **, char **); -NPY_NO_EXPORT int NpyIter_ResetToIterIndexRange \ - (NpyIter *, npy_intp, npy_intp, char **); -NPY_NO_EXPORT int NpyIter_GetNDim \ - (NpyIter *); -NPY_NO_EXPORT int NpyIter_GetNOp \ - (NpyIter *); -NPY_NO_EXPORT NpyIter_IterNextFunc * NpyIter_GetIterNext \ - (NpyIter *, char **); -NPY_NO_EXPORT npy_intp NpyIter_GetIterSize \ - (NpyIter *); -NPY_NO_EXPORT void NpyIter_GetIterIndexRange \ - (NpyIter *, npy_intp *, npy_intp *); -NPY_NO_EXPORT npy_intp NpyIter_GetIterIndex \ - (NpyIter *); -NPY_NO_EXPORT int NpyIter_GotoIterIndex \ - (NpyIter *, npy_intp); -NPY_NO_EXPORT npy_bool NpyIter_HasMultiIndex \ - (NpyIter *); -NPY_NO_EXPORT int NpyIter_GetShape \ - (NpyIter *, npy_intp *); -NPY_NO_EXPORT NpyIter_GetMultiIndexFunc * NpyIter_GetGetMultiIndex \ - (NpyIter *, char **); -NPY_NO_EXPORT int NpyIter_GotoMultiIndex \ - (NpyIter *, npy_intp *); -NPY_NO_EXPORT int NpyIter_RemoveMultiIndex \ - (NpyIter *); -NPY_NO_EXPORT npy_bool NpyIter_HasIndex \ - (NpyIter *); -NPY_NO_EXPORT npy_bool NpyIter_IsBuffered \ - (NpyIter *); -NPY_NO_EXPORT npy_bool NpyIter_IsGrowInner \ - (NpyIter *); -NPY_NO_EXPORT npy_intp NpyIter_GetBufferSize \ - (NpyIter *); -NPY_NO_EXPORT npy_intp * NpyIter_GetIndexPtr \ - (NpyIter *); -NPY_NO_EXPORT int NpyIter_GotoIndex \ - (NpyIter *, npy_intp); -NPY_NO_EXPORT char ** NpyIter_GetDataPtrArray \ - (NpyIter *); -NPY_NO_EXPORT PyArray_Descr ** NpyIter_GetDescrArray \ - (NpyIter *); -NPY_NO_EXPORT PyArrayObject ** NpyIter_GetOperandArray \ - (NpyIter *); -NPY_NO_EXPORT PyArrayObject * NpyIter_GetIterView \ - (NpyIter *, npy_intp); -NPY_NO_EXPORT void NpyIter_GetReadFlags \ - (NpyIter *, char *); -NPY_NO_EXPORT void NpyIter_GetWriteFlags \ - (NpyIter *, char *); -NPY_NO_EXPORT void NpyIter_DebugPrint \ - (NpyIter *); -NPY_NO_EXPORT npy_bool NpyIter_IterationNeedsAPI \ - (NpyIter *); -NPY_NO_EXPORT void NpyIter_GetInnerFixedStrideArray \ - (NpyIter *, npy_intp *); -NPY_NO_EXPORT int NpyIter_RemoveAxis \ - (NpyIter *, int); -NPY_NO_EXPORT npy_intp * NpyIter_GetAxisStrideArray \ - (NpyIter *, int); -NPY_NO_EXPORT npy_bool NpyIter_RequiresBuffering \ - (NpyIter *); -NPY_NO_EXPORT char ** NpyIter_GetInitialDataPtrArray \ - (NpyIter *); -NPY_NO_EXPORT int NpyIter_CreateCompatibleStrides \ - (NpyIter *, npy_intp, npy_intp *); -NPY_NO_EXPORT int PyArray_CastingConverter \ - (PyObject *, NPY_CASTING *); -NPY_NO_EXPORT npy_intp PyArray_CountNonzero \ - (PyArrayObject *); -NPY_NO_EXPORT PyArray_Descr * PyArray_PromoteTypes \ - (PyArray_Descr *, PyArray_Descr *); -NPY_NO_EXPORT PyArray_Descr * PyArray_MinScalarType \ - (PyArrayObject *); -NPY_NO_EXPORT PyArray_Descr * PyArray_ResultType \ - (npy_intp, PyArrayObject **, npy_intp, PyArray_Descr **); -NPY_NO_EXPORT npy_bool PyArray_CanCastArrayTo \ - (PyArrayObject *, PyArray_Descr *, NPY_CASTING); -NPY_NO_EXPORT npy_bool PyArray_CanCastTypeTo \ - (PyArray_Descr *, PyArray_Descr *, NPY_CASTING); -NPY_NO_EXPORT PyArrayObject * PyArray_EinsteinSum \ - (char *, npy_intp, PyArrayObject **, PyArray_Descr *, NPY_ORDER, NPY_CASTING, PyArrayObject *); -NPY_NO_EXPORT PyObject * PyArray_NewLikeArray \ - (PyArrayObject *, NPY_ORDER, PyArray_Descr *, int); -NPY_NO_EXPORT int PyArray_GetArrayParamsFromObject \ - (PyObject *, PyArray_Descr *, npy_bool, PyArray_Descr **, int *, npy_intp *, PyArrayObject **, PyObject *); -NPY_NO_EXPORT int PyArray_ConvertClipmodeSequence \ - (PyObject *, NPY_CLIPMODE *, int); -NPY_NO_EXPORT PyObject * PyArray_MatrixProduct2 \ - (PyObject *, PyObject *, PyArrayObject*); -NPY_NO_EXPORT npy_bool NpyIter_IsFirstVisit \ - (NpyIter *, int); -NPY_NO_EXPORT int PyArray_SetBaseObject \ - (PyArrayObject *, PyObject *); -NPY_NO_EXPORT void PyArray_CreateSortedStridePerm \ - (int, npy_intp *, npy_stride_sort_item *); -NPY_NO_EXPORT void PyArray_RemoveAxesInPlace \ - (PyArrayObject *, npy_bool *); -NPY_NO_EXPORT void PyArray_DebugPrint \ - (PyArrayObject *); -NPY_NO_EXPORT int PyArray_FailUnlessWriteable \ - (PyArrayObject *, const char *); -NPY_NO_EXPORT int PyArray_SetUpdateIfCopyBase \ - (PyArrayObject *, PyArrayObject *); -NPY_NO_EXPORT void * PyDataMem_NEW \ - (size_t); -NPY_NO_EXPORT void PyDataMem_FREE \ - (void *); -NPY_NO_EXPORT void * PyDataMem_RENEW \ - (void *, size_t); -NPY_NO_EXPORT PyDataMem_EventHookFunc * PyDataMem_SetEventHook \ - (PyDataMem_EventHookFunc *, void *, void **); -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT NPY_CASTING NPY_DEFAULT_ASSIGN_CASTING; -#else - NPY_NO_EXPORT NPY_CASTING NPY_DEFAULT_ASSIGN_CASTING; -#endif - - -#else - -#if defined(PY_ARRAY_UNIQUE_SYMBOL) -#define PyArray_API PY_ARRAY_UNIQUE_SYMBOL -#endif - -#if defined(NO_IMPORT) || defined(NO_IMPORT_ARRAY) -extern void **PyArray_API; -#else -#if defined(PY_ARRAY_UNIQUE_SYMBOL) -void **PyArray_API; -#else -static void **PyArray_API=NULL; -#endif -#endif - -#define PyArray_GetNDArrayCVersion \ - (*(unsigned int (*)(void)) \ - PyArray_API[0]) -#define PyBigArray_Type (*(PyTypeObject *)PyArray_API[1]) -#define PyArray_Type (*(PyTypeObject *)PyArray_API[2]) -#define PyArrayDescr_Type (*(PyTypeObject *)PyArray_API[3]) -#define PyArrayFlags_Type (*(PyTypeObject *)PyArray_API[4]) -#define PyArrayIter_Type (*(PyTypeObject *)PyArray_API[5]) -#define PyArrayMultiIter_Type (*(PyTypeObject *)PyArray_API[6]) -#define NPY_NUMUSERTYPES (*(int *)PyArray_API[7]) -#define PyBoolArrType_Type (*(PyTypeObject *)PyArray_API[8]) -#define _PyArrayScalar_BoolValues ((PyBoolScalarObject *)PyArray_API[9]) -#define PyGenericArrType_Type (*(PyTypeObject *)PyArray_API[10]) -#define PyNumberArrType_Type (*(PyTypeObject *)PyArray_API[11]) -#define PyIntegerArrType_Type (*(PyTypeObject *)PyArray_API[12]) -#define PySignedIntegerArrType_Type (*(PyTypeObject *)PyArray_API[13]) -#define PyUnsignedIntegerArrType_Type (*(PyTypeObject *)PyArray_API[14]) -#define PyInexactArrType_Type (*(PyTypeObject *)PyArray_API[15]) -#define PyFloatingArrType_Type (*(PyTypeObject *)PyArray_API[16]) -#define PyComplexFloatingArrType_Type (*(PyTypeObject *)PyArray_API[17]) -#define PyFlexibleArrType_Type (*(PyTypeObject *)PyArray_API[18]) -#define PyCharacterArrType_Type (*(PyTypeObject *)PyArray_API[19]) -#define PyByteArrType_Type (*(PyTypeObject *)PyArray_API[20]) -#define PyShortArrType_Type (*(PyTypeObject *)PyArray_API[21]) -#define PyIntArrType_Type (*(PyTypeObject *)PyArray_API[22]) -#define PyLongArrType_Type (*(PyTypeObject *)PyArray_API[23]) -#define PyLongLongArrType_Type (*(PyTypeObject *)PyArray_API[24]) -#define PyUByteArrType_Type (*(PyTypeObject *)PyArray_API[25]) -#define PyUShortArrType_Type (*(PyTypeObject *)PyArray_API[26]) -#define PyUIntArrType_Type (*(PyTypeObject *)PyArray_API[27]) -#define PyULongArrType_Type (*(PyTypeObject *)PyArray_API[28]) -#define PyULongLongArrType_Type (*(PyTypeObject *)PyArray_API[29]) -#define PyFloatArrType_Type (*(PyTypeObject *)PyArray_API[30]) -#define PyDoubleArrType_Type (*(PyTypeObject *)PyArray_API[31]) -#define PyLongDoubleArrType_Type (*(PyTypeObject *)PyArray_API[32]) -#define PyCFloatArrType_Type (*(PyTypeObject *)PyArray_API[33]) -#define PyCDoubleArrType_Type (*(PyTypeObject *)PyArray_API[34]) -#define PyCLongDoubleArrType_Type (*(PyTypeObject *)PyArray_API[35]) -#define PyObjectArrType_Type (*(PyTypeObject *)PyArray_API[36]) -#define PyStringArrType_Type (*(PyTypeObject *)PyArray_API[37]) -#define PyUnicodeArrType_Type (*(PyTypeObject *)PyArray_API[38]) -#define PyVoidArrType_Type (*(PyTypeObject *)PyArray_API[39]) -#define PyArray_SetNumericOps \ - (*(int (*)(PyObject *)) \ - PyArray_API[40]) -#define PyArray_GetNumericOps \ - (*(PyObject * (*)(void)) \ - PyArray_API[41]) -#define PyArray_INCREF \ - (*(int (*)(PyArrayObject *)) \ - PyArray_API[42]) -#define PyArray_XDECREF \ - (*(int (*)(PyArrayObject *)) \ - PyArray_API[43]) -#define PyArray_SetStringFunction \ - (*(void (*)(PyObject *, int)) \ - PyArray_API[44]) -#define PyArray_DescrFromType \ - (*(PyArray_Descr * (*)(int)) \ - PyArray_API[45]) -#define PyArray_TypeObjectFromType \ - (*(PyObject * (*)(int)) \ - PyArray_API[46]) -#define PyArray_Zero \ - (*(char * (*)(PyArrayObject *)) \ - PyArray_API[47]) -#define PyArray_One \ - (*(char * (*)(PyArrayObject *)) \ - PyArray_API[48]) -#define PyArray_CastToType \ - (*(PyObject * (*)(PyArrayObject *, PyArray_Descr *, int)) \ - PyArray_API[49]) -#define PyArray_CastTo \ - (*(int (*)(PyArrayObject *, PyArrayObject *)) \ - PyArray_API[50]) -#define PyArray_CastAnyTo \ - (*(int (*)(PyArrayObject *, PyArrayObject *)) \ - PyArray_API[51]) -#define PyArray_CanCastSafely \ - (*(int (*)(int, int)) \ - PyArray_API[52]) -#define PyArray_CanCastTo \ - (*(npy_bool (*)(PyArray_Descr *, PyArray_Descr *)) \ - PyArray_API[53]) -#define PyArray_ObjectType \ - (*(int (*)(PyObject *, int)) \ - PyArray_API[54]) -#define PyArray_DescrFromObject \ - (*(PyArray_Descr * (*)(PyObject *, PyArray_Descr *)) \ - PyArray_API[55]) -#define PyArray_ConvertToCommonType \ - (*(PyArrayObject ** (*)(PyObject *, int *)) \ - PyArray_API[56]) -#define PyArray_DescrFromScalar \ - (*(PyArray_Descr * (*)(PyObject *)) \ - PyArray_API[57]) -#define PyArray_DescrFromTypeObject \ - (*(PyArray_Descr * (*)(PyObject *)) \ - PyArray_API[58]) -#define PyArray_Size \ - (*(npy_intp (*)(PyObject *)) \ - PyArray_API[59]) -#define PyArray_Scalar \ - (*(PyObject * (*)(void *, PyArray_Descr *, PyObject *)) \ - PyArray_API[60]) -#define PyArray_FromScalar \ - (*(PyObject * (*)(PyObject *, PyArray_Descr *)) \ - PyArray_API[61]) -#define PyArray_ScalarAsCtype \ - (*(void (*)(PyObject *, void *)) \ - PyArray_API[62]) -#define PyArray_CastScalarToCtype \ - (*(int (*)(PyObject *, void *, PyArray_Descr *)) \ - PyArray_API[63]) -#define PyArray_CastScalarDirect \ - (*(int (*)(PyObject *, PyArray_Descr *, void *, int)) \ - PyArray_API[64]) -#define PyArray_ScalarFromObject \ - (*(PyObject * (*)(PyObject *)) \ - PyArray_API[65]) -#define PyArray_GetCastFunc \ - (*(PyArray_VectorUnaryFunc * (*)(PyArray_Descr *, int)) \ - PyArray_API[66]) -#define PyArray_FromDims \ - (*(PyObject * (*)(int, int *, int)) \ - PyArray_API[67]) -#define PyArray_FromDimsAndDataAndDescr \ - (*(PyObject * (*)(int, int *, PyArray_Descr *, char *)) \ - PyArray_API[68]) -#define PyArray_FromAny \ - (*(PyObject * (*)(PyObject *, PyArray_Descr *, int, int, int, PyObject *)) \ - PyArray_API[69]) -#define PyArray_EnsureArray \ - (*(PyObject * (*)(PyObject *)) \ - PyArray_API[70]) -#define PyArray_EnsureAnyArray \ - (*(PyObject * (*)(PyObject *)) \ - PyArray_API[71]) -#define PyArray_FromFile \ - (*(PyObject * (*)(FILE *, PyArray_Descr *, npy_intp, char *)) \ - PyArray_API[72]) -#define PyArray_FromString \ - (*(PyObject * (*)(char *, npy_intp, PyArray_Descr *, npy_intp, char *)) \ - PyArray_API[73]) -#define PyArray_FromBuffer \ - (*(PyObject * (*)(PyObject *, PyArray_Descr *, npy_intp, npy_intp)) \ - PyArray_API[74]) -#define PyArray_FromIter \ - (*(PyObject * (*)(PyObject *, PyArray_Descr *, npy_intp)) \ - PyArray_API[75]) -#define PyArray_Return \ - (*(PyObject * (*)(PyArrayObject *)) \ - PyArray_API[76]) -#define PyArray_GetField \ - (*(PyObject * (*)(PyArrayObject *, PyArray_Descr *, int)) \ - PyArray_API[77]) -#define PyArray_SetField \ - (*(int (*)(PyArrayObject *, PyArray_Descr *, int, PyObject *)) \ - PyArray_API[78]) -#define PyArray_Byteswap \ - (*(PyObject * (*)(PyArrayObject *, npy_bool)) \ - PyArray_API[79]) -#define PyArray_Resize \ - (*(PyObject * (*)(PyArrayObject *, PyArray_Dims *, int, NPY_ORDER)) \ - PyArray_API[80]) -#define PyArray_MoveInto \ - (*(int (*)(PyArrayObject *, PyArrayObject *)) \ - PyArray_API[81]) -#define PyArray_CopyInto \ - (*(int (*)(PyArrayObject *, PyArrayObject *)) \ - PyArray_API[82]) -#define PyArray_CopyAnyInto \ - (*(int (*)(PyArrayObject *, PyArrayObject *)) \ - PyArray_API[83]) -#define PyArray_CopyObject \ - (*(int (*)(PyArrayObject *, PyObject *)) \ - PyArray_API[84]) -#define PyArray_NewCopy \ - (*(PyObject * (*)(PyArrayObject *, NPY_ORDER)) \ - PyArray_API[85]) -#define PyArray_ToList \ - (*(PyObject * (*)(PyArrayObject *)) \ - PyArray_API[86]) -#define PyArray_ToString \ - (*(PyObject * (*)(PyArrayObject *, NPY_ORDER)) \ - PyArray_API[87]) -#define PyArray_ToFile \ - (*(int (*)(PyArrayObject *, FILE *, char *, char *)) \ - PyArray_API[88]) -#define PyArray_Dump \ - (*(int (*)(PyObject *, PyObject *, int)) \ - PyArray_API[89]) -#define PyArray_Dumps \ - (*(PyObject * (*)(PyObject *, int)) \ - PyArray_API[90]) -#define PyArray_ValidType \ - (*(int (*)(int)) \ - PyArray_API[91]) -#define PyArray_UpdateFlags \ - (*(void (*)(PyArrayObject *, int)) \ - PyArray_API[92]) -#define PyArray_New \ - (*(PyObject * (*)(PyTypeObject *, int, npy_intp *, int, npy_intp *, void *, int, int, PyObject *)) \ - PyArray_API[93]) -#define PyArray_NewFromDescr \ - (*(PyObject * (*)(PyTypeObject *, PyArray_Descr *, int, npy_intp *, npy_intp *, void *, int, PyObject *)) \ - PyArray_API[94]) -#define PyArray_DescrNew \ - (*(PyArray_Descr * (*)(PyArray_Descr *)) \ - PyArray_API[95]) -#define PyArray_DescrNewFromType \ - (*(PyArray_Descr * (*)(int)) \ - PyArray_API[96]) -#define PyArray_GetPriority \ - (*(double (*)(PyObject *, double)) \ - PyArray_API[97]) -#define PyArray_IterNew \ - (*(PyObject * (*)(PyObject *)) \ - PyArray_API[98]) -#define PyArray_MultiIterNew \ - (*(PyObject * (*)(int, ...)) \ - PyArray_API[99]) -#define PyArray_PyIntAsInt \ - (*(int (*)(PyObject *)) \ - PyArray_API[100]) -#define PyArray_PyIntAsIntp \ - (*(npy_intp (*)(PyObject *)) \ - PyArray_API[101]) -#define PyArray_Broadcast \ - (*(int (*)(PyArrayMultiIterObject *)) \ - PyArray_API[102]) -#define PyArray_FillObjectArray \ - (*(void (*)(PyArrayObject *, PyObject *)) \ - PyArray_API[103]) -#define PyArray_FillWithScalar \ - (*(int (*)(PyArrayObject *, PyObject *)) \ - PyArray_API[104]) -#define PyArray_CheckStrides \ - (*(npy_bool (*)(int, int, npy_intp, npy_intp, npy_intp *, npy_intp *)) \ - PyArray_API[105]) -#define PyArray_DescrNewByteorder \ - (*(PyArray_Descr * (*)(PyArray_Descr *, char)) \ - PyArray_API[106]) -#define PyArray_IterAllButAxis \ - (*(PyObject * (*)(PyObject *, int *)) \ - PyArray_API[107]) -#define PyArray_CheckFromAny \ - (*(PyObject * (*)(PyObject *, PyArray_Descr *, int, int, int, PyObject *)) \ - PyArray_API[108]) -#define PyArray_FromArray \ - (*(PyObject * (*)(PyArrayObject *, PyArray_Descr *, int)) \ - PyArray_API[109]) -#define PyArray_FromInterface \ - (*(PyObject * (*)(PyObject *)) \ - PyArray_API[110]) -#define PyArray_FromStructInterface \ - (*(PyObject * (*)(PyObject *)) \ - PyArray_API[111]) -#define PyArray_FromArrayAttr \ - (*(PyObject * (*)(PyObject *, PyArray_Descr *, PyObject *)) \ - PyArray_API[112]) -#define PyArray_ScalarKind \ - (*(NPY_SCALARKIND (*)(int, PyArrayObject **)) \ - PyArray_API[113]) -#define PyArray_CanCoerceScalar \ - (*(int (*)(int, int, NPY_SCALARKIND)) \ - PyArray_API[114]) -#define PyArray_NewFlagsObject \ - (*(PyObject * (*)(PyObject *)) \ - PyArray_API[115]) -#define PyArray_CanCastScalar \ - (*(npy_bool (*)(PyTypeObject *, PyTypeObject *)) \ - PyArray_API[116]) -#define PyArray_CompareUCS4 \ - (*(int (*)(npy_ucs4 *, npy_ucs4 *, size_t)) \ - PyArray_API[117]) -#define PyArray_RemoveSmallest \ - (*(int (*)(PyArrayMultiIterObject *)) \ - PyArray_API[118]) -#define PyArray_ElementStrides \ - (*(int (*)(PyObject *)) \ - PyArray_API[119]) -#define PyArray_Item_INCREF \ - (*(void (*)(char *, PyArray_Descr *)) \ - PyArray_API[120]) -#define PyArray_Item_XDECREF \ - (*(void (*)(char *, PyArray_Descr *)) \ - PyArray_API[121]) -#define PyArray_FieldNames \ - (*(PyObject * (*)(PyObject *)) \ - PyArray_API[122]) -#define PyArray_Transpose \ - (*(PyObject * (*)(PyArrayObject *, PyArray_Dims *)) \ - PyArray_API[123]) -#define PyArray_TakeFrom \ - (*(PyObject * (*)(PyArrayObject *, PyObject *, int, PyArrayObject *, NPY_CLIPMODE)) \ - PyArray_API[124]) -#define PyArray_PutTo \ - (*(PyObject * (*)(PyArrayObject *, PyObject*, PyObject *, NPY_CLIPMODE)) \ - PyArray_API[125]) -#define PyArray_PutMask \ - (*(PyObject * (*)(PyArrayObject *, PyObject*, PyObject*)) \ - PyArray_API[126]) -#define PyArray_Repeat \ - (*(PyObject * (*)(PyArrayObject *, PyObject *, int)) \ - PyArray_API[127]) -#define PyArray_Choose \ - (*(PyObject * (*)(PyArrayObject *, PyObject *, PyArrayObject *, NPY_CLIPMODE)) \ - PyArray_API[128]) -#define PyArray_Sort \ - (*(int (*)(PyArrayObject *, int, NPY_SORTKIND)) \ - PyArray_API[129]) -#define PyArray_ArgSort \ - (*(PyObject * (*)(PyArrayObject *, int, NPY_SORTKIND)) \ - PyArray_API[130]) -#define PyArray_SearchSorted \ - (*(PyObject * (*)(PyArrayObject *, PyObject *, NPY_SEARCHSIDE, PyObject *)) \ - PyArray_API[131]) -#define PyArray_ArgMax \ - (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \ - PyArray_API[132]) -#define PyArray_ArgMin \ - (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \ - PyArray_API[133]) -#define PyArray_Reshape \ - (*(PyObject * (*)(PyArrayObject *, PyObject *)) \ - PyArray_API[134]) -#define PyArray_Newshape \ - (*(PyObject * (*)(PyArrayObject *, PyArray_Dims *, NPY_ORDER)) \ - PyArray_API[135]) -#define PyArray_Squeeze \ - (*(PyObject * (*)(PyArrayObject *)) \ - PyArray_API[136]) -#define PyArray_View \ - (*(PyObject * (*)(PyArrayObject *, PyArray_Descr *, PyTypeObject *)) \ - PyArray_API[137]) -#define PyArray_SwapAxes \ - (*(PyObject * (*)(PyArrayObject *, int, int)) \ - PyArray_API[138]) -#define PyArray_Max \ - (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \ - PyArray_API[139]) -#define PyArray_Min \ - (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \ - PyArray_API[140]) -#define PyArray_Ptp \ - (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \ - PyArray_API[141]) -#define PyArray_Mean \ - (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *)) \ - PyArray_API[142]) -#define PyArray_Trace \ - (*(PyObject * (*)(PyArrayObject *, int, int, int, int, PyArrayObject *)) \ - PyArray_API[143]) -#define PyArray_Diagonal \ - (*(PyObject * (*)(PyArrayObject *, int, int, int)) \ - PyArray_API[144]) -#define PyArray_Clip \ - (*(PyObject * (*)(PyArrayObject *, PyObject *, PyObject *, PyArrayObject *)) \ - PyArray_API[145]) -#define PyArray_Conjugate \ - (*(PyObject * (*)(PyArrayObject *, PyArrayObject *)) \ - PyArray_API[146]) -#define PyArray_Nonzero \ - (*(PyObject * (*)(PyArrayObject *)) \ - PyArray_API[147]) -#define PyArray_Std \ - (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *, int)) \ - PyArray_API[148]) -#define PyArray_Sum \ - (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *)) \ - PyArray_API[149]) -#define PyArray_CumSum \ - (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *)) \ - PyArray_API[150]) -#define PyArray_Prod \ - (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *)) \ - PyArray_API[151]) -#define PyArray_CumProd \ - (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *)) \ - PyArray_API[152]) -#define PyArray_All \ - (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \ - PyArray_API[153]) -#define PyArray_Any \ - (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \ - PyArray_API[154]) -#define PyArray_Compress \ - (*(PyObject * (*)(PyArrayObject *, PyObject *, int, PyArrayObject *)) \ - PyArray_API[155]) -#define PyArray_Flatten \ - (*(PyObject * (*)(PyArrayObject *, NPY_ORDER)) \ - PyArray_API[156]) -#define PyArray_Ravel \ - (*(PyObject * (*)(PyArrayObject *, NPY_ORDER)) \ - PyArray_API[157]) -#define PyArray_MultiplyList \ - (*(npy_intp (*)(npy_intp *, int)) \ - PyArray_API[158]) -#define PyArray_MultiplyIntList \ - (*(int (*)(int *, int)) \ - PyArray_API[159]) -#define PyArray_GetPtr \ - (*(void * (*)(PyArrayObject *, npy_intp*)) \ - PyArray_API[160]) -#define PyArray_CompareLists \ - (*(int (*)(npy_intp *, npy_intp *, int)) \ - PyArray_API[161]) -#define PyArray_AsCArray \ - (*(int (*)(PyObject **, void *, npy_intp *, int, PyArray_Descr*)) \ - PyArray_API[162]) -#define PyArray_As1D \ - (*(int (*)(PyObject **, char **, int *, int)) \ - PyArray_API[163]) -#define PyArray_As2D \ - (*(int (*)(PyObject **, char ***, int *, int *, int)) \ - PyArray_API[164]) -#define PyArray_Free \ - (*(int (*)(PyObject *, void *)) \ - PyArray_API[165]) -#define PyArray_Converter \ - (*(int (*)(PyObject *, PyObject **)) \ - PyArray_API[166]) -#define PyArray_IntpFromSequence \ - (*(int (*)(PyObject *, npy_intp *, int)) \ - PyArray_API[167]) -#define PyArray_Concatenate \ - (*(PyObject * (*)(PyObject *, int)) \ - PyArray_API[168]) -#define PyArray_InnerProduct \ - (*(PyObject * (*)(PyObject *, PyObject *)) \ - PyArray_API[169]) -#define PyArray_MatrixProduct \ - (*(PyObject * (*)(PyObject *, PyObject *)) \ - PyArray_API[170]) -#define PyArray_CopyAndTranspose \ - (*(PyObject * (*)(PyObject *)) \ - PyArray_API[171]) -#define PyArray_Correlate \ - (*(PyObject * (*)(PyObject *, PyObject *, int)) \ - PyArray_API[172]) -#define PyArray_TypestrConvert \ - (*(int (*)(int, int)) \ - PyArray_API[173]) -#define PyArray_DescrConverter \ - (*(int (*)(PyObject *, PyArray_Descr **)) \ - PyArray_API[174]) -#define PyArray_DescrConverter2 \ - (*(int (*)(PyObject *, PyArray_Descr **)) \ - PyArray_API[175]) -#define PyArray_IntpConverter \ - (*(int (*)(PyObject *, PyArray_Dims *)) \ - PyArray_API[176]) -#define PyArray_BufferConverter \ - (*(int (*)(PyObject *, PyArray_Chunk *)) \ - PyArray_API[177]) -#define PyArray_AxisConverter \ - (*(int (*)(PyObject *, int *)) \ - PyArray_API[178]) -#define PyArray_BoolConverter \ - (*(int (*)(PyObject *, npy_bool *)) \ - PyArray_API[179]) -#define PyArray_ByteorderConverter \ - (*(int (*)(PyObject *, char *)) \ - PyArray_API[180]) -#define PyArray_OrderConverter \ - (*(int (*)(PyObject *, NPY_ORDER *)) \ - PyArray_API[181]) -#define PyArray_EquivTypes \ - (*(unsigned char (*)(PyArray_Descr *, PyArray_Descr *)) \ - PyArray_API[182]) -#define PyArray_Zeros \ - (*(PyObject * (*)(int, npy_intp *, PyArray_Descr *, int)) \ - PyArray_API[183]) -#define PyArray_Empty \ - (*(PyObject * (*)(int, npy_intp *, PyArray_Descr *, int)) \ - PyArray_API[184]) -#define PyArray_Where \ - (*(PyObject * (*)(PyObject *, PyObject *, PyObject *)) \ - PyArray_API[185]) -#define PyArray_Arange \ - (*(PyObject * (*)(double, double, double, int)) \ - PyArray_API[186]) -#define PyArray_ArangeObj \ - (*(PyObject * (*)(PyObject *, PyObject *, PyObject *, PyArray_Descr *)) \ - PyArray_API[187]) -#define PyArray_SortkindConverter \ - (*(int (*)(PyObject *, NPY_SORTKIND *)) \ - PyArray_API[188]) -#define PyArray_LexSort \ - (*(PyObject * (*)(PyObject *, int)) \ - PyArray_API[189]) -#define PyArray_Round \ - (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \ - PyArray_API[190]) -#define PyArray_EquivTypenums \ - (*(unsigned char (*)(int, int)) \ - PyArray_API[191]) -#define PyArray_RegisterDataType \ - (*(int (*)(PyArray_Descr *)) \ - PyArray_API[192]) -#define PyArray_RegisterCastFunc \ - (*(int (*)(PyArray_Descr *, int, PyArray_VectorUnaryFunc *)) \ - PyArray_API[193]) -#define PyArray_RegisterCanCast \ - (*(int (*)(PyArray_Descr *, int, NPY_SCALARKIND)) \ - PyArray_API[194]) -#define PyArray_InitArrFuncs \ - (*(void (*)(PyArray_ArrFuncs *)) \ - PyArray_API[195]) -#define PyArray_IntTupleFromIntp \ - (*(PyObject * (*)(int, npy_intp *)) \ - PyArray_API[196]) -#define PyArray_TypeNumFromName \ - (*(int (*)(char *)) \ - PyArray_API[197]) -#define PyArray_ClipmodeConverter \ - (*(int (*)(PyObject *, NPY_CLIPMODE *)) \ - PyArray_API[198]) -#define PyArray_OutputConverter \ - (*(int (*)(PyObject *, PyArrayObject **)) \ - PyArray_API[199]) -#define PyArray_BroadcastToShape \ - (*(PyObject * (*)(PyObject *, npy_intp *, int)) \ - PyArray_API[200]) -#define _PyArray_SigintHandler \ - (*(void (*)(int)) \ - PyArray_API[201]) -#define _PyArray_GetSigintBuf \ - (*(void* (*)(void)) \ - PyArray_API[202]) -#define PyArray_DescrAlignConverter \ - (*(int (*)(PyObject *, PyArray_Descr **)) \ - PyArray_API[203]) -#define PyArray_DescrAlignConverter2 \ - (*(int (*)(PyObject *, PyArray_Descr **)) \ - PyArray_API[204]) -#define PyArray_SearchsideConverter \ - (*(int (*)(PyObject *, void *)) \ - PyArray_API[205]) -#define PyArray_CheckAxis \ - (*(PyObject * (*)(PyArrayObject *, int *, int)) \ - PyArray_API[206]) -#define PyArray_OverflowMultiplyList \ - (*(npy_intp (*)(npy_intp *, int)) \ - PyArray_API[207]) -#define PyArray_CompareString \ - (*(int (*)(char *, char *, size_t)) \ - PyArray_API[208]) -#define PyArray_MultiIterFromObjects \ - (*(PyObject * (*)(PyObject **, int, int, ...)) \ - PyArray_API[209]) -#define PyArray_GetEndianness \ - (*(int (*)(void)) \ - PyArray_API[210]) -#define PyArray_GetNDArrayCFeatureVersion \ - (*(unsigned int (*)(void)) \ - PyArray_API[211]) -#define PyArray_Correlate2 \ - (*(PyObject * (*)(PyObject *, PyObject *, int)) \ - PyArray_API[212]) -#define PyArray_NeighborhoodIterNew \ - (*(PyObject* (*)(PyArrayIterObject *, npy_intp *, int, PyArrayObject*)) \ - PyArray_API[213]) -#define PyTimeIntegerArrType_Type (*(PyTypeObject *)PyArray_API[214]) -#define PyDatetimeArrType_Type (*(PyTypeObject *)PyArray_API[215]) -#define PyTimedeltaArrType_Type (*(PyTypeObject *)PyArray_API[216]) -#define PyHalfArrType_Type (*(PyTypeObject *)PyArray_API[217]) -#define NpyIter_Type (*(PyTypeObject *)PyArray_API[218]) -#define PyArray_SetDatetimeParseFunction \ - (*(void (*)(PyObject *)) \ - PyArray_API[219]) -#define PyArray_DatetimeToDatetimeStruct \ - (*(void (*)(npy_datetime, NPY_DATETIMEUNIT, npy_datetimestruct *)) \ - PyArray_API[220]) -#define PyArray_TimedeltaToTimedeltaStruct \ - (*(void (*)(npy_timedelta, NPY_DATETIMEUNIT, npy_timedeltastruct *)) \ - PyArray_API[221]) -#define PyArray_DatetimeStructToDatetime \ - (*(npy_datetime (*)(NPY_DATETIMEUNIT, npy_datetimestruct *)) \ - PyArray_API[222]) -#define PyArray_TimedeltaStructToTimedelta \ - (*(npy_datetime (*)(NPY_DATETIMEUNIT, npy_timedeltastruct *)) \ - PyArray_API[223]) -#define NpyIter_New \ - (*(NpyIter * (*)(PyArrayObject *, npy_uint32, NPY_ORDER, NPY_CASTING, PyArray_Descr*)) \ - PyArray_API[224]) -#define NpyIter_MultiNew \ - (*(NpyIter * (*)(int, PyArrayObject **, npy_uint32, NPY_ORDER, NPY_CASTING, npy_uint32 *, PyArray_Descr **)) \ - PyArray_API[225]) -#define NpyIter_AdvancedNew \ - (*(NpyIter * (*)(int, PyArrayObject **, npy_uint32, NPY_ORDER, NPY_CASTING, npy_uint32 *, PyArray_Descr **, int, int **, npy_intp *, npy_intp)) \ - PyArray_API[226]) -#define NpyIter_Copy \ - (*(NpyIter * (*)(NpyIter *)) \ - PyArray_API[227]) -#define NpyIter_Deallocate \ - (*(int (*)(NpyIter *)) \ - PyArray_API[228]) -#define NpyIter_HasDelayedBufAlloc \ - (*(npy_bool (*)(NpyIter *)) \ - PyArray_API[229]) -#define NpyIter_HasExternalLoop \ - (*(npy_bool (*)(NpyIter *)) \ - PyArray_API[230]) -#define NpyIter_EnableExternalLoop \ - (*(int (*)(NpyIter *)) \ - PyArray_API[231]) -#define NpyIter_GetInnerStrideArray \ - (*(npy_intp * (*)(NpyIter *)) \ - PyArray_API[232]) -#define NpyIter_GetInnerLoopSizePtr \ - (*(npy_intp * (*)(NpyIter *)) \ - PyArray_API[233]) -#define NpyIter_Reset \ - (*(int (*)(NpyIter *, char **)) \ - PyArray_API[234]) -#define NpyIter_ResetBasePointers \ - (*(int (*)(NpyIter *, char **, char **)) \ - PyArray_API[235]) -#define NpyIter_ResetToIterIndexRange \ - (*(int (*)(NpyIter *, npy_intp, npy_intp, char **)) \ - PyArray_API[236]) -#define NpyIter_GetNDim \ - (*(int (*)(NpyIter *)) \ - PyArray_API[237]) -#define NpyIter_GetNOp \ - (*(int (*)(NpyIter *)) \ - PyArray_API[238]) -#define NpyIter_GetIterNext \ - (*(NpyIter_IterNextFunc * (*)(NpyIter *, char **)) \ - PyArray_API[239]) -#define NpyIter_GetIterSize \ - (*(npy_intp (*)(NpyIter *)) \ - PyArray_API[240]) -#define NpyIter_GetIterIndexRange \ - (*(void (*)(NpyIter *, npy_intp *, npy_intp *)) \ - PyArray_API[241]) -#define NpyIter_GetIterIndex \ - (*(npy_intp (*)(NpyIter *)) \ - PyArray_API[242]) -#define NpyIter_GotoIterIndex \ - (*(int (*)(NpyIter *, npy_intp)) \ - PyArray_API[243]) -#define NpyIter_HasMultiIndex \ - (*(npy_bool (*)(NpyIter *)) \ - PyArray_API[244]) -#define NpyIter_GetShape \ - (*(int (*)(NpyIter *, npy_intp *)) \ - PyArray_API[245]) -#define NpyIter_GetGetMultiIndex \ - (*(NpyIter_GetMultiIndexFunc * (*)(NpyIter *, char **)) \ - PyArray_API[246]) -#define NpyIter_GotoMultiIndex \ - (*(int (*)(NpyIter *, npy_intp *)) \ - PyArray_API[247]) -#define NpyIter_RemoveMultiIndex \ - (*(int (*)(NpyIter *)) \ - PyArray_API[248]) -#define NpyIter_HasIndex \ - (*(npy_bool (*)(NpyIter *)) \ - PyArray_API[249]) -#define NpyIter_IsBuffered \ - (*(npy_bool (*)(NpyIter *)) \ - PyArray_API[250]) -#define NpyIter_IsGrowInner \ - (*(npy_bool (*)(NpyIter *)) \ - PyArray_API[251]) -#define NpyIter_GetBufferSize \ - (*(npy_intp (*)(NpyIter *)) \ - PyArray_API[252]) -#define NpyIter_GetIndexPtr \ - (*(npy_intp * (*)(NpyIter *)) \ - PyArray_API[253]) -#define NpyIter_GotoIndex \ - (*(int (*)(NpyIter *, npy_intp)) \ - PyArray_API[254]) -#define NpyIter_GetDataPtrArray \ - (*(char ** (*)(NpyIter *)) \ - PyArray_API[255]) -#define NpyIter_GetDescrArray \ - (*(PyArray_Descr ** (*)(NpyIter *)) \ - PyArray_API[256]) -#define NpyIter_GetOperandArray \ - (*(PyArrayObject ** (*)(NpyIter *)) \ - PyArray_API[257]) -#define NpyIter_GetIterView \ - (*(PyArrayObject * (*)(NpyIter *, npy_intp)) \ - PyArray_API[258]) -#define NpyIter_GetReadFlags \ - (*(void (*)(NpyIter *, char *)) \ - PyArray_API[259]) -#define NpyIter_GetWriteFlags \ - (*(void (*)(NpyIter *, char *)) \ - PyArray_API[260]) -#define NpyIter_DebugPrint \ - (*(void (*)(NpyIter *)) \ - PyArray_API[261]) -#define NpyIter_IterationNeedsAPI \ - (*(npy_bool (*)(NpyIter *)) \ - PyArray_API[262]) -#define NpyIter_GetInnerFixedStrideArray \ - (*(void (*)(NpyIter *, npy_intp *)) \ - PyArray_API[263]) -#define NpyIter_RemoveAxis \ - (*(int (*)(NpyIter *, int)) \ - PyArray_API[264]) -#define NpyIter_GetAxisStrideArray \ - (*(npy_intp * (*)(NpyIter *, int)) \ - PyArray_API[265]) -#define NpyIter_RequiresBuffering \ - (*(npy_bool (*)(NpyIter *)) \ - PyArray_API[266]) -#define NpyIter_GetInitialDataPtrArray \ - (*(char ** (*)(NpyIter *)) \ - PyArray_API[267]) -#define NpyIter_CreateCompatibleStrides \ - (*(int (*)(NpyIter *, npy_intp, npy_intp *)) \ - PyArray_API[268]) -#define PyArray_CastingConverter \ - (*(int (*)(PyObject *, NPY_CASTING *)) \ - PyArray_API[269]) -#define PyArray_CountNonzero \ - (*(npy_intp (*)(PyArrayObject *)) \ - PyArray_API[270]) -#define PyArray_PromoteTypes \ - (*(PyArray_Descr * (*)(PyArray_Descr *, PyArray_Descr *)) \ - PyArray_API[271]) -#define PyArray_MinScalarType \ - (*(PyArray_Descr * (*)(PyArrayObject *)) \ - PyArray_API[272]) -#define PyArray_ResultType \ - (*(PyArray_Descr * (*)(npy_intp, PyArrayObject **, npy_intp, PyArray_Descr **)) \ - PyArray_API[273]) -#define PyArray_CanCastArrayTo \ - (*(npy_bool (*)(PyArrayObject *, PyArray_Descr *, NPY_CASTING)) \ - PyArray_API[274]) -#define PyArray_CanCastTypeTo \ - (*(npy_bool (*)(PyArray_Descr *, PyArray_Descr *, NPY_CASTING)) \ - PyArray_API[275]) -#define PyArray_EinsteinSum \ - (*(PyArrayObject * (*)(char *, npy_intp, PyArrayObject **, PyArray_Descr *, NPY_ORDER, NPY_CASTING, PyArrayObject *)) \ - PyArray_API[276]) -#define PyArray_NewLikeArray \ - (*(PyObject * (*)(PyArrayObject *, NPY_ORDER, PyArray_Descr *, int)) \ - PyArray_API[277]) -#define PyArray_GetArrayParamsFromObject \ - (*(int (*)(PyObject *, PyArray_Descr *, npy_bool, PyArray_Descr **, int *, npy_intp *, PyArrayObject **, PyObject *)) \ - PyArray_API[278]) -#define PyArray_ConvertClipmodeSequence \ - (*(int (*)(PyObject *, NPY_CLIPMODE *, int)) \ - PyArray_API[279]) -#define PyArray_MatrixProduct2 \ - (*(PyObject * (*)(PyObject *, PyObject *, PyArrayObject*)) \ - PyArray_API[280]) -#define NpyIter_IsFirstVisit \ - (*(npy_bool (*)(NpyIter *, int)) \ - PyArray_API[281]) -#define PyArray_SetBaseObject \ - (*(int (*)(PyArrayObject *, PyObject *)) \ - PyArray_API[282]) -#define PyArray_CreateSortedStridePerm \ - (*(void (*)(int, npy_intp *, npy_stride_sort_item *)) \ - PyArray_API[283]) -#define PyArray_RemoveAxesInPlace \ - (*(void (*)(PyArrayObject *, npy_bool *)) \ - PyArray_API[284]) -#define PyArray_DebugPrint \ - (*(void (*)(PyArrayObject *)) \ - PyArray_API[285]) -#define PyArray_FailUnlessWriteable \ - (*(int (*)(PyArrayObject *, const char *)) \ - PyArray_API[286]) -#define PyArray_SetUpdateIfCopyBase \ - (*(int (*)(PyArrayObject *, PyArrayObject *)) \ - PyArray_API[287]) -#define PyDataMem_NEW \ - (*(void * (*)(size_t)) \ - PyArray_API[288]) -#define PyDataMem_FREE \ - (*(void (*)(void *)) \ - PyArray_API[289]) -#define PyDataMem_RENEW \ - (*(void * (*)(void *, size_t)) \ - PyArray_API[290]) -#define PyDataMem_SetEventHook \ - (*(PyDataMem_EventHookFunc * (*)(PyDataMem_EventHookFunc *, void *, void **)) \ - PyArray_API[291]) -#define NPY_DEFAULT_ASSIGN_CASTING (*(NPY_CASTING *)PyArray_API[292]) - -#if !defined(NO_IMPORT_ARRAY) && !defined(NO_IMPORT) -static int -_import_array(void) -{ - int st; - PyObject *numpy = PyImport_ImportModule("numpy.core.multiarray"); - PyObject *c_api = NULL; - - if (numpy == NULL) { - PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); - return -1; - } - c_api = PyObject_GetAttrString(numpy, "_ARRAY_API"); - Py_DECREF(numpy); - if (c_api == NULL) { - PyErr_SetString(PyExc_AttributeError, "_ARRAY_API not found"); - return -1; - } - -#if PY_VERSION_HEX >= 0x03000000 - if (!PyCapsule_CheckExact(c_api)) { - PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is not PyCapsule object"); - Py_DECREF(c_api); - return -1; - } - PyArray_API = (void **)PyCapsule_GetPointer(c_api, NULL); -#else - if (!PyCObject_Check(c_api)) { - PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is not PyCObject object"); - Py_DECREF(c_api); - return -1; - } - PyArray_API = (void **)PyCObject_AsVoidPtr(c_api); -#endif - Py_DECREF(c_api); - if (PyArray_API == NULL) { - PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is NULL pointer"); - return -1; - } - - /* Perform runtime check of C API version */ - if (NPY_VERSION != PyArray_GetNDArrayCVersion()) { - PyErr_Format(PyExc_RuntimeError, "module compiled against "\ - "ABI version %x but this version of numpy is %x", \ - (int) NPY_VERSION, (int) PyArray_GetNDArrayCVersion()); - return -1; - } - if (NPY_FEATURE_VERSION > PyArray_GetNDArrayCFeatureVersion()) { - PyErr_Format(PyExc_RuntimeError, "module compiled against "\ - "API version %x but this version of numpy is %x", \ - (int) NPY_FEATURE_VERSION, (int) PyArray_GetNDArrayCFeatureVersion()); - return -1; - } - - /* - * Perform runtime check of endianness and check it matches the one set by - * the headers (npy_endian.h) as a safeguard - */ - st = PyArray_GetEndianness(); - if (st == NPY_CPU_UNKNOWN_ENDIAN) { - PyErr_Format(PyExc_RuntimeError, "FATAL: module compiled as unknown endian"); - return -1; - } -#if NPY_BYTE_ORDER == NPY_BIG_ENDIAN - if (st != NPY_CPU_BIG) { - PyErr_Format(PyExc_RuntimeError, "FATAL: module compiled as "\ - "big endian, but detected different endianness at runtime"); - return -1; - } -#elif NPY_BYTE_ORDER == NPY_LITTLE_ENDIAN - if (st != NPY_CPU_LITTLE) { - PyErr_Format(PyExc_RuntimeError, "FATAL: module compiled as "\ - "little endian, but detected different endianness at runtime"); - return -1; - } -#endif - - return 0; -} - -#if PY_VERSION_HEX >= 0x03000000 -#define NUMPY_IMPORT_ARRAY_RETVAL NULL -#else -#define NUMPY_IMPORT_ARRAY_RETVAL -#endif - -#define import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return NUMPY_IMPORT_ARRAY_RETVAL; } } - -#define import_array1(ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return ret; } } - -#define import_array2(msg, ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, msg); return ret; } } - -#endif - -#endif diff --git a/include/numpy/__ufunc_api.h b/include/numpy/__ufunc_api.h deleted file mode 100644 index fd81d07b5..000000000 --- a/include/numpy/__ufunc_api.h +++ /dev/null @@ -1,323 +0,0 @@ - -#ifdef _UMATHMODULE - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION -extern NPY_NO_EXPORT PyTypeObject PyUFunc_Type; -#else -NPY_NO_EXPORT PyTypeObject PyUFunc_Type; -#endif - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - extern NPY_NO_EXPORT PyTypeObject PyUFunc_Type; -#else - NPY_NO_EXPORT PyTypeObject PyUFunc_Type; -#endif - -NPY_NO_EXPORT PyObject * PyUFunc_FromFuncAndData \ - (PyUFuncGenericFunction *, void **, char *, int, int, int, int, char *, char *, int); -NPY_NO_EXPORT int PyUFunc_RegisterLoopForType \ - (PyUFuncObject *, int, PyUFuncGenericFunction, int *, void *); -NPY_NO_EXPORT int PyUFunc_GenericFunction \ - (PyUFuncObject *, PyObject *, PyObject *, PyArrayObject **); -NPY_NO_EXPORT void PyUFunc_f_f_As_d_d \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_d_d \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_f_f \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_g_g \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_F_F_As_D_D \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_F_F \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_D_D \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_G_G \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_O_O \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_ff_f_As_dd_d \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_ff_f \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_dd_d \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_gg_g \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_FF_F_As_DD_D \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_DD_D \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_FF_F \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_GG_G \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_OO_O \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_O_O_method \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_OO_O_method \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_On_Om \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT int PyUFunc_GetPyValues \ - (char *, int *, int *, PyObject **); -NPY_NO_EXPORT int PyUFunc_checkfperr \ - (int, PyObject *, int *); -NPY_NO_EXPORT void PyUFunc_clearfperr \ - (void); -NPY_NO_EXPORT int PyUFunc_getfperr \ - (void); -NPY_NO_EXPORT int PyUFunc_handlefperr \ - (int, PyObject *, int, int *); -NPY_NO_EXPORT int PyUFunc_ReplaceLoopBySignature \ - (PyUFuncObject *, PyUFuncGenericFunction, int *, PyUFuncGenericFunction *); -NPY_NO_EXPORT PyObject * PyUFunc_FromFuncAndDataAndSignature \ - (PyUFuncGenericFunction *, void **, char *, int, int, int, int, char *, char *, int, const char *); -NPY_NO_EXPORT int PyUFunc_SetUsesArraysAsData \ - (void **, size_t); -NPY_NO_EXPORT void PyUFunc_e_e \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_e_e_As_f_f \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_e_e_As_d_d \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_ee_e \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_ee_e_As_ff_f \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT void PyUFunc_ee_e_As_dd_d \ - (char **, npy_intp *, npy_intp *, void *); -NPY_NO_EXPORT int PyUFunc_DefaultTypeResolver \ - (PyUFuncObject *, NPY_CASTING, PyArrayObject **, PyObject *, PyArray_Descr **); -NPY_NO_EXPORT int PyUFunc_ValidateCasting \ - (PyUFuncObject *, NPY_CASTING, PyArrayObject **, PyArray_Descr **); - -#else - -#if defined(PY_UFUNC_UNIQUE_SYMBOL) -#define PyUFunc_API PY_UFUNC_UNIQUE_SYMBOL -#endif - -#if defined(NO_IMPORT) || defined(NO_IMPORT_UFUNC) -extern void **PyUFunc_API; -#else -#if defined(PY_UFUNC_UNIQUE_SYMBOL) -void **PyUFunc_API; -#else -static void **PyUFunc_API=NULL; -#endif -#endif - -#define PyUFunc_Type (*(PyTypeObject *)PyUFunc_API[0]) -#define PyUFunc_FromFuncAndData \ - (*(PyObject * (*)(PyUFuncGenericFunction *, void **, char *, int, int, int, int, char *, char *, int)) \ - PyUFunc_API[1]) -#define PyUFunc_RegisterLoopForType \ - (*(int (*)(PyUFuncObject *, int, PyUFuncGenericFunction, int *, void *)) \ - PyUFunc_API[2]) -#define PyUFunc_GenericFunction \ - (*(int (*)(PyUFuncObject *, PyObject *, PyObject *, PyArrayObject **)) \ - PyUFunc_API[3]) -#define PyUFunc_f_f_As_d_d \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[4]) -#define PyUFunc_d_d \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[5]) -#define PyUFunc_f_f \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[6]) -#define PyUFunc_g_g \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[7]) -#define PyUFunc_F_F_As_D_D \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[8]) -#define PyUFunc_F_F \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[9]) -#define PyUFunc_D_D \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[10]) -#define PyUFunc_G_G \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[11]) -#define PyUFunc_O_O \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[12]) -#define PyUFunc_ff_f_As_dd_d \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[13]) -#define PyUFunc_ff_f \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[14]) -#define PyUFunc_dd_d \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[15]) -#define PyUFunc_gg_g \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[16]) -#define PyUFunc_FF_F_As_DD_D \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[17]) -#define PyUFunc_DD_D \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[18]) -#define PyUFunc_FF_F \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[19]) -#define PyUFunc_GG_G \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[20]) -#define PyUFunc_OO_O \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[21]) -#define PyUFunc_O_O_method \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[22]) -#define PyUFunc_OO_O_method \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[23]) -#define PyUFunc_On_Om \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[24]) -#define PyUFunc_GetPyValues \ - (*(int (*)(char *, int *, int *, PyObject **)) \ - PyUFunc_API[25]) -#define PyUFunc_checkfperr \ - (*(int (*)(int, PyObject *, int *)) \ - PyUFunc_API[26]) -#define PyUFunc_clearfperr \ - (*(void (*)(void)) \ - PyUFunc_API[27]) -#define PyUFunc_getfperr \ - (*(int (*)(void)) \ - PyUFunc_API[28]) -#define PyUFunc_handlefperr \ - (*(int (*)(int, PyObject *, int, int *)) \ - PyUFunc_API[29]) -#define PyUFunc_ReplaceLoopBySignature \ - (*(int (*)(PyUFuncObject *, PyUFuncGenericFunction, int *, PyUFuncGenericFunction *)) \ - PyUFunc_API[30]) -#define PyUFunc_FromFuncAndDataAndSignature \ - (*(PyObject * (*)(PyUFuncGenericFunction *, void **, char *, int, int, int, int, char *, char *, int, const char *)) \ - PyUFunc_API[31]) -#define PyUFunc_SetUsesArraysAsData \ - (*(int (*)(void **, size_t)) \ - PyUFunc_API[32]) -#define PyUFunc_e_e \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[33]) -#define PyUFunc_e_e_As_f_f \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[34]) -#define PyUFunc_e_e_As_d_d \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[35]) -#define PyUFunc_ee_e \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[36]) -#define PyUFunc_ee_e_As_ff_f \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[37]) -#define PyUFunc_ee_e_As_dd_d \ - (*(void (*)(char **, npy_intp *, npy_intp *, void *)) \ - PyUFunc_API[38]) -#define PyUFunc_DefaultTypeResolver \ - (*(int (*)(PyUFuncObject *, NPY_CASTING, PyArrayObject **, PyObject *, PyArray_Descr **)) \ - PyUFunc_API[39]) -#define PyUFunc_ValidateCasting \ - (*(int (*)(PyUFuncObject *, NPY_CASTING, PyArrayObject **, PyArray_Descr **)) \ - PyUFunc_API[40]) - -static int -_import_umath(void) -{ - PyObject *numpy = PyImport_ImportModule("numpy.core.umath"); - PyObject *c_api = NULL; - - if (numpy == NULL) { - PyErr_SetString(PyExc_ImportError, "numpy.core.umath failed to import"); - return -1; - } - c_api = PyObject_GetAttrString(numpy, "_UFUNC_API"); - Py_DECREF(numpy); - if (c_api == NULL) { - PyErr_SetString(PyExc_AttributeError, "_UFUNC_API not found"); - return -1; - } - -#if PY_VERSION_HEX >= 0x03000000 - if (!PyCapsule_CheckExact(c_api)) { - PyErr_SetString(PyExc_RuntimeError, "_UFUNC_API is not PyCapsule object"); - Py_DECREF(c_api); - return -1; - } - PyUFunc_API = (void **)PyCapsule_GetPointer(c_api, NULL); -#else - if (!PyCObject_Check(c_api)) { - PyErr_SetString(PyExc_RuntimeError, "_UFUNC_API is not PyCObject object"); - Py_DECREF(c_api); - return -1; - } - PyUFunc_API = (void **)PyCObject_AsVoidPtr(c_api); -#endif - Py_DECREF(c_api); - if (PyUFunc_API == NULL) { - PyErr_SetString(PyExc_RuntimeError, "_UFUNC_API is NULL pointer"); - return -1; - } - return 0; -} - -#if PY_VERSION_HEX >= 0x03000000 -#define NUMPY_IMPORT_UMATH_RETVAL NULL -#else -#define NUMPY_IMPORT_UMATH_RETVAL -#endif - -#define import_umath() \ - do {\ - UFUNC_NOFPE\ - if (_import_umath() < 0) {\ - PyErr_Print();\ - PyErr_SetString(PyExc_ImportError,\ - "numpy.core.umath failed to import");\ - return NUMPY_IMPORT_UMATH_RETVAL;\ - }\ - } while(0) - -#define import_umath1(ret) \ - do {\ - UFUNC_NOFPE\ - if (_import_umath() < 0) {\ - PyErr_Print();\ - PyErr_SetString(PyExc_ImportError,\ - "numpy.core.umath failed to import");\ - return ret;\ - }\ - } while(0) - -#define import_umath2(ret, msg) \ - do {\ - UFUNC_NOFPE\ - if (_import_umath() < 0) {\ - PyErr_Print();\ - PyErr_SetString(PyExc_ImportError, msg);\ - return ret;\ - }\ - } while(0) - -#define import_ufunc() \ - do {\ - UFUNC_NOFPE\ - if (_import_umath() < 0) {\ - PyErr_Print();\ - PyErr_SetString(PyExc_ImportError,\ - "numpy.core.umath failed to import");\ - }\ - } while(0) - -#endif diff --git a/include/numpy/_neighborhood_iterator_imp.h b/include/numpy/_neighborhood_iterator_imp.h deleted file mode 100644 index e8860cbc7..000000000 --- a/include/numpy/_neighborhood_iterator_imp.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef _NPY_INCLUDE_NEIGHBORHOOD_IMP -#error You should not include this header directly -#endif -/* - * Private API (here for inline) - */ -static NPY_INLINE int -_PyArrayNeighborhoodIter_IncrCoord(PyArrayNeighborhoodIterObject* iter); - -/* - * Update to next item of the iterator - * - * Note: this simply increment the coordinates vector, last dimension - * incremented first , i.e, for dimension 3 - * ... - * -1, -1, -1 - * -1, -1, 0 - * -1, -1, 1 - * .... - * -1, 0, -1 - * -1, 0, 0 - * .... - * 0, -1, -1 - * 0, -1, 0 - * .... - */ -#define _UPDATE_COORD_ITER(c) \ - wb = iter->coordinates[c] < iter->bounds[c][1]; \ - if (wb) { \ - iter->coordinates[c] += 1; \ - return 0; \ - } \ - else { \ - iter->coordinates[c] = iter->bounds[c][0]; \ - } - -static NPY_INLINE int -_PyArrayNeighborhoodIter_IncrCoord(PyArrayNeighborhoodIterObject* iter) -{ - npy_intp i, wb; - - for (i = iter->nd - 1; i >= 0; --i) { - _UPDATE_COORD_ITER(i) - } - - return 0; -} - -/* - * Version optimized for 2d arrays, manual loop unrolling - */ -static NPY_INLINE int -_PyArrayNeighborhoodIter_IncrCoord2D(PyArrayNeighborhoodIterObject* iter) -{ - npy_intp wb; - - _UPDATE_COORD_ITER(1) - _UPDATE_COORD_ITER(0) - - return 0; -} -#undef _UPDATE_COORD_ITER - -/* - * Advance to the next neighbour - */ -static NPY_INLINE int -PyArrayNeighborhoodIter_Next(PyArrayNeighborhoodIterObject* iter) -{ - _PyArrayNeighborhoodIter_IncrCoord (iter); - iter->dataptr = iter->translate((PyArrayIterObject*)iter, iter->coordinates); - - return 0; -} - -/* - * Reset functions - */ -static NPY_INLINE int -PyArrayNeighborhoodIter_Reset(PyArrayNeighborhoodIterObject* iter) -{ - npy_intp i; - - for (i = 0; i < iter->nd; ++i) { - iter->coordinates[i] = iter->bounds[i][0]; - } - iter->dataptr = iter->translate((PyArrayIterObject*)iter, iter->coordinates); - - return 0; -} diff --git a/include/numpy/_numpyconfig.h b/include/numpy/_numpyconfig.h deleted file mode 100644 index d55ffc38d..000000000 --- a/include/numpy/_numpyconfig.h +++ /dev/null @@ -1,29 +0,0 @@ -#define NPY_SIZEOF_SHORT SIZEOF_SHORT -#define NPY_SIZEOF_INT SIZEOF_INT -#define NPY_SIZEOF_LONG SIZEOF_LONG -#define NPY_SIZEOF_FLOAT 4 -#define NPY_SIZEOF_COMPLEX_FLOAT 8 -#define NPY_SIZEOF_DOUBLE 8 -#define NPY_SIZEOF_COMPLEX_DOUBLE 16 -#define NPY_SIZEOF_LONGDOUBLE 16 -#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32 -#define NPY_SIZEOF_PY_INTPTR_T 8 -#define NPY_SIZEOF_PY_LONG_LONG 8 -#define NPY_SIZEOF_LONGLONG 8 -#define NPY_NO_SMP 0 -#define NPY_HAVE_DECL_ISNAN -#define NPY_HAVE_DECL_ISINF -#define NPY_HAVE_DECL_ISFINITE -#define NPY_HAVE_DECL_SIGNBIT -#define NPY_USE_C99_COMPLEX 1 -#define NPY_HAVE_COMPLEX_DOUBLE 1 -#define NPY_HAVE_COMPLEX_FLOAT 1 -#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1 -#define NPY_USE_C99_FORMATS 1 -#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) -#define NPY_ABI_VERSION 0x01000009 -#define NPY_API_VERSION 0x00000007 - -#ifndef __STDC_FORMAT_MACROS -#define __STDC_FORMAT_MACROS 1 -#endif diff --git a/include/numpy/arrayobject.h b/include/numpy/arrayobject.h deleted file mode 100644 index a84766f63..000000000 --- a/include/numpy/arrayobject.h +++ /dev/null @@ -1,22 +0,0 @@ - -/* This expects the following variables to be defined (besides - the usual ones from pyconfig.h - - SIZEOF_LONG_DOUBLE -- sizeof(long double) or sizeof(double) if no - long double is present on platform. - CHAR_BIT -- number of bits in a char (usually 8) - (should be in limits.h) - -*/ - -#ifndef Py_ARRAYOBJECT_H -#define Py_ARRAYOBJECT_H - -#include "ndarrayobject.h" -#include "npy_interrupt.h" - -#ifdef NPY_NO_PREFIX -#include "noprefix.h" -#endif - -#endif diff --git a/include/numpy/arrayscalars.h b/include/numpy/arrayscalars.h deleted file mode 100644 index 64450e713..000000000 --- a/include/numpy/arrayscalars.h +++ /dev/null @@ -1,175 +0,0 @@ -#ifndef _NPY_ARRAYSCALARS_H_ -#define _NPY_ARRAYSCALARS_H_ - -#ifndef _MULTIARRAYMODULE -typedef struct { - PyObject_HEAD - npy_bool obval; -} PyBoolScalarObject; -#endif - - -typedef struct { - PyObject_HEAD - signed char obval; -} PyByteScalarObject; - - -typedef struct { - PyObject_HEAD - short obval; -} PyShortScalarObject; - - -typedef struct { - PyObject_HEAD - int obval; -} PyIntScalarObject; - - -typedef struct { - PyObject_HEAD - long obval; -} PyLongScalarObject; - - -typedef struct { - PyObject_HEAD - npy_longlong obval; -} PyLongLongScalarObject; - - -typedef struct { - PyObject_HEAD - unsigned char obval; -} PyUByteScalarObject; - - -typedef struct { - PyObject_HEAD - unsigned short obval; -} PyUShortScalarObject; - - -typedef struct { - PyObject_HEAD - unsigned int obval; -} PyUIntScalarObject; - - -typedef struct { - PyObject_HEAD - unsigned long obval; -} PyULongScalarObject; - - -typedef struct { - PyObject_HEAD - npy_ulonglong obval; -} PyULongLongScalarObject; - - -typedef struct { - PyObject_HEAD - npy_half obval; -} PyHalfScalarObject; - - -typedef struct { - PyObject_HEAD - float obval; -} PyFloatScalarObject; - - -typedef struct { - PyObject_HEAD - double obval; -} PyDoubleScalarObject; - - -typedef struct { - PyObject_HEAD - npy_longdouble obval; -} PyLongDoubleScalarObject; - - -typedef struct { - PyObject_HEAD - npy_cfloat obval; -} PyCFloatScalarObject; - - -typedef struct { - PyObject_HEAD - npy_cdouble obval; -} PyCDoubleScalarObject; - - -typedef struct { - PyObject_HEAD - npy_clongdouble obval; -} PyCLongDoubleScalarObject; - - -typedef struct { - PyObject_HEAD - PyObject * obval; -} PyObjectScalarObject; - -typedef struct { - PyObject_HEAD - npy_datetime obval; - PyArray_DatetimeMetaData obmeta; -} PyDatetimeScalarObject; - -typedef struct { - PyObject_HEAD - npy_timedelta obval; - PyArray_DatetimeMetaData obmeta; -} PyTimedeltaScalarObject; - - -typedef struct { - PyObject_HEAD - char obval; -} PyScalarObject; - -#define PyStringScalarObject PyStringObject -#define PyUnicodeScalarObject PyUnicodeObject - -typedef struct { - PyObject_VAR_HEAD - char *obval; - PyArray_Descr *descr; - int flags; - PyObject *base; -} PyVoidScalarObject; - -/* Macros - PyScalarObject - PyArrType_Type - are defined in ndarrayobject.h -*/ - -#define PyArrayScalar_False ((PyObject *)(&(_PyArrayScalar_BoolValues[0]))) -#define PyArrayScalar_True ((PyObject *)(&(_PyArrayScalar_BoolValues[1]))) -#define PyArrayScalar_FromLong(i) \ - ((PyObject *)(&(_PyArrayScalar_BoolValues[((i)!=0)]))) -#define PyArrayScalar_RETURN_BOOL_FROM_LONG(i) \ - return Py_INCREF(PyArrayScalar_FromLong(i)), \ - PyArrayScalar_FromLong(i) -#define PyArrayScalar_RETURN_FALSE \ - return Py_INCREF(PyArrayScalar_False), \ - PyArrayScalar_False -#define PyArrayScalar_RETURN_TRUE \ - return Py_INCREF(PyArrayScalar_True), \ - PyArrayScalar_True - -#define PyArrayScalar_New(cls) \ - Py##cls##ArrType_Type.tp_alloc(&Py##cls##ArrType_Type, 0) -#define PyArrayScalar_VAL(obj, cls) \ - ((Py##cls##ScalarObject *)obj)->obval -#define PyArrayScalar_ASSIGN(obj, cls, val) \ - PyArrayScalar_VAL(obj, cls) = val - -#endif diff --git a/include/numpy/halffloat.h b/include/numpy/halffloat.h deleted file mode 100644 index 944f0ea34..000000000 --- a/include/numpy/halffloat.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef __NPY_HALFFLOAT_H__ -#define __NPY_HALFFLOAT_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Half-precision routines - */ - -/* Conversions */ -float npy_half_to_float(npy_half h); -double npy_half_to_double(npy_half h); -npy_half npy_float_to_half(float f); -npy_half npy_double_to_half(double d); -/* Comparisons */ -int npy_half_eq(npy_half h1, npy_half h2); -int npy_half_ne(npy_half h1, npy_half h2); -int npy_half_le(npy_half h1, npy_half h2); -int npy_half_lt(npy_half h1, npy_half h2); -int npy_half_ge(npy_half h1, npy_half h2); -int npy_half_gt(npy_half h1, npy_half h2); -/* faster *_nonan variants for when you know h1 and h2 are not NaN */ -int npy_half_eq_nonan(npy_half h1, npy_half h2); -int npy_half_lt_nonan(npy_half h1, npy_half h2); -int npy_half_le_nonan(npy_half h1, npy_half h2); -/* Miscellaneous functions */ -int npy_half_iszero(npy_half h); -int npy_half_isnan(npy_half h); -int npy_half_isinf(npy_half h); -int npy_half_isfinite(npy_half h); -int npy_half_signbit(npy_half h); -npy_half npy_half_copysign(npy_half x, npy_half y); -npy_half npy_half_spacing(npy_half h); -npy_half npy_half_nextafter(npy_half x, npy_half y); - -/* - * Half-precision constants - */ - -#define NPY_HALF_ZERO (0x0000u) -#define NPY_HALF_PZERO (0x0000u) -#define NPY_HALF_NZERO (0x8000u) -#define NPY_HALF_ONE (0x3c00u) -#define NPY_HALF_NEGONE (0xbc00u) -#define NPY_HALF_PINF (0x7c00u) -#define NPY_HALF_NINF (0xfc00u) -#define NPY_HALF_NAN (0x7e00u) - -#define NPY_MAX_HALF (0x7bffu) - -/* - * Bit-level conversions - */ - -npy_uint16 npy_floatbits_to_halfbits(npy_uint32 f); -npy_uint16 npy_doublebits_to_halfbits(npy_uint64 d); -npy_uint32 npy_halfbits_to_floatbits(npy_uint16 h); -npy_uint64 npy_halfbits_to_doublebits(npy_uint16 h); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/numpy/multiarray_api.txt b/include/numpy/multiarray_api.txt deleted file mode 100644 index 7e588f067..000000000 --- a/include/numpy/multiarray_api.txt +++ /dev/null @@ -1,2375 +0,0 @@ - -=========== -Numpy C-API -=========== -:: - - unsigned int - PyArray_GetNDArrayCVersion(void ) - - -Included at the very first so not auto-grabbed and thus not labeled. - -:: - - int - PyArray_SetNumericOps(PyObject *dict) - -Set internal structure with number functions that all arrays will use - -:: - - PyObject * - PyArray_GetNumericOps(void ) - -Get dictionary showing number functions that all arrays will use - -:: - - int - PyArray_INCREF(PyArrayObject *mp) - -For object arrays, increment all internal references. - -:: - - int - PyArray_XDECREF(PyArrayObject *mp) - -Decrement all internal references for object arrays. -(or arrays with object fields) - -:: - - void - PyArray_SetStringFunction(PyObject *op, int repr) - -Set the array print function to be a Python function. - -:: - - PyArray_Descr * - PyArray_DescrFromType(int type) - -Get the PyArray_Descr structure for a type. - -:: - - PyObject * - PyArray_TypeObjectFromType(int type) - -Get a typeobject from a type-number -- can return NULL. - -New reference - -:: - - char * - PyArray_Zero(PyArrayObject *arr) - -Get pointer to zero of correct type for array. - -:: - - char * - PyArray_One(PyArrayObject *arr) - -Get pointer to one of correct type for array - -:: - - PyObject * - PyArray_CastToType(PyArrayObject *arr, PyArray_Descr *dtype, int - is_f_order) - -For backward compatibility - -Cast an array using typecode structure. -steals reference to at --- cannot be NULL - -This function always makes a copy of arr, even if the dtype -doesn't change. - -:: - - int - PyArray_CastTo(PyArrayObject *out, PyArrayObject *mp) - -Cast to an already created array. - -:: - - int - PyArray_CastAnyTo(PyArrayObject *out, PyArrayObject *mp) - -Cast to an already created array. Arrays don't have to be "broadcastable" -Only requirement is they have the same number of elements. - -:: - - int - PyArray_CanCastSafely(int fromtype, int totype) - -Check the type coercion rules. - -:: - - npy_bool - PyArray_CanCastTo(PyArray_Descr *from, PyArray_Descr *to) - -leaves reference count alone --- cannot be NULL - -PyArray_CanCastTypeTo is equivalent to this, but adds a 'casting' -parameter. - -:: - - int - PyArray_ObjectType(PyObject *op, int minimum_type) - -Return the typecode of the array a Python object would be converted to - -Returns the type number the result should have, or NPY_NOTYPE on error. - -:: - - PyArray_Descr * - PyArray_DescrFromObject(PyObject *op, PyArray_Descr *mintype) - -new reference -- accepts NULL for mintype - -:: - - PyArrayObject ** - PyArray_ConvertToCommonType(PyObject *op, int *retn) - - -:: - - PyArray_Descr * - PyArray_DescrFromScalar(PyObject *sc) - -Return descr object from array scalar. - -New reference - -:: - - PyArray_Descr * - PyArray_DescrFromTypeObject(PyObject *type) - - -:: - - npy_intp - PyArray_Size(PyObject *op) - -Compute the size of an array (in number of items) - -:: - - PyObject * - PyArray_Scalar(void *data, PyArray_Descr *descr, PyObject *base) - -Get scalar-equivalent to a region of memory described by a descriptor. - -:: - - PyObject * - PyArray_FromScalar(PyObject *scalar, PyArray_Descr *outcode) - -Get 0-dim array from scalar - -0-dim array from array-scalar object -always contains a copy of the data -unless outcode is NULL, it is of void type and the referrer does -not own it either. - -steals reference to outcode - -:: - - void - PyArray_ScalarAsCtype(PyObject *scalar, void *ctypeptr) - -Convert to c-type - -no error checking is performed -- ctypeptr must be same type as scalar -in case of flexible type, the data is not copied -into ctypeptr which is expected to be a pointer to pointer - -:: - - int - PyArray_CastScalarToCtype(PyObject *scalar, void - *ctypeptr, PyArray_Descr *outcode) - -Cast Scalar to c-type - -The output buffer must be large-enough to receive the value -Even for flexible types which is different from ScalarAsCtype -where only a reference for flexible types is returned - -This may not work right on narrow builds for NumPy unicode scalars. - -:: - - int - PyArray_CastScalarDirect(PyObject *scalar, PyArray_Descr - *indescr, void *ctypeptr, int outtype) - -Cast Scalar to c-type - -:: - - PyObject * - PyArray_ScalarFromObject(PyObject *object) - -Get an Array Scalar From a Python Object - -Returns NULL if unsuccessful but error is only set if another error occurred. -Currently only Numeric-like object supported. - -:: - - PyArray_VectorUnaryFunc * - PyArray_GetCastFunc(PyArray_Descr *descr, int type_num) - -Get a cast function to cast from the input descriptor to the -output type_number (must be a registered data-type). -Returns NULL if un-successful. - -:: - - PyObject * - PyArray_FromDims(int nd, int *d, int type) - -Construct an empty array from dimensions and typenum - -:: - - PyObject * - PyArray_FromDimsAndDataAndDescr(int nd, int *d, PyArray_Descr - *descr, char *data) - -Like FromDimsAndData but uses the Descr structure instead of typecode -as input. - -:: - - PyObject * - PyArray_FromAny(PyObject *op, PyArray_Descr *newtype, int - min_depth, int max_depth, int flags, PyObject - *context) - -Does not check for NPY_ARRAY_ENSURECOPY and NPY_ARRAY_NOTSWAPPED in flags -Steals a reference to newtype --- which can be NULL - -:: - - PyObject * - PyArray_EnsureArray(PyObject *op) - -This is a quick wrapper around PyArray_FromAny(op, NULL, 0, 0, ENSUREARRAY) -that special cases Arrays and PyArray_Scalars up front -It *steals a reference* to the object -It also guarantees that the result is PyArray_Type -Because it decrefs op if any conversion needs to take place -so it can be used like PyArray_EnsureArray(some_function(...)) - -:: - - PyObject * - PyArray_EnsureAnyArray(PyObject *op) - - -:: - - PyObject * - PyArray_FromFile(FILE *fp, PyArray_Descr *dtype, npy_intp num, char - *sep) - - -Given a ``FILE *`` pointer ``fp``, and a ``PyArray_Descr``, return an -array corresponding to the data encoded in that file. - -If the dtype is NULL, the default array type is used (double). -If non-null, the reference is stolen. - -The number of elements to read is given as ``num``; if it is < 0, then -then as many as possible are read. - -If ``sep`` is NULL or empty, then binary data is assumed, else -text data, with ``sep`` as the separator between elements. Whitespace in -the separator matches any length of whitespace in the text, and a match -for whitespace around the separator is added. - -For memory-mapped files, use the buffer interface. No more data than -necessary is read by this routine. - -:: - - PyObject * - PyArray_FromString(char *data, npy_intp slen, PyArray_Descr - *dtype, npy_intp num, char *sep) - - -Given a pointer to a string ``data``, a string length ``slen``, and -a ``PyArray_Descr``, return an array corresponding to the data -encoded in that string. - -If the dtype is NULL, the default array type is used (double). -If non-null, the reference is stolen. - -If ``slen`` is < 0, then the end of string is used for text data. -It is an error for ``slen`` to be < 0 for binary data (since embedded NULLs -would be the norm). - -The number of elements to read is given as ``num``; if it is < 0, then -then as many as possible are read. - -If ``sep`` is NULL or empty, then binary data is assumed, else -text data, with ``sep`` as the separator between elements. Whitespace in -the separator matches any length of whitespace in the text, and a match -for whitespace around the separator is added. - -:: - - PyObject * - PyArray_FromBuffer(PyObject *buf, PyArray_Descr *type, npy_intp - count, npy_intp offset) - - -:: - - PyObject * - PyArray_FromIter(PyObject *obj, PyArray_Descr *dtype, npy_intp count) - - -steals a reference to dtype (which cannot be NULL) - -:: - - PyObject * - PyArray_Return(PyArrayObject *mp) - - -Return either an array or the appropriate Python object if the array -is 0d and matches a Python type. - -:: - - PyObject * - PyArray_GetField(PyArrayObject *self, PyArray_Descr *typed, int - offset) - -Get a subset of bytes from each element of the array - -:: - - int - PyArray_SetField(PyArrayObject *self, PyArray_Descr *dtype, int - offset, PyObject *val) - -Set a subset of bytes from each element of the array - -:: - - PyObject * - PyArray_Byteswap(PyArrayObject *self, npy_bool inplace) - - -:: - - PyObject * - PyArray_Resize(PyArrayObject *self, PyArray_Dims *newshape, int - refcheck, NPY_ORDER order) - -Resize (reallocate data). Only works if nothing else is referencing this -array and it is contiguous. If refcheck is 0, then the reference count is -not checked and assumed to be 1. You still must own this data and have no -weak-references and no base object. - -:: - - int - PyArray_MoveInto(PyArrayObject *dst, PyArrayObject *src) - -Move the memory of one array into another, allowing for overlapping data. - -Returns 0 on success, negative on failure. - -:: - - int - PyArray_CopyInto(PyArrayObject *dst, PyArrayObject *src) - -Copy an Array into another array. -Broadcast to the destination shape if necessary. - -Returns 0 on success, -1 on failure. - -:: - - int - PyArray_CopyAnyInto(PyArrayObject *dst, PyArrayObject *src) - -Copy an Array into another array -- memory must not overlap -Does not require src and dest to have "broadcastable" shapes -(only the same number of elements). - -TODO: For NumPy 2.0, this could accept an order parameter which -only allows NPY_CORDER and NPY_FORDER. Could also rename -this to CopyAsFlat to make the name more intuitive. - -Returns 0 on success, -1 on error. - -:: - - int - PyArray_CopyObject(PyArrayObject *dest, PyObject *src_object) - - -:: - - PyObject * - PyArray_NewCopy(PyArrayObject *obj, NPY_ORDER order) - -Copy an array. - -:: - - PyObject * - PyArray_ToList(PyArrayObject *self) - -To List - -:: - - PyObject * - PyArray_ToString(PyArrayObject *self, NPY_ORDER order) - - -:: - - int - PyArray_ToFile(PyArrayObject *self, FILE *fp, char *sep, char *format) - -To File - -:: - - int - PyArray_Dump(PyObject *self, PyObject *file, int protocol) - - -:: - - PyObject * - PyArray_Dumps(PyObject *self, int protocol) - - -:: - - int - PyArray_ValidType(int type) - -Is the typenum valid? - -:: - - void - PyArray_UpdateFlags(PyArrayObject *ret, int flagmask) - -Update Several Flags at once. - -:: - - PyObject * - PyArray_New(PyTypeObject *subtype, int nd, npy_intp *dims, int - type_num, npy_intp *strides, void *data, int itemsize, int - flags, PyObject *obj) - -Generic new array creation routine. - -:: - - PyObject * - PyArray_NewFromDescr(PyTypeObject *subtype, PyArray_Descr *descr, int - nd, npy_intp *dims, npy_intp *strides, void - *data, int flags, PyObject *obj) - -Generic new array creation routine. - -steals a reference to descr (even on failure) - -:: - - PyArray_Descr * - PyArray_DescrNew(PyArray_Descr *base) - -base cannot be NULL - -:: - - PyArray_Descr * - PyArray_DescrNewFromType(int type_num) - - -:: - - double - PyArray_GetPriority(PyObject *obj, double default_) - -Get Priority from object - -:: - - PyObject * - PyArray_IterNew(PyObject *obj) - -Get Iterator. - -:: - - PyObject * - PyArray_MultiIterNew(int n, ... ) - -Get MultiIterator, - -:: - - int - PyArray_PyIntAsInt(PyObject *o) - - -:: - - npy_intp - PyArray_PyIntAsIntp(PyObject *o) - - -:: - - int - PyArray_Broadcast(PyArrayMultiIterObject *mit) - - -:: - - void - PyArray_FillObjectArray(PyArrayObject *arr, PyObject *obj) - -Assumes contiguous - -:: - - int - PyArray_FillWithScalar(PyArrayObject *arr, PyObject *obj) - - -:: - - npy_bool - PyArray_CheckStrides(int elsize, int nd, npy_intp numbytes, npy_intp - offset, npy_intp *dims, npy_intp *newstrides) - - -:: - - PyArray_Descr * - PyArray_DescrNewByteorder(PyArray_Descr *self, char newendian) - - -returns a copy of the PyArray_Descr structure with the byteorder -altered: -no arguments: The byteorder is swapped (in all subfields as well) -single argument: The byteorder is forced to the given state -(in all subfields as well) - -Valid states: ('big', '>') or ('little' or '<') -('native', or '=') - -If a descr structure with | is encountered it's own -byte-order is not changed but any fields are: - - -Deep bytorder change of a data-type descriptor -Leaves reference count of self unchanged --- does not DECREF self *** - -:: - - PyObject * - PyArray_IterAllButAxis(PyObject *obj, int *inaxis) - -Get Iterator that iterates over all but one axis (don't use this with -PyArray_ITER_GOTO1D). The axis will be over-written if negative -with the axis having the smallest stride. - -:: - - PyObject * - PyArray_CheckFromAny(PyObject *op, PyArray_Descr *descr, int - min_depth, int max_depth, int requires, PyObject - *context) - -steals a reference to descr -- accepts NULL - -:: - - PyObject * - PyArray_FromArray(PyArrayObject *arr, PyArray_Descr *newtype, int - flags) - -steals reference to newtype --- acc. NULL - -:: - - PyObject * - PyArray_FromInterface(PyObject *origin) - - -:: - - PyObject * - PyArray_FromStructInterface(PyObject *input) - - -:: - - PyObject * - PyArray_FromArrayAttr(PyObject *op, PyArray_Descr *typecode, PyObject - *context) - - -:: - - NPY_SCALARKIND - PyArray_ScalarKind(int typenum, PyArrayObject **arr) - -ScalarKind - -Returns the scalar kind of a type number, with an -optional tweak based on the scalar value itself. -If no scalar is provided, it returns INTPOS_SCALAR -for both signed and unsigned integers, otherwise -it checks the sign of any signed integer to choose -INTNEG_SCALAR when appropriate. - -:: - - int - PyArray_CanCoerceScalar(int thistype, int neededtype, NPY_SCALARKIND - scalar) - - -Determines whether the data type 'thistype', with -scalar kind 'scalar', can be coerced into 'neededtype'. - -:: - - PyObject * - PyArray_NewFlagsObject(PyObject *obj) - - -Get New ArrayFlagsObject - -:: - - npy_bool - PyArray_CanCastScalar(PyTypeObject *from, PyTypeObject *to) - -See if array scalars can be cast. - -TODO: For NumPy 2.0, add a NPY_CASTING parameter. - -:: - - int - PyArray_CompareUCS4(npy_ucs4 *s1, npy_ucs4 *s2, size_t len) - - -:: - - int - PyArray_RemoveSmallest(PyArrayMultiIterObject *multi) - -Adjusts previously broadcasted iterators so that the axis with -the smallest sum of iterator strides is not iterated over. -Returns dimension which is smallest in the range [0,multi->nd). -A -1 is returned if multi->nd == 0. - -don't use with PyArray_ITER_GOTO1D because factors are not adjusted - -:: - - int - PyArray_ElementStrides(PyObject *obj) - - -:: - - void - PyArray_Item_INCREF(char *data, PyArray_Descr *descr) - - -:: - - void - PyArray_Item_XDECREF(char *data, PyArray_Descr *descr) - - -:: - - PyObject * - PyArray_FieldNames(PyObject *fields) - -Return the tuple of ordered field names from a dictionary. - -:: - - PyObject * - PyArray_Transpose(PyArrayObject *ap, PyArray_Dims *permute) - -Return Transpose. - -:: - - PyObject * - PyArray_TakeFrom(PyArrayObject *self0, PyObject *indices0, int - axis, PyArrayObject *out, NPY_CLIPMODE clipmode) - -Take - -:: - - PyObject * - PyArray_PutTo(PyArrayObject *self, PyObject*values0, PyObject - *indices0, NPY_CLIPMODE clipmode) - -Put values into an array - -:: - - PyObject * - PyArray_PutMask(PyArrayObject *self, PyObject*values0, PyObject*mask0) - -Put values into an array according to a mask. - -:: - - PyObject * - PyArray_Repeat(PyArrayObject *aop, PyObject *op, int axis) - -Repeat the array. - -:: - - PyObject * - PyArray_Choose(PyArrayObject *ip, PyObject *op, PyArrayObject - *out, NPY_CLIPMODE clipmode) - - -:: - - int - PyArray_Sort(PyArrayObject *op, int axis, NPY_SORTKIND which) - -Sort an array in-place - -:: - - PyObject * - PyArray_ArgSort(PyArrayObject *op, int axis, NPY_SORTKIND which) - -ArgSort an array - -:: - - PyObject * - PyArray_SearchSorted(PyArrayObject *op1, PyObject *op2, NPY_SEARCHSIDE - side, PyObject *perm) - - -Search the sorted array op1 for the location of the items in op2. The -result is an array of indexes, one for each element in op2, such that if -the item were to be inserted in op1 just before that index the array -would still be in sorted order. - -Parameters ----------- -op1 : PyArrayObject * -Array to be searched, must be 1-D. -op2 : PyObject * -Array of items whose insertion indexes in op1 are wanted -side : {NPY_SEARCHLEFT, NPY_SEARCHRIGHT} -If NPY_SEARCHLEFT, return first valid insertion indexes -If NPY_SEARCHRIGHT, return last valid insertion indexes -perm : PyObject * -Permutation array that sorts op1 (optional) - -Returns -------- -ret : PyObject * -New reference to npy_intp array containing indexes where items in op2 -could be validly inserted into op1. NULL on error. - -Notes ------ -Binary search is used to find the indexes. - -:: - - PyObject * - PyArray_ArgMax(PyArrayObject *op, int axis, PyArrayObject *out) - -ArgMax - -:: - - PyObject * - PyArray_ArgMin(PyArrayObject *op, int axis, PyArrayObject *out) - -ArgMin - -:: - - PyObject * - PyArray_Reshape(PyArrayObject *self, PyObject *shape) - -Reshape - -:: - - PyObject * - PyArray_Newshape(PyArrayObject *self, PyArray_Dims *newdims, NPY_ORDER - order) - -New shape for an array - -:: - - PyObject * - PyArray_Squeeze(PyArrayObject *self) - - -return a new view of the array object with all of its unit-length -dimensions squeezed out if needed, otherwise -return the same array. - -:: - - PyObject * - PyArray_View(PyArrayObject *self, PyArray_Descr *type, PyTypeObject - *pytype) - -View -steals a reference to type -- accepts NULL - -:: - - PyObject * - PyArray_SwapAxes(PyArrayObject *ap, int a1, int a2) - -SwapAxes - -:: - - PyObject * - PyArray_Max(PyArrayObject *ap, int axis, PyArrayObject *out) - -Max - -:: - - PyObject * - PyArray_Min(PyArrayObject *ap, int axis, PyArrayObject *out) - -Min - -:: - - PyObject * - PyArray_Ptp(PyArrayObject *ap, int axis, PyArrayObject *out) - -Ptp - -:: - - PyObject * - PyArray_Mean(PyArrayObject *self, int axis, int rtype, PyArrayObject - *out) - -Mean - -:: - - PyObject * - PyArray_Trace(PyArrayObject *self, int offset, int axis1, int - axis2, int rtype, PyArrayObject *out) - -Trace - -:: - - PyObject * - PyArray_Diagonal(PyArrayObject *self, int offset, int axis1, int - axis2) - -Diagonal - -In NumPy versions prior to 1.7, this function always returned a copy of -the diagonal array. In 1.7, the code has been updated to compute a view -onto 'self', but it still copies this array before returning, as well as -setting the internal WARN_ON_WRITE flag. In a future version, it will -simply return a view onto self. - -:: - - PyObject * - PyArray_Clip(PyArrayObject *self, PyObject *min, PyObject - *max, PyArrayObject *out) - -Clip - -:: - - PyObject * - PyArray_Conjugate(PyArrayObject *self, PyArrayObject *out) - -Conjugate - -:: - - PyObject * - PyArray_Nonzero(PyArrayObject *self) - -Nonzero - -TODO: In NumPy 2.0, should make the iteration order a parameter. - -:: - - PyObject * - PyArray_Std(PyArrayObject *self, int axis, int rtype, PyArrayObject - *out, int variance) - -Set variance to 1 to by-pass square-root calculation and return variance -Std - -:: - - PyObject * - PyArray_Sum(PyArrayObject *self, int axis, int rtype, PyArrayObject - *out) - -Sum - -:: - - PyObject * - PyArray_CumSum(PyArrayObject *self, int axis, int rtype, PyArrayObject - *out) - -CumSum - -:: - - PyObject * - PyArray_Prod(PyArrayObject *self, int axis, int rtype, PyArrayObject - *out) - -Prod - -:: - - PyObject * - PyArray_CumProd(PyArrayObject *self, int axis, int - rtype, PyArrayObject *out) - -CumProd - -:: - - PyObject * - PyArray_All(PyArrayObject *self, int axis, PyArrayObject *out) - -All - -:: - - PyObject * - PyArray_Any(PyArrayObject *self, int axis, PyArrayObject *out) - -Any - -:: - - PyObject * - PyArray_Compress(PyArrayObject *self, PyObject *condition, int - axis, PyArrayObject *out) - -Compress - -:: - - PyObject * - PyArray_Flatten(PyArrayObject *a, NPY_ORDER order) - -Flatten - -:: - - PyObject * - PyArray_Ravel(PyArrayObject *arr, NPY_ORDER order) - -Ravel -Returns a contiguous array - -:: - - npy_intp - PyArray_MultiplyList(npy_intp *l1, int n) - -Multiply a List - -:: - - int - PyArray_MultiplyIntList(int *l1, int n) - -Multiply a List of ints - -:: - - void * - PyArray_GetPtr(PyArrayObject *obj, npy_intp*ind) - -Produce a pointer into array - -:: - - int - PyArray_CompareLists(npy_intp *l1, npy_intp *l2, int n) - -Compare Lists - -:: - - int - PyArray_AsCArray(PyObject **op, void *ptr, npy_intp *dims, int - nd, PyArray_Descr*typedescr) - -Simulate a C-array -steals a reference to typedescr -- can be NULL - -:: - - int - PyArray_As1D(PyObject **op, char **ptr, int *d1, int typecode) - -Convert to a 1D C-array - -:: - - int - PyArray_As2D(PyObject **op, char ***ptr, int *d1, int *d2, int - typecode) - -Convert to a 2D C-array - -:: - - int - PyArray_Free(PyObject *op, void *ptr) - -Free pointers created if As2D is called - -:: - - int - PyArray_Converter(PyObject *object, PyObject **address) - - -Useful to pass as converter function for O& processing in PyArgs_ParseTuple. - -This conversion function can be used with the "O&" argument for -PyArg_ParseTuple. It will immediately return an object of array type -or will convert to a NPY_ARRAY_CARRAY any other object. - -If you use PyArray_Converter, you must DECREF the array when finished -as you get a new reference to it. - -:: - - int - PyArray_IntpFromSequence(PyObject *seq, npy_intp *vals, int maxvals) - -PyArray_IntpFromSequence -Returns the number of dimensions or -1 if an error occurred. -vals must be large enough to hold maxvals - -:: - - PyObject * - PyArray_Concatenate(PyObject *op, int axis) - -Concatenate - -Concatenate an arbitrary Python sequence into an array. -op is a python object supporting the sequence interface. -Its elements will be concatenated together to form a single -multidimensional array. If axis is NPY_MAXDIMS or bigger, then -each sequence object will be flattened before concatenation - -:: - - PyObject * - PyArray_InnerProduct(PyObject *op1, PyObject *op2) - -Numeric.innerproduct(a,v) - -:: - - PyObject * - PyArray_MatrixProduct(PyObject *op1, PyObject *op2) - -Numeric.matrixproduct(a,v) -just like inner product but does the swapaxes stuff on the fly - -:: - - PyObject * - PyArray_CopyAndTranspose(PyObject *op) - -Copy and Transpose - -Could deprecate this function, as there isn't a speed benefit over -calling Transpose and then Copy. - -:: - - PyObject * - PyArray_Correlate(PyObject *op1, PyObject *op2, int mode) - -Numeric.correlate(a1,a2,mode) - -:: - - int - PyArray_TypestrConvert(int itemsize, int gentype) - -Typestr converter - -:: - - int - PyArray_DescrConverter(PyObject *obj, PyArray_Descr **at) - -Get typenum from an object -- None goes to NPY_DEFAULT_TYPE -This function takes a Python object representing a type and converts it -to a the correct PyArray_Descr * structure to describe the type. - -Many objects can be used to represent a data-type which in NumPy is -quite a flexible concept. - -This is the central code that converts Python objects to -Type-descriptor objects that are used throughout numpy. - -Returns a new reference in *at, but the returned should not be -modified as it may be one of the canonical immutable objects or -a reference to the input obj. - -:: - - int - PyArray_DescrConverter2(PyObject *obj, PyArray_Descr **at) - -Get typenum from an object -- None goes to NULL - -:: - - int - PyArray_IntpConverter(PyObject *obj, PyArray_Dims *seq) - -Get intp chunk from sequence - -This function takes a Python sequence object and allocates and -fills in an intp array with the converted values. - -Remember to free the pointer seq.ptr when done using -PyDimMem_FREE(seq.ptr)** - -:: - - int - PyArray_BufferConverter(PyObject *obj, PyArray_Chunk *buf) - -Get buffer chunk from object - -this function takes a Python object which exposes the (single-segment) -buffer interface and returns a pointer to the data segment - -You should increment the reference count by one of buf->base -if you will hang on to a reference - -You only get a borrowed reference to the object. Do not free the -memory... - -:: - - int - PyArray_AxisConverter(PyObject *obj, int *axis) - -Get axis from an object (possibly None) -- a converter function, - -See also PyArray_ConvertMultiAxis, which also handles a tuple of axes. - -:: - - int - PyArray_BoolConverter(PyObject *object, npy_bool *val) - -Convert an object to true / false - -:: - - int - PyArray_ByteorderConverter(PyObject *obj, char *endian) - -Convert object to endian - -:: - - int - PyArray_OrderConverter(PyObject *object, NPY_ORDER *val) - -Convert an object to FORTRAN / C / ANY / KEEP - -:: - - unsigned char - PyArray_EquivTypes(PyArray_Descr *type1, PyArray_Descr *type2) - - -This function returns true if the two typecodes are -equivalent (same basic kind and same itemsize). - -:: - - PyObject * - PyArray_Zeros(int nd, npy_intp *dims, PyArray_Descr *type, int - is_f_order) - -Zeros - -steal a reference -accepts NULL type - -:: - - PyObject * - PyArray_Empty(int nd, npy_intp *dims, PyArray_Descr *type, int - is_f_order) - -Empty - -accepts NULL type -steals referenct to type - -:: - - PyObject * - PyArray_Where(PyObject *condition, PyObject *x, PyObject *y) - -Where - -:: - - PyObject * - PyArray_Arange(double start, double stop, double step, int type_num) - -Arange, - -:: - - PyObject * - PyArray_ArangeObj(PyObject *start, PyObject *stop, PyObject - *step, PyArray_Descr *dtype) - - -ArangeObj, - -this doesn't change the references - -:: - - int - PyArray_SortkindConverter(PyObject *obj, NPY_SORTKIND *sortkind) - -Convert object to sort kind - -:: - - PyObject * - PyArray_LexSort(PyObject *sort_keys, int axis) - -LexSort an array providing indices that will sort a collection of arrays -lexicographically. The first key is sorted on first, followed by the second key --- requires that arg"merge"sort is available for each sort_key - -Returns an index array that shows the indexes for the lexicographic sort along -the given axis. - -:: - - PyObject * - PyArray_Round(PyArrayObject *a, int decimals, PyArrayObject *out) - -Round - -:: - - unsigned char - PyArray_EquivTypenums(int typenum1, int typenum2) - - -:: - - int - PyArray_RegisterDataType(PyArray_Descr *descr) - -Register Data type -Does not change the reference count of descr - -:: - - int - PyArray_RegisterCastFunc(PyArray_Descr *descr, int - totype, PyArray_VectorUnaryFunc *castfunc) - -Register Casting Function -Replaces any function currently stored. - -:: - - int - PyArray_RegisterCanCast(PyArray_Descr *descr, int - totype, NPY_SCALARKIND scalar) - -Register a type number indicating that a descriptor can be cast -to it safely - -:: - - void - PyArray_InitArrFuncs(PyArray_ArrFuncs *f) - -Initialize arrfuncs to NULL - -:: - - PyObject * - PyArray_IntTupleFromIntp(int len, npy_intp *vals) - -PyArray_IntTupleFromIntp - -:: - - int - PyArray_TypeNumFromName(char *str) - - -:: - - int - PyArray_ClipmodeConverter(PyObject *object, NPY_CLIPMODE *val) - -Convert an object to NPY_RAISE / NPY_CLIP / NPY_WRAP - -:: - - int - PyArray_OutputConverter(PyObject *object, PyArrayObject **address) - -Useful to pass as converter function for O& processing in -PyArgs_ParseTuple for output arrays - -:: - - PyObject * - PyArray_BroadcastToShape(PyObject *obj, npy_intp *dims, int nd) - -Get Iterator broadcast to a particular shape - -:: - - void - _PyArray_SigintHandler(int signum) - - -:: - - void* - _PyArray_GetSigintBuf(void ) - - -:: - - int - PyArray_DescrAlignConverter(PyObject *obj, PyArray_Descr **at) - - -Get type-descriptor from an object forcing alignment if possible -None goes to DEFAULT type. - -any object with the .fields attribute and/or .itemsize attribute (if the -.fields attribute does not give the total size -- i.e. a partial record -naming). If itemsize is given it must be >= size computed from fields - -The .fields attribute must return a convertible dictionary if present. -Result inherits from NPY_VOID. - -:: - - int - PyArray_DescrAlignConverter2(PyObject *obj, PyArray_Descr **at) - - -Get type-descriptor from an object forcing alignment if possible -None goes to NULL. - -:: - - int - PyArray_SearchsideConverter(PyObject *obj, void *addr) - -Convert object to searchsorted side - -:: - - PyObject * - PyArray_CheckAxis(PyArrayObject *arr, int *axis, int flags) - -PyArray_CheckAxis - -check that axis is valid -convert 0-d arrays to 1-d arrays - -:: - - npy_intp - PyArray_OverflowMultiplyList(npy_intp *l1, int n) - -Multiply a List of Non-negative numbers with over-flow detection. - -:: - - int - PyArray_CompareString(char *s1, char *s2, size_t len) - - -:: - - PyObject * - PyArray_MultiIterFromObjects(PyObject **mps, int n, int nadd, ... ) - -Get MultiIterator from array of Python objects and any additional - -PyObject **mps -- array of PyObjects -int n - number of PyObjects in the array -int nadd - number of additional arrays to include in the iterator. - -Returns a multi-iterator object. - -:: - - int - PyArray_GetEndianness(void ) - - -:: - - unsigned int - PyArray_GetNDArrayCFeatureVersion(void ) - -Returns the built-in (at compilation time) C API version - -:: - - PyObject * - PyArray_Correlate2(PyObject *op1, PyObject *op2, int mode) - -correlate(a1,a2,mode) - -This function computes the usual correlation (correlate(a1, a2) != -correlate(a2, a1), and conjugate the second argument for complex inputs - -:: - - PyObject* - PyArray_NeighborhoodIterNew(PyArrayIterObject *x, npy_intp - *bounds, int mode, PyArrayObject*fill) - -A Neighborhood Iterator object. - -:: - - void - PyArray_SetDatetimeParseFunction(PyObject *op) - -This function is scheduled to be removed - -TO BE REMOVED - NOT USED INTERNALLY. - -:: - - void - PyArray_DatetimeToDatetimeStruct(npy_datetime val, NPY_DATETIMEUNIT - fr, npy_datetimestruct *result) - -Fill the datetime struct from the value and resolution unit. - -TO BE REMOVED - NOT USED INTERNALLY. - -:: - - void - PyArray_TimedeltaToTimedeltaStruct(npy_timedelta val, NPY_DATETIMEUNIT - fr, npy_timedeltastruct *result) - -Fill the timedelta struct from the timedelta value and resolution unit. - -TO BE REMOVED - NOT USED INTERNALLY. - -:: - - npy_datetime - PyArray_DatetimeStructToDatetime(NPY_DATETIMEUNIT - fr, npy_datetimestruct *d) - -Create a datetime value from a filled datetime struct and resolution unit. - -TO BE REMOVED - NOT USED INTERNALLY. - -:: - - npy_datetime - PyArray_TimedeltaStructToTimedelta(NPY_DATETIMEUNIT - fr, npy_timedeltastruct *d) - -Create a timdelta value from a filled timedelta struct and resolution unit. - -TO BE REMOVED - NOT USED INTERNALLY. - -:: - - NpyIter * - NpyIter_New(PyArrayObject *op, npy_uint32 flags, NPY_ORDER - order, NPY_CASTING casting, PyArray_Descr*dtype) - -Allocate a new iterator for one array object. - -:: - - NpyIter * - NpyIter_MultiNew(int nop, PyArrayObject **op_in, npy_uint32 - flags, NPY_ORDER order, NPY_CASTING - casting, npy_uint32 *op_flags, PyArray_Descr - **op_request_dtypes) - -Allocate a new iterator for more than one array object, using -standard NumPy broadcasting rules and the default buffer size. - -:: - - NpyIter * - NpyIter_AdvancedNew(int nop, PyArrayObject **op_in, npy_uint32 - flags, NPY_ORDER order, NPY_CASTING - casting, npy_uint32 *op_flags, PyArray_Descr - **op_request_dtypes, int oa_ndim, int - **op_axes, npy_intp *itershape, npy_intp - buffersize) - -Allocate a new iterator for multiple array objects, and advanced -options for controlling the broadcasting, shape, and buffer size. - -:: - - NpyIter * - NpyIter_Copy(NpyIter *iter) - -Makes a copy of the iterator - -:: - - int - NpyIter_Deallocate(NpyIter *iter) - -Deallocate an iterator - -:: - - npy_bool - NpyIter_HasDelayedBufAlloc(NpyIter *iter) - -Whether the buffer allocation is being delayed - -:: - - npy_bool - NpyIter_HasExternalLoop(NpyIter *iter) - -Whether the iterator handles the inner loop - -:: - - int - NpyIter_EnableExternalLoop(NpyIter *iter) - -Removes the inner loop handling (so HasExternalLoop returns true) - -:: - - npy_intp * - NpyIter_GetInnerStrideArray(NpyIter *iter) - -Get the array of strides for the inner loop (when HasExternalLoop is true) - -This function may be safely called without holding the Python GIL. - -:: - - npy_intp * - NpyIter_GetInnerLoopSizePtr(NpyIter *iter) - -Get a pointer to the size of the inner loop (when HasExternalLoop is true) - -This function may be safely called without holding the Python GIL. - -:: - - int - NpyIter_Reset(NpyIter *iter, char **errmsg) - -Resets the iterator to its initial state - -If errmsg is non-NULL, it should point to a variable which will -receive the error message, and no Python exception will be set. -This is so that the function can be called from code not holding -the GIL. - -:: - - int - NpyIter_ResetBasePointers(NpyIter *iter, char **baseptrs, char - **errmsg) - -Resets the iterator to its initial state, with new base data pointers. -This function requires great caution. - -If errmsg is non-NULL, it should point to a variable which will -receive the error message, and no Python exception will be set. -This is so that the function can be called from code not holding -the GIL. - -:: - - int - NpyIter_ResetToIterIndexRange(NpyIter *iter, npy_intp istart, npy_intp - iend, char **errmsg) - -Resets the iterator to a new iterator index range - -If errmsg is non-NULL, it should point to a variable which will -receive the error message, and no Python exception will be set. -This is so that the function can be called from code not holding -the GIL. - -:: - - int - NpyIter_GetNDim(NpyIter *iter) - -Gets the number of dimensions being iterated - -:: - - int - NpyIter_GetNOp(NpyIter *iter) - -Gets the number of operands being iterated - -:: - - NpyIter_IterNextFunc * - NpyIter_GetIterNext(NpyIter *iter, char **errmsg) - -Compute the specialized iteration function for an iterator - -If errmsg is non-NULL, it should point to a variable which will -receive the error message, and no Python exception will be set. -This is so that the function can be called from code not holding -the GIL. - -:: - - npy_intp - NpyIter_GetIterSize(NpyIter *iter) - -Gets the number of elements being iterated - -:: - - void - NpyIter_GetIterIndexRange(NpyIter *iter, npy_intp *istart, npy_intp - *iend) - -Gets the range of iteration indices being iterated - -:: - - npy_intp - NpyIter_GetIterIndex(NpyIter *iter) - -Gets the current iteration index - -:: - - int - NpyIter_GotoIterIndex(NpyIter *iter, npy_intp iterindex) - -Sets the iterator position to the specified iterindex, -which matches the iteration order of the iterator. - -Returns NPY_SUCCEED on success, NPY_FAIL on failure. - -:: - - npy_bool - NpyIter_HasMultiIndex(NpyIter *iter) - -Whether the iterator is tracking a multi-index - -:: - - int - NpyIter_GetShape(NpyIter *iter, npy_intp *outshape) - -Gets the broadcast shape if a multi-index is being tracked by the iterator, -otherwise gets the shape of the iteration as Fortran-order -(fastest-changing index first). - -The reason Fortran-order is returned when a multi-index -is not enabled is that this is providing a direct view into how -the iterator traverses the n-dimensional space. The iterator organizes -its memory from fastest index to slowest index, and when -a multi-index is enabled, it uses a permutation to recover the original -order. - -Returns NPY_SUCCEED or NPY_FAIL. - -:: - - NpyIter_GetMultiIndexFunc * - NpyIter_GetGetMultiIndex(NpyIter *iter, char **errmsg) - -Compute a specialized get_multi_index function for the iterator - -If errmsg is non-NULL, it should point to a variable which will -receive the error message, and no Python exception will be set. -This is so that the function can be called from code not holding -the GIL. - -:: - - int - NpyIter_GotoMultiIndex(NpyIter *iter, npy_intp *multi_index) - -Sets the iterator to the specified multi-index, which must have the -correct number of entries for 'ndim'. It is only valid -when NPY_ITER_MULTI_INDEX was passed to the constructor. This operation -fails if the multi-index is out of bounds. - -Returns NPY_SUCCEED on success, NPY_FAIL on failure. - -:: - - int - NpyIter_RemoveMultiIndex(NpyIter *iter) - -Removes multi-index support from an iterator. - -Returns NPY_SUCCEED or NPY_FAIL. - -:: - - npy_bool - NpyIter_HasIndex(NpyIter *iter) - -Whether the iterator is tracking an index - -:: - - npy_bool - NpyIter_IsBuffered(NpyIter *iter) - -Whether the iterator is buffered - -:: - - npy_bool - NpyIter_IsGrowInner(NpyIter *iter) - -Whether the inner loop can grow if buffering is unneeded - -:: - - npy_intp - NpyIter_GetBufferSize(NpyIter *iter) - -Gets the size of the buffer, or 0 if buffering is not enabled - -:: - - npy_intp * - NpyIter_GetIndexPtr(NpyIter *iter) - -Get a pointer to the index, if it is being tracked - -:: - - int - NpyIter_GotoIndex(NpyIter *iter, npy_intp flat_index) - -If the iterator is tracking an index, sets the iterator -to the specified index. - -Returns NPY_SUCCEED on success, NPY_FAIL on failure. - -:: - - char ** - NpyIter_GetDataPtrArray(NpyIter *iter) - -Get the array of data pointers (1 per object being iterated) - -This function may be safely called without holding the Python GIL. - -:: - - PyArray_Descr ** - NpyIter_GetDescrArray(NpyIter *iter) - -Get the array of data type pointers (1 per object being iterated) - -:: - - PyArrayObject ** - NpyIter_GetOperandArray(NpyIter *iter) - -Get the array of objects being iterated - -:: - - PyArrayObject * - NpyIter_GetIterView(NpyIter *iter, npy_intp i) - -Returns a view to the i-th object with the iterator's internal axes - -:: - - void - NpyIter_GetReadFlags(NpyIter *iter, char *outreadflags) - -Gets an array of read flags (1 per object being iterated) - -:: - - void - NpyIter_GetWriteFlags(NpyIter *iter, char *outwriteflags) - -Gets an array of write flags (1 per object being iterated) - -:: - - void - NpyIter_DebugPrint(NpyIter *iter) - -For debugging - -:: - - npy_bool - NpyIter_IterationNeedsAPI(NpyIter *iter) - -Whether the iteration loop, and in particular the iternext() -function, needs API access. If this is true, the GIL must -be retained while iterating. - -:: - - void - NpyIter_GetInnerFixedStrideArray(NpyIter *iter, npy_intp *out_strides) - -Get an array of strides which are fixed. Any strides which may -change during iteration receive the value NPY_MAX_INTP. Once -the iterator is ready to iterate, call this to get the strides -which will always be fixed in the inner loop, then choose optimized -inner loop functions which take advantage of those fixed strides. - -This function may be safely called without holding the Python GIL. - -:: - - int - NpyIter_RemoveAxis(NpyIter *iter, int axis) - -Removes an axis from iteration. This requires that NPY_ITER_MULTI_INDEX -was set for iterator creation, and does not work if buffering is -enabled. This function also resets the iterator to its initial state. - -Returns NPY_SUCCEED or NPY_FAIL. - -:: - - npy_intp * - NpyIter_GetAxisStrideArray(NpyIter *iter, int axis) - -Gets the array of strides for the specified axis. -If the iterator is tracking a multi-index, gets the strides -for the axis specified, otherwise gets the strides for -the iteration axis as Fortran order (fastest-changing axis first). - -Returns NULL if an error occurs. - -:: - - npy_bool - NpyIter_RequiresBuffering(NpyIter *iter) - -Whether the iteration could be done with no buffering. - -:: - - char ** - NpyIter_GetInitialDataPtrArray(NpyIter *iter) - -Get the array of data pointers (1 per object being iterated), -directly into the arrays (never pointing to a buffer), for starting -unbuffered iteration. This always returns the addresses for the -iterator position as reset to iterator index 0. - -These pointers are different from the pointers accepted by -NpyIter_ResetBasePointers, because the direction along some -axes may have been reversed, requiring base offsets. - -This function may be safely called without holding the Python GIL. - -:: - - int - NpyIter_CreateCompatibleStrides(NpyIter *iter, npy_intp - itemsize, npy_intp *outstrides) - -Builds a set of strides which are the same as the strides of an -output array created using the NPY_ITER_ALLOCATE flag, where NULL -was passed for op_axes. This is for data packed contiguously, -but not necessarily in C or Fortran order. This should be used -together with NpyIter_GetShape and NpyIter_GetNDim. - -A use case for this function is to match the shape and layout of -the iterator and tack on one or more dimensions. For example, -in order to generate a vector per input value for a numerical gradient, -you pass in ndim*itemsize for itemsize, then add another dimension to -the end with size ndim and stride itemsize. To do the Hessian matrix, -you do the same thing but add two dimensions, or take advantage of -the symmetry and pack it into 1 dimension with a particular encoding. - -This function may only be called if the iterator is tracking a multi-index -and if NPY_ITER_DONT_NEGATE_STRIDES was used to prevent an axis from -being iterated in reverse order. - -If an array is created with this method, simply adding 'itemsize' -for each iteration will traverse the new array matching the -iterator. - -Returns NPY_SUCCEED or NPY_FAIL. - -:: - - int - PyArray_CastingConverter(PyObject *obj, NPY_CASTING *casting) - -Convert any Python object, *obj*, to an NPY_CASTING enum. - -:: - - npy_intp - PyArray_CountNonzero(PyArrayObject *self) - -Counts the number of non-zero elements in the array. - -Returns -1 on error. - -:: - - PyArray_Descr * - PyArray_PromoteTypes(PyArray_Descr *type1, PyArray_Descr *type2) - -Produces the smallest size and lowest kind type to which both -input types can be cast. - -:: - - PyArray_Descr * - PyArray_MinScalarType(PyArrayObject *arr) - -If arr is a scalar (has 0 dimensions) with a built-in number data type, -finds the smallest type size/kind which can still represent its data. -Otherwise, returns the array's data type. - - -:: - - PyArray_Descr * - PyArray_ResultType(npy_intp narrs, PyArrayObject **arr, npy_intp - ndtypes, PyArray_Descr **dtypes) - -Produces the result type of a bunch of inputs, using the UFunc -type promotion rules. Use this function when you have a set of -input arrays, and need to determine an output array dtype. - -If all the inputs are scalars (have 0 dimensions) or the maximum "kind" -of the scalars is greater than the maximum "kind" of the arrays, does -a regular type promotion. - -Otherwise, does a type promotion on the MinScalarType -of all the inputs. Data types passed directly are treated as array -types. - - -:: - - npy_bool - PyArray_CanCastArrayTo(PyArrayObject *arr, PyArray_Descr - *to, NPY_CASTING casting) - -Returns 1 if the array object may be cast to the given data type using -the casting rule, 0 otherwise. This differs from PyArray_CanCastTo in -that it handles scalar arrays (0 dimensions) specially, by checking -their value. - -:: - - npy_bool - PyArray_CanCastTypeTo(PyArray_Descr *from, PyArray_Descr - *to, NPY_CASTING casting) - -Returns true if data of type 'from' may be cast to data of type -'to' according to the rule 'casting'. - -:: - - PyArrayObject * - PyArray_EinsteinSum(char *subscripts, npy_intp nop, PyArrayObject - **op_in, PyArray_Descr *dtype, NPY_ORDER - order, NPY_CASTING casting, PyArrayObject *out) - -This function provides summation of array elements according to -the Einstein summation convention. For example: -- trace(a) -> einsum("ii", a) -- transpose(a) -> einsum("ji", a) -- multiply(a,b) -> einsum(",", a, b) -- inner(a,b) -> einsum("i,i", a, b) -- outer(a,b) -> einsum("i,j", a, b) -- matvec(a,b) -> einsum("ij,j", a, b) -- matmat(a,b) -> einsum("ij,jk", a, b) - -subscripts: The string of subscripts for einstein summation. -nop: The number of operands -op_in: The array of operands -dtype: Either NULL, or the data type to force the calculation as. -order: The order for the calculation/the output axes. -casting: What kind of casts should be permitted. -out: Either NULL, or an array into which the output should be placed. - -By default, the labels get placed in alphabetical order -at the end of the output. So, if c = einsum("i,j", a, b) -then c[i,j] == a[i]*b[j], but if c = einsum("j,i", a, b) -then c[i,j] = a[j]*b[i]. - -Alternatively, you can control the output order or prevent -an axis from being summed/force an axis to be summed by providing -indices for the output. This allows us to turn 'trace' into -'diag', for example. -- diag(a) -> einsum("ii->i", a) -- sum(a, axis=0) -> einsum("i...->", a) - -Subscripts at the beginning and end may be specified by -putting an ellipsis "..." in the middle. For example, -the function einsum("i...i", a) takes the diagonal of -the first and last dimensions of the operand, and -einsum("ij...,jk...->ik...") takes the matrix product using -the first two indices of each operand instead of the last two. - -When there is only one operand, no axes being summed, and -no output parameter, this function returns a view -into the operand instead of making a copy. - -:: - - PyObject * - PyArray_NewLikeArray(PyArrayObject *prototype, NPY_ORDER - order, PyArray_Descr *dtype, int subok) - -Creates a new array with the same shape as the provided one, -with possible memory layout order and data type changes. - -prototype - The array the new one should be like. -order - NPY_CORDER - C-contiguous result. -NPY_FORTRANORDER - Fortran-contiguous result. -NPY_ANYORDER - Fortran if prototype is Fortran, C otherwise. -NPY_KEEPORDER - Keeps the axis ordering of prototype. -dtype - If not NULL, overrides the data type of the result. -subok - If 1, use the prototype's array subtype, otherwise -always create a base-class array. - -NOTE: If dtype is not NULL, steals the dtype reference. - -:: - - int - PyArray_GetArrayParamsFromObject(PyObject *op, PyArray_Descr - *requested_dtype, npy_bool - writeable, PyArray_Descr - **out_dtype, int *out_ndim, npy_intp - *out_dims, PyArrayObject - **out_arr, PyObject *context) - -Retrieves the array parameters for viewing/converting an arbitrary -PyObject* to a NumPy array. This allows the "innate type and shape" -of Python list-of-lists to be discovered without -actually converting to an array. - -In some cases, such as structured arrays and the __array__ interface, -a data type needs to be used to make sense of the object. When -this is needed, provide a Descr for 'requested_dtype', otherwise -provide NULL. This reference is not stolen. Also, if the requested -dtype doesn't modify the interpretation of the input, out_dtype will -still get the "innate" dtype of the object, not the dtype passed -in 'requested_dtype'. - -If writing to the value in 'op' is desired, set the boolean -'writeable' to 1. This raises an error when 'op' is a scalar, list -of lists, or other non-writeable 'op'. - -Result: When success (0 return value) is returned, either out_arr -is filled with a non-NULL PyArrayObject and -the rest of the parameters are untouched, or out_arr is -filled with NULL, and the rest of the parameters are -filled. - -Typical usage: - -PyArrayObject *arr = NULL; -PyArray_Descr *dtype = NULL; -int ndim = 0; -npy_intp dims[NPY_MAXDIMS]; - -if (PyArray_GetArrayParamsFromObject(op, NULL, 1, &dtype, -&ndim, &dims, &arr, NULL) < 0) { -return NULL; -} -if (arr == NULL) { -... validate/change dtype, validate flags, ndim, etc ... -// Could make custom strides here too -arr = PyArray_NewFromDescr(&PyArray_Type, dtype, ndim, -dims, NULL, -is_f_order ? NPY_ARRAY_F_CONTIGUOUS : 0, -NULL); -if (arr == NULL) { -return NULL; -} -if (PyArray_CopyObject(arr, op) < 0) { -Py_DECREF(arr); -return NULL; -} -} -else { -... in this case the other parameters weren't filled, just -validate and possibly copy arr itself ... -} -... use arr ... - -:: - - int - PyArray_ConvertClipmodeSequence(PyObject *object, NPY_CLIPMODE - *modes, int n) - -Convert an object to an array of n NPY_CLIPMODE values. -This is intended to be used in functions where a different mode -could be applied to each axis, like in ravel_multi_index. - -:: - - PyObject * - PyArray_MatrixProduct2(PyObject *op1, PyObject - *op2, PyArrayObject*out) - -Numeric.matrixproduct(a,v,out) -just like inner product but does the swapaxes stuff on the fly - -:: - - npy_bool - NpyIter_IsFirstVisit(NpyIter *iter, int iop) - -Checks to see whether this is the first time the elements -of the specified reduction operand which the iterator points at are -being seen for the first time. The function returns -a reasonable answer for reduction operands and when buffering is -disabled. The answer may be incorrect for buffered non-reduction -operands. - -This function is intended to be used in EXTERNAL_LOOP mode only, -and will produce some wrong answers when that mode is not enabled. - -If this function returns true, the caller should also -check the inner loop stride of the operand, because if -that stride is 0, then only the first element of the innermost -external loop is being visited for the first time. - -WARNING: For performance reasons, 'iop' is not bounds-checked, -it is not confirmed that 'iop' is actually a reduction -operand, and it is not confirmed that EXTERNAL_LOOP -mode is enabled. These checks are the responsibility of -the caller, and should be done outside of any inner loops. - -:: - - int - PyArray_SetBaseObject(PyArrayObject *arr, PyObject *obj) - -Sets the 'base' attribute of the array. This steals a reference -to 'obj'. - -Returns 0 on success, -1 on failure. - -:: - - void - PyArray_CreateSortedStridePerm(int ndim, npy_intp - *strides, npy_stride_sort_item - *out_strideperm) - - -This function populates the first ndim elements -of strideperm with sorted descending by their absolute values. -For example, the stride array (4, -2, 12) becomes -[(2, 12), (0, 4), (1, -2)]. - -:: - - void - PyArray_RemoveAxesInPlace(PyArrayObject *arr, npy_bool *flags) - - -Removes the axes flagged as True from the array, -modifying it in place. If an axis flagged for removal -has a shape entry bigger than one, this effectively selects -index zero for that axis. - -WARNING: If an axis flagged for removal has a shape equal to zero, -the array will point to invalid memory. The caller must -validate this! - -For example, this can be used to remove the reduction axes -from a reduction result once its computation is complete. - -:: - - void - PyArray_DebugPrint(PyArrayObject *obj) - -Prints the raw data of the ndarray in a form useful for debugging -low-level C issues. - -:: - - int - PyArray_FailUnlessWriteable(PyArrayObject *obj, const char *name) - - -This function does nothing if obj is writeable, and raises an exception -(and returns -1) if obj is not writeable. It may also do other -house-keeping, such as issuing warnings on arrays which are transitioning -to become views. Always call this function at some point before writing to -an array. - -'name' is a name for the array, used to give better error -messages. Something like "assignment destination", "output array", or even -just "array". - -:: - - int - PyArray_SetUpdateIfCopyBase(PyArrayObject *arr, PyArrayObject *base) - - -Precondition: 'arr' is a copy of 'base' (though possibly with different -strides, ordering, etc.). This function sets the UPDATEIFCOPY flag and the -->base pointer on 'arr', so that when 'arr' is destructed, it will copy any -changes back to 'base'. - -Steals a reference to 'base'. - -Returns 0 on success, -1 on failure. - -:: - - void * - PyDataMem_NEW(size_t size) - -Allocates memory for array data. - -:: - - void - PyDataMem_FREE(void *ptr) - -Free memory for array data. - -:: - - void * - PyDataMem_RENEW(void *ptr, size_t size) - -Reallocate/resize memory for array data. - -:: - - PyDataMem_EventHookFunc * - PyDataMem_SetEventHook(PyDataMem_EventHookFunc *newhook, void - *user_data, void **old_data) - -Sets the allocation event hook for numpy array data. -Takes a PyDataMem_EventHookFunc *, which has the signature: -void hook(void *old, void *new, size_t size, void *user_data). -Also takes a void *user_data, and void **old_data. - -Returns a pointer to the previous hook or NULL. If old_data is -non-NULL, the previous user_data pointer will be copied to it. - -If not NULL, hook will be called at the end of each PyDataMem_NEW/FREE/RENEW: -result = PyDataMem_NEW(size) -> (*hook)(NULL, result, size, user_data) -PyDataMem_FREE(ptr) -> (*hook)(ptr, NULL, 0, user_data) -result = PyDataMem_RENEW(ptr, size) -> (*hook)(ptr, result, size, user_data) - -When the hook is called, the GIL will be held by the calling -thread. The hook should be written to be reentrant, if it performs -operations that might cause new allocation events (such as the -creation/descruction numpy objects, or creating/destroying Python -objects which might cause a gc) - diff --git a/include/numpy/ndarrayobject.h b/include/numpy/ndarrayobject.h deleted file mode 100644 index f00dd7744..000000000 --- a/include/numpy/ndarrayobject.h +++ /dev/null @@ -1,244 +0,0 @@ -/* - * DON'T INCLUDE THIS DIRECTLY. - */ - -#ifndef NPY_NDARRAYOBJECT_H -#define NPY_NDARRAYOBJECT_H -#ifdef __cplusplus -#define CONFUSE_EMACS { -#define CONFUSE_EMACS2 } -extern "C" CONFUSE_EMACS -#undef CONFUSE_EMACS -#undef CONFUSE_EMACS2 -/* ... otherwise a semi-smart identer (like emacs) tries to indent - everything when you're typing */ -#endif - -#include "ndarraytypes.h" - -/* Includes the "function" C-API -- these are all stored in a - list of pointers --- one for each file - The two lists are concatenated into one in multiarray. - - They are available as import_array() -*/ - -#include "__multiarray_api.h" - - -/* C-API that requries previous API to be defined */ - -#define PyArray_DescrCheck(op) (((PyObject*)(op))->ob_type==&PyArrayDescr_Type) - -#define PyArray_Check(op) PyObject_TypeCheck(op, &PyArray_Type) -#define PyArray_CheckExact(op) (((PyObject*)(op))->ob_type == &PyArray_Type) - -#define PyArray_HasArrayInterfaceType(op, type, context, out) \ - ((((out)=PyArray_FromStructInterface(op)) != Py_NotImplemented) || \ - (((out)=PyArray_FromInterface(op)) != Py_NotImplemented) || \ - (((out)=PyArray_FromArrayAttr(op, type, context)) != \ - Py_NotImplemented)) - -#define PyArray_HasArrayInterface(op, out) \ - PyArray_HasArrayInterfaceType(op, NULL, NULL, out) - -#define PyArray_IsZeroDim(op) (PyArray_Check(op) && \ - (PyArray_NDIM((PyArrayObject *)op) == 0)) - -#define PyArray_IsScalar(obj, cls) \ - (PyObject_TypeCheck(obj, &Py##cls##ArrType_Type)) - -#define PyArray_CheckScalar(m) (PyArray_IsScalar(m, Generic) || \ - PyArray_IsZeroDim(m)) - -#define PyArray_IsPythonNumber(obj) \ - (PyInt_Check(obj) || PyFloat_Check(obj) || PyComplex_Check(obj) || \ - PyLong_Check(obj) || PyBool_Check(obj)) - -#define PyArray_IsPythonScalar(obj) \ - (PyArray_IsPythonNumber(obj) || PyString_Check(obj) || \ - PyUnicode_Check(obj)) - -#define PyArray_IsAnyScalar(obj) \ - (PyArray_IsScalar(obj, Generic) || PyArray_IsPythonScalar(obj)) - -#define PyArray_CheckAnyScalar(obj) (PyArray_IsPythonScalar(obj) || \ - PyArray_CheckScalar(obj)) - -#define PyArray_IsIntegerScalar(obj) (PyInt_Check(obj) \ - || PyLong_Check(obj) \ - || PyArray_IsScalar((obj), Integer)) - - -#define PyArray_GETCONTIGUOUS(m) (PyArray_ISCONTIGUOUS(m) ? \ - Py_INCREF(m), (m) : \ - (PyArrayObject *)(PyArray_Copy(m))) - -#define PyArray_SAMESHAPE(a1,a2) ((PyArray_NDIM(a1) == PyArray_NDIM(a2)) && \ - PyArray_CompareLists(PyArray_DIMS(a1), \ - PyArray_DIMS(a2), \ - PyArray_NDIM(a1))) - -#define PyArray_SIZE(m) PyArray_MultiplyList(PyArray_DIMS(m), PyArray_NDIM(m)) -#define PyArray_NBYTES(m) (PyArray_ITEMSIZE(m) * PyArray_SIZE(m)) -#define PyArray_FROM_O(m) PyArray_FromAny(m, NULL, 0, 0, 0, NULL) - -#define PyArray_FROM_OF(m,flags) PyArray_CheckFromAny(m, NULL, 0, 0, flags, \ - NULL) - -#define PyArray_FROM_OT(m,type) PyArray_FromAny(m, \ - PyArray_DescrFromType(type), 0, 0, 0, NULL); - -#define PyArray_FROM_OTF(m, type, flags) \ - PyArray_FromAny(m, PyArray_DescrFromType(type), 0, 0, \ - (((flags) & NPY_ARRAY_ENSURECOPY) ? \ - ((flags) | NPY_ARRAY_DEFAULT) : (flags)), NULL) - -#define PyArray_FROMANY(m, type, min, max, flags) \ - PyArray_FromAny(m, PyArray_DescrFromType(type), min, max, \ - (((flags) & NPY_ARRAY_ENSURECOPY) ? \ - (flags) | NPY_ARRAY_DEFAULT : (flags)), NULL) - -#define PyArray_ZEROS(m, dims, type, is_f_order) \ - PyArray_Zeros(m, dims, PyArray_DescrFromType(type), is_f_order) - -#define PyArray_EMPTY(m, dims, type, is_f_order) \ - PyArray_Empty(m, dims, PyArray_DescrFromType(type), is_f_order) - -#define PyArray_FILLWBYTE(obj, val) memset(PyArray_DATA(obj), val, \ - PyArray_NBYTES(obj)) - -#define PyArray_REFCOUNT(obj) (((PyObject *)(obj))->ob_refcnt) -#define NPY_REFCOUNT PyArray_REFCOUNT -#define NPY_MAX_ELSIZE (2 * NPY_SIZEOF_LONGDOUBLE) - -#define PyArray_ContiguousFromAny(op, type, min_depth, max_depth) \ - PyArray_FromAny(op, PyArray_DescrFromType(type), min_depth, \ - max_depth, NPY_ARRAY_DEFAULT, NULL) - -#define PyArray_EquivArrTypes(a1, a2) \ - PyArray_EquivTypes(PyArray_DESCR(a1), PyArray_DESCR(a2)) - -#define PyArray_EquivByteorders(b1, b2) \ - (((b1) == (b2)) || (PyArray_ISNBO(b1) == PyArray_ISNBO(b2))) - -#define PyArray_SimpleNew(nd, dims, typenum) \ - PyArray_New(&PyArray_Type, nd, dims, typenum, NULL, NULL, 0, 0, NULL) - -#define PyArray_SimpleNewFromData(nd, dims, typenum, data) \ - PyArray_New(&PyArray_Type, nd, dims, typenum, NULL, \ - data, 0, NPY_ARRAY_CARRAY, NULL) - -#define PyArray_SimpleNewFromDescr(nd, dims, descr) \ - PyArray_NewFromDescr(&PyArray_Type, descr, nd, dims, \ - NULL, NULL, 0, NULL) - -#define PyArray_ToScalar(data, arr) \ - PyArray_Scalar(data, PyArray_DESCR(arr), (PyObject *)arr) - - -/* These might be faster without the dereferencing of obj - going on inside -- of course an optimizing compiler should - inline the constants inside a for loop making it a moot point -*/ - -#define PyArray_GETPTR1(obj, i) ((void *)(PyArray_BYTES(obj) + \ - (i)*PyArray_STRIDES(obj)[0])) - -#define PyArray_GETPTR2(obj, i, j) ((void *)(PyArray_BYTES(obj) + \ - (i)*PyArray_STRIDES(obj)[0] + \ - (j)*PyArray_STRIDES(obj)[1])) - -#define PyArray_GETPTR3(obj, i, j, k) ((void *)(PyArray_BYTES(obj) + \ - (i)*PyArray_STRIDES(obj)[0] + \ - (j)*PyArray_STRIDES(obj)[1] + \ - (k)*PyArray_STRIDES(obj)[2])) - -#define PyArray_GETPTR4(obj, i, j, k, l) ((void *)(PyArray_BYTES(obj) + \ - (i)*PyArray_STRIDES(obj)[0] + \ - (j)*PyArray_STRIDES(obj)[1] + \ - (k)*PyArray_STRIDES(obj)[2] + \ - (l)*PyArray_STRIDES(obj)[3])) - -static NPY_INLINE void -PyArray_XDECREF_ERR(PyArrayObject *arr) -{ - if (arr != NULL) { - if (PyArray_FLAGS(arr) & NPY_ARRAY_UPDATEIFCOPY) { - PyArrayObject *base = (PyArrayObject *)PyArray_BASE(arr); - PyArray_ENABLEFLAGS(base, NPY_ARRAY_WRITEABLE); - PyArray_CLEARFLAGS(arr, NPY_ARRAY_UPDATEIFCOPY); - } - Py_DECREF(arr); - } -} - -#define PyArray_DESCR_REPLACE(descr) do { \ - PyArray_Descr *_new_; \ - _new_ = PyArray_DescrNew(descr); \ - Py_XDECREF(descr); \ - descr = _new_; \ - } while(0) - -/* Copy should always return contiguous array */ -#define PyArray_Copy(obj) PyArray_NewCopy(obj, NPY_CORDER) - -#define PyArray_FromObject(op, type, min_depth, max_depth) \ - PyArray_FromAny(op, PyArray_DescrFromType(type), min_depth, \ - max_depth, NPY_ARRAY_BEHAVED | \ - NPY_ARRAY_ENSUREARRAY, NULL) - -#define PyArray_ContiguousFromObject(op, type, min_depth, max_depth) \ - PyArray_FromAny(op, PyArray_DescrFromType(type), min_depth, \ - max_depth, NPY_ARRAY_DEFAULT | \ - NPY_ARRAY_ENSUREARRAY, NULL) - -#define PyArray_CopyFromObject(op, type, min_depth, max_depth) \ - PyArray_FromAny(op, PyArray_DescrFromType(type), min_depth, \ - max_depth, NPY_ARRAY_ENSURECOPY | \ - NPY_ARRAY_DEFAULT | \ - NPY_ARRAY_ENSUREARRAY, NULL) - -#define PyArray_Cast(mp, type_num) \ - PyArray_CastToType(mp, PyArray_DescrFromType(type_num), 0) - -#define PyArray_Take(ap, items, axis) \ - PyArray_TakeFrom(ap, items, axis, NULL, NPY_RAISE) - -#define PyArray_Put(ap, items, values) \ - PyArray_PutTo(ap, items, values, NPY_RAISE) - -/* Compatibility with old Numeric stuff -- don't use in new code */ - -#define PyArray_FromDimsAndData(nd, d, type, data) \ - PyArray_FromDimsAndDataAndDescr(nd, d, PyArray_DescrFromType(type), \ - data) - - -/* - Check to see if this key in the dictionary is the "title" - entry of the tuple (i.e. a duplicate dictionary entry in the fields - dict. -*/ - -#define NPY_TITLE_KEY(key, value) ((PyTuple_GET_SIZE((value))==3) && \ - (PyTuple_GET_ITEM((value), 2) == (key))) - - -/* Define python version independent deprecation macro */ - -#if PY_VERSION_HEX >= 0x02050000 -#define DEPRECATE(msg) PyErr_WarnEx(PyExc_DeprecationWarning,msg,1) -#define DEPRECATE_FUTUREWARNING(msg) PyErr_WarnEx(PyExc_FutureWarning,msg,1) -#else -#define DEPRECATE(msg) PyErr_Warn(PyExc_DeprecationWarning,msg) -#define DEPRECATE_FUTUREWARNING(msg) PyErr_Warn(PyExc_FutureWarning,msg) -#endif - - -#ifdef __cplusplus -} -#endif - - -#endif /* NPY_NDARRAYOBJECT_H */ diff --git a/include/numpy/ndarraytypes.h b/include/numpy/ndarraytypes.h deleted file mode 100644 index 04d037ec8..000000000 --- a/include/numpy/ndarraytypes.h +++ /dev/null @@ -1,1731 +0,0 @@ -#ifndef NDARRAYTYPES_H -#define NDARRAYTYPES_H - -/* numpyconfig.h is auto-generated by the installer */ -#include "numpyconfig.h" - -#include "npy_common.h" -#include "npy_endian.h" -#include "npy_cpu.h" -#include "utils.h" - -#ifdef NPY_ENABLE_SEPARATE_COMPILATION - #define NPY_NO_EXPORT NPY_VISIBILITY_HIDDEN -#else - #define NPY_NO_EXPORT static -#endif - -/* Only use thread if configured in config and python supports it */ -#if defined WITH_THREAD && !NPY_NO_SMP - #define NPY_ALLOW_THREADS 1 -#else - #define NPY_ALLOW_THREADS 0 -#endif - - - -/* - * There are several places in the code where an array of dimensions - * is allocated statically. This is the size of that static - * allocation. - * - * The array creation itself could have arbitrary dimensions but all - * the places where static allocation is used would need to be changed - * to dynamic (including inside of several structures) - */ - -#define NPY_MAXDIMS 32 -#define NPY_MAXARGS 32 - -/* Used for Converter Functions "O&" code in ParseTuple */ -#define NPY_FAIL 0 -#define NPY_SUCCEED 1 - -/* - * Binary compatibility version number. This number is increased - * whenever the C-API is changed such that binary compatibility is - * broken, i.e. whenever a recompile of extension modules is needed. - */ -#define NPY_VERSION NPY_ABI_VERSION - -/* - * Minor API version. This number is increased whenever a change is - * made to the C-API -- whether it breaks binary compatibility or not. - * Some changes, such as adding a function pointer to the end of the - * function table, can be made without breaking binary compatibility. - * In this case, only the NPY_FEATURE_VERSION (*not* NPY_VERSION) - * would be increased. Whenever binary compatibility is broken, both - * NPY_VERSION and NPY_FEATURE_VERSION should be increased. - */ -#define NPY_FEATURE_VERSION NPY_API_VERSION - -enum NPY_TYPES { NPY_BOOL=0, - NPY_BYTE, NPY_UBYTE, - NPY_SHORT, NPY_USHORT, - NPY_INT, NPY_UINT, - NPY_LONG, NPY_ULONG, - NPY_LONGLONG, NPY_ULONGLONG, - NPY_FLOAT, NPY_DOUBLE, NPY_LONGDOUBLE, - NPY_CFLOAT, NPY_CDOUBLE, NPY_CLONGDOUBLE, - NPY_OBJECT=17, - NPY_STRING, NPY_UNICODE, - NPY_VOID, - /* - * New 1.6 types appended, may be integrated - * into the above in 2.0. - */ - NPY_DATETIME, NPY_TIMEDELTA, NPY_HALF, - - NPY_NTYPES, - NPY_NOTYPE, - NPY_CHAR, /* special flag */ - NPY_USERDEF=256, /* leave room for characters */ - - /* The number of types not including the new 1.6 types */ - NPY_NTYPES_ABI_COMPATIBLE=21 -}; - -/* basetype array priority */ -#define NPY_PRIORITY 0.0 - -/* default subtype priority */ -#define NPY_SUBTYPE_PRIORITY 1.0 - -/* default scalar priority */ -#define NPY_SCALAR_PRIORITY -1000000.0 - -/* How many floating point types are there (excluding half) */ -#define NPY_NUM_FLOATTYPE 3 - -/* - * These characters correspond to the array type and the struct - * module - */ - -enum NPY_TYPECHAR { - NPY_BOOLLTR = '?', - NPY_BYTELTR = 'b', - NPY_UBYTELTR = 'B', - NPY_SHORTLTR = 'h', - NPY_USHORTLTR = 'H', - NPY_INTLTR = 'i', - NPY_UINTLTR = 'I', - NPY_LONGLTR = 'l', - NPY_ULONGLTR = 'L', - NPY_LONGLONGLTR = 'q', - NPY_ULONGLONGLTR = 'Q', - NPY_HALFLTR = 'e', - NPY_FLOATLTR = 'f', - NPY_DOUBLELTR = 'd', - NPY_LONGDOUBLELTR = 'g', - NPY_CFLOATLTR = 'F', - NPY_CDOUBLELTR = 'D', - NPY_CLONGDOUBLELTR = 'G', - NPY_OBJECTLTR = 'O', - NPY_STRINGLTR = 'S', - NPY_STRINGLTR2 = 'a', - NPY_UNICODELTR = 'U', - NPY_VOIDLTR = 'V', - NPY_DATETIMELTR = 'M', - NPY_TIMEDELTALTR = 'm', - NPY_CHARLTR = 'c', - - /* - * No Descriptor, just a define -- this let's - * Python users specify an array of integers - * large enough to hold a pointer on the - * platform - */ - NPY_INTPLTR = 'p', - NPY_UINTPLTR = 'P', - - /* - * These are for dtype 'kinds', not dtype 'typecodes' - * as the above are for. - */ - NPY_GENBOOLLTR ='b', - NPY_SIGNEDLTR = 'i', - NPY_UNSIGNEDLTR = 'u', - NPY_FLOATINGLTR = 'f', - NPY_COMPLEXLTR = 'c' -}; - -typedef enum { - NPY_QUICKSORT=0, - NPY_HEAPSORT=1, - NPY_MERGESORT=2 -} NPY_SORTKIND; -#define NPY_NSORTS (NPY_MERGESORT + 1) - - -typedef enum { - NPY_SEARCHLEFT=0, - NPY_SEARCHRIGHT=1 -} NPY_SEARCHSIDE; -#define NPY_NSEARCHSIDES (NPY_SEARCHRIGHT + 1) - - -typedef enum { - NPY_NOSCALAR=-1, - NPY_BOOL_SCALAR, - NPY_INTPOS_SCALAR, - NPY_INTNEG_SCALAR, - NPY_FLOAT_SCALAR, - NPY_COMPLEX_SCALAR, - NPY_OBJECT_SCALAR -} NPY_SCALARKIND; -#define NPY_NSCALARKINDS (NPY_OBJECT_SCALAR + 1) - -/* For specifying array memory layout or iteration order */ -typedef enum { - /* Fortran order if inputs are all Fortran, C otherwise */ - NPY_ANYORDER=-1, - /* C order */ - NPY_CORDER=0, - /* Fortran order */ - NPY_FORTRANORDER=1, - /* An order as close to the inputs as possible */ - NPY_KEEPORDER=2 -} NPY_ORDER; - -/* For specifying allowed casting in operations which support it */ -typedef enum { - /* Only allow identical types */ - NPY_NO_CASTING=0, - /* Allow identical and byte swapped types */ - NPY_EQUIV_CASTING=1, - /* Only allow safe casts */ - NPY_SAFE_CASTING=2, - /* Allow safe casts or casts within the same kind */ - NPY_SAME_KIND_CASTING=3, - /* Allow any casts */ - NPY_UNSAFE_CASTING=4, - - /* - * Temporary internal definition only, will be removed in upcoming - * release, see below - * */ - NPY_INTERNAL_UNSAFE_CASTING_BUT_WARN_UNLESS_SAME_KIND = 100, -} NPY_CASTING; - -typedef enum { - NPY_CLIP=0, - NPY_WRAP=1, - NPY_RAISE=2 -} NPY_CLIPMODE; - -/* The special not-a-time (NaT) value */ -#define NPY_DATETIME_NAT NPY_MIN_INT64 - -/* - * Upper bound on the length of a DATETIME ISO 8601 string - * YEAR: 21 (64-bit year) - * MONTH: 3 - * DAY: 3 - * HOURS: 3 - * MINUTES: 3 - * SECONDS: 3 - * ATTOSECONDS: 1 + 3*6 - * TIMEZONE: 5 - * NULL TERMINATOR: 1 - */ -#define NPY_DATETIME_MAX_ISO8601_STRLEN (21+3*5+1+3*6+6+1) - -typedef enum { - NPY_FR_Y = 0, /* Years */ - NPY_FR_M = 1, /* Months */ - NPY_FR_W = 2, /* Weeks */ - /* Gap where 1.6 NPY_FR_B (value 3) was */ - NPY_FR_D = 4, /* Days */ - NPY_FR_h = 5, /* hours */ - NPY_FR_m = 6, /* minutes */ - NPY_FR_s = 7, /* seconds */ - NPY_FR_ms = 8, /* milliseconds */ - NPY_FR_us = 9, /* microseconds */ - NPY_FR_ns = 10,/* nanoseconds */ - NPY_FR_ps = 11,/* picoseconds */ - NPY_FR_fs = 12,/* femtoseconds */ - NPY_FR_as = 13,/* attoseconds */ - NPY_FR_GENERIC = 14 /* Generic, unbound units, can convert to anything */ -} NPY_DATETIMEUNIT; - -/* - * NOTE: With the NPY_FR_B gap for 1.6 ABI compatibility, NPY_DATETIME_NUMUNITS - * is technically one more than the actual number of units. - */ -#define NPY_DATETIME_NUMUNITS (NPY_FR_GENERIC + 1) -#define NPY_DATETIME_DEFAULTUNIT NPY_FR_GENERIC - -/* - * Business day conventions for mapping invalid business - * days to valid business days. - */ -typedef enum { - /* Go forward in time to the following business day. */ - NPY_BUSDAY_FORWARD, - NPY_BUSDAY_FOLLOWING = NPY_BUSDAY_FORWARD, - /* Go backward in time to the preceding business day. */ - NPY_BUSDAY_BACKWARD, - NPY_BUSDAY_PRECEDING = NPY_BUSDAY_BACKWARD, - /* - * Go forward in time to the following business day, unless it - * crosses a month boundary, in which case go backward - */ - NPY_BUSDAY_MODIFIEDFOLLOWING, - /* - * Go backward in time to the preceding business day, unless it - * crosses a month boundary, in which case go forward. - */ - NPY_BUSDAY_MODIFIEDPRECEDING, - /* Produce a NaT for non-business days. */ - NPY_BUSDAY_NAT, - /* Raise an exception for non-business days. */ - NPY_BUSDAY_RAISE -} NPY_BUSDAY_ROLL; - -/************************************************************ - * NumPy Auxiliary Data for inner loops, sort functions, etc. - ************************************************************/ - -/* - * When creating an auxiliary data struct, this should always appear - * as the first member, like this: - * - * typedef struct { - * NpyAuxData base; - * double constant; - * } constant_multiplier_aux_data; - */ -typedef struct NpyAuxData_tag NpyAuxData; - -/* Function pointers for freeing or cloning auxiliary data */ -typedef void (NpyAuxData_FreeFunc) (NpyAuxData *); -typedef NpyAuxData *(NpyAuxData_CloneFunc) (NpyAuxData *); - -struct NpyAuxData_tag { - NpyAuxData_FreeFunc *free; - NpyAuxData_CloneFunc *clone; - /* To allow for a bit of expansion without breaking the ABI */ - void *reserved[2]; -}; - -/* Macros to use for freeing and cloning auxiliary data */ -#define NPY_AUXDATA_FREE(auxdata) \ - do { \ - if ((auxdata) != NULL) { \ - (auxdata)->free(auxdata); \ - } \ - } while(0) -#define NPY_AUXDATA_CLONE(auxdata) \ - ((auxdata)->clone(auxdata)) - -#define NPY_ERR(str) fprintf(stderr, #str); fflush(stderr); -#define NPY_ERR2(str) fprintf(stderr, str); fflush(stderr); - -#define NPY_STRINGIFY(x) #x -#define NPY_TOSTRING(x) NPY_STRINGIFY(x) - - /* - * Macros to define how array, and dimension/strides data is - * allocated. - */ - - /* Data buffer - PyDataMem_NEW/FREE/RENEW are in multiarraymodule.c */ - -#define NPY_USE_PYMEM 1 - -#if NPY_USE_PYMEM == 1 -#define PyArray_malloc PyMem_Malloc -#define PyArray_free PyMem_Free -#define PyArray_realloc PyMem_Realloc -#else -#define PyArray_malloc malloc -#define PyArray_free free -#define PyArray_realloc realloc -#endif - -/* Dimensions and strides */ -#define PyDimMem_NEW(size) \ - ((npy_intp *)PyArray_malloc(size*sizeof(npy_intp))) - -#define PyDimMem_FREE(ptr) PyArray_free(ptr) - -#define PyDimMem_RENEW(ptr,size) \ - ((npy_intp *)PyArray_realloc(ptr,size*sizeof(npy_intp))) - -/* forward declaration */ -struct _PyArray_Descr; - -/* These must deal with unaligned and swapped data if necessary */ -typedef PyObject * (PyArray_GetItemFunc) (void *, void *); -typedef int (PyArray_SetItemFunc)(PyObject *, void *, void *); - -typedef void (PyArray_CopySwapNFunc)(void *, npy_intp, void *, npy_intp, - npy_intp, int, void *); - -typedef void (PyArray_CopySwapFunc)(void *, void *, int, void *); -typedef npy_bool (PyArray_NonzeroFunc)(void *, void *); - - -/* - * These assume aligned and notswapped data -- a buffer will be used - * before or contiguous data will be obtained - */ - -typedef int (PyArray_CompareFunc)(const void *, const void *, void *); -typedef int (PyArray_ArgFunc)(void*, npy_intp, npy_intp*, void *); - -typedef void (PyArray_DotFunc)(void *, npy_intp, void *, npy_intp, void *, - npy_intp, void *); - -typedef void (PyArray_VectorUnaryFunc)(void *, void *, npy_intp, void *, - void *); - -/* - * XXX the ignore argument should be removed next time the API version - * is bumped. It used to be the separator. - */ -typedef int (PyArray_ScanFunc)(FILE *fp, void *dptr, - char *ignore, struct _PyArray_Descr *); -typedef int (PyArray_FromStrFunc)(char *s, void *dptr, char **endptr, - struct _PyArray_Descr *); - -typedef int (PyArray_FillFunc)(void *, npy_intp, void *); - -typedef int (PyArray_SortFunc)(void *, npy_intp, void *); -typedef int (PyArray_ArgSortFunc)(void *, npy_intp *, npy_intp, void *); - -typedef int (PyArray_FillWithScalarFunc)(void *, npy_intp, void *, void *); - -typedef int (PyArray_ScalarKindFunc)(void *); - -typedef void (PyArray_FastClipFunc)(void *in, npy_intp n_in, void *min, - void *max, void *out); -typedef void (PyArray_FastPutmaskFunc)(void *in, void *mask, npy_intp n_in, - void *values, npy_intp nv); -typedef int (PyArray_FastTakeFunc)(void *dest, void *src, npy_intp *indarray, - npy_intp nindarray, npy_intp n_outer, - npy_intp m_middle, npy_intp nelem, - NPY_CLIPMODE clipmode); - -typedef struct { - npy_intp *ptr; - int len; -} PyArray_Dims; - -typedef struct { - /* - * Functions to cast to most other standard types - * Can have some NULL entries. The types - * DATETIME, TIMEDELTA, and HALF go into the castdict - * even though they are built-in. - */ - PyArray_VectorUnaryFunc *cast[NPY_NTYPES_ABI_COMPATIBLE]; - - /* The next four functions *cannot* be NULL */ - - /* - * Functions to get and set items with standard Python types - * -- not array scalars - */ - PyArray_GetItemFunc *getitem; - PyArray_SetItemFunc *setitem; - - /* - * Copy and/or swap data. Memory areas may not overlap - * Use memmove first if they might - */ - PyArray_CopySwapNFunc *copyswapn; - PyArray_CopySwapFunc *copyswap; - - /* - * Function to compare items - * Can be NULL - */ - PyArray_CompareFunc *compare; - - /* - * Function to select largest - * Can be NULL - */ - PyArray_ArgFunc *argmax; - - /* - * Function to compute dot product - * Can be NULL - */ - PyArray_DotFunc *dotfunc; - - /* - * Function to scan an ASCII file and - * place a single value plus possible separator - * Can be NULL - */ - PyArray_ScanFunc *scanfunc; - - /* - * Function to read a single value from a string - * and adjust the pointer; Can be NULL - */ - PyArray_FromStrFunc *fromstr; - - /* - * Function to determine if data is zero or not - * If NULL a default version is - * used at Registration time. - */ - PyArray_NonzeroFunc *nonzero; - - /* - * Used for arange. - * Can be NULL. - */ - PyArray_FillFunc *fill; - - /* - * Function to fill arrays with scalar values - * Can be NULL - */ - PyArray_FillWithScalarFunc *fillwithscalar; - - /* - * Sorting functions - * Can be NULL - */ - PyArray_SortFunc *sort[NPY_NSORTS]; - PyArray_ArgSortFunc *argsort[NPY_NSORTS]; - - /* - * Dictionary of additional casting functions - * PyArray_VectorUnaryFuncs - * which can be populated to support casting - * to other registered types. Can be NULL - */ - PyObject *castdict; - - /* - * Functions useful for generalizing - * the casting rules. - * Can be NULL; - */ - PyArray_ScalarKindFunc *scalarkind; - int **cancastscalarkindto; - int *cancastto; - - PyArray_FastClipFunc *fastclip; - PyArray_FastPutmaskFunc *fastputmask; - PyArray_FastTakeFunc *fasttake; - - /* - * Function to select smallest - * Can be NULL - */ - PyArray_ArgFunc *argmin; - -} PyArray_ArrFuncs; - -/* The item must be reference counted when it is inserted or extracted. */ -#define NPY_ITEM_REFCOUNT 0x01 -/* Same as needing REFCOUNT */ -#define NPY_ITEM_HASOBJECT 0x01 -/* Convert to list for pickling */ -#define NPY_LIST_PICKLE 0x02 -/* The item is a POINTER */ -#define NPY_ITEM_IS_POINTER 0x04 -/* memory needs to be initialized for this data-type */ -#define NPY_NEEDS_INIT 0x08 -/* operations need Python C-API so don't give-up thread. */ -#define NPY_NEEDS_PYAPI 0x10 -/* Use f.getitem when extracting elements of this data-type */ -#define NPY_USE_GETITEM 0x20 -/* Use f.setitem when setting creating 0-d array from this data-type.*/ -#define NPY_USE_SETITEM 0x40 -/* A sticky flag specifically for structured arrays */ -#define NPY_ALIGNED_STRUCT 0x80 - -/* - *These are inherited for global data-type if any data-types in the - * field have them - */ -#define NPY_FROM_FIELDS (NPY_NEEDS_INIT | NPY_LIST_PICKLE | \ - NPY_ITEM_REFCOUNT | NPY_NEEDS_PYAPI) - -#define NPY_OBJECT_DTYPE_FLAGS (NPY_LIST_PICKLE | NPY_USE_GETITEM | \ - NPY_ITEM_IS_POINTER | NPY_ITEM_REFCOUNT | \ - NPY_NEEDS_INIT | NPY_NEEDS_PYAPI) - -#define PyDataType_FLAGCHK(dtype, flag) \ - (((dtype)->flags & (flag)) == (flag)) - -#define PyDataType_REFCHK(dtype) \ - PyDataType_FLAGCHK(dtype, NPY_ITEM_REFCOUNT) - -typedef struct _PyArray_Descr { - PyObject_HEAD - /* - * the type object representing an - * instance of this type -- should not - * be two type_numbers with the same type - * object. - */ - PyTypeObject *typeobj; - /* kind for this type */ - char kind; - /* unique-character representing this type */ - char type; - /* - * '>' (big), '<' (little), '|' - * (not-applicable), or '=' (native). - */ - char byteorder; - /* flags describing data type */ - char flags; - /* number representing this type */ - int type_num; - /* element size (itemsize) for this type */ - int elsize; - /* alignment needed for this type */ - int alignment; - /* - * Non-NULL if this type is - * is an array (C-contiguous) - * of some other type - */ - struct _arr_descr *subarray; - /* - * The fields dictionary for this type - * For statically defined descr this - * is always Py_None - */ - PyObject *fields; - /* - * An ordered tuple of field names or NULL - * if no fields are defined - */ - PyObject *names; - /* - * a table of functions specific for each - * basic data descriptor - */ - PyArray_ArrFuncs *f; - /* Metadata about this dtype */ - PyObject *metadata; - /* - * Metadata specific to the C implementation - * of the particular dtype. This was added - * for NumPy 1.7.0. - */ - NpyAuxData *c_metadata; -} PyArray_Descr; - -typedef struct _arr_descr { - PyArray_Descr *base; - PyObject *shape; /* a tuple */ -} PyArray_ArrayDescr; - -/* - * The main array object structure. - * - * It has been recommended to use the inline functions defined below - * (PyArray_DATA and friends) to access fields here for a number of - * releases. Direct access to the members themselves is deprecated. - * To ensure that your code does not use deprecated access, - * #define NPY_NO_DEPRECATED_API NPY_1_7_VERSION - * (or NPY_1_8_VERSION or higher as required). - */ -/* This struct will be moved to a private header in a future release */ -typedef struct tagPyArrayObject_fields { - PyObject_HEAD - /* Pointer to the raw data buffer */ - char *data; - /* The number of dimensions, also called 'ndim' */ - int nd; - /* The size in each dimension, also called 'shape' */ - npy_intp *dimensions; - /* - * Number of bytes to jump to get to the - * next element in each dimension - */ - npy_intp *strides; - /* - * This object is decref'd upon - * deletion of array. Except in the - * case of UPDATEIFCOPY which has - * special handling. - * - * For views it points to the original - * array, collapsed so no chains of - * views occur. - * - * For creation from buffer object it - * points to an object that shold be - * decref'd on deletion - * - * For UPDATEIFCOPY flag this is an - * array to-be-updated upon deletion - * of this one - */ - PyObject *base; - /* Pointer to type structure */ - PyArray_Descr *descr; - /* Flags describing array -- see below */ - int flags; - /* For weak references */ - PyObject *weakreflist; -} PyArrayObject_fields; - -/* - * To hide the implementation details, we only expose - * the Python struct HEAD. - */ -#if !(defined(NPY_NO_DEPRECATED_API) && (NPY_API_VERSION <= NPY_NO_DEPRECATED_API)) -/* - * Can't put this in npy_deprecated_api.h like the others. - * PyArrayObject field access is deprecated as of NumPy 1.7. - */ -typedef PyArrayObject_fields PyArrayObject; -#else -typedef struct tagPyArrayObject { - PyObject_HEAD -} PyArrayObject; -#endif - -#define NPY_SIZEOF_PYARRAYOBJECT (sizeof(PyArrayObject_fields)) - -/* Array Flags Object */ -typedef struct PyArrayFlagsObject { - PyObject_HEAD - PyObject *arr; - int flags; -} PyArrayFlagsObject; - -/* Mirrors buffer object to ptr */ - -typedef struct { - PyObject_HEAD - PyObject *base; - void *ptr; - npy_intp len; - int flags; -} PyArray_Chunk; - -typedef struct { - NPY_DATETIMEUNIT base; - int num; -} PyArray_DatetimeMetaData; - -typedef struct { - NpyAuxData base; - PyArray_DatetimeMetaData meta; -} PyArray_DatetimeDTypeMetaData; - -/* - * This structure contains an exploded view of a date-time value. - * NaT is represented by year == NPY_DATETIME_NAT. - */ -typedef struct { - npy_int64 year; - npy_int32 month, day, hour, min, sec, us, ps, as; -} npy_datetimestruct; - -/* This is not used internally. */ -typedef struct { - npy_int64 day; - npy_int32 sec, us, ps, as; -} npy_timedeltastruct; - -typedef int (PyArray_FinalizeFunc)(PyArrayObject *, PyObject *); - -/* - * Means c-style contiguous (last index varies the fastest). The data - * elements right after each other. - * - * This flag may be requested in constructor functions. - * This flag may be tested for in PyArray_FLAGS(arr). - */ -#define NPY_ARRAY_C_CONTIGUOUS 0x0001 - -/* - * Set if array is a contiguous Fortran array: the first index varies - * the fastest in memory (strides array is reverse of C-contiguous - * array) - * - * This flag may be requested in constructor functions. - * This flag may be tested for in PyArray_FLAGS(arr). - */ -#define NPY_ARRAY_F_CONTIGUOUS 0x0002 - -/* - * Note: all 0-d arrays are C_CONTIGUOUS and F_CONTIGUOUS. If a - * 1-d array is C_CONTIGUOUS it is also F_CONTIGUOUS - */ - -/* - * If set, the array owns the data: it will be free'd when the array - * is deleted. - * - * This flag may be tested for in PyArray_FLAGS(arr). - */ -#define NPY_ARRAY_OWNDATA 0x0004 - -/* - * An array never has the next four set; they're only used as parameter - * flags to the the various FromAny functions - * - * This flag may be requested in constructor functions. - */ - -/* Cause a cast to occur regardless of whether or not it is safe. */ -#define NPY_ARRAY_FORCECAST 0x0010 - -/* - * Always copy the array. Returned arrays are always CONTIGUOUS, - * ALIGNED, and WRITEABLE. - * - * This flag may be requested in constructor functions. - */ -#define NPY_ARRAY_ENSURECOPY 0x0020 - -/* - * Make sure the returned array is a base-class ndarray - * - * This flag may be requested in constructor functions. - */ -#define NPY_ARRAY_ENSUREARRAY 0x0040 - -/* - * Make sure that the strides are in units of the element size Needed - * for some operations with record-arrays. - * - * This flag may be requested in constructor functions. - */ -#define NPY_ARRAY_ELEMENTSTRIDES 0x0080 - -/* - * Array data is aligned on the appropiate memory address for the type - * stored according to how the compiler would align things (e.g., an - * array of integers (4 bytes each) starts on a memory address that's - * a multiple of 4) - * - * This flag may be requested in constructor functions. - * This flag may be tested for in PyArray_FLAGS(arr). - */ -#define NPY_ARRAY_ALIGNED 0x0100 - -/* - * Array data has the native endianness - * - * This flag may be requested in constructor functions. - */ -#define NPY_ARRAY_NOTSWAPPED 0x0200 - -/* - * Array data is writeable - * - * This flag may be requested in constructor functions. - * This flag may be tested for in PyArray_FLAGS(arr). - */ -#define NPY_ARRAY_WRITEABLE 0x0400 - -/* - * If this flag is set, then base contains a pointer to an array of - * the same size that should be updated with the current contents of - * this array when this array is deallocated - * - * This flag may be requested in constructor functions. - * This flag may be tested for in PyArray_FLAGS(arr). - */ -#define NPY_ARRAY_UPDATEIFCOPY 0x1000 - -/* - * NOTE: there are also internal flags defined in multiarray/arrayobject.h, - * which start at bit 31 and work down. - */ - -#define NPY_ARRAY_BEHAVED (NPY_ARRAY_ALIGNED | \ - NPY_ARRAY_WRITEABLE) -#define NPY_ARRAY_BEHAVED_NS (NPY_ARRAY_ALIGNED | \ - NPY_ARRAY_WRITEABLE | \ - NPY_ARRAY_NOTSWAPPED) -#define NPY_ARRAY_CARRAY (NPY_ARRAY_C_CONTIGUOUS | \ - NPY_ARRAY_BEHAVED) -#define NPY_ARRAY_CARRAY_RO (NPY_ARRAY_C_CONTIGUOUS | \ - NPY_ARRAY_ALIGNED) -#define NPY_ARRAY_FARRAY (NPY_ARRAY_F_CONTIGUOUS | \ - NPY_ARRAY_BEHAVED) -#define NPY_ARRAY_FARRAY_RO (NPY_ARRAY_F_CONTIGUOUS | \ - NPY_ARRAY_ALIGNED) -#define NPY_ARRAY_DEFAULT (NPY_ARRAY_CARRAY) -#define NPY_ARRAY_IN_ARRAY (NPY_ARRAY_CARRAY_RO) -#define NPY_ARRAY_OUT_ARRAY (NPY_ARRAY_CARRAY) -#define NPY_ARRAY_INOUT_ARRAY (NPY_ARRAY_CARRAY | \ - NPY_ARRAY_UPDATEIFCOPY) -#define NPY_ARRAY_IN_FARRAY (NPY_ARRAY_FARRAY_RO) -#define NPY_ARRAY_OUT_FARRAY (NPY_ARRAY_FARRAY) -#define NPY_ARRAY_INOUT_FARRAY (NPY_ARRAY_FARRAY | \ - NPY_ARRAY_UPDATEIFCOPY) - -#define NPY_ARRAY_UPDATE_ALL (NPY_ARRAY_C_CONTIGUOUS | \ - NPY_ARRAY_F_CONTIGUOUS | \ - NPY_ARRAY_ALIGNED) - -/* This flag is for the array interface, not PyArrayObject */ -#define NPY_ARR_HAS_DESCR 0x0800 - - - - -/* - * Size of internal buffers used for alignment Make BUFSIZE a multiple - * of sizeof(npy_cdouble) -- usually 16 so that ufunc buffers are aligned - */ -#define NPY_MIN_BUFSIZE ((int)sizeof(npy_cdouble)) -#define NPY_MAX_BUFSIZE (((int)sizeof(npy_cdouble))*1000000) -#define NPY_BUFSIZE 8192 -/* buffer stress test size: */ -/*#define NPY_BUFSIZE 17*/ - -#define PyArray_MAX(a,b) (((a)>(b))?(a):(b)) -#define PyArray_MIN(a,b) (((a)<(b))?(a):(b)) -#define PyArray_CLT(p,q) ((((p).real==(q).real) ? ((p).imag < (q).imag) : \ - ((p).real < (q).real))) -#define PyArray_CGT(p,q) ((((p).real==(q).real) ? ((p).imag > (q).imag) : \ - ((p).real > (q).real))) -#define PyArray_CLE(p,q) ((((p).real==(q).real) ? ((p).imag <= (q).imag) : \ - ((p).real <= (q).real))) -#define PyArray_CGE(p,q) ((((p).real==(q).real) ? ((p).imag >= (q).imag) : \ - ((p).real >= (q).real))) -#define PyArray_CEQ(p,q) (((p).real==(q).real) && ((p).imag == (q).imag)) -#define PyArray_CNE(p,q) (((p).real!=(q).real) || ((p).imag != (q).imag)) - -/* - * C API: consists of Macros and functions. The MACROS are defined - * here. - */ - - -#define PyArray_ISCONTIGUOUS(m) PyArray_CHKFLAGS(m, NPY_ARRAY_C_CONTIGUOUS) -#define PyArray_ISWRITEABLE(m) PyArray_CHKFLAGS(m, NPY_ARRAY_WRITEABLE) -#define PyArray_ISALIGNED(m) PyArray_CHKFLAGS(m, NPY_ARRAY_ALIGNED) - -#define PyArray_IS_C_CONTIGUOUS(m) PyArray_CHKFLAGS(m, NPY_ARRAY_C_CONTIGUOUS) -#define PyArray_IS_F_CONTIGUOUS(m) PyArray_CHKFLAGS(m, NPY_ARRAY_F_CONTIGUOUS) - -#if NPY_ALLOW_THREADS -#define NPY_BEGIN_ALLOW_THREADS Py_BEGIN_ALLOW_THREADS -#define NPY_END_ALLOW_THREADS Py_END_ALLOW_THREADS -#define NPY_BEGIN_THREADS_DEF PyThreadState *_save=NULL; -#define NPY_BEGIN_THREADS do {_save = PyEval_SaveThread();} while (0); -#define NPY_END_THREADS do {if (_save) PyEval_RestoreThread(_save);} while (0); - -#define NPY_BEGIN_THREADS_DESCR(dtype) \ - do {if (!(PyDataType_FLAGCHK(dtype, NPY_NEEDS_PYAPI))) \ - NPY_BEGIN_THREADS;} while (0); - -#define NPY_END_THREADS_DESCR(dtype) \ - do {if (!(PyDataType_FLAGCHK(dtype, NPY_NEEDS_PYAPI))) \ - NPY_END_THREADS; } while (0); - -#define NPY_ALLOW_C_API_DEF PyGILState_STATE __save__; -#define NPY_ALLOW_C_API do {__save__ = PyGILState_Ensure();} while (0); -#define NPY_DISABLE_C_API do {PyGILState_Release(__save__);} while (0); -#else -#define NPY_BEGIN_ALLOW_THREADS -#define NPY_END_ALLOW_THREADS -#define NPY_BEGIN_THREADS_DEF -#define NPY_BEGIN_THREADS -#define NPY_END_THREADS -#define NPY_BEGIN_THREADS_DESCR(dtype) -#define NPY_END_THREADS_DESCR(dtype) -#define NPY_ALLOW_C_API_DEF -#define NPY_ALLOW_C_API -#define NPY_DISABLE_C_API -#endif - -/********************************** - * The nditer object, added in 1.6 - **********************************/ - -/* The actual structure of the iterator is an internal detail */ -typedef struct NpyIter_InternalOnly NpyIter; - -/* Iterator function pointers that may be specialized */ -typedef int (NpyIter_IterNextFunc)(NpyIter *iter); -typedef void (NpyIter_GetMultiIndexFunc)(NpyIter *iter, - npy_intp *outcoords); - -/*** Global flags that may be passed to the iterator constructors ***/ - -/* Track an index representing C order */ -#define NPY_ITER_C_INDEX 0x00000001 -/* Track an index representing Fortran order */ -#define NPY_ITER_F_INDEX 0x00000002 -/* Track a multi-index */ -#define NPY_ITER_MULTI_INDEX 0x00000004 -/* User code external to the iterator does the 1-dimensional innermost loop */ -#define NPY_ITER_EXTERNAL_LOOP 0x00000008 -/* Convert all the operands to a common data type */ -#define NPY_ITER_COMMON_DTYPE 0x00000010 -/* Operands may hold references, requiring API access during iteration */ -#define NPY_ITER_REFS_OK 0x00000020 -/* Zero-sized operands should be permitted, iteration checks IterSize for 0 */ -#define NPY_ITER_ZEROSIZE_OK 0x00000040 -/* Permits reductions (size-0 stride with dimension size > 1) */ -#define NPY_ITER_REDUCE_OK 0x00000080 -/* Enables sub-range iteration */ -#define NPY_ITER_RANGED 0x00000100 -/* Enables buffering */ -#define NPY_ITER_BUFFERED 0x00000200 -/* When buffering is enabled, grows the inner loop if possible */ -#define NPY_ITER_GROWINNER 0x00000400 -/* Delay allocation of buffers until first Reset* call */ -#define NPY_ITER_DELAY_BUFALLOC 0x00000800 -/* When NPY_KEEPORDER is specified, disable reversing negative-stride axes */ -#define NPY_ITER_DONT_NEGATE_STRIDES 0x00001000 - -/*** Per-operand flags that may be passed to the iterator constructors ***/ - -/* The operand will be read from and written to */ -#define NPY_ITER_READWRITE 0x00010000 -/* The operand will only be read from */ -#define NPY_ITER_READONLY 0x00020000 -/* The operand will only be written to */ -#define NPY_ITER_WRITEONLY 0x00040000 -/* The operand's data must be in native byte order */ -#define NPY_ITER_NBO 0x00080000 -/* The operand's data must be aligned */ -#define NPY_ITER_ALIGNED 0x00100000 -/* The operand's data must be contiguous (within the inner loop) */ -#define NPY_ITER_CONTIG 0x00200000 -/* The operand may be copied to satisfy requirements */ -#define NPY_ITER_COPY 0x00400000 -/* The operand may be copied with UPDATEIFCOPY to satisfy requirements */ -#define NPY_ITER_UPDATEIFCOPY 0x00800000 -/* Allocate the operand if it is NULL */ -#define NPY_ITER_ALLOCATE 0x01000000 -/* If an operand is allocated, don't use any subtype */ -#define NPY_ITER_NO_SUBTYPE 0x02000000 -/* This is a virtual array slot, operand is NULL but temporary data is there */ -#define NPY_ITER_VIRTUAL 0x04000000 -/* Require that the dimension match the iterator dimensions exactly */ -#define NPY_ITER_NO_BROADCAST 0x08000000 -/* A mask is being used on this array, affects buffer -> array copy */ -#define NPY_ITER_WRITEMASKED 0x10000000 -/* This array is the mask for all WRITEMASKED operands */ -#define NPY_ITER_ARRAYMASK 0x20000000 - -#define NPY_ITER_GLOBAL_FLAGS 0x0000ffff -#define NPY_ITER_PER_OP_FLAGS 0xffff0000 - - -/***************************** - * Basic iterator object - *****************************/ - -/* FWD declaration */ -typedef struct PyArrayIterObject_tag PyArrayIterObject; - -/* - * type of the function which translates a set of coordinates to a - * pointer to the data - */ -typedef char* (*npy_iter_get_dataptr_t)(PyArrayIterObject* iter, npy_intp*); - -struct PyArrayIterObject_tag { - PyObject_HEAD - int nd_m1; /* number of dimensions - 1 */ - npy_intp index, size; - npy_intp coordinates[NPY_MAXDIMS];/* N-dimensional loop */ - npy_intp dims_m1[NPY_MAXDIMS]; /* ao->dimensions - 1 */ - npy_intp strides[NPY_MAXDIMS]; /* ao->strides or fake */ - npy_intp backstrides[NPY_MAXDIMS];/* how far to jump back */ - npy_intp factors[NPY_MAXDIMS]; /* shape factors */ - PyArrayObject *ao; - char *dataptr; /* pointer to current item*/ - npy_bool contiguous; - - npy_intp bounds[NPY_MAXDIMS][2]; - npy_intp limits[NPY_MAXDIMS][2]; - npy_intp limits_sizes[NPY_MAXDIMS]; - npy_iter_get_dataptr_t translate; -} ; - - -/* Iterator API */ -#define PyArrayIter_Check(op) PyObject_TypeCheck(op, &PyArrayIter_Type) - -#define _PyAIT(it) ((PyArrayIterObject *)(it)) -#define PyArray_ITER_RESET(it) do { \ - _PyAIT(it)->index = 0; \ - _PyAIT(it)->dataptr = PyArray_BYTES(_PyAIT(it)->ao); \ - memset(_PyAIT(it)->coordinates, 0, \ - (_PyAIT(it)->nd_m1+1)*sizeof(npy_intp)); \ -} while (0) - -#define _PyArray_ITER_NEXT1(it) do { \ - (it)->dataptr += _PyAIT(it)->strides[0]; \ - (it)->coordinates[0]++; \ -} while (0) - -#define _PyArray_ITER_NEXT2(it) do { \ - if ((it)->coordinates[1] < (it)->dims_m1[1]) { \ - (it)->coordinates[1]++; \ - (it)->dataptr += (it)->strides[1]; \ - } \ - else { \ - (it)->coordinates[1] = 0; \ - (it)->coordinates[0]++; \ - (it)->dataptr += (it)->strides[0] - \ - (it)->backstrides[1]; \ - } \ -} while (0) - -#define _PyArray_ITER_NEXT3(it) do { \ - if ((it)->coordinates[2] < (it)->dims_m1[2]) { \ - (it)->coordinates[2]++; \ - (it)->dataptr += (it)->strides[2]; \ - } \ - else { \ - (it)->coordinates[2] = 0; \ - (it)->dataptr -= (it)->backstrides[2]; \ - if ((it)->coordinates[1] < (it)->dims_m1[1]) { \ - (it)->coordinates[1]++; \ - (it)->dataptr += (it)->strides[1]; \ - } \ - else { \ - (it)->coordinates[1] = 0; \ - (it)->coordinates[0]++; \ - (it)->dataptr += (it)->strides[0] \ - (it)->backstrides[1]; \ - } \ - } \ -} while (0) - -#define PyArray_ITER_NEXT(it) do { \ - _PyAIT(it)->index++; \ - if (_PyAIT(it)->nd_m1 == 0) { \ - _PyArray_ITER_NEXT1(_PyAIT(it)); \ - } \ - else if (_PyAIT(it)->contiguous) \ - _PyAIT(it)->dataptr += PyArray_DESCR(_PyAIT(it)->ao)->elsize; \ - else if (_PyAIT(it)->nd_m1 == 1) { \ - _PyArray_ITER_NEXT2(_PyAIT(it)); \ - } \ - else { \ - int __npy_i; \ - for (__npy_i=_PyAIT(it)->nd_m1; __npy_i >= 0; __npy_i--) { \ - if (_PyAIT(it)->coordinates[__npy_i] < \ - _PyAIT(it)->dims_m1[__npy_i]) { \ - _PyAIT(it)->coordinates[__npy_i]++; \ - _PyAIT(it)->dataptr += \ - _PyAIT(it)->strides[__npy_i]; \ - break; \ - } \ - else { \ - _PyAIT(it)->coordinates[__npy_i] = 0; \ - _PyAIT(it)->dataptr -= \ - _PyAIT(it)->backstrides[__npy_i]; \ - } \ - } \ - } \ -} while (0) - -#define PyArray_ITER_GOTO(it, destination) do { \ - int __npy_i; \ - _PyAIT(it)->index = 0; \ - _PyAIT(it)->dataptr = PyArray_BYTES(_PyAIT(it)->ao); \ - for (__npy_i = _PyAIT(it)->nd_m1; __npy_i>=0; __npy_i--) { \ - if (destination[__npy_i] < 0) { \ - destination[__npy_i] += \ - _PyAIT(it)->dims_m1[__npy_i]+1; \ - } \ - _PyAIT(it)->dataptr += destination[__npy_i] * \ - _PyAIT(it)->strides[__npy_i]; \ - _PyAIT(it)->coordinates[__npy_i] = \ - destination[__npy_i]; \ - _PyAIT(it)->index += destination[__npy_i] * \ - ( __npy_i==_PyAIT(it)->nd_m1 ? 1 : \ - _PyAIT(it)->dims_m1[__npy_i+1]+1) ; \ - } \ -} while (0) - -#define PyArray_ITER_GOTO1D(it, ind) do { \ - int __npy_i; \ - npy_intp __npy_ind = (npy_intp) (ind); \ - if (__npy_ind < 0) __npy_ind += _PyAIT(it)->size; \ - _PyAIT(it)->index = __npy_ind; \ - if (_PyAIT(it)->nd_m1 == 0) { \ - _PyAIT(it)->dataptr = PyArray_BYTES(_PyAIT(it)->ao) + \ - __npy_ind * _PyAIT(it)->strides[0]; \ - } \ - else if (_PyAIT(it)->contiguous) \ - _PyAIT(it)->dataptr = PyArray_BYTES(_PyAIT(it)->ao) + \ - __npy_ind * PyArray_DESCR(_PyAIT(it)->ao)->elsize; \ - else { \ - _PyAIT(it)->dataptr = PyArray_BYTES(_PyAIT(it)->ao); \ - for (__npy_i = 0; __npy_i<=_PyAIT(it)->nd_m1; \ - __npy_i++) { \ - _PyAIT(it)->dataptr += \ - (__npy_ind / _PyAIT(it)->factors[__npy_i]) \ - * _PyAIT(it)->strides[__npy_i]; \ - __npy_ind %= _PyAIT(it)->factors[__npy_i]; \ - } \ - } \ -} while (0) - -#define PyArray_ITER_DATA(it) ((void *)(_PyAIT(it)->dataptr)) - -#define PyArray_ITER_NOTDONE(it) (_PyAIT(it)->index < _PyAIT(it)->size) - - -/* - * Any object passed to PyArray_Broadcast must be binary compatible - * with this structure. - */ - -typedef struct { - PyObject_HEAD - int numiter; /* number of iters */ - npy_intp size; /* broadcasted size */ - npy_intp index; /* current index */ - int nd; /* number of dims */ - npy_intp dimensions[NPY_MAXDIMS]; /* dimensions */ - PyArrayIterObject *iters[NPY_MAXARGS]; /* iterators */ -} PyArrayMultiIterObject; - -#define _PyMIT(m) ((PyArrayMultiIterObject *)(m)) -#define PyArray_MultiIter_RESET(multi) do { \ - int __npy_mi; \ - _PyMIT(multi)->index = 0; \ - for (__npy_mi=0; __npy_mi < _PyMIT(multi)->numiter; __npy_mi++) { \ - PyArray_ITER_RESET(_PyMIT(multi)->iters[__npy_mi]); \ - } \ -} while (0) - -#define PyArray_MultiIter_NEXT(multi) do { \ - int __npy_mi; \ - _PyMIT(multi)->index++; \ - for (__npy_mi=0; __npy_mi < _PyMIT(multi)->numiter; __npy_mi++) { \ - PyArray_ITER_NEXT(_PyMIT(multi)->iters[__npy_mi]); \ - } \ -} while (0) - -#define PyArray_MultiIter_GOTO(multi, dest) do { \ - int __npy_mi; \ - for (__npy_mi=0; __npy_mi < _PyMIT(multi)->numiter; __npy_mi++) { \ - PyArray_ITER_GOTO(_PyMIT(multi)->iters[__npy_mi], dest); \ - } \ - _PyMIT(multi)->index = _PyMIT(multi)->iters[0]->index; \ -} while (0) - -#define PyArray_MultiIter_GOTO1D(multi, ind) do { \ - int __npy_mi; \ - for (__npy_mi=0; __npy_mi < _PyMIT(multi)->numiter; __npy_mi++) { \ - PyArray_ITER_GOTO1D(_PyMIT(multi)->iters[__npy_mi], ind); \ - } \ - _PyMIT(multi)->index = _PyMIT(multi)->iters[0]->index; \ -} while (0) - -#define PyArray_MultiIter_DATA(multi, i) \ - ((void *)(_PyMIT(multi)->iters[i]->dataptr)) - -#define PyArray_MultiIter_NEXTi(multi, i) \ - PyArray_ITER_NEXT(_PyMIT(multi)->iters[i]) - -#define PyArray_MultiIter_NOTDONE(multi) \ - (_PyMIT(multi)->index < _PyMIT(multi)->size) - -/* Store the information needed for fancy-indexing over an array */ - -typedef struct { - PyObject_HEAD - /* - * Multi-iterator portion --- needs to be present in this - * order to work with PyArray_Broadcast - */ - - int numiter; /* number of index-array - iterators */ - npy_intp size; /* size of broadcasted - result */ - npy_intp index; /* current index */ - int nd; /* number of dims */ - npy_intp dimensions[NPY_MAXDIMS]; /* dimensions */ - PyArrayIterObject *iters[NPY_MAXDIMS]; /* index object - iterators */ - PyArrayIterObject *ait; /* flat Iterator for - underlying array */ - - /* flat iterator for subspace (when numiter < nd) */ - PyArrayIterObject *subspace; - - /* - * if subspace iteration, then this is the array of axes in - * the underlying array represented by the index objects - */ - int iteraxes[NPY_MAXDIMS]; - /* - * if subspace iteration, the these are the coordinates to the - * start of the subspace. - */ - npy_intp bscoord[NPY_MAXDIMS]; - - PyObject *indexobj; /* creating obj */ - int consec; - char *dataptr; - -} PyArrayMapIterObject; - -enum { - NPY_NEIGHBORHOOD_ITER_ZERO_PADDING, - NPY_NEIGHBORHOOD_ITER_ONE_PADDING, - NPY_NEIGHBORHOOD_ITER_CONSTANT_PADDING, - NPY_NEIGHBORHOOD_ITER_CIRCULAR_PADDING, - NPY_NEIGHBORHOOD_ITER_MIRROR_PADDING -}; - -typedef struct { - PyObject_HEAD - - /* - * PyArrayIterObject part: keep this in this exact order - */ - int nd_m1; /* number of dimensions - 1 */ - npy_intp index, size; - npy_intp coordinates[NPY_MAXDIMS];/* N-dimensional loop */ - npy_intp dims_m1[NPY_MAXDIMS]; /* ao->dimensions - 1 */ - npy_intp strides[NPY_MAXDIMS]; /* ao->strides or fake */ - npy_intp backstrides[NPY_MAXDIMS];/* how far to jump back */ - npy_intp factors[NPY_MAXDIMS]; /* shape factors */ - PyArrayObject *ao; - char *dataptr; /* pointer to current item*/ - npy_bool contiguous; - - npy_intp bounds[NPY_MAXDIMS][2]; - npy_intp limits[NPY_MAXDIMS][2]; - npy_intp limits_sizes[NPY_MAXDIMS]; - npy_iter_get_dataptr_t translate; - - /* - * New members - */ - npy_intp nd; - - /* Dimensions is the dimension of the array */ - npy_intp dimensions[NPY_MAXDIMS]; - - /* - * Neighborhood points coordinates are computed relatively to the - * point pointed by _internal_iter - */ - PyArrayIterObject* _internal_iter; - /* - * To keep a reference to the representation of the constant value - * for constant padding - */ - char* constant; - - int mode; -} PyArrayNeighborhoodIterObject; - -/* - * Neighborhood iterator API - */ - -/* General: those work for any mode */ -static NPY_INLINE int -PyArrayNeighborhoodIter_Reset(PyArrayNeighborhoodIterObject* iter); -static NPY_INLINE int -PyArrayNeighborhoodIter_Next(PyArrayNeighborhoodIterObject* iter); -#if 0 -static NPY_INLINE int -PyArrayNeighborhoodIter_Next2D(PyArrayNeighborhoodIterObject* iter); -#endif - -/* - * Include inline implementations - functions defined there are not - * considered public API - */ -#define _NPY_INCLUDE_NEIGHBORHOOD_IMP -#include "_neighborhood_iterator_imp.h" -#undef _NPY_INCLUDE_NEIGHBORHOOD_IMP - -/* The default array type */ -#define NPY_DEFAULT_TYPE NPY_DOUBLE - -/* - * All sorts of useful ways to look into a PyArrayObject. It is recommended - * to use PyArrayObject * objects instead of always casting from PyObject *, - * for improved type checking. - * - * In many cases here the macro versions of the accessors are deprecated, - * but can't be immediately changed to inline functions because the - * preexisting macros accept PyObject * and do automatic casts. Inline - * functions accepting PyArrayObject * provides for some compile-time - * checking of correctness when working with these objects in C. - */ - -#define PyArray_ISONESEGMENT(m) (PyArray_NDIM(m) == 0 || \ - PyArray_CHKFLAGS(m, NPY_ARRAY_C_CONTIGUOUS) || \ - PyArray_CHKFLAGS(m, NPY_ARRAY_F_CONTIGUOUS)) - -#define PyArray_ISFORTRAN(m) (PyArray_CHKFLAGS(m, NPY_ARRAY_F_CONTIGUOUS) && \ - (PyArray_NDIM(m) > 1)) - -#define PyArray_FORTRAN_IF(m) ((PyArray_CHKFLAGS(m, NPY_ARRAY_F_CONTIGUOUS) ? \ - NPY_ARRAY_F_CONTIGUOUS : 0)) - -#if (defined(NPY_NO_DEPRECATED_API) && (NPY_API_VERSION <= NPY_NO_DEPRECATED_API)) -/* - * Changing access macros into functions, to allow for future hiding - * of the internal memory layout. This later hiding will allow the 2.x series - * to change the internal representation of arrays without affecting - * ABI compatibility. - */ - -static NPY_INLINE int -PyArray_NDIM(const PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->nd; -} - -static NPY_INLINE void * -PyArray_DATA(PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->data; -} - -static NPY_INLINE char * -PyArray_BYTES(PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->data; -} - -static NPY_INLINE npy_intp * -PyArray_DIMS(PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->dimensions; -} - -static NPY_INLINE npy_intp * -PyArray_STRIDES(PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->strides; -} - -static NPY_INLINE npy_intp -PyArray_DIM(const PyArrayObject *arr, int idim) -{ - return ((PyArrayObject_fields *)arr)->dimensions[idim]; -} - -static NPY_INLINE npy_intp -PyArray_STRIDE(const PyArrayObject *arr, int istride) -{ - return ((PyArrayObject_fields *)arr)->strides[istride]; -} - -static NPY_INLINE PyObject * -PyArray_BASE(PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->base; -} - -static NPY_INLINE PyArray_Descr * -PyArray_DESCR(PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->descr; -} - -static NPY_INLINE int -PyArray_FLAGS(const PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->flags; -} - -static NPY_INLINE npy_intp -PyArray_ITEMSIZE(const PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->descr->elsize; -} - -static NPY_INLINE int -PyArray_TYPE(const PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->descr->type_num; -} - -static NPY_INLINE int -PyArray_CHKFLAGS(const PyArrayObject *arr, int flags) -{ - return (PyArray_FLAGS(arr) & flags) == flags; -} - -static NPY_INLINE PyObject * -PyArray_GETITEM(const PyArrayObject *arr, const char *itemptr) -{ - return ((PyArrayObject_fields *)arr)->descr->f->getitem( - (void *)itemptr, (PyArrayObject *)arr); -} - -static NPY_INLINE int -PyArray_SETITEM(PyArrayObject *arr, char *itemptr, PyObject *v) -{ - return ((PyArrayObject_fields *)arr)->descr->f->setitem( - v, itemptr, arr); -} - -#else - -/* These macros are deprecated as of NumPy 1.7. */ -#define PyArray_NDIM(obj) (((PyArrayObject_fields *)(obj))->nd) -#define PyArray_BYTES(obj) (((PyArrayObject_fields *)(obj))->data) -#define PyArray_DATA(obj) ((void *)((PyArrayObject_fields *)(obj))->data) -#define PyArray_DIMS(obj) (((PyArrayObject_fields *)(obj))->dimensions) -#define PyArray_STRIDES(obj) (((PyArrayObject_fields *)(obj))->strides) -#define PyArray_DIM(obj,n) (PyArray_DIMS(obj)[n]) -#define PyArray_STRIDE(obj,n) (PyArray_STRIDES(obj)[n]) -#define PyArray_BASE(obj) (((PyArrayObject_fields *)(obj))->base) -#define PyArray_DESCR(obj) (((PyArrayObject_fields *)(obj))->descr) -#define PyArray_FLAGS(obj) (((PyArrayObject_fields *)(obj))->flags) -#define PyArray_CHKFLAGS(m, FLAGS) \ - ((((PyArrayObject_fields *)(m))->flags & (FLAGS)) == (FLAGS)) -#define PyArray_ITEMSIZE(obj) \ - (((PyArrayObject_fields *)(obj))->descr->elsize) -#define PyArray_TYPE(obj) \ - (((PyArrayObject_fields *)(obj))->descr->type_num) -#define PyArray_GETITEM(obj,itemptr) \ - PyArray_DESCR(obj)->f->getitem((char *)(itemptr), \ - (PyArrayObject *)(obj)) - -#define PyArray_SETITEM(obj,itemptr,v) \ - PyArray_DESCR(obj)->f->setitem((PyObject *)(v), \ - (char *)(itemptr), \ - (PyArrayObject *)(obj)) -#endif - -static NPY_INLINE PyArray_Descr * -PyArray_DTYPE(PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->descr; -} - -static NPY_INLINE npy_intp * -PyArray_SHAPE(PyArrayObject *arr) -{ - return ((PyArrayObject_fields *)arr)->dimensions; -} - -/* - * Enables the specified array flags. Does no checking, - * assumes you know what you're doing. - */ -static NPY_INLINE void -PyArray_ENABLEFLAGS(PyArrayObject *arr, int flags) -{ - ((PyArrayObject_fields *)arr)->flags |= flags; -} - -/* - * Clears the specified array flags. Does no checking, - * assumes you know what you're doing. - */ -static NPY_INLINE void -PyArray_CLEARFLAGS(PyArrayObject *arr, int flags) -{ - ((PyArrayObject_fields *)arr)->flags &= ~flags; -} - -#define PyTypeNum_ISBOOL(type) ((type) == NPY_BOOL) - -#define PyTypeNum_ISUNSIGNED(type) (((type) == NPY_UBYTE) || \ - ((type) == NPY_USHORT) || \ - ((type) == NPY_UINT) || \ - ((type) == NPY_ULONG) || \ - ((type) == NPY_ULONGLONG)) - -#define PyTypeNum_ISSIGNED(type) (((type) == NPY_BYTE) || \ - ((type) == NPY_SHORT) || \ - ((type) == NPY_INT) || \ - ((type) == NPY_LONG) || \ - ((type) == NPY_LONGLONG)) - -#define PyTypeNum_ISINTEGER(type) (((type) >= NPY_BYTE) && \ - ((type) <= NPY_ULONGLONG)) - -#define PyTypeNum_ISFLOAT(type) ((((type) >= NPY_FLOAT) && \ - ((type) <= NPY_LONGDOUBLE)) || \ - ((type) == NPY_HALF)) - -#define PyTypeNum_ISNUMBER(type) (((type) <= NPY_CLONGDOUBLE) || \ - ((type) == NPY_HALF)) - -#define PyTypeNum_ISSTRING(type) (((type) == NPY_STRING) || \ - ((type) == NPY_UNICODE)) - -#define PyTypeNum_ISCOMPLEX(type) (((type) >= NPY_CFLOAT) && \ - ((type) <= NPY_CLONGDOUBLE)) - -#define PyTypeNum_ISPYTHON(type) (((type) == NPY_LONG) || \ - ((type) == NPY_DOUBLE) || \ - ((type) == NPY_CDOUBLE) || \ - ((type) == NPY_BOOL) || \ - ((type) == NPY_OBJECT )) - -#define PyTypeNum_ISFLEXIBLE(type) (((type) >=NPY_STRING) && \ - ((type) <=NPY_VOID)) - -#define PyTypeNum_ISDATETIME(type) (((type) >=NPY_DATETIME) && \ - ((type) <=NPY_TIMEDELTA)) - -#define PyTypeNum_ISUSERDEF(type) (((type) >= NPY_USERDEF) && \ - ((type) < NPY_USERDEF+ \ - NPY_NUMUSERTYPES)) - -#define PyTypeNum_ISEXTENDED(type) (PyTypeNum_ISFLEXIBLE(type) || \ - PyTypeNum_ISUSERDEF(type)) - -#define PyTypeNum_ISOBJECT(type) ((type) == NPY_OBJECT) - - -#define PyDataType_ISBOOL(obj) PyTypeNum_ISBOOL(_PyADt(obj)) -#define PyDataType_ISUNSIGNED(obj) PyTypeNum_ISUNSIGNED(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISSIGNED(obj) PyTypeNum_ISSIGNED(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISINTEGER(obj) PyTypeNum_ISINTEGER(((PyArray_Descr*)(obj))->type_num ) -#define PyDataType_ISFLOAT(obj) PyTypeNum_ISFLOAT(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISNUMBER(obj) PyTypeNum_ISNUMBER(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISSTRING(obj) PyTypeNum_ISSTRING(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISCOMPLEX(obj) PyTypeNum_ISCOMPLEX(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISPYTHON(obj) PyTypeNum_ISPYTHON(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISFLEXIBLE(obj) PyTypeNum_ISFLEXIBLE(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISDATETIME(obj) PyTypeNum_ISDATETIME(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISUSERDEF(obj) PyTypeNum_ISUSERDEF(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISEXTENDED(obj) PyTypeNum_ISEXTENDED(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_ISOBJECT(obj) PyTypeNum_ISOBJECT(((PyArray_Descr*)(obj))->type_num) -#define PyDataType_HASFIELDS(obj) (((PyArray_Descr *)(obj))->names != NULL) -#define PyDataType_HASSUBARRAY(dtype) ((dtype)->subarray != NULL) - -#define PyArray_ISBOOL(obj) PyTypeNum_ISBOOL(PyArray_TYPE(obj)) -#define PyArray_ISUNSIGNED(obj) PyTypeNum_ISUNSIGNED(PyArray_TYPE(obj)) -#define PyArray_ISSIGNED(obj) PyTypeNum_ISSIGNED(PyArray_TYPE(obj)) -#define PyArray_ISINTEGER(obj) PyTypeNum_ISINTEGER(PyArray_TYPE(obj)) -#define PyArray_ISFLOAT(obj) PyTypeNum_ISFLOAT(PyArray_TYPE(obj)) -#define PyArray_ISNUMBER(obj) PyTypeNum_ISNUMBER(PyArray_TYPE(obj)) -#define PyArray_ISSTRING(obj) PyTypeNum_ISSTRING(PyArray_TYPE(obj)) -#define PyArray_ISCOMPLEX(obj) PyTypeNum_ISCOMPLEX(PyArray_TYPE(obj)) -#define PyArray_ISPYTHON(obj) PyTypeNum_ISPYTHON(PyArray_TYPE(obj)) -#define PyArray_ISFLEXIBLE(obj) PyTypeNum_ISFLEXIBLE(PyArray_TYPE(obj)) -#define PyArray_ISDATETIME(obj) PyTypeNum_ISDATETIME(PyArray_TYPE(obj)) -#define PyArray_ISUSERDEF(obj) PyTypeNum_ISUSERDEF(PyArray_TYPE(obj)) -#define PyArray_ISEXTENDED(obj) PyTypeNum_ISEXTENDED(PyArray_TYPE(obj)) -#define PyArray_ISOBJECT(obj) PyTypeNum_ISOBJECT(PyArray_TYPE(obj)) -#define PyArray_HASFIELDS(obj) PyDataType_HASFIELDS(PyArray_DESCR(obj)) - - /* - * FIXME: This should check for a flag on the data-type that - * states whether or not it is variable length. Because the - * ISFLEXIBLE check is hard-coded to the built-in data-types. - */ -#define PyArray_ISVARIABLE(obj) PyTypeNum_ISFLEXIBLE(PyArray_TYPE(obj)) - -#define PyArray_SAFEALIGNEDCOPY(obj) (PyArray_ISALIGNED(obj) && !PyArray_ISVARIABLE(obj)) - - -#define NPY_LITTLE '<' -#define NPY_BIG '>' -#define NPY_NATIVE '=' -#define NPY_SWAP 's' -#define NPY_IGNORE '|' - -#if NPY_BYTE_ORDER == NPY_BIG_ENDIAN -#define NPY_NATBYTE NPY_BIG -#define NPY_OPPBYTE NPY_LITTLE -#else -#define NPY_NATBYTE NPY_LITTLE -#define NPY_OPPBYTE NPY_BIG -#endif - -#define PyArray_ISNBO(arg) ((arg) != NPY_OPPBYTE) -#define PyArray_IsNativeByteOrder PyArray_ISNBO -#define PyArray_ISNOTSWAPPED(m) PyArray_ISNBO(PyArray_DESCR(m)->byteorder) -#define PyArray_ISBYTESWAPPED(m) (!PyArray_ISNOTSWAPPED(m)) - -#define PyArray_FLAGSWAP(m, flags) (PyArray_CHKFLAGS(m, flags) && \ - PyArray_ISNOTSWAPPED(m)) - -#define PyArray_ISCARRAY(m) PyArray_FLAGSWAP(m, NPY_ARRAY_CARRAY) -#define PyArray_ISCARRAY_RO(m) PyArray_FLAGSWAP(m, NPY_ARRAY_CARRAY_RO) -#define PyArray_ISFARRAY(m) PyArray_FLAGSWAP(m, NPY_ARRAY_FARRAY) -#define PyArray_ISFARRAY_RO(m) PyArray_FLAGSWAP(m, NPY_ARRAY_FARRAY_RO) -#define PyArray_ISBEHAVED(m) PyArray_FLAGSWAP(m, NPY_ARRAY_BEHAVED) -#define PyArray_ISBEHAVED_RO(m) PyArray_FLAGSWAP(m, NPY_ARRAY_ALIGNED) - - -#define PyDataType_ISNOTSWAPPED(d) PyArray_ISNBO(((PyArray_Descr *)(d))->byteorder) -#define PyDataType_ISBYTESWAPPED(d) (!PyDataType_ISNOTSWAPPED(d)) - -/************************************************************ - * A struct used by PyArray_CreateSortedStridePerm, new in 1.7. - ************************************************************/ - -typedef struct { - npy_intp perm, stride; -} npy_stride_sort_item; - -/************************************************************ - * This is the form of the struct that's returned pointed by the - * PyCObject attribute of an array __array_struct__. See - * http://docs.scipy.org/doc/numpy/reference/arrays.interface.html for the full - * documentation. - ************************************************************/ -typedef struct { - int two; /* - * contains the integer 2 as a sanity - * check - */ - - int nd; /* number of dimensions */ - - char typekind; /* - * kind in array --- character code of - * typestr - */ - - int itemsize; /* size of each element */ - - int flags; /* - * how should be data interpreted. Valid - * flags are CONTIGUOUS (1), F_CONTIGUOUS (2), - * ALIGNED (0x100), NOTSWAPPED (0x200), and - * WRITEABLE (0x400). ARR_HAS_DESCR (0x800) - * states that arrdescr field is present in - * structure - */ - - npy_intp *shape; /* - * A length-nd array of shape - * information - */ - - npy_intp *strides; /* A length-nd array of stride information */ - - void *data; /* A pointer to the first element of the array */ - - PyObject *descr; /* - * A list of fields or NULL (ignored if flags - * does not have ARR_HAS_DESCR flag set) - */ -} PyArrayInterface; - -/* - * This is a function for hooking into the PyDataMem_NEW/FREE/RENEW functions. - * See the documentation for PyDataMem_SetEventHook. - */ -typedef void (PyDataMem_EventHookFunc)(void *inp, void *outp, size_t size, - void *user_data); - -#if !(defined(NPY_NO_DEPRECATED_API) && (NPY_API_VERSION <= NPY_NO_DEPRECATED_API)) -#include "npy_deprecated_api.h" -#endif - -#endif /* NPY_ARRAYTYPES_H */ diff --git a/include/numpy/noprefix.h b/include/numpy/noprefix.h deleted file mode 100644 index b3e57480e..000000000 --- a/include/numpy/noprefix.h +++ /dev/null @@ -1,209 +0,0 @@ -#ifndef NPY_NOPREFIX_H -#define NPY_NOPREFIX_H - -/* - * You can directly include noprefix.h as a backward - * compatibility measure - */ -#ifndef NPY_NO_PREFIX -#include "ndarrayobject.h" -#include "npy_interrupt.h" -#endif - -#define SIGSETJMP NPY_SIGSETJMP -#define SIGLONGJMP NPY_SIGLONGJMP -#define SIGJMP_BUF NPY_SIGJMP_BUF - -#define MAX_DIMS NPY_MAXDIMS - -#define longlong npy_longlong -#define ulonglong npy_ulonglong -#define Bool npy_bool -#define longdouble npy_longdouble -#define byte npy_byte - -#ifndef _BSD_SOURCE -#define ushort npy_ushort -#define uint npy_uint -#define ulong npy_ulong -#endif - -#define ubyte npy_ubyte -#define ushort npy_ushort -#define uint npy_uint -#define ulong npy_ulong -#define cfloat npy_cfloat -#define cdouble npy_cdouble -#define clongdouble npy_clongdouble -#define Int8 npy_int8 -#define UInt8 npy_uint8 -#define Int16 npy_int16 -#define UInt16 npy_uint16 -#define Int32 npy_int32 -#define UInt32 npy_uint32 -#define Int64 npy_int64 -#define UInt64 npy_uint64 -#define Int128 npy_int128 -#define UInt128 npy_uint128 -#define Int256 npy_int256 -#define UInt256 npy_uint256 -#define Float16 npy_float16 -#define Complex32 npy_complex32 -#define Float32 npy_float32 -#define Complex64 npy_complex64 -#define Float64 npy_float64 -#define Complex128 npy_complex128 -#define Float80 npy_float80 -#define Complex160 npy_complex160 -#define Float96 npy_float96 -#define Complex192 npy_complex192 -#define Float128 npy_float128 -#define Complex256 npy_complex256 -#define intp npy_intp -#define uintp npy_uintp -#define datetime npy_datetime -#define timedelta npy_timedelta - -#define SIZEOF_INTP NPY_SIZEOF_INTP -#define SIZEOF_UINTP NPY_SIZEOF_UINTP -#define SIZEOF_DATETIME NPY_SIZEOF_DATETIME -#define SIZEOF_TIMEDELTA NPY_SIZEOF_TIMEDELTA - -#define LONGLONG_FMT NPY_LONGLONG_FMT -#define ULONGLONG_FMT NPY_ULONGLONG_FMT -#define LONGLONG_SUFFIX NPY_LONGLONG_SUFFIX -#define ULONGLONG_SUFFIX NPY_ULONGLONG_SUFFIX - -#define MAX_INT8 127 -#define MIN_INT8 -128 -#define MAX_UINT8 255 -#define MAX_INT16 32767 -#define MIN_INT16 -32768 -#define MAX_UINT16 65535 -#define MAX_INT32 2147483647 -#define MIN_INT32 (-MAX_INT32 - 1) -#define MAX_UINT32 4294967295U -#define MAX_INT64 LONGLONG_SUFFIX(9223372036854775807) -#define MIN_INT64 (-MAX_INT64 - LONGLONG_SUFFIX(1)) -#define MAX_UINT64 ULONGLONG_SUFFIX(18446744073709551615) -#define MAX_INT128 LONGLONG_SUFFIX(85070591730234615865843651857942052864) -#define MIN_INT128 (-MAX_INT128 - LONGLONG_SUFFIX(1)) -#define MAX_UINT128 ULONGLONG_SUFFIX(170141183460469231731687303715884105728) -#define MAX_INT256 LONGLONG_SUFFIX(57896044618658097711785492504343953926634992332820282019728792003956564819967) -#define MIN_INT256 (-MAX_INT256 - LONGLONG_SUFFIX(1)) -#define MAX_UINT256 ULONGLONG_SUFFIX(115792089237316195423570985008687907853269984665640564039457584007913129639935) - -#define MAX_BYTE NPY_MAX_BYTE -#define MIN_BYTE NPY_MIN_BYTE -#define MAX_UBYTE NPY_MAX_UBYTE -#define MAX_SHORT NPY_MAX_SHORT -#define MIN_SHORT NPY_MIN_SHORT -#define MAX_USHORT NPY_MAX_USHORT -#define MAX_INT NPY_MAX_INT -#define MIN_INT NPY_MIN_INT -#define MAX_UINT NPY_MAX_UINT -#define MAX_LONG NPY_MAX_LONG -#define MIN_LONG NPY_MIN_LONG -#define MAX_ULONG NPY_MAX_ULONG -#define MAX_LONGLONG NPY_MAX_LONGLONG -#define MIN_LONGLONG NPY_MIN_LONGLONG -#define MAX_ULONGLONG NPY_MAX_ULONGLONG -#define MIN_DATETIME NPY_MIN_DATETIME -#define MAX_DATETIME NPY_MAX_DATETIME -#define MIN_TIMEDELTA NPY_MIN_TIMEDELTA -#define MAX_TIMEDELTA NPY_MAX_TIMEDELTA - -#define SIZEOF_LONGDOUBLE NPY_SIZEOF_LONGDOUBLE -#define SIZEOF_LONGLONG NPY_SIZEOF_LONGLONG -#define SIZEOF_HALF NPY_SIZEOF_HALF -#define BITSOF_BOOL NPY_BITSOF_BOOL -#define BITSOF_CHAR NPY_BITSOF_CHAR -#define BITSOF_SHORT NPY_BITSOF_SHORT -#define BITSOF_INT NPY_BITSOF_INT -#define BITSOF_LONG NPY_BITSOF_LONG -#define BITSOF_LONGLONG NPY_BITSOF_LONGLONG -#define BITSOF_HALF NPY_BITSOF_HALF -#define BITSOF_FLOAT NPY_BITSOF_FLOAT -#define BITSOF_DOUBLE NPY_BITSOF_DOUBLE -#define BITSOF_LONGDOUBLE NPY_BITSOF_LONGDOUBLE -#define BITSOF_DATETIME NPY_BITSOF_DATETIME -#define BITSOF_TIMEDELTA NPY_BITSOF_TIMEDELTA - -#define _pya_malloc PyArray_malloc -#define _pya_free PyArray_free -#define _pya_realloc PyArray_realloc - -#define BEGIN_THREADS_DEF NPY_BEGIN_THREADS_DEF -#define BEGIN_THREADS NPY_BEGIN_THREADS -#define END_THREADS NPY_END_THREADS -#define ALLOW_C_API_DEF NPY_ALLOW_C_API_DEF -#define ALLOW_C_API NPY_ALLOW_C_API -#define DISABLE_C_API NPY_DISABLE_C_API - -#define PY_FAIL NPY_FAIL -#define PY_SUCCEED NPY_SUCCEED - -#ifndef TRUE -#define TRUE NPY_TRUE -#endif - -#ifndef FALSE -#define FALSE NPY_FALSE -#endif - -#define LONGDOUBLE_FMT NPY_LONGDOUBLE_FMT - -#define CONTIGUOUS NPY_CONTIGUOUS -#define C_CONTIGUOUS NPY_C_CONTIGUOUS -#define FORTRAN NPY_FORTRAN -#define F_CONTIGUOUS NPY_F_CONTIGUOUS -#define OWNDATA NPY_OWNDATA -#define FORCECAST NPY_FORCECAST -#define ENSURECOPY NPY_ENSURECOPY -#define ENSUREARRAY NPY_ENSUREARRAY -#define ELEMENTSTRIDES NPY_ELEMENTSTRIDES -#define ALIGNED NPY_ALIGNED -#define NOTSWAPPED NPY_NOTSWAPPED -#define WRITEABLE NPY_WRITEABLE -#define UPDATEIFCOPY NPY_UPDATEIFCOPY -#define ARR_HAS_DESCR NPY_ARR_HAS_DESCR -#define BEHAVED NPY_BEHAVED -#define BEHAVED_NS NPY_BEHAVED_NS -#define CARRAY NPY_CARRAY -#define CARRAY_RO NPY_CARRAY_RO -#define FARRAY NPY_FARRAY -#define FARRAY_RO NPY_FARRAY_RO -#define DEFAULT NPY_DEFAULT -#define IN_ARRAY NPY_IN_ARRAY -#define OUT_ARRAY NPY_OUT_ARRAY -#define INOUT_ARRAY NPY_INOUT_ARRAY -#define IN_FARRAY NPY_IN_FARRAY -#define OUT_FARRAY NPY_OUT_FARRAY -#define INOUT_FARRAY NPY_INOUT_FARRAY -#define UPDATE_ALL NPY_UPDATE_ALL - -#define OWN_DATA NPY_OWNDATA -#define BEHAVED_FLAGS NPY_BEHAVED -#define BEHAVED_FLAGS_NS NPY_BEHAVED_NS -#define CARRAY_FLAGS_RO NPY_CARRAY_RO -#define CARRAY_FLAGS NPY_CARRAY -#define FARRAY_FLAGS NPY_FARRAY -#define FARRAY_FLAGS_RO NPY_FARRAY_RO -#define DEFAULT_FLAGS NPY_DEFAULT -#define UPDATE_ALL_FLAGS NPY_UPDATE_ALL_FLAGS - -#ifndef MIN -#define MIN PyArray_MIN -#endif -#ifndef MAX -#define MAX PyArray_MAX -#endif -#define MAX_INTP NPY_MAX_INTP -#define MIN_INTP NPY_MIN_INTP -#define MAX_UINTP NPY_MAX_UINTP -#define INTP_FMT NPY_INTP_FMT - -#define REFCOUNT PyArray_REFCOUNT -#define MAX_ELSIZE NPY_MAX_ELSIZE - -#endif diff --git a/include/numpy/npy_3kcompat.h b/include/numpy/npy_3kcompat.h deleted file mode 100644 index d0cd9ac1a..000000000 --- a/include/numpy/npy_3kcompat.h +++ /dev/null @@ -1,417 +0,0 @@ -/* - * This is a convenience header file providing compatibility utilities - * for supporting Python 2 and Python 3 in the same code base. - * - * If you want to use this for your own projects, it's recommended to make a - * copy of it. Although the stuff below is unlikely to change, we don't provide - * strong backwards compatibility guarantees at the moment. - */ - -#ifndef _NPY_3KCOMPAT_H_ -#define _NPY_3KCOMPAT_H_ - -#include -#include - -#if PY_VERSION_HEX >= 0x03000000 -#ifndef NPY_PY3K -#define NPY_PY3K 1 -#endif -#endif - -#include "numpy/npy_common.h" -#include "numpy/ndarrayobject.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * PyInt -> PyLong - */ - -#if defined(NPY_PY3K) -/* Return True only if the long fits in a C long */ -static NPY_INLINE int PyInt_Check(PyObject *op) { - int overflow = 0; - if (!PyLong_Check(op)) { - return 0; - } - PyLong_AsLongAndOverflow(op, &overflow); - return (overflow == 0); -} - -#define PyInt_FromLong PyLong_FromLong -#define PyInt_AsLong PyLong_AsLong -#define PyInt_AS_LONG PyLong_AsLong -#define PyInt_AsSsize_t PyLong_AsSsize_t - -/* NOTE: - * - * Since the PyLong type is very different from the fixed-range PyInt, - * we don't define PyInt_Type -> PyLong_Type. - */ -#endif /* NPY_PY3K */ - -/* - * PyString -> PyBytes - */ - -#if defined(NPY_PY3K) - -#define PyString_Type PyBytes_Type -#define PyString_Check PyBytes_Check -#define PyStringObject PyBytesObject -#define PyString_FromString PyBytes_FromString -#define PyString_FromStringAndSize PyBytes_FromStringAndSize -#define PyString_AS_STRING PyBytes_AS_STRING -#define PyString_AsStringAndSize PyBytes_AsStringAndSize -#define PyString_FromFormat PyBytes_FromFormat -#define PyString_Concat PyBytes_Concat -#define PyString_ConcatAndDel PyBytes_ConcatAndDel -#define PyString_AsString PyBytes_AsString -#define PyString_GET_SIZE PyBytes_GET_SIZE -#define PyString_Size PyBytes_Size - -#define PyUString_Type PyUnicode_Type -#define PyUString_Check PyUnicode_Check -#define PyUStringObject PyUnicodeObject -#define PyUString_FromString PyUnicode_FromString -#define PyUString_FromStringAndSize PyUnicode_FromStringAndSize -#define PyUString_FromFormat PyUnicode_FromFormat -#define PyUString_Concat PyUnicode_Concat2 -#define PyUString_ConcatAndDel PyUnicode_ConcatAndDel -#define PyUString_GET_SIZE PyUnicode_GET_SIZE -#define PyUString_Size PyUnicode_Size -#define PyUString_InternFromString PyUnicode_InternFromString -#define PyUString_Format PyUnicode_Format - -#else - -#define PyBytes_Type PyString_Type -#define PyBytes_Check PyString_Check -#define PyBytesObject PyStringObject -#define PyBytes_FromString PyString_FromString -#define PyBytes_FromStringAndSize PyString_FromStringAndSize -#define PyBytes_AS_STRING PyString_AS_STRING -#define PyBytes_AsStringAndSize PyString_AsStringAndSize -#define PyBytes_FromFormat PyString_FromFormat -#define PyBytes_Concat PyString_Concat -#define PyBytes_ConcatAndDel PyString_ConcatAndDel -#define PyBytes_AsString PyString_AsString -#define PyBytes_GET_SIZE PyString_GET_SIZE -#define PyBytes_Size PyString_Size - -#define PyUString_Type PyString_Type -#define PyUString_Check PyString_Check -#define PyUStringObject PyStringObject -#define PyUString_FromString PyString_FromString -#define PyUString_FromStringAndSize PyString_FromStringAndSize -#define PyUString_FromFormat PyString_FromFormat -#define PyUString_Concat PyString_Concat -#define PyUString_ConcatAndDel PyString_ConcatAndDel -#define PyUString_GET_SIZE PyString_GET_SIZE -#define PyUString_Size PyString_Size -#define PyUString_InternFromString PyString_InternFromString -#define PyUString_Format PyString_Format - -#endif /* NPY_PY3K */ - - -static NPY_INLINE void -PyUnicode_ConcatAndDel(PyObject **left, PyObject *right) -{ - PyObject *newobj; - newobj = PyUnicode_Concat(*left, right); - Py_DECREF(*left); - Py_DECREF(right); - *left = newobj; -} - -static NPY_INLINE void -PyUnicode_Concat2(PyObject **left, PyObject *right) -{ - PyObject *newobj; - newobj = PyUnicode_Concat(*left, right); - Py_DECREF(*left); - *left = newobj; -} - -/* - * PyFile_* compatibility - */ -#if defined(NPY_PY3K) - -/* - * Get a FILE* handle to the file represented by the Python object - */ -static NPY_INLINE FILE* -npy_PyFile_Dup(PyObject *file, char *mode) -{ - int fd, fd2; - PyObject *ret, *os; - Py_ssize_t pos; - FILE *handle; - /* Flush first to ensure things end up in the file in the correct order */ - ret = PyObject_CallMethod(file, "flush", ""); - if (ret == NULL) { - return NULL; - } - Py_DECREF(ret); - fd = PyObject_AsFileDescriptor(file); - if (fd == -1) { - return NULL; - } - os = PyImport_ImportModule("os"); - if (os == NULL) { - return NULL; - } - ret = PyObject_CallMethod(os, "dup", "i", fd); - Py_DECREF(os); - if (ret == NULL) { - return NULL; - } - fd2 = PyNumber_AsSsize_t(ret, NULL); - Py_DECREF(ret); -#ifdef _WIN32 - handle = _fdopen(fd2, mode); -#else - handle = fdopen(fd2, mode); -#endif - if (handle == NULL) { - PyErr_SetString(PyExc_IOError, - "Getting a FILE* from a Python file object failed"); - } - ret = PyObject_CallMethod(file, "tell", ""); - if (ret == NULL) { - fclose(handle); - return NULL; - } - pos = PyNumber_AsSsize_t(ret, PyExc_OverflowError); - Py_DECREF(ret); - if (PyErr_Occurred()) { - fclose(handle); - return NULL; - } - npy_fseek(handle, pos, SEEK_SET); - return handle; -} - -/* - * Close the dup-ed file handle, and seek the Python one to the current position - */ -static NPY_INLINE int -npy_PyFile_DupClose(PyObject *file, FILE* handle) -{ - PyObject *ret; - Py_ssize_t position; - position = npy_ftell(handle); - fclose(handle); - - ret = PyObject_CallMethod(file, "seek", NPY_SSIZE_T_PYFMT "i", position, 0); - if (ret == NULL) { - return -1; - } - Py_DECREF(ret); - return 0; -} - -static NPY_INLINE int -npy_PyFile_Check(PyObject *file) -{ - int fd; - fd = PyObject_AsFileDescriptor(file); - if (fd == -1) { - PyErr_Clear(); - return 0; - } - return 1; -} - -#else - -#define npy_PyFile_Dup(file, mode) PyFile_AsFile(file) -#define npy_PyFile_DupClose(file, handle) (0) -#define npy_PyFile_Check PyFile_Check - -#endif - -static NPY_INLINE PyObject* -npy_PyFile_OpenFile(PyObject *filename, const char *mode) -{ - PyObject *open; - open = PyDict_GetItemString(PyEval_GetBuiltins(), "open"); - if (open == NULL) { - return NULL; - } - return PyObject_CallFunction(open, "Os", filename, mode); -} - -static NPY_INLINE int -npy_PyFile_CloseFile(PyObject *file) -{ - PyObject *ret; - - ret = PyObject_CallMethod(file, "close", NULL); - if (ret == NULL) { - return -1; - } - Py_DECREF(ret); - return 0; -} - -/* - * PyObject_Cmp - */ -#if defined(NPY_PY3K) -static NPY_INLINE int -PyObject_Cmp(PyObject *i1, PyObject *i2, int *cmp) -{ - int v; - v = PyObject_RichCompareBool(i1, i2, Py_LT); - if (v == 0) { - *cmp = -1; - return 1; - } - else if (v == -1) { - return -1; - } - - v = PyObject_RichCompareBool(i1, i2, Py_GT); - if (v == 0) { - *cmp = 1; - return 1; - } - else if (v == -1) { - return -1; - } - - v = PyObject_RichCompareBool(i1, i2, Py_EQ); - if (v == 0) { - *cmp = 0; - return 1; - } - else { - *cmp = 0; - return -1; - } -} -#endif - -/* - * PyCObject functions adapted to PyCapsules. - * - * The main job here is to get rid of the improved error handling - * of PyCapsules. It's a shame... - */ -#if PY_VERSION_HEX >= 0x03000000 - -static NPY_INLINE PyObject * -NpyCapsule_FromVoidPtr(void *ptr, void (*dtor)(PyObject *)) -{ - PyObject *ret = PyCapsule_New(ptr, NULL, dtor); - if (ret == NULL) { - PyErr_Clear(); - } - return ret; -} - -static NPY_INLINE PyObject * -NpyCapsule_FromVoidPtrAndDesc(void *ptr, void* context, void (*dtor)(PyObject *)) -{ - PyObject *ret = NpyCapsule_FromVoidPtr(ptr, dtor); - if (ret != NULL && PyCapsule_SetContext(ret, context) != 0) { - PyErr_Clear(); - Py_DECREF(ret); - ret = NULL; - } - return ret; -} - -static NPY_INLINE void * -NpyCapsule_AsVoidPtr(PyObject *obj) -{ - void *ret = PyCapsule_GetPointer(obj, NULL); - if (ret == NULL) { - PyErr_Clear(); - } - return ret; -} - -static NPY_INLINE void * -NpyCapsule_GetDesc(PyObject *obj) -{ - return PyCapsule_GetContext(obj); -} - -static NPY_INLINE int -NpyCapsule_Check(PyObject *ptr) -{ - return PyCapsule_CheckExact(ptr); -} - -static NPY_INLINE void -simple_capsule_dtor(PyObject *cap) -{ - PyArray_free(PyCapsule_GetPointer(cap, NULL)); -} - -#else - -static NPY_INLINE PyObject * -NpyCapsule_FromVoidPtr(void *ptr, void (*dtor)(void *)) -{ - return PyCObject_FromVoidPtr(ptr, dtor); -} - -static NPY_INLINE PyObject * -NpyCapsule_FromVoidPtrAndDesc(void *ptr, void* context, - void (*dtor)(void *, void *)) -{ - return PyCObject_FromVoidPtrAndDesc(ptr, context, dtor); -} - -static NPY_INLINE void * -NpyCapsule_AsVoidPtr(PyObject *ptr) -{ - return PyCObject_AsVoidPtr(ptr); -} - -static NPY_INLINE void * -NpyCapsule_GetDesc(PyObject *obj) -{ - return PyCObject_GetDesc(obj); -} - -static NPY_INLINE int -NpyCapsule_Check(PyObject *ptr) -{ - return PyCObject_Check(ptr); -} - -static NPY_INLINE void -simple_capsule_dtor(void *ptr) -{ - PyArray_free(ptr); -} - -#endif - -/* - * Hash value compatibility. - * As of Python 3.2 hash values are of type Py_hash_t. - * Previous versions use C long. - */ -#if PY_VERSION_HEX < 0x03020000 -typedef long npy_hash_t; -#define NPY_SIZEOF_HASH_T NPY_SIZEOF_LONG -#else -typedef Py_hash_t npy_hash_t; -#define NPY_SIZEOF_HASH_T NPY_SIZEOF_INTP -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _NPY_3KCOMPAT_H_ */ diff --git a/include/numpy/npy_common.h b/include/numpy/npy_common.h deleted file mode 100644 index 7fca7e220..000000000 --- a/include/numpy/npy_common.h +++ /dev/null @@ -1,930 +0,0 @@ -#ifndef _NPY_COMMON_H_ -#define _NPY_COMMON_H_ - -/* numpconfig.h is auto-generated */ -#include "numpyconfig.h" - -#if defined(_MSC_VER) - #define NPY_INLINE __inline -#elif defined(__GNUC__) - #if defined(__STRICT_ANSI__) - #define NPY_INLINE __inline__ - #else - #define NPY_INLINE inline - #endif -#else - #define NPY_INLINE -#endif - -/* Enable 64 bit file position support on win-amd64. Ticket #1660 */ -#if defined(_MSC_VER) && defined(_WIN64) && (_MSC_VER > 1400) - #define npy_fseek _fseeki64 - #define npy_ftell _ftelli64 -#else - #define npy_fseek fseek - #define npy_ftell ftell -#endif - -/* enums for detected endianness */ -enum { - NPY_CPU_UNKNOWN_ENDIAN, - NPY_CPU_LITTLE, - NPY_CPU_BIG -}; - -/* - * This is to typedef npy_intp to the appropriate pointer size for - * this platform. Py_intptr_t, Py_uintptr_t are defined in pyport.h. - */ -typedef Py_intptr_t npy_intp; -typedef Py_uintptr_t npy_uintp; -#define NPY_SIZEOF_CHAR 1 -#define NPY_SIZEOF_BYTE 1 -#define NPY_SIZEOF_INTP NPY_SIZEOF_PY_INTPTR_T -#define NPY_SIZEOF_UINTP NPY_SIZEOF_PY_INTPTR_T -#define NPY_SIZEOF_CFLOAT NPY_SIZEOF_COMPLEX_FLOAT -#define NPY_SIZEOF_CDOUBLE NPY_SIZEOF_COMPLEX_DOUBLE -#define NPY_SIZEOF_CLONGDOUBLE NPY_SIZEOF_COMPLEX_LONGDOUBLE - -#ifdef constchar -#undef constchar -#endif - -#if (PY_VERSION_HEX < 0x02050000) - #ifndef PY_SSIZE_T_MIN - typedef int Py_ssize_t; - #define PY_SSIZE_T_MAX INT_MAX - #define PY_SSIZE_T_MIN INT_MIN - #endif -#define NPY_SSIZE_T_PYFMT "i" -#define constchar const char -#else -#define NPY_SSIZE_T_PYFMT "n" -#define constchar char -#endif - -/* NPY_INTP_FMT Note: - * Unlike the other NPY_*_FMT macros which are used with - * PyOS_snprintf, NPY_INTP_FMT is used with PyErr_Format and - * PyString_Format. These functions use different formatting - * codes which are portably specified according to the Python - * documentation. See ticket #1795. - * - * On Windows x64, the LONGLONG formatter should be used, but - * in Python 2.6 the %lld formatter is not supported. In this - * case we work around the problem by using the %zd formatter. - */ -#if NPY_SIZEOF_PY_INTPTR_T == NPY_SIZEOF_INT - #define NPY_INTP NPY_INT - #define NPY_UINTP NPY_UINT - #define PyIntpArrType_Type PyIntArrType_Type - #define PyUIntpArrType_Type PyUIntArrType_Type - #define NPY_MAX_INTP NPY_MAX_INT - #define NPY_MIN_INTP NPY_MIN_INT - #define NPY_MAX_UINTP NPY_MAX_UINT - #define NPY_INTP_FMT "d" -#elif NPY_SIZEOF_PY_INTPTR_T == NPY_SIZEOF_LONG - #define NPY_INTP NPY_LONG - #define NPY_UINTP NPY_ULONG - #define PyIntpArrType_Type PyLongArrType_Type - #define PyUIntpArrType_Type PyULongArrType_Type - #define NPY_MAX_INTP NPY_MAX_LONG - #define NPY_MIN_INTP NPY_MIN_LONG - #define NPY_MAX_UINTP NPY_MAX_ULONG - #define NPY_INTP_FMT "ld" -#elif defined(PY_LONG_LONG) && (NPY_SIZEOF_PY_INTPTR_T == NPY_SIZEOF_LONGLONG) - #define NPY_INTP NPY_LONGLONG - #define NPY_UINTP NPY_ULONGLONG - #define PyIntpArrType_Type PyLongLongArrType_Type - #define PyUIntpArrType_Type PyULongLongArrType_Type - #define NPY_MAX_INTP NPY_MAX_LONGLONG - #define NPY_MIN_INTP NPY_MIN_LONGLONG - #define NPY_MAX_UINTP NPY_MAX_ULONGLONG - #if (PY_VERSION_HEX >= 0x02070000) - #define NPY_INTP_FMT "lld" - #else - #define NPY_INTP_FMT "zd" - #endif -#endif - -/* - * We can only use C99 formats for npy_int_p if it is the same as - * intp_t, hence the condition on HAVE_UNITPTR_T - */ -#if (NPY_USE_C99_FORMATS) == 1 \ - && (defined HAVE_UINTPTR_T) \ - && (defined HAVE_INTTYPES_H) - #include - #undef NPY_INTP_FMT - #define NPY_INTP_FMT PRIdPTR -#endif - - -/* - * Some platforms don't define bool, long long, or long double. - * Handle that here. - */ -#define NPY_BYTE_FMT "hhd" -#define NPY_UBYTE_FMT "hhu" -#define NPY_SHORT_FMT "hd" -#define NPY_USHORT_FMT "hu" -#define NPY_INT_FMT "d" -#define NPY_UINT_FMT "u" -#define NPY_LONG_FMT "ld" -#define NPY_ULONG_FMT "lu" -#define NPY_HALF_FMT "g" -#define NPY_FLOAT_FMT "g" -#define NPY_DOUBLE_FMT "g" - - -#ifdef PY_LONG_LONG -typedef PY_LONG_LONG npy_longlong; -typedef unsigned PY_LONG_LONG npy_ulonglong; -# ifdef _MSC_VER -# define NPY_LONGLONG_FMT "I64d" -# define NPY_ULONGLONG_FMT "I64u" -# elif defined(__APPLE__) || defined(__FreeBSD__) -/* "%Ld" only parses 4 bytes -- "L" is floating modifier on MacOS X/BSD */ -# define NPY_LONGLONG_FMT "lld" -# define NPY_ULONGLONG_FMT "llu" -/* - another possible variant -- *quad_t works on *BSD, but is deprecated: - #define LONGLONG_FMT "qd" - #define ULONGLONG_FMT "qu" -*/ -# else -# define NPY_LONGLONG_FMT "Ld" -# define NPY_ULONGLONG_FMT "Lu" -# endif -# ifdef _MSC_VER -# define NPY_LONGLONG_SUFFIX(x) (x##i64) -# define NPY_ULONGLONG_SUFFIX(x) (x##Ui64) -# else -# define NPY_LONGLONG_SUFFIX(x) (x##LL) -# define NPY_ULONGLONG_SUFFIX(x) (x##ULL) -# endif -#else -typedef long npy_longlong; -typedef unsigned long npy_ulonglong; -# define NPY_LONGLONG_SUFFIX(x) (x##L) -# define NPY_ULONGLONG_SUFFIX(x) (x##UL) -#endif - - -typedef unsigned char npy_bool; -#define NPY_FALSE 0 -#define NPY_TRUE 1 - - -#if NPY_SIZEOF_LONGDOUBLE == NPY_SIZEOF_DOUBLE - typedef double npy_longdouble; - #define NPY_LONGDOUBLE_FMT "g" -#else - typedef long double npy_longdouble; - #define NPY_LONGDOUBLE_FMT "Lg" -#endif - -#ifndef Py_USING_UNICODE -#error Must use Python with unicode enabled. -#endif - - -typedef signed char npy_byte; -typedef unsigned char npy_ubyte; -typedef unsigned short npy_ushort; -typedef unsigned int npy_uint; -typedef unsigned long npy_ulong; - -/* These are for completeness */ -typedef char npy_char; -typedef short npy_short; -typedef int npy_int; -typedef long npy_long; -typedef float npy_float; -typedef double npy_double; - -/* - * Disabling C99 complex usage: a lot of C code in numpy/scipy rely on being - * able to do .real/.imag. Will have to convert code first. - */ -#if 0 -#if defined(NPY_USE_C99_COMPLEX) && defined(NPY_HAVE_COMPLEX_DOUBLE) -typedef complex npy_cdouble; -#else -typedef struct { double real, imag; } npy_cdouble; -#endif - -#if defined(NPY_USE_C99_COMPLEX) && defined(NPY_HAVE_COMPLEX_FLOAT) -typedef complex float npy_cfloat; -#else -typedef struct { float real, imag; } npy_cfloat; -#endif - -#if defined(NPY_USE_C99_COMPLEX) && defined(NPY_HAVE_COMPLEX_LONG_DOUBLE) -typedef complex long double npy_clongdouble; -#else -typedef struct {npy_longdouble real, imag;} npy_clongdouble; -#endif -#endif -#if NPY_SIZEOF_COMPLEX_DOUBLE != 2 * NPY_SIZEOF_DOUBLE -#error npy_cdouble definition is not compatible with C99 complex definition ! \ - Please contact Numpy maintainers and give detailed information about your \ - compiler and platform -#endif -typedef struct { double real, imag; } npy_cdouble; - -#if NPY_SIZEOF_COMPLEX_FLOAT != 2 * NPY_SIZEOF_FLOAT -#error npy_cfloat definition is not compatible with C99 complex definition ! \ - Please contact Numpy maintainers and give detailed information about your \ - compiler and platform -#endif -typedef struct { float real, imag; } npy_cfloat; - -#if NPY_SIZEOF_COMPLEX_LONGDOUBLE != 2 * NPY_SIZEOF_LONGDOUBLE -#error npy_clongdouble definition is not compatible with C99 complex definition ! \ - Please contact Numpy maintainers and give detailed information about your \ - compiler and platform -#endif -typedef struct { npy_longdouble real, imag; } npy_clongdouble; - -/* - * numarray-style bit-width typedefs - */ -#define NPY_MAX_INT8 127 -#define NPY_MIN_INT8 -128 -#define NPY_MAX_UINT8 255 -#define NPY_MAX_INT16 32767 -#define NPY_MIN_INT16 -32768 -#define NPY_MAX_UINT16 65535 -#define NPY_MAX_INT32 2147483647 -#define NPY_MIN_INT32 (-NPY_MAX_INT32 - 1) -#define NPY_MAX_UINT32 4294967295U -#define NPY_MAX_INT64 NPY_LONGLONG_SUFFIX(9223372036854775807) -#define NPY_MIN_INT64 (-NPY_MAX_INT64 - NPY_LONGLONG_SUFFIX(1)) -#define NPY_MAX_UINT64 NPY_ULONGLONG_SUFFIX(18446744073709551615) -#define NPY_MAX_INT128 NPY_LONGLONG_SUFFIX(85070591730234615865843651857942052864) -#define NPY_MIN_INT128 (-NPY_MAX_INT128 - NPY_LONGLONG_SUFFIX(1)) -#define NPY_MAX_UINT128 NPY_ULONGLONG_SUFFIX(170141183460469231731687303715884105728) -#define NPY_MAX_INT256 NPY_LONGLONG_SUFFIX(57896044618658097711785492504343953926634992332820282019728792003956564819967) -#define NPY_MIN_INT256 (-NPY_MAX_INT256 - NPY_LONGLONG_SUFFIX(1)) -#define NPY_MAX_UINT256 NPY_ULONGLONG_SUFFIX(115792089237316195423570985008687907853269984665640564039457584007913129639935) -#define NPY_MIN_DATETIME NPY_MIN_INT64 -#define NPY_MAX_DATETIME NPY_MAX_INT64 -#define NPY_MIN_TIMEDELTA NPY_MIN_INT64 -#define NPY_MAX_TIMEDELTA NPY_MAX_INT64 - - /* Need to find the number of bits for each type and - make definitions accordingly. - - C states that sizeof(char) == 1 by definition - - So, just using the sizeof keyword won't help. - - It also looks like Python itself uses sizeof(char) quite a - bit, which by definition should be 1 all the time. - - Idea: Make Use of CHAR_BIT which should tell us how many - BITS per CHARACTER - */ - - /* Include platform definitions -- These are in the C89/90 standard */ -#include -#define NPY_MAX_BYTE SCHAR_MAX -#define NPY_MIN_BYTE SCHAR_MIN -#define NPY_MAX_UBYTE UCHAR_MAX -#define NPY_MAX_SHORT SHRT_MAX -#define NPY_MIN_SHORT SHRT_MIN -#define NPY_MAX_USHORT USHRT_MAX -#define NPY_MAX_INT INT_MAX -#ifndef INT_MIN -#define INT_MIN (-INT_MAX - 1) -#endif -#define NPY_MIN_INT INT_MIN -#define NPY_MAX_UINT UINT_MAX -#define NPY_MAX_LONG LONG_MAX -#define NPY_MIN_LONG LONG_MIN -#define NPY_MAX_ULONG ULONG_MAX - -#define NPY_SIZEOF_HALF 2 -#define NPY_SIZEOF_DATETIME 8 -#define NPY_SIZEOF_TIMEDELTA 8 - -#define NPY_BITSOF_BOOL (sizeof(npy_bool) * CHAR_BIT) -#define NPY_BITSOF_CHAR CHAR_BIT -#define NPY_BITSOF_BYTE (NPY_SIZEOF_BYTE * CHAR_BIT) -#define NPY_BITSOF_SHORT (NPY_SIZEOF_SHORT * CHAR_BIT) -#define NPY_BITSOF_INT (NPY_SIZEOF_INT * CHAR_BIT) -#define NPY_BITSOF_LONG (NPY_SIZEOF_LONG * CHAR_BIT) -#define NPY_BITSOF_LONGLONG (NPY_SIZEOF_LONGLONG * CHAR_BIT) -#define NPY_BITSOF_INTP (NPY_SIZEOF_INTP * CHAR_BIT) -#define NPY_BITSOF_HALF (NPY_SIZEOF_HALF * CHAR_BIT) -#define NPY_BITSOF_FLOAT (NPY_SIZEOF_FLOAT * CHAR_BIT) -#define NPY_BITSOF_DOUBLE (NPY_SIZEOF_DOUBLE * CHAR_BIT) -#define NPY_BITSOF_LONGDOUBLE (NPY_SIZEOF_LONGDOUBLE * CHAR_BIT) -#define NPY_BITSOF_CFLOAT (NPY_SIZEOF_CFLOAT * CHAR_BIT) -#define NPY_BITSOF_CDOUBLE (NPY_SIZEOF_CDOUBLE * CHAR_BIT) -#define NPY_BITSOF_CLONGDOUBLE (NPY_SIZEOF_CLONGDOUBLE * CHAR_BIT) -#define NPY_BITSOF_DATETIME (NPY_SIZEOF_DATETIME * CHAR_BIT) -#define NPY_BITSOF_TIMEDELTA (NPY_SIZEOF_TIMEDELTA * CHAR_BIT) - -#if NPY_BITSOF_LONG == 8 -#define NPY_INT8 NPY_LONG -#define NPY_UINT8 NPY_ULONG - typedef long npy_int8; - typedef unsigned long npy_uint8; -#define PyInt8ScalarObject PyLongScalarObject -#define PyInt8ArrType_Type PyLongArrType_Type -#define PyUInt8ScalarObject PyULongScalarObject -#define PyUInt8ArrType_Type PyULongArrType_Type -#define NPY_INT8_FMT NPY_LONG_FMT -#define NPY_UINT8_FMT NPY_ULONG_FMT -#elif NPY_BITSOF_LONG == 16 -#define NPY_INT16 NPY_LONG -#define NPY_UINT16 NPY_ULONG - typedef long npy_int16; - typedef unsigned long npy_uint16; -#define PyInt16ScalarObject PyLongScalarObject -#define PyInt16ArrType_Type PyLongArrType_Type -#define PyUInt16ScalarObject PyULongScalarObject -#define PyUInt16ArrType_Type PyULongArrType_Type -#define NPY_INT16_FMT NPY_LONG_FMT -#define NPY_UINT16_FMT NPY_ULONG_FMT -#elif NPY_BITSOF_LONG == 32 -#define NPY_INT32 NPY_LONG -#define NPY_UINT32 NPY_ULONG - typedef long npy_int32; - typedef unsigned long npy_uint32; - typedef unsigned long npy_ucs4; -#define PyInt32ScalarObject PyLongScalarObject -#define PyInt32ArrType_Type PyLongArrType_Type -#define PyUInt32ScalarObject PyULongScalarObject -#define PyUInt32ArrType_Type PyULongArrType_Type -#define NPY_INT32_FMT NPY_LONG_FMT -#define NPY_UINT32_FMT NPY_ULONG_FMT -#elif NPY_BITSOF_LONG == 64 -#define NPY_INT64 NPY_LONG -#define NPY_UINT64 NPY_ULONG - typedef long npy_int64; - typedef unsigned long npy_uint64; -#define PyInt64ScalarObject PyLongScalarObject -#define PyInt64ArrType_Type PyLongArrType_Type -#define PyUInt64ScalarObject PyULongScalarObject -#define PyUInt64ArrType_Type PyULongArrType_Type -#define NPY_INT64_FMT NPY_LONG_FMT -#define NPY_UINT64_FMT NPY_ULONG_FMT -#define MyPyLong_FromInt64 PyLong_FromLong -#define MyPyLong_AsInt64 PyLong_AsLong -#elif NPY_BITSOF_LONG == 128 -#define NPY_INT128 NPY_LONG -#define NPY_UINT128 NPY_ULONG - typedef long npy_int128; - typedef unsigned long npy_uint128; -#define PyInt128ScalarObject PyLongScalarObject -#define PyInt128ArrType_Type PyLongArrType_Type -#define PyUInt128ScalarObject PyULongScalarObject -#define PyUInt128ArrType_Type PyULongArrType_Type -#define NPY_INT128_FMT NPY_LONG_FMT -#define NPY_UINT128_FMT NPY_ULONG_FMT -#endif - -#if NPY_BITSOF_LONGLONG == 8 -# ifndef NPY_INT8 -# define NPY_INT8 NPY_LONGLONG -# define NPY_UINT8 NPY_ULONGLONG - typedef npy_longlong npy_int8; - typedef npy_ulonglong npy_uint8; -# define PyInt8ScalarObject PyLongLongScalarObject -# define PyInt8ArrType_Type PyLongLongArrType_Type -# define PyUInt8ScalarObject PyULongLongScalarObject -# define PyUInt8ArrType_Type PyULongLongArrType_Type -#define NPY_INT8_FMT NPY_LONGLONG_FMT -#define NPY_UINT8_FMT NPY_ULONGLONG_FMT -# endif -# define NPY_MAX_LONGLONG NPY_MAX_INT8 -# define NPY_MIN_LONGLONG NPY_MIN_INT8 -# define NPY_MAX_ULONGLONG NPY_MAX_UINT8 -#elif NPY_BITSOF_LONGLONG == 16 -# ifndef NPY_INT16 -# define NPY_INT16 NPY_LONGLONG -# define NPY_UINT16 NPY_ULONGLONG - typedef npy_longlong npy_int16; - typedef npy_ulonglong npy_uint16; -# define PyInt16ScalarObject PyLongLongScalarObject -# define PyInt16ArrType_Type PyLongLongArrType_Type -# define PyUInt16ScalarObject PyULongLongScalarObject -# define PyUInt16ArrType_Type PyULongLongArrType_Type -#define NPY_INT16_FMT NPY_LONGLONG_FMT -#define NPY_UINT16_FMT NPY_ULONGLONG_FMT -# endif -# define NPY_MAX_LONGLONG NPY_MAX_INT16 -# define NPY_MIN_LONGLONG NPY_MIN_INT16 -# define NPY_MAX_ULONGLONG NPY_MAX_UINT16 -#elif NPY_BITSOF_LONGLONG == 32 -# ifndef NPY_INT32 -# define NPY_INT32 NPY_LONGLONG -# define NPY_UINT32 NPY_ULONGLONG - typedef npy_longlong npy_int32; - typedef npy_ulonglong npy_uint32; - typedef npy_ulonglong npy_ucs4; -# define PyInt32ScalarObject PyLongLongScalarObject -# define PyInt32ArrType_Type PyLongLongArrType_Type -# define PyUInt32ScalarObject PyULongLongScalarObject -# define PyUInt32ArrType_Type PyULongLongArrType_Type -#define NPY_INT32_FMT NPY_LONGLONG_FMT -#define NPY_UINT32_FMT NPY_ULONGLONG_FMT -# endif -# define NPY_MAX_LONGLONG NPY_MAX_INT32 -# define NPY_MIN_LONGLONG NPY_MIN_INT32 -# define NPY_MAX_ULONGLONG NPY_MAX_UINT32 -#elif NPY_BITSOF_LONGLONG == 64 -# ifndef NPY_INT64 -# define NPY_INT64 NPY_LONGLONG -# define NPY_UINT64 NPY_ULONGLONG - typedef npy_longlong npy_int64; - typedef npy_ulonglong npy_uint64; -# define PyInt64ScalarObject PyLongLongScalarObject -# define PyInt64ArrType_Type PyLongLongArrType_Type -# define PyUInt64ScalarObject PyULongLongScalarObject -# define PyUInt64ArrType_Type PyULongLongArrType_Type -#define NPY_INT64_FMT NPY_LONGLONG_FMT -#define NPY_UINT64_FMT NPY_ULONGLONG_FMT -# define MyPyLong_FromInt64 PyLong_FromLongLong -# define MyPyLong_AsInt64 PyLong_AsLongLong -# endif -# define NPY_MAX_LONGLONG NPY_MAX_INT64 -# define NPY_MIN_LONGLONG NPY_MIN_INT64 -# define NPY_MAX_ULONGLONG NPY_MAX_UINT64 -#elif NPY_BITSOF_LONGLONG == 128 -# ifndef NPY_INT128 -# define NPY_INT128 NPY_LONGLONG -# define NPY_UINT128 NPY_ULONGLONG - typedef npy_longlong npy_int128; - typedef npy_ulonglong npy_uint128; -# define PyInt128ScalarObject PyLongLongScalarObject -# define PyInt128ArrType_Type PyLongLongArrType_Type -# define PyUInt128ScalarObject PyULongLongScalarObject -# define PyUInt128ArrType_Type PyULongLongArrType_Type -#define NPY_INT128_FMT NPY_LONGLONG_FMT -#define NPY_UINT128_FMT NPY_ULONGLONG_FMT -# endif -# define NPY_MAX_LONGLONG NPY_MAX_INT128 -# define NPY_MIN_LONGLONG NPY_MIN_INT128 -# define NPY_MAX_ULONGLONG NPY_MAX_UINT128 -#elif NPY_BITSOF_LONGLONG == 256 -# define NPY_INT256 NPY_LONGLONG -# define NPY_UINT256 NPY_ULONGLONG - typedef npy_longlong npy_int256; - typedef npy_ulonglong npy_uint256; -# define PyInt256ScalarObject PyLongLongScalarObject -# define PyInt256ArrType_Type PyLongLongArrType_Type -# define PyUInt256ScalarObject PyULongLongScalarObject -# define PyUInt256ArrType_Type PyULongLongArrType_Type -#define NPY_INT256_FMT NPY_LONGLONG_FMT -#define NPY_UINT256_FMT NPY_ULONGLONG_FMT -# define NPY_MAX_LONGLONG NPY_MAX_INT256 -# define NPY_MIN_LONGLONG NPY_MIN_INT256 -# define NPY_MAX_ULONGLONG NPY_MAX_UINT256 -#endif - -#if NPY_BITSOF_INT == 8 -#ifndef NPY_INT8 -#define NPY_INT8 NPY_INT -#define NPY_UINT8 NPY_UINT - typedef int npy_int8; - typedef unsigned int npy_uint8; -# define PyInt8ScalarObject PyIntScalarObject -# define PyInt8ArrType_Type PyIntArrType_Type -# define PyUInt8ScalarObject PyUIntScalarObject -# define PyUInt8ArrType_Type PyUIntArrType_Type -#define NPY_INT8_FMT NPY_INT_FMT -#define NPY_UINT8_FMT NPY_UINT_FMT -#endif -#elif NPY_BITSOF_INT == 16 -#ifndef NPY_INT16 -#define NPY_INT16 NPY_INT -#define NPY_UINT16 NPY_UINT - typedef int npy_int16; - typedef unsigned int npy_uint16; -# define PyInt16ScalarObject PyIntScalarObject -# define PyInt16ArrType_Type PyIntArrType_Type -# define PyUInt16ScalarObject PyIntUScalarObject -# define PyUInt16ArrType_Type PyIntUArrType_Type -#define NPY_INT16_FMT NPY_INT_FMT -#define NPY_UINT16_FMT NPY_UINT_FMT -#endif -#elif NPY_BITSOF_INT == 32 -#ifndef NPY_INT32 -#define NPY_INT32 NPY_INT -#define NPY_UINT32 NPY_UINT - typedef int npy_int32; - typedef unsigned int npy_uint32; - typedef unsigned int npy_ucs4; -# define PyInt32ScalarObject PyIntScalarObject -# define PyInt32ArrType_Type PyIntArrType_Type -# define PyUInt32ScalarObject PyUIntScalarObject -# define PyUInt32ArrType_Type PyUIntArrType_Type -#define NPY_INT32_FMT NPY_INT_FMT -#define NPY_UINT32_FMT NPY_UINT_FMT -#endif -#elif NPY_BITSOF_INT == 64 -#ifndef NPY_INT64 -#define NPY_INT64 NPY_INT -#define NPY_UINT64 NPY_UINT - typedef int npy_int64; - typedef unsigned int npy_uint64; -# define PyInt64ScalarObject PyIntScalarObject -# define PyInt64ArrType_Type PyIntArrType_Type -# define PyUInt64ScalarObject PyUIntScalarObject -# define PyUInt64ArrType_Type PyUIntArrType_Type -#define NPY_INT64_FMT NPY_INT_FMT -#define NPY_UINT64_FMT NPY_UINT_FMT -# define MyPyLong_FromInt64 PyLong_FromLong -# define MyPyLong_AsInt64 PyLong_AsLong -#endif -#elif NPY_BITSOF_INT == 128 -#ifndef NPY_INT128 -#define NPY_INT128 NPY_INT -#define NPY_UINT128 NPY_UINT - typedef int npy_int128; - typedef unsigned int npy_uint128; -# define PyInt128ScalarObject PyIntScalarObject -# define PyInt128ArrType_Type PyIntArrType_Type -# define PyUInt128ScalarObject PyUIntScalarObject -# define PyUInt128ArrType_Type PyUIntArrType_Type -#define NPY_INT128_FMT NPY_INT_FMT -#define NPY_UINT128_FMT NPY_UINT_FMT -#endif -#endif - -#if NPY_BITSOF_SHORT == 8 -#ifndef NPY_INT8 -#define NPY_INT8 NPY_SHORT -#define NPY_UINT8 NPY_USHORT - typedef short npy_int8; - typedef unsigned short npy_uint8; -# define PyInt8ScalarObject PyShortScalarObject -# define PyInt8ArrType_Type PyShortArrType_Type -# define PyUInt8ScalarObject PyUShortScalarObject -# define PyUInt8ArrType_Type PyUShortArrType_Type -#define NPY_INT8_FMT NPY_SHORT_FMT -#define NPY_UINT8_FMT NPY_USHORT_FMT -#endif -#elif NPY_BITSOF_SHORT == 16 -#ifndef NPY_INT16 -#define NPY_INT16 NPY_SHORT -#define NPY_UINT16 NPY_USHORT - typedef short npy_int16; - typedef unsigned short npy_uint16; -# define PyInt16ScalarObject PyShortScalarObject -# define PyInt16ArrType_Type PyShortArrType_Type -# define PyUInt16ScalarObject PyUShortScalarObject -# define PyUInt16ArrType_Type PyUShortArrType_Type -#define NPY_INT16_FMT NPY_SHORT_FMT -#define NPY_UINT16_FMT NPY_USHORT_FMT -#endif -#elif NPY_BITSOF_SHORT == 32 -#ifndef NPY_INT32 -#define NPY_INT32 NPY_SHORT -#define NPY_UINT32 NPY_USHORT - typedef short npy_int32; - typedef unsigned short npy_uint32; - typedef unsigned short npy_ucs4; -# define PyInt32ScalarObject PyShortScalarObject -# define PyInt32ArrType_Type PyShortArrType_Type -# define PyUInt32ScalarObject PyUShortScalarObject -# define PyUInt32ArrType_Type PyUShortArrType_Type -#define NPY_INT32_FMT NPY_SHORT_FMT -#define NPY_UINT32_FMT NPY_USHORT_FMT -#endif -#elif NPY_BITSOF_SHORT == 64 -#ifndef NPY_INT64 -#define NPY_INT64 NPY_SHORT -#define NPY_UINT64 NPY_USHORT - typedef short npy_int64; - typedef unsigned short npy_uint64; -# define PyInt64ScalarObject PyShortScalarObject -# define PyInt64ArrType_Type PyShortArrType_Type -# define PyUInt64ScalarObject PyUShortScalarObject -# define PyUInt64ArrType_Type PyUShortArrType_Type -#define NPY_INT64_FMT NPY_SHORT_FMT -#define NPY_UINT64_FMT NPY_USHORT_FMT -# define MyPyLong_FromInt64 PyLong_FromLong -# define MyPyLong_AsInt64 PyLong_AsLong -#endif -#elif NPY_BITSOF_SHORT == 128 -#ifndef NPY_INT128 -#define NPY_INT128 NPY_SHORT -#define NPY_UINT128 NPY_USHORT - typedef short npy_int128; - typedef unsigned short npy_uint128; -# define PyInt128ScalarObject PyShortScalarObject -# define PyInt128ArrType_Type PyShortArrType_Type -# define PyUInt128ScalarObject PyUShortScalarObject -# define PyUInt128ArrType_Type PyUShortArrType_Type -#define NPY_INT128_FMT NPY_SHORT_FMT -#define NPY_UINT128_FMT NPY_USHORT_FMT -#endif -#endif - - -#if NPY_BITSOF_CHAR == 8 -#ifndef NPY_INT8 -#define NPY_INT8 NPY_BYTE -#define NPY_UINT8 NPY_UBYTE - typedef signed char npy_int8; - typedef unsigned char npy_uint8; -# define PyInt8ScalarObject PyByteScalarObject -# define PyInt8ArrType_Type PyByteArrType_Type -# define PyUInt8ScalarObject PyUByteScalarObject -# define PyUInt8ArrType_Type PyUByteArrType_Type -#define NPY_INT8_FMT NPY_BYTE_FMT -#define NPY_UINT8_FMT NPY_UBYTE_FMT -#endif -#elif NPY_BITSOF_CHAR == 16 -#ifndef NPY_INT16 -#define NPY_INT16 NPY_BYTE -#define NPY_UINT16 NPY_UBYTE - typedef signed char npy_int16; - typedef unsigned char npy_uint16; -# define PyInt16ScalarObject PyByteScalarObject -# define PyInt16ArrType_Type PyByteArrType_Type -# define PyUInt16ScalarObject PyUByteScalarObject -# define PyUInt16ArrType_Type PyUByteArrType_Type -#define NPY_INT16_FMT NPY_BYTE_FMT -#define NPY_UINT16_FMT NPY_UBYTE_FMT -#endif -#elif NPY_BITSOF_CHAR == 32 -#ifndef NPY_INT32 -#define NPY_INT32 NPY_BYTE -#define NPY_UINT32 NPY_UBYTE - typedef signed char npy_int32; - typedef unsigned char npy_uint32; - typedef unsigned char npy_ucs4; -# define PyInt32ScalarObject PyByteScalarObject -# define PyInt32ArrType_Type PyByteArrType_Type -# define PyUInt32ScalarObject PyUByteScalarObject -# define PyUInt32ArrType_Type PyUByteArrType_Type -#define NPY_INT32_FMT NPY_BYTE_FMT -#define NPY_UINT32_FMT NPY_UBYTE_FMT -#endif -#elif NPY_BITSOF_CHAR == 64 -#ifndef NPY_INT64 -#define NPY_INT64 NPY_BYTE -#define NPY_UINT64 NPY_UBYTE - typedef signed char npy_int64; - typedef unsigned char npy_uint64; -# define PyInt64ScalarObject PyByteScalarObject -# define PyInt64ArrType_Type PyByteArrType_Type -# define PyUInt64ScalarObject PyUByteScalarObject -# define PyUInt64ArrType_Type PyUByteArrType_Type -#define NPY_INT64_FMT NPY_BYTE_FMT -#define NPY_UINT64_FMT NPY_UBYTE_FMT -# define MyPyLong_FromInt64 PyLong_FromLong -# define MyPyLong_AsInt64 PyLong_AsLong -#endif -#elif NPY_BITSOF_CHAR == 128 -#ifndef NPY_INT128 -#define NPY_INT128 NPY_BYTE -#define NPY_UINT128 NPY_UBYTE - typedef signed char npy_int128; - typedef unsigned char npy_uint128; -# define PyInt128ScalarObject PyByteScalarObject -# define PyInt128ArrType_Type PyByteArrType_Type -# define PyUInt128ScalarObject PyUByteScalarObject -# define PyUInt128ArrType_Type PyUByteArrType_Type -#define NPY_INT128_FMT NPY_BYTE_FMT -#define NPY_UINT128_FMT NPY_UBYTE_FMT -#endif -#endif - - - -#if NPY_BITSOF_DOUBLE == 32 -#ifndef NPY_FLOAT32 -#define NPY_FLOAT32 NPY_DOUBLE -#define NPY_COMPLEX64 NPY_CDOUBLE - typedef double npy_float32; - typedef npy_cdouble npy_complex64; -# define PyFloat32ScalarObject PyDoubleScalarObject -# define PyComplex64ScalarObject PyCDoubleScalarObject -# define PyFloat32ArrType_Type PyDoubleArrType_Type -# define PyComplex64ArrType_Type PyCDoubleArrType_Type -#define NPY_FLOAT32_FMT NPY_DOUBLE_FMT -#define NPY_COMPLEX64_FMT NPY_CDOUBLE_FMT -#endif -#elif NPY_BITSOF_DOUBLE == 64 -#ifndef NPY_FLOAT64 -#define NPY_FLOAT64 NPY_DOUBLE -#define NPY_COMPLEX128 NPY_CDOUBLE - typedef double npy_float64; - typedef npy_cdouble npy_complex128; -# define PyFloat64ScalarObject PyDoubleScalarObject -# define PyComplex128ScalarObject PyCDoubleScalarObject -# define PyFloat64ArrType_Type PyDoubleArrType_Type -# define PyComplex128ArrType_Type PyCDoubleArrType_Type -#define NPY_FLOAT64_FMT NPY_DOUBLE_FMT -#define NPY_COMPLEX128_FMT NPY_CDOUBLE_FMT -#endif -#elif NPY_BITSOF_DOUBLE == 80 -#ifndef NPY_FLOAT80 -#define NPY_FLOAT80 NPY_DOUBLE -#define NPY_COMPLEX160 NPY_CDOUBLE - typedef double npy_float80; - typedef npy_cdouble npy_complex160; -# define PyFloat80ScalarObject PyDoubleScalarObject -# define PyComplex160ScalarObject PyCDoubleScalarObject -# define PyFloat80ArrType_Type PyDoubleArrType_Type -# define PyComplex160ArrType_Type PyCDoubleArrType_Type -#define NPY_FLOAT80_FMT NPY_DOUBLE_FMT -#define NPY_COMPLEX160_FMT NPY_CDOUBLE_FMT -#endif -#elif NPY_BITSOF_DOUBLE == 96 -#ifndef NPY_FLOAT96 -#define NPY_FLOAT96 NPY_DOUBLE -#define NPY_COMPLEX192 NPY_CDOUBLE - typedef double npy_float96; - typedef npy_cdouble npy_complex192; -# define PyFloat96ScalarObject PyDoubleScalarObject -# define PyComplex192ScalarObject PyCDoubleScalarObject -# define PyFloat96ArrType_Type PyDoubleArrType_Type -# define PyComplex192ArrType_Type PyCDoubleArrType_Type -#define NPY_FLOAT96_FMT NPY_DOUBLE_FMT -#define NPY_COMPLEX192_FMT NPY_CDOUBLE_FMT -#endif -#elif NPY_BITSOF_DOUBLE == 128 -#ifndef NPY_FLOAT128 -#define NPY_FLOAT128 NPY_DOUBLE -#define NPY_COMPLEX256 NPY_CDOUBLE - typedef double npy_float128; - typedef npy_cdouble npy_complex256; -# define PyFloat128ScalarObject PyDoubleScalarObject -# define PyComplex256ScalarObject PyCDoubleScalarObject -# define PyFloat128ArrType_Type PyDoubleArrType_Type -# define PyComplex256ArrType_Type PyCDoubleArrType_Type -#define NPY_FLOAT128_FMT NPY_DOUBLE_FMT -#define NPY_COMPLEX256_FMT NPY_CDOUBLE_FMT -#endif -#endif - - - -#if NPY_BITSOF_FLOAT == 32 -#ifndef NPY_FLOAT32 -#define NPY_FLOAT32 NPY_FLOAT -#define NPY_COMPLEX64 NPY_CFLOAT - typedef float npy_float32; - typedef npy_cfloat npy_complex64; -# define PyFloat32ScalarObject PyFloatScalarObject -# define PyComplex64ScalarObject PyCFloatScalarObject -# define PyFloat32ArrType_Type PyFloatArrType_Type -# define PyComplex64ArrType_Type PyCFloatArrType_Type -#define NPY_FLOAT32_FMT NPY_FLOAT_FMT -#define NPY_COMPLEX64_FMT NPY_CFLOAT_FMT -#endif -#elif NPY_BITSOF_FLOAT == 64 -#ifndef NPY_FLOAT64 -#define NPY_FLOAT64 NPY_FLOAT -#define NPY_COMPLEX128 NPY_CFLOAT - typedef float npy_float64; - typedef npy_cfloat npy_complex128; -# define PyFloat64ScalarObject PyFloatScalarObject -# define PyComplex128ScalarObject PyCFloatScalarObject -# define PyFloat64ArrType_Type PyFloatArrType_Type -# define PyComplex128ArrType_Type PyCFloatArrType_Type -#define NPY_FLOAT64_FMT NPY_FLOAT_FMT -#define NPY_COMPLEX128_FMT NPY_CFLOAT_FMT -#endif -#elif NPY_BITSOF_FLOAT == 80 -#ifndef NPY_FLOAT80 -#define NPY_FLOAT80 NPY_FLOAT -#define NPY_COMPLEX160 NPY_CFLOAT - typedef float npy_float80; - typedef npy_cfloat npy_complex160; -# define PyFloat80ScalarObject PyFloatScalarObject -# define PyComplex160ScalarObject PyCFloatScalarObject -# define PyFloat80ArrType_Type PyFloatArrType_Type -# define PyComplex160ArrType_Type PyCFloatArrType_Type -#define NPY_FLOAT80_FMT NPY_FLOAT_FMT -#define NPY_COMPLEX160_FMT NPY_CFLOAT_FMT -#endif -#elif NPY_BITSOF_FLOAT == 96 -#ifndef NPY_FLOAT96 -#define NPY_FLOAT96 NPY_FLOAT -#define NPY_COMPLEX192 NPY_CFLOAT - typedef float npy_float96; - typedef npy_cfloat npy_complex192; -# define PyFloat96ScalarObject PyFloatScalarObject -# define PyComplex192ScalarObject PyCFloatScalarObject -# define PyFloat96ArrType_Type PyFloatArrType_Type -# define PyComplex192ArrType_Type PyCFloatArrType_Type -#define NPY_FLOAT96_FMT NPY_FLOAT_FMT -#define NPY_COMPLEX192_FMT NPY_CFLOAT_FMT -#endif -#elif NPY_BITSOF_FLOAT == 128 -#ifndef NPY_FLOAT128 -#define NPY_FLOAT128 NPY_FLOAT -#define NPY_COMPLEX256 NPY_CFLOAT - typedef float npy_float128; - typedef npy_cfloat npy_complex256; -# define PyFloat128ScalarObject PyFloatScalarObject -# define PyComplex256ScalarObject PyCFloatScalarObject -# define PyFloat128ArrType_Type PyFloatArrType_Type -# define PyComplex256ArrType_Type PyCFloatArrType_Type -#define NPY_FLOAT128_FMT NPY_FLOAT_FMT -#define NPY_COMPLEX256_FMT NPY_CFLOAT_FMT -#endif -#endif - -/* half/float16 isn't a floating-point type in C */ -#define NPY_FLOAT16 NPY_HALF -typedef npy_uint16 npy_half; -typedef npy_half npy_float16; - -#if NPY_BITSOF_LONGDOUBLE == 32 -#ifndef NPY_FLOAT32 -#define NPY_FLOAT32 NPY_LONGDOUBLE -#define NPY_COMPLEX64 NPY_CLONGDOUBLE - typedef npy_longdouble npy_float32; - typedef npy_clongdouble npy_complex64; -# define PyFloat32ScalarObject PyLongDoubleScalarObject -# define PyComplex64ScalarObject PyCLongDoubleScalarObject -# define PyFloat32ArrType_Type PyLongDoubleArrType_Type -# define PyComplex64ArrType_Type PyCLongDoubleArrType_Type -#define NPY_FLOAT32_FMT NPY_LONGDOUBLE_FMT -#define NPY_COMPLEX64_FMT NPY_CLONGDOUBLE_FMT -#endif -#elif NPY_BITSOF_LONGDOUBLE == 64 -#ifndef NPY_FLOAT64 -#define NPY_FLOAT64 NPY_LONGDOUBLE -#define NPY_COMPLEX128 NPY_CLONGDOUBLE - typedef npy_longdouble npy_float64; - typedef npy_clongdouble npy_complex128; -# define PyFloat64ScalarObject PyLongDoubleScalarObject -# define PyComplex128ScalarObject PyCLongDoubleScalarObject -# define PyFloat64ArrType_Type PyLongDoubleArrType_Type -# define PyComplex128ArrType_Type PyCLongDoubleArrType_Type -#define NPY_FLOAT64_FMT NPY_LONGDOUBLE_FMT -#define NPY_COMPLEX128_FMT NPY_CLONGDOUBLE_FMT -#endif -#elif NPY_BITSOF_LONGDOUBLE == 80 -#ifndef NPY_FLOAT80 -#define NPY_FLOAT80 NPY_LONGDOUBLE -#define NPY_COMPLEX160 NPY_CLONGDOUBLE - typedef npy_longdouble npy_float80; - typedef npy_clongdouble npy_complex160; -# define PyFloat80ScalarObject PyLongDoubleScalarObject -# define PyComplex160ScalarObject PyCLongDoubleScalarObject -# define PyFloat80ArrType_Type PyLongDoubleArrType_Type -# define PyComplex160ArrType_Type PyCLongDoubleArrType_Type -#define NPY_FLOAT80_FMT NPY_LONGDOUBLE_FMT -#define NPY_COMPLEX160_FMT NPY_CLONGDOUBLE_FMT -#endif -#elif NPY_BITSOF_LONGDOUBLE == 96 -#ifndef NPY_FLOAT96 -#define NPY_FLOAT96 NPY_LONGDOUBLE -#define NPY_COMPLEX192 NPY_CLONGDOUBLE - typedef npy_longdouble npy_float96; - typedef npy_clongdouble npy_complex192; -# define PyFloat96ScalarObject PyLongDoubleScalarObject -# define PyComplex192ScalarObject PyCLongDoubleScalarObject -# define PyFloat96ArrType_Type PyLongDoubleArrType_Type -# define PyComplex192ArrType_Type PyCLongDoubleArrType_Type -#define NPY_FLOAT96_FMT NPY_LONGDOUBLE_FMT -#define NPY_COMPLEX192_FMT NPY_CLONGDOUBLE_FMT -#endif -#elif NPY_BITSOF_LONGDOUBLE == 128 -#ifndef NPY_FLOAT128 -#define NPY_FLOAT128 NPY_LONGDOUBLE -#define NPY_COMPLEX256 NPY_CLONGDOUBLE - typedef npy_longdouble npy_float128; - typedef npy_clongdouble npy_complex256; -# define PyFloat128ScalarObject PyLongDoubleScalarObject -# define PyComplex256ScalarObject PyCLongDoubleScalarObject -# define PyFloat128ArrType_Type PyLongDoubleArrType_Type -# define PyComplex256ArrType_Type PyCLongDoubleArrType_Type -#define NPY_FLOAT128_FMT NPY_LONGDOUBLE_FMT -#define NPY_COMPLEX256_FMT NPY_CLONGDOUBLE_FMT -#endif -#elif NPY_BITSOF_LONGDOUBLE == 256 -#define NPY_FLOAT256 NPY_LONGDOUBLE -#define NPY_COMPLEX512 NPY_CLONGDOUBLE - typedef npy_longdouble npy_float256; - typedef npy_clongdouble npy_complex512; -# define PyFloat256ScalarObject PyLongDoubleScalarObject -# define PyComplex512ScalarObject PyCLongDoubleScalarObject -# define PyFloat256ArrType_Type PyLongDoubleArrType_Type -# define PyComplex512ArrType_Type PyCLongDoubleArrType_Type -#define NPY_FLOAT256_FMT NPY_LONGDOUBLE_FMT -#define NPY_COMPLEX512_FMT NPY_CLONGDOUBLE_FMT -#endif - -/* datetime typedefs */ -typedef npy_int64 npy_timedelta; -typedef npy_int64 npy_datetime; -#define NPY_DATETIME_FMT NPY_INT64_FMT -#define NPY_TIMEDELTA_FMT NPY_INT64_FMT - -/* End of typedefs for numarray style bit-width names */ - -#endif - diff --git a/include/numpy/npy_cpu.h b/include/numpy/npy_cpu.h deleted file mode 100644 index 9707a7adf..000000000 --- a/include/numpy/npy_cpu.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This set (target) cpu specific macros: - * - Possible values: - * NPY_CPU_X86 - * NPY_CPU_AMD64 - * NPY_CPU_PPC - * NPY_CPU_PPC64 - * NPY_CPU_SPARC - * NPY_CPU_S390 - * NPY_CPU_IA64 - * NPY_CPU_HPPA - * NPY_CPU_ALPHA - * NPY_CPU_ARMEL - * NPY_CPU_ARMEB - * NPY_CPU_SH_LE - * NPY_CPU_SH_BE - */ -#ifndef _NPY_CPUARCH_H_ -#define _NPY_CPUARCH_H_ - -#include "numpyconfig.h" - -#if defined( __i386__ ) || defined(i386) || defined(_M_IX86) - /* - * __i386__ is defined by gcc and Intel compiler on Linux, - * _M_IX86 by VS compiler, - * i386 by Sun compilers on opensolaris at least - */ - #define NPY_CPU_X86 -#elif defined(__x86_64__) || defined(__amd64__) || defined(__x86_64) || defined(_M_AMD64) - /* - * both __x86_64__ and __amd64__ are defined by gcc - * __x86_64 defined by sun compiler on opensolaris at least - * _M_AMD64 defined by MS compiler - */ - #define NPY_CPU_AMD64 -#elif defined(__ppc__) || defined(__powerpc__) || defined(_ARCH_PPC) - /* - * __ppc__ is defined by gcc, I remember having seen __powerpc__ once, - * but can't find it ATM - * _ARCH_PPC is used by at least gcc on AIX - */ - #define NPY_CPU_PPC -#elif defined(__ppc64__) - #define NPY_CPU_PPC64 -#elif defined(__sparc__) || defined(__sparc) - /* __sparc__ is defined by gcc and Forte (e.g. Sun) compilers */ - #define NPY_CPU_SPARC -#elif defined(__s390__) - #define NPY_CPU_S390 -#elif defined(__ia64) - #define NPY_CPU_IA64 -#elif defined(__hppa) - #define NPY_CPU_HPPA -#elif defined(__alpha__) - #define NPY_CPU_ALPHA -#elif defined(__arm__) && defined(__ARMEL__) - #define NPY_CPU_ARMEL -#elif defined(__arm__) && defined(__ARMEB__) - #define NPY_CPU_ARMEB -#elif defined(__sh__) && defined(__LITTLE_ENDIAN__) - #define NPY_CPU_SH_LE -#elif defined(__sh__) && defined(__BIG_ENDIAN__) - #define NPY_CPU_SH_BE -#elif defined(__MIPSEL__) - #define NPY_CPU_MIPSEL -#elif defined(__MIPSEB__) - #define NPY_CPU_MIPSEB -#elif defined(__aarch64__) - #define NPY_CPU_AARCH64 -#else - #error Unknown CPU, please report this to numpy maintainers with \ - information about your platform (OS, CPU and compiler) -#endif - -/* - This "white-lists" the architectures that we know don't require - pointer alignment. We white-list, since the memcpy version will - work everywhere, whereas assignment will only work where pointer - dereferencing doesn't require alignment. - - TODO: There may be more architectures we can white list. -*/ -#if defined(NPY_CPU_X86) || defined(NPY_CPU_AMD64) - #define NPY_COPY_PYOBJECT_PTR(dst, src) (*((PyObject **)(dst)) = *((PyObject **)(src))) -#else - #if NPY_SIZEOF_PY_INTPTR_T == 4 - #define NPY_COPY_PYOBJECT_PTR(dst, src) \ - ((char*)(dst))[0] = ((char*)(src))[0]; \ - ((char*)(dst))[1] = ((char*)(src))[1]; \ - ((char*)(dst))[2] = ((char*)(src))[2]; \ - ((char*)(dst))[3] = ((char*)(src))[3]; - #elif NPY_SIZEOF_PY_INTPTR_T == 8 - #define NPY_COPY_PYOBJECT_PTR(dst, src) \ - ((char*)(dst))[0] = ((char*)(src))[0]; \ - ((char*)(dst))[1] = ((char*)(src))[1]; \ - ((char*)(dst))[2] = ((char*)(src))[2]; \ - ((char*)(dst))[3] = ((char*)(src))[3]; \ - ((char*)(dst))[4] = ((char*)(src))[4]; \ - ((char*)(dst))[5] = ((char*)(src))[5]; \ - ((char*)(dst))[6] = ((char*)(src))[6]; \ - ((char*)(dst))[7] = ((char*)(src))[7]; - #else - #error Unknown architecture, please report this to numpy maintainers with \ - information about your platform (OS, CPU and compiler) - #endif -#endif - -#endif diff --git a/include/numpy/npy_deprecated_api.h b/include/numpy/npy_deprecated_api.h deleted file mode 100644 index c27b4a4c9..000000000 --- a/include/numpy/npy_deprecated_api.h +++ /dev/null @@ -1,129 +0,0 @@ -#ifndef _NPY_DEPRECATED_API_H -#define _NPY_DEPRECATED_API_H - -#if defined(_WIN32) -#define _WARN___STR2__(x) #x -#define _WARN___STR1__(x) _WARN___STR2__(x) -#define _WARN___LOC__ __FILE__ "(" _WARN___STR1__(__LINE__) ") : Warning Msg: " -#pragma message(_WARN___LOC__"Using deprecated NumPy API, disable it by " \ - "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION") -#elif defined(__GNUC__) -#warning "Using deprecated NumPy API, disable it by #defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" -#endif -/* TODO: How to do this warning message for other compilers? */ - -/* - * This header exists to collect all dangerous/deprecated NumPy API. - * - * This is an attempt to remove bad API, the proliferation of macros, - * and namespace pollution currently produced by the NumPy headers. - */ - -#if defined(NPY_NO_DEPRECATED_API) -#error Should never include npy_deprecated_api directly. -#endif - -/* These array flags are deprecated as of NumPy 1.7 */ -#define NPY_CONTIGUOUS NPY_ARRAY_C_CONTIGUOUS -#define NPY_FORTRAN NPY_ARRAY_F_CONTIGUOUS - -/* - * The consistent NPY_ARRAY_* names which don't pollute the NPY_* - * namespace were added in NumPy 1.7. - * - * These versions of the carray flags are deprecated, but - * probably should only be removed after two releases instead of one. - */ -#define NPY_C_CONTIGUOUS NPY_ARRAY_C_CONTIGUOUS -#define NPY_F_CONTIGUOUS NPY_ARRAY_F_CONTIGUOUS -#define NPY_OWNDATA NPY_ARRAY_OWNDATA -#define NPY_FORCECAST NPY_ARRAY_FORCECAST -#define NPY_ENSURECOPY NPY_ARRAY_ENSURECOPY -#define NPY_ENSUREARRAY NPY_ARRAY_ENSUREARRAY -#define NPY_ELEMENTSTRIDES NPY_ARRAY_ELEMENTSTRIDES -#define NPY_ALIGNED NPY_ARRAY_ALIGNED -#define NPY_NOTSWAPPED NPY_ARRAY_NOTSWAPPED -#define NPY_WRITEABLE NPY_ARRAY_WRITEABLE -#define NPY_UPDATEIFCOPY NPY_ARRAY_UPDATEIFCOPY -#define NPY_BEHAVED NPY_ARRAY_BEHAVED -#define NPY_BEHAVED_NS NPY_ARRAY_BEHAVED_NS -#define NPY_CARRAY NPY_ARRAY_CARRAY -#define NPY_CARRAY_RO NPY_ARRAY_CARRAY_RO -#define NPY_FARRAY NPY_ARRAY_FARRAY -#define NPY_FARRAY_RO NPY_ARRAY_FARRAY_RO -#define NPY_DEFAULT NPY_ARRAY_DEFAULT -#define NPY_IN_ARRAY NPY_ARRAY_IN_ARRAY -#define NPY_OUT_ARRAY NPY_ARRAY_OUT_ARRAY -#define NPY_INOUT_ARRAY NPY_ARRAY_INOUT_ARRAY -#define NPY_IN_FARRAY NPY_ARRAY_IN_FARRAY -#define NPY_OUT_FARRAY NPY_ARRAY_OUT_FARRAY -#define NPY_INOUT_FARRAY NPY_ARRAY_INOUT_FARRAY -#define NPY_UPDATE_ALL NPY_ARRAY_UPDATE_ALL - -/* This way of accessing the default type is deprecated as of NumPy 1.7 */ -#define PyArray_DEFAULT NPY_DEFAULT_TYPE - -/* These DATETIME bits aren't used internally */ -#if PY_VERSION_HEX >= 0x03000000 -#define PyDataType_GetDatetimeMetaData(descr) \ - ((descr->metadata == NULL) ? NULL : \ - ((PyArray_DatetimeMetaData *)(PyCapsule_GetPointer( \ - PyDict_GetItemString( \ - descr->metadata, NPY_METADATA_DTSTR), NULL)))) -#else -#define PyDataType_GetDatetimeMetaData(descr) \ - ((descr->metadata == NULL) ? NULL : \ - ((PyArray_DatetimeMetaData *)(PyCObject_AsVoidPtr( \ - PyDict_GetItemString(descr->metadata, NPY_METADATA_DTSTR))))) -#endif - -/* - * Deprecated as of NumPy 1.7, this kind of shortcut doesn't - * belong in the public API. - */ -#define NPY_AO PyArrayObject - -/* - * Deprecated as of NumPy 1.7, an all-lowercase macro doesn't - * belong in the public API. - */ -#define fortran fortran_ - -/* - * Deprecated as of NumPy 1.7, as it is a namespace-polluting - * macro. - */ -#define FORTRAN_IF PyArray_FORTRAN_IF - -/* Deprecated as of NumPy 1.7, datetime64 uses c_metadata instead */ -#define NPY_METADATA_DTSTR "__timeunit__" - -/* - * Deprecated as of NumPy 1.7. - * The reasoning: - * - These are for datetime, but there's no datetime "namespace". - * - They just turn NPY_STR_ into "", which is just - * making something simple be indirected. - */ -#define NPY_STR_Y "Y" -#define NPY_STR_M "M" -#define NPY_STR_W "W" -#define NPY_STR_D "D" -#define NPY_STR_h "h" -#define NPY_STR_m "m" -#define NPY_STR_s "s" -#define NPY_STR_ms "ms" -#define NPY_STR_us "us" -#define NPY_STR_ns "ns" -#define NPY_STR_ps "ps" -#define NPY_STR_fs "fs" -#define NPY_STR_as "as" - -/* - * The macros in old_defines.h are Deprecated as of NumPy 1.7 and will be - * removed in the next major release. - */ -#include "old_defines.h" - - -#endif diff --git a/include/numpy/npy_endian.h b/include/numpy/npy_endian.h deleted file mode 100644 index 4e3349ffe..000000000 --- a/include/numpy/npy_endian.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef _NPY_ENDIAN_H_ -#define _NPY_ENDIAN_H_ - -/* - * NPY_BYTE_ORDER is set to the same value as BYTE_ORDER set by glibc in - * endian.h - */ - -#ifdef NPY_HAVE_ENDIAN_H - /* Use endian.h if available */ - #include - - #define NPY_BYTE_ORDER __BYTE_ORDER - #define NPY_LITTLE_ENDIAN __LITTLE_ENDIAN - #define NPY_BIG_ENDIAN __BIG_ENDIAN -#else - /* Set endianness info using target CPU */ - #include "npy_cpu.h" - - #define NPY_LITTLE_ENDIAN 1234 - #define NPY_BIG_ENDIAN 4321 - - #if defined(NPY_CPU_X86) \ - || defined(NPY_CPU_AMD64) \ - || defined(NPY_CPU_IA64) \ - || defined(NPY_CPU_ALPHA) \ - || defined(NPY_CPU_ARMEL) \ - || defined(NPY_CPU_AARCH64) \ - || defined(NPY_CPU_SH_LE) \ - || defined(NPY_CPU_MIPSEL) - #define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN - #elif defined(NPY_CPU_PPC) \ - || defined(NPY_CPU_SPARC) \ - || defined(NPY_CPU_S390) \ - || defined(NPY_CPU_HPPA) \ - || defined(NPY_CPU_PPC64) \ - || defined(NPY_CPU_ARMEB) \ - || defined(NPY_CPU_SH_BE) \ - || defined(NPY_CPU_MIPSEB) - #define NPY_BYTE_ORDER NPY_BIG_ENDIAN - #else - #error Unknown CPU: can not set endianness - #endif -#endif - -#endif diff --git a/include/numpy/npy_interrupt.h b/include/numpy/npy_interrupt.h deleted file mode 100644 index f71fd689e..000000000 --- a/include/numpy/npy_interrupt.h +++ /dev/null @@ -1,117 +0,0 @@ - -/* Signal handling: - -This header file defines macros that allow your code to handle -interrupts received during processing. Interrupts that -could reasonably be handled: - -SIGINT, SIGABRT, SIGALRM, SIGSEGV - -****Warning*************** - -Do not allow code that creates temporary memory or increases reference -counts of Python objects to be interrupted unless you handle it -differently. - -************************** - -The mechanism for handling interrupts is conceptually simple: - - - replace the signal handler with our own home-grown version - and store the old one. - - run the code to be interrupted -- if an interrupt occurs - the handler should basically just cause a return to the - calling function for finish work. - - restore the old signal handler - -Of course, every code that allows interrupts must account for -returning via the interrupt and handle clean-up correctly. But, -even still, the simple paradigm is complicated by at least three -factors. - - 1) platform portability (i.e. Microsoft says not to use longjmp - to return from signal handling. They have a __try and __except - extension to C instead but what about mingw?). - - 2) how to handle threads: apparently whether signals are delivered to - every thread of the process or the "invoking" thread is platform - dependent. --- we don't handle threads for now. - - 3) do we need to worry about re-entrance. For now, assume the - code will not call-back into itself. - -Ideas: - - 1) Start by implementing an approach that works on platforms that - can use setjmp and longjmp functionality and does nothing - on other platforms. - - 2) Ignore threads --- i.e. do not mix interrupt handling and threads - - 3) Add a default signal_handler function to the C-API but have the rest - use macros. - - -Simple Interface: - - -In your C-extension: around a block of code you want to be interruptable -with a SIGINT - -NPY_SIGINT_ON -[code] -NPY_SIGINT_OFF - -In order for this to work correctly, the -[code] block must not allocate any memory or alter the reference count of any -Python objects. In other words [code] must be interruptible so that continuation -after NPY_SIGINT_OFF will only be "missing some computations" - -Interrupt handling does not work well with threads. - -*/ - -/* Add signal handling macros - Make the global variable and signal handler part of the C-API -*/ - -#ifndef NPY_INTERRUPT_H -#define NPY_INTERRUPT_H - -#ifndef NPY_NO_SIGNAL - -#include -#include - -#ifndef sigsetjmp - -#define NPY_SIGSETJMP(arg1, arg2) setjmp(arg1) -#define NPY_SIGLONGJMP(arg1, arg2) longjmp(arg1, arg2) -#define NPY_SIGJMP_BUF jmp_buf - -#else - -#define NPY_SIGSETJMP(arg1, arg2) sigsetjmp(arg1, arg2) -#define NPY_SIGLONGJMP(arg1, arg2) siglongjmp(arg1, arg2) -#define NPY_SIGJMP_BUF sigjmp_buf - -#endif - -# define NPY_SIGINT_ON { \ - PyOS_sighandler_t _npy_sig_save; \ - _npy_sig_save = PyOS_setsig(SIGINT, _PyArray_SigintHandler); \ - if (NPY_SIGSETJMP(*((NPY_SIGJMP_BUF *)_PyArray_GetSigintBuf()), \ - 1) == 0) { \ - -# define NPY_SIGINT_OFF } \ - PyOS_setsig(SIGINT, _npy_sig_save); \ - } - -#else /* NPY_NO_SIGNAL */ - -#define NPY_SIGINT_ON -#define NPY_SIGINT_OFF - -#endif /* HAVE_SIGSETJMP */ - -#endif /* NPY_INTERRUPT_H */ diff --git a/include/numpy/npy_math.h b/include/numpy/npy_math.h deleted file mode 100644 index 7ae166e54..000000000 --- a/include/numpy/npy_math.h +++ /dev/null @@ -1,438 +0,0 @@ -#ifndef __NPY_MATH_C99_H_ -#define __NPY_MATH_C99_H_ - -#include -#ifdef __SUNPRO_CC -#include -#endif -#include - -/* - * NAN and INFINITY like macros (same behavior as glibc for NAN, same as C99 - * for INFINITY) - * - * XXX: I should test whether INFINITY and NAN are available on the platform - */ -NPY_INLINE static float __npy_inff(void) -{ - const union { npy_uint32 __i; float __f;} __bint = {0x7f800000UL}; - return __bint.__f; -} - -NPY_INLINE static float __npy_nanf(void) -{ - const union { npy_uint32 __i; float __f;} __bint = {0x7fc00000UL}; - return __bint.__f; -} - -NPY_INLINE static float __npy_pzerof(void) -{ - const union { npy_uint32 __i; float __f;} __bint = {0x00000000UL}; - return __bint.__f; -} - -NPY_INLINE static float __npy_nzerof(void) -{ - const union { npy_uint32 __i; float __f;} __bint = {0x80000000UL}; - return __bint.__f; -} - -#define NPY_INFINITYF __npy_inff() -#define NPY_NANF __npy_nanf() -#define NPY_PZEROF __npy_pzerof() -#define NPY_NZEROF __npy_nzerof() - -#define NPY_INFINITY ((npy_double)NPY_INFINITYF) -#define NPY_NAN ((npy_double)NPY_NANF) -#define NPY_PZERO ((npy_double)NPY_PZEROF) -#define NPY_NZERO ((npy_double)NPY_NZEROF) - -#define NPY_INFINITYL ((npy_longdouble)NPY_INFINITYF) -#define NPY_NANL ((npy_longdouble)NPY_NANF) -#define NPY_PZEROL ((npy_longdouble)NPY_PZEROF) -#define NPY_NZEROL ((npy_longdouble)NPY_NZEROF) - -/* - * Useful constants - */ -#define NPY_E 2.718281828459045235360287471352662498 /* e */ -#define NPY_LOG2E 1.442695040888963407359924681001892137 /* log_2 e */ -#define NPY_LOG10E 0.434294481903251827651128918916605082 /* log_10 e */ -#define NPY_LOGE2 0.693147180559945309417232121458176568 /* log_e 2 */ -#define NPY_LOGE10 2.302585092994045684017991454684364208 /* log_e 10 */ -#define NPY_PI 3.141592653589793238462643383279502884 /* pi */ -#define NPY_PI_2 1.570796326794896619231321691639751442 /* pi/2 */ -#define NPY_PI_4 0.785398163397448309615660845819875721 /* pi/4 */ -#define NPY_1_PI 0.318309886183790671537767526745028724 /* 1/pi */ -#define NPY_2_PI 0.636619772367581343075535053490057448 /* 2/pi */ -#define NPY_EULER 0.577215664901532860606512090082402431 /* Euler constant */ -#define NPY_SQRT2 1.414213562373095048801688724209698079 /* sqrt(2) */ -#define NPY_SQRT1_2 0.707106781186547524400844362104849039 /* 1/sqrt(2) */ - -#define NPY_Ef 2.718281828459045235360287471352662498F /* e */ -#define NPY_LOG2Ef 1.442695040888963407359924681001892137F /* log_2 e */ -#define NPY_LOG10Ef 0.434294481903251827651128918916605082F /* log_10 e */ -#define NPY_LOGE2f 0.693147180559945309417232121458176568F /* log_e 2 */ -#define NPY_LOGE10f 2.302585092994045684017991454684364208F /* log_e 10 */ -#define NPY_PIf 3.141592653589793238462643383279502884F /* pi */ -#define NPY_PI_2f 1.570796326794896619231321691639751442F /* pi/2 */ -#define NPY_PI_4f 0.785398163397448309615660845819875721F /* pi/4 */ -#define NPY_1_PIf 0.318309886183790671537767526745028724F /* 1/pi */ -#define NPY_2_PIf 0.636619772367581343075535053490057448F /* 2/pi */ -#define NPY_EULERf 0.577215664901532860606512090082402431F /* Euler constan*/ -#define NPY_SQRT2f 1.414213562373095048801688724209698079F /* sqrt(2) */ -#define NPY_SQRT1_2f 0.707106781186547524400844362104849039F /* 1/sqrt(2) */ - -#define NPY_El 2.718281828459045235360287471352662498L /* e */ -#define NPY_LOG2El 1.442695040888963407359924681001892137L /* log_2 e */ -#define NPY_LOG10El 0.434294481903251827651128918916605082L /* log_10 e */ -#define NPY_LOGE2l 0.693147180559945309417232121458176568L /* log_e 2 */ -#define NPY_LOGE10l 2.302585092994045684017991454684364208L /* log_e 10 */ -#define NPY_PIl 3.141592653589793238462643383279502884L /* pi */ -#define NPY_PI_2l 1.570796326794896619231321691639751442L /* pi/2 */ -#define NPY_PI_4l 0.785398163397448309615660845819875721L /* pi/4 */ -#define NPY_1_PIl 0.318309886183790671537767526745028724L /* 1/pi */ -#define NPY_2_PIl 0.636619772367581343075535053490057448L /* 2/pi */ -#define NPY_EULERl 0.577215664901532860606512090082402431L /* Euler constan*/ -#define NPY_SQRT2l 1.414213562373095048801688724209698079L /* sqrt(2) */ -#define NPY_SQRT1_2l 0.707106781186547524400844362104849039L /* 1/sqrt(2) */ - -/* - * C99 double math funcs - */ -double npy_sin(double x); -double npy_cos(double x); -double npy_tan(double x); -double npy_sinh(double x); -double npy_cosh(double x); -double npy_tanh(double x); - -double npy_asin(double x); -double npy_acos(double x); -double npy_atan(double x); -double npy_aexp(double x); -double npy_alog(double x); -double npy_asqrt(double x); -double npy_afabs(double x); - -double npy_log(double x); -double npy_log10(double x); -double npy_exp(double x); -double npy_sqrt(double x); - -double npy_fabs(double x); -double npy_ceil(double x); -double npy_fmod(double x, double y); -double npy_floor(double x); - -double npy_expm1(double x); -double npy_log1p(double x); -double npy_hypot(double x, double y); -double npy_acosh(double x); -double npy_asinh(double xx); -double npy_atanh(double x); -double npy_rint(double x); -double npy_trunc(double x); -double npy_exp2(double x); -double npy_log2(double x); - -double npy_atan2(double x, double y); -double npy_pow(double x, double y); -double npy_modf(double x, double* y); - -double npy_copysign(double x, double y); -double npy_nextafter(double x, double y); -double npy_spacing(double x); - -/* - * IEEE 754 fpu handling. Those are guaranteed to be macros - */ -#ifndef NPY_HAVE_DECL_ISNAN - #define npy_isnan(x) ((x) != (x)) -#else - #ifdef _MSC_VER - #define npy_isnan(x) _isnan((x)) - #else - #define npy_isnan(x) isnan((x)) - #endif -#endif - -#ifndef NPY_HAVE_DECL_ISFINITE - #ifdef _MSC_VER - #define npy_isfinite(x) _finite((x)) - #else - #define npy_isfinite(x) !npy_isnan((x) + (-x)) - #endif -#else - #define npy_isfinite(x) isfinite((x)) -#endif - -#ifndef NPY_HAVE_DECL_ISINF - #define npy_isinf(x) (!npy_isfinite(x) && !npy_isnan(x)) -#else - #ifdef _MSC_VER - #define npy_isinf(x) (!_finite((x)) && !_isnan((x))) - #else - #define npy_isinf(x) isinf((x)) - #endif -#endif - -#ifndef NPY_HAVE_DECL_SIGNBIT - int _npy_signbit_f(float x); - int _npy_signbit_d(double x); - int _npy_signbit_ld(long double x); - #define npy_signbit(x) \ - (sizeof (x) == sizeof (long double) ? _npy_signbit_ld (x) \ - : sizeof (x) == sizeof (double) ? _npy_signbit_d (x) \ - : _npy_signbit_f (x)) -#else - #define npy_signbit(x) signbit((x)) -#endif - -/* - * float C99 math functions - */ - -float npy_sinf(float x); -float npy_cosf(float x); -float npy_tanf(float x); -float npy_sinhf(float x); -float npy_coshf(float x); -float npy_tanhf(float x); -float npy_fabsf(float x); -float npy_floorf(float x); -float npy_ceilf(float x); -float npy_rintf(float x); -float npy_truncf(float x); -float npy_sqrtf(float x); -float npy_log10f(float x); -float npy_logf(float x); -float npy_expf(float x); -float npy_expm1f(float x); -float npy_asinf(float x); -float npy_acosf(float x); -float npy_atanf(float x); -float npy_asinhf(float x); -float npy_acoshf(float x); -float npy_atanhf(float x); -float npy_log1pf(float x); -float npy_exp2f(float x); -float npy_log2f(float x); - -float npy_atan2f(float x, float y); -float npy_hypotf(float x, float y); -float npy_powf(float x, float y); -float npy_fmodf(float x, float y); - -float npy_modff(float x, float* y); - -float npy_copysignf(float x, float y); -float npy_nextafterf(float x, float y); -float npy_spacingf(float x); - -/* - * float C99 math functions - */ - -npy_longdouble npy_sinl(npy_longdouble x); -npy_longdouble npy_cosl(npy_longdouble x); -npy_longdouble npy_tanl(npy_longdouble x); -npy_longdouble npy_sinhl(npy_longdouble x); -npy_longdouble npy_coshl(npy_longdouble x); -npy_longdouble npy_tanhl(npy_longdouble x); -npy_longdouble npy_fabsl(npy_longdouble x); -npy_longdouble npy_floorl(npy_longdouble x); -npy_longdouble npy_ceill(npy_longdouble x); -npy_longdouble npy_rintl(npy_longdouble x); -npy_longdouble npy_truncl(npy_longdouble x); -npy_longdouble npy_sqrtl(npy_longdouble x); -npy_longdouble npy_log10l(npy_longdouble x); -npy_longdouble npy_logl(npy_longdouble x); -npy_longdouble npy_expl(npy_longdouble x); -npy_longdouble npy_expm1l(npy_longdouble x); -npy_longdouble npy_asinl(npy_longdouble x); -npy_longdouble npy_acosl(npy_longdouble x); -npy_longdouble npy_atanl(npy_longdouble x); -npy_longdouble npy_asinhl(npy_longdouble x); -npy_longdouble npy_acoshl(npy_longdouble x); -npy_longdouble npy_atanhl(npy_longdouble x); -npy_longdouble npy_log1pl(npy_longdouble x); -npy_longdouble npy_exp2l(npy_longdouble x); -npy_longdouble npy_log2l(npy_longdouble x); - -npy_longdouble npy_atan2l(npy_longdouble x, npy_longdouble y); -npy_longdouble npy_hypotl(npy_longdouble x, npy_longdouble y); -npy_longdouble npy_powl(npy_longdouble x, npy_longdouble y); -npy_longdouble npy_fmodl(npy_longdouble x, npy_longdouble y); - -npy_longdouble npy_modfl(npy_longdouble x, npy_longdouble* y); - -npy_longdouble npy_copysignl(npy_longdouble x, npy_longdouble y); -npy_longdouble npy_nextafterl(npy_longdouble x, npy_longdouble y); -npy_longdouble npy_spacingl(npy_longdouble x); - -/* - * Non standard functions - */ -double npy_deg2rad(double x); -double npy_rad2deg(double x); -double npy_logaddexp(double x, double y); -double npy_logaddexp2(double x, double y); - -float npy_deg2radf(float x); -float npy_rad2degf(float x); -float npy_logaddexpf(float x, float y); -float npy_logaddexp2f(float x, float y); - -npy_longdouble npy_deg2radl(npy_longdouble x); -npy_longdouble npy_rad2degl(npy_longdouble x); -npy_longdouble npy_logaddexpl(npy_longdouble x, npy_longdouble y); -npy_longdouble npy_logaddexp2l(npy_longdouble x, npy_longdouble y); - -#define npy_degrees npy_rad2deg -#define npy_degreesf npy_rad2degf -#define npy_degreesl npy_rad2degl - -#define npy_radians npy_deg2rad -#define npy_radiansf npy_deg2radf -#define npy_radiansl npy_deg2radl - -/* - * Complex declarations - */ - -/* - * C99 specifies that complex numbers have the same representation as - * an array of two elements, where the first element is the real part - * and the second element is the imaginary part. - */ -#define __NPY_CPACK_IMP(x, y, type, ctype) \ - union { \ - ctype z; \ - type a[2]; \ - } z1;; \ - \ - z1.a[0] = (x); \ - z1.a[1] = (y); \ - \ - return z1.z; - -static NPY_INLINE npy_cdouble npy_cpack(double x, double y) -{ - __NPY_CPACK_IMP(x, y, double, npy_cdouble); -} - -static NPY_INLINE npy_cfloat npy_cpackf(float x, float y) -{ - __NPY_CPACK_IMP(x, y, float, npy_cfloat); -} - -static NPY_INLINE npy_clongdouble npy_cpackl(npy_longdouble x, npy_longdouble y) -{ - __NPY_CPACK_IMP(x, y, npy_longdouble, npy_clongdouble); -} -#undef __NPY_CPACK_IMP - -/* - * Same remark as above, but in the other direction: extract first/second - * member of complex number, assuming a C99-compatible representation - * - * Those are defineds as static inline, and such as a reasonable compiler would - * most likely compile this to one or two instructions (on CISC at least) - */ -#define __NPY_CEXTRACT_IMP(z, index, type, ctype) \ - union { \ - ctype z; \ - type a[2]; \ - } __z_repr; \ - __z_repr.z = z; \ - \ - return __z_repr.a[index]; - -static NPY_INLINE double npy_creal(npy_cdouble z) -{ - __NPY_CEXTRACT_IMP(z, 0, double, npy_cdouble); -} - -static NPY_INLINE double npy_cimag(npy_cdouble z) -{ - __NPY_CEXTRACT_IMP(z, 1, double, npy_cdouble); -} - -static NPY_INLINE float npy_crealf(npy_cfloat z) -{ - __NPY_CEXTRACT_IMP(z, 0, float, npy_cfloat); -} - -static NPY_INLINE float npy_cimagf(npy_cfloat z) -{ - __NPY_CEXTRACT_IMP(z, 1, float, npy_cfloat); -} - -static NPY_INLINE npy_longdouble npy_creall(npy_clongdouble z) -{ - __NPY_CEXTRACT_IMP(z, 0, npy_longdouble, npy_clongdouble); -} - -static NPY_INLINE npy_longdouble npy_cimagl(npy_clongdouble z) -{ - __NPY_CEXTRACT_IMP(z, 1, npy_longdouble, npy_clongdouble); -} -#undef __NPY_CEXTRACT_IMP - -/* - * Double precision complex functions - */ -double npy_cabs(npy_cdouble z); -double npy_carg(npy_cdouble z); - -npy_cdouble npy_cexp(npy_cdouble z); -npy_cdouble npy_clog(npy_cdouble z); -npy_cdouble npy_cpow(npy_cdouble x, npy_cdouble y); - -npy_cdouble npy_csqrt(npy_cdouble z); - -npy_cdouble npy_ccos(npy_cdouble z); -npy_cdouble npy_csin(npy_cdouble z); - -/* - * Single precision complex functions - */ -float npy_cabsf(npy_cfloat z); -float npy_cargf(npy_cfloat z); - -npy_cfloat npy_cexpf(npy_cfloat z); -npy_cfloat npy_clogf(npy_cfloat z); -npy_cfloat npy_cpowf(npy_cfloat x, npy_cfloat y); - -npy_cfloat npy_csqrtf(npy_cfloat z); - -npy_cfloat npy_ccosf(npy_cfloat z); -npy_cfloat npy_csinf(npy_cfloat z); - -/* - * Extended precision complex functions - */ -npy_longdouble npy_cabsl(npy_clongdouble z); -npy_longdouble npy_cargl(npy_clongdouble z); - -npy_clongdouble npy_cexpl(npy_clongdouble z); -npy_clongdouble npy_clogl(npy_clongdouble z); -npy_clongdouble npy_cpowl(npy_clongdouble x, npy_clongdouble y); - -npy_clongdouble npy_csqrtl(npy_clongdouble z); - -npy_clongdouble npy_ccosl(npy_clongdouble z); -npy_clongdouble npy_csinl(npy_clongdouble z); - -/* - * Functions that set the floating point error - * status word. - */ - -void npy_set_floatstatus_divbyzero(void); -void npy_set_floatstatus_overflow(void); -void npy_set_floatstatus_underflow(void); -void npy_set_floatstatus_invalid(void); - -#endif diff --git a/include/numpy/npy_no_deprecated_api.h b/include/numpy/npy_no_deprecated_api.h deleted file mode 100644 index 6183dc278..000000000 --- a/include/numpy/npy_no_deprecated_api.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This include file is provided for inclusion in Cython *.pyd files where - * one would like to define the NPY_NO_DEPRECATED_API macro. It can be - * included by - * - * cdef extern from "npy_no_deprecated_api.h": pass - * - */ -#ifndef NPY_NO_DEPRECATED_API - -/* put this check here since there may be multiple includes in C extensions. */ -#if defined(NDARRAYTYPES_H) || defined(_NPY_DEPRECATED_API_H) || \ - defined(OLD_DEFINES_H) -#error "npy_no_deprecated_api.h" must be first among numpy includes. -#else -#define NPY_NO_DEPRECATED_API NPY_API_VERSION -#endif - -#endif diff --git a/include/numpy/npy_os.h b/include/numpy/npy_os.h deleted file mode 100644 index 9228c3916..000000000 --- a/include/numpy/npy_os.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _NPY_OS_H_ -#define _NPY_OS_H_ - -#if defined(linux) || defined(__linux) || defined(__linux__) - #define NPY_OS_LINUX -#elif defined(__FreeBSD__) || defined(__NetBSD__) || \ - defined(__OpenBSD__) || defined(__DragonFly__) - #define NPY_OS_BSD - #ifdef __FreeBSD__ - #define NPY_OS_FREEBSD - #elif defined(__NetBSD__) - #define NPY_OS_NETBSD - #elif defined(__OpenBSD__) - #define NPY_OS_OPENBSD - #elif defined(__DragonFly__) - #define NPY_OS_DRAGONFLY - #endif -#elif defined(sun) || defined(__sun) - #define NPY_OS_SOLARIS -#elif defined(__CYGWIN__) - #define NPY_OS_CYGWIN -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) - #define NPY_OS_WIN32 -#elif defined(__APPLE__) - #define NPY_OS_DARWIN -#else - #define NPY_OS_UNKNOWN -#endif - -#endif diff --git a/include/numpy/numpyconfig.h b/include/numpy/numpyconfig.h deleted file mode 100644 index 401d19fd7..000000000 --- a/include/numpy/numpyconfig.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef _NPY_NUMPYCONFIG_H_ -#define _NPY_NUMPYCONFIG_H_ - -#include "_numpyconfig.h" - -/* - * On Mac OS X, because there is only one configuration stage for all the archs - * in universal builds, any macro which depends on the arch needs to be - * harcoded - */ -#ifdef __APPLE__ - #undef NPY_SIZEOF_LONG - #undef NPY_SIZEOF_PY_INTPTR_T - - #ifdef __LP64__ - #define NPY_SIZEOF_LONG 8 - #define NPY_SIZEOF_PY_INTPTR_T 8 - #else - #define NPY_SIZEOF_LONG 4 - #define NPY_SIZEOF_PY_INTPTR_T 4 - #endif -#endif - -/** - * To help with the NPY_NO_DEPRECATED_API macro, we include API version - * numbers for specific versions of NumPy. To exclude all API that was - * deprecated as of 1.7, add the following before #including any NumPy - * headers: - * #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION - */ -#define NPY_1_7_API_VERSION 0x00000007 - -#endif diff --git a/include/numpy/old_defines.h b/include/numpy/old_defines.h deleted file mode 100644 index abf81595a..000000000 --- a/include/numpy/old_defines.h +++ /dev/null @@ -1,187 +0,0 @@ -/* This header is deprecated as of NumPy 1.7 */ -#ifndef OLD_DEFINES_H -#define OLD_DEFINES_H - -#if defined(NPY_NO_DEPRECATED_API) && NPY_NO_DEPRECATED_API >= NPY_1_7_API_VERSION -#error The header "old_defines.h" is deprecated as of NumPy 1.7. -#endif - -#define NDARRAY_VERSION NPY_VERSION - -#define PyArray_MIN_BUFSIZE NPY_MIN_BUFSIZE -#define PyArray_MAX_BUFSIZE NPY_MAX_BUFSIZE -#define PyArray_BUFSIZE NPY_BUFSIZE - -#define PyArray_PRIORITY NPY_PRIORITY -#define PyArray_SUBTYPE_PRIORITY NPY_PRIORITY -#define PyArray_NUM_FLOATTYPE NPY_NUM_FLOATTYPE - -#define NPY_MAX PyArray_MAX -#define NPY_MIN PyArray_MIN - -#define PyArray_TYPES NPY_TYPES -#define PyArray_BOOL NPY_BOOL -#define PyArray_BYTE NPY_BYTE -#define PyArray_UBYTE NPY_UBYTE -#define PyArray_SHORT NPY_SHORT -#define PyArray_USHORT NPY_USHORT -#define PyArray_INT NPY_INT -#define PyArray_UINT NPY_UINT -#define PyArray_LONG NPY_LONG -#define PyArray_ULONG NPY_ULONG -#define PyArray_LONGLONG NPY_LONGLONG -#define PyArray_ULONGLONG NPY_ULONGLONG -#define PyArray_HALF NPY_HALF -#define PyArray_FLOAT NPY_FLOAT -#define PyArray_DOUBLE NPY_DOUBLE -#define PyArray_LONGDOUBLE NPY_LONGDOUBLE -#define PyArray_CFLOAT NPY_CFLOAT -#define PyArray_CDOUBLE NPY_CDOUBLE -#define PyArray_CLONGDOUBLE NPY_CLONGDOUBLE -#define PyArray_OBJECT NPY_OBJECT -#define PyArray_STRING NPY_STRING -#define PyArray_UNICODE NPY_UNICODE -#define PyArray_VOID NPY_VOID -#define PyArray_DATETIME NPY_DATETIME -#define PyArray_TIMEDELTA NPY_TIMEDELTA -#define PyArray_NTYPES NPY_NTYPES -#define PyArray_NOTYPE NPY_NOTYPE -#define PyArray_CHAR NPY_CHAR -#define PyArray_USERDEF NPY_USERDEF -#define PyArray_NUMUSERTYPES NPY_NUMUSERTYPES - -#define PyArray_INTP NPY_INTP -#define PyArray_UINTP NPY_UINTP - -#define PyArray_INT8 NPY_INT8 -#define PyArray_UINT8 NPY_UINT8 -#define PyArray_INT16 NPY_INT16 -#define PyArray_UINT16 NPY_UINT16 -#define PyArray_INT32 NPY_INT32 -#define PyArray_UINT32 NPY_UINT32 - -#ifdef NPY_INT64 -#define PyArray_INT64 NPY_INT64 -#define PyArray_UINT64 NPY_UINT64 -#endif - -#ifdef NPY_INT128 -#define PyArray_INT128 NPY_INT128 -#define PyArray_UINT128 NPY_UINT128 -#endif - -#ifdef NPY_FLOAT16 -#define PyArray_FLOAT16 NPY_FLOAT16 -#define PyArray_COMPLEX32 NPY_COMPLEX32 -#endif - -#ifdef NPY_FLOAT80 -#define PyArray_FLOAT80 NPY_FLOAT80 -#define PyArray_COMPLEX160 NPY_COMPLEX160 -#endif - -#ifdef NPY_FLOAT96 -#define PyArray_FLOAT96 NPY_FLOAT96 -#define PyArray_COMPLEX192 NPY_COMPLEX192 -#endif - -#ifdef NPY_FLOAT128 -#define PyArray_FLOAT128 NPY_FLOAT128 -#define PyArray_COMPLEX256 NPY_COMPLEX256 -#endif - -#define PyArray_FLOAT32 NPY_FLOAT32 -#define PyArray_COMPLEX64 NPY_COMPLEX64 -#define PyArray_FLOAT64 NPY_FLOAT64 -#define PyArray_COMPLEX128 NPY_COMPLEX128 - - -#define PyArray_TYPECHAR NPY_TYPECHAR -#define PyArray_BOOLLTR NPY_BOOLLTR -#define PyArray_BYTELTR NPY_BYTELTR -#define PyArray_UBYTELTR NPY_UBYTELTR -#define PyArray_SHORTLTR NPY_SHORTLTR -#define PyArray_USHORTLTR NPY_USHORTLTR -#define PyArray_INTLTR NPY_INTLTR -#define PyArray_UINTLTR NPY_UINTLTR -#define PyArray_LONGLTR NPY_LONGLTR -#define PyArray_ULONGLTR NPY_ULONGLTR -#define PyArray_LONGLONGLTR NPY_LONGLONGLTR -#define PyArray_ULONGLONGLTR NPY_ULONGLONGLTR -#define PyArray_HALFLTR NPY_HALFLTR -#define PyArray_FLOATLTR NPY_FLOATLTR -#define PyArray_DOUBLELTR NPY_DOUBLELTR -#define PyArray_LONGDOUBLELTR NPY_LONGDOUBLELTR -#define PyArray_CFLOATLTR NPY_CFLOATLTR -#define PyArray_CDOUBLELTR NPY_CDOUBLELTR -#define PyArray_CLONGDOUBLELTR NPY_CLONGDOUBLELTR -#define PyArray_OBJECTLTR NPY_OBJECTLTR -#define PyArray_STRINGLTR NPY_STRINGLTR -#define PyArray_STRINGLTR2 NPY_STRINGLTR2 -#define PyArray_UNICODELTR NPY_UNICODELTR -#define PyArray_VOIDLTR NPY_VOIDLTR -#define PyArray_DATETIMELTR NPY_DATETIMELTR -#define PyArray_TIMEDELTALTR NPY_TIMEDELTALTR -#define PyArray_CHARLTR NPY_CHARLTR -#define PyArray_INTPLTR NPY_INTPLTR -#define PyArray_UINTPLTR NPY_UINTPLTR -#define PyArray_GENBOOLLTR NPY_GENBOOLLTR -#define PyArray_SIGNEDLTR NPY_SIGNEDLTR -#define PyArray_UNSIGNEDLTR NPY_UNSIGNEDLTR -#define PyArray_FLOATINGLTR NPY_FLOATINGLTR -#define PyArray_COMPLEXLTR NPY_COMPLEXLTR - -#define PyArray_QUICKSORT NPY_QUICKSORT -#define PyArray_HEAPSORT NPY_HEAPSORT -#define PyArray_MERGESORT NPY_MERGESORT -#define PyArray_SORTKIND NPY_SORTKIND -#define PyArray_NSORTS NPY_NSORTS - -#define PyArray_NOSCALAR NPY_NOSCALAR -#define PyArray_BOOL_SCALAR NPY_BOOL_SCALAR -#define PyArray_INTPOS_SCALAR NPY_INTPOS_SCALAR -#define PyArray_INTNEG_SCALAR NPY_INTNEG_SCALAR -#define PyArray_FLOAT_SCALAR NPY_FLOAT_SCALAR -#define PyArray_COMPLEX_SCALAR NPY_COMPLEX_SCALAR -#define PyArray_OBJECT_SCALAR NPY_OBJECT_SCALAR -#define PyArray_SCALARKIND NPY_SCALARKIND -#define PyArray_NSCALARKINDS NPY_NSCALARKINDS - -#define PyArray_ANYORDER NPY_ANYORDER -#define PyArray_CORDER NPY_CORDER -#define PyArray_FORTRANORDER NPY_FORTRANORDER -#define PyArray_ORDER NPY_ORDER - -#define PyDescr_ISBOOL PyDataType_ISBOOL -#define PyDescr_ISUNSIGNED PyDataType_ISUNSIGNED -#define PyDescr_ISSIGNED PyDataType_ISSIGNED -#define PyDescr_ISINTEGER PyDataType_ISINTEGER -#define PyDescr_ISFLOAT PyDataType_ISFLOAT -#define PyDescr_ISNUMBER PyDataType_ISNUMBER -#define PyDescr_ISSTRING PyDataType_ISSTRING -#define PyDescr_ISCOMPLEX PyDataType_ISCOMPLEX -#define PyDescr_ISPYTHON PyDataType_ISPYTHON -#define PyDescr_ISFLEXIBLE PyDataType_ISFLEXIBLE -#define PyDescr_ISUSERDEF PyDataType_ISUSERDEF -#define PyDescr_ISEXTENDED PyDataType_ISEXTENDED -#define PyDescr_ISOBJECT PyDataType_ISOBJECT -#define PyDescr_HASFIELDS PyDataType_HASFIELDS - -#define PyArray_LITTLE NPY_LITTLE -#define PyArray_BIG NPY_BIG -#define PyArray_NATIVE NPY_NATIVE -#define PyArray_SWAP NPY_SWAP -#define PyArray_IGNORE NPY_IGNORE - -#define PyArray_NATBYTE NPY_NATBYTE -#define PyArray_OPPBYTE NPY_OPPBYTE - -#define PyArray_MAX_ELSIZE NPY_MAX_ELSIZE - -#define PyArray_USE_PYMEM NPY_USE_PYMEM - -#define PyArray_RemoveLargest PyArray_RemoveSmallest - -#define PyArray_UCS4 npy_ucs4 - -#endif diff --git a/include/numpy/oldnumeric.h b/include/numpy/oldnumeric.h deleted file mode 100644 index 748f06da3..000000000 --- a/include/numpy/oldnumeric.h +++ /dev/null @@ -1,23 +0,0 @@ -#include "arrayobject.h" - -#ifndef REFCOUNT -# define REFCOUNT NPY_REFCOUNT -# define MAX_ELSIZE 16 -#endif - -#define PyArray_UNSIGNED_TYPES -#define PyArray_SBYTE NPY_BYTE -#define PyArray_CopyArray PyArray_CopyInto -#define _PyArray_multiply_list PyArray_MultiplyIntList -#define PyArray_ISSPACESAVER(m) NPY_FALSE -#define PyScalarArray_Check PyArray_CheckScalar - -#define CONTIGUOUS NPY_CONTIGUOUS -#define OWN_DIMENSIONS 0 -#define OWN_STRIDES 0 -#define OWN_DATA NPY_OWNDATA -#define SAVESPACE 0 -#define SAVESPACEBIT 0 - -#undef import_array -#define import_array() { if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); } } diff --git a/include/numpy/ufunc_api.txt b/include/numpy/ufunc_api.txt deleted file mode 100644 index 3365433cd..000000000 --- a/include/numpy/ufunc_api.txt +++ /dev/null @@ -1,312 +0,0 @@ - -================= -Numpy Ufunc C-API -================= -:: - - PyObject * - PyUFunc_FromFuncAndData(PyUFuncGenericFunction *func, void - **data, char *types, int ntypes, int nin, int - nout, int identity, char *name, char *doc, int - check_return) - - -:: - - int - PyUFunc_RegisterLoopForType(PyUFuncObject *ufunc, int - usertype, PyUFuncGenericFunction - function, int *arg_types, void *data) - - -:: - - int - PyUFunc_GenericFunction(PyUFuncObject *ufunc, PyObject *args, PyObject - *kwds, PyArrayObject **op) - - -This generic function is called with the ufunc object, the arguments to it, -and an array of (pointers to) PyArrayObjects which are NULL. - -'op' is an array of at least NPY_MAXARGS PyArrayObject *. - -:: - - void - PyUFunc_f_f_As_d_d(char **args, npy_intp *dimensions, npy_intp - *steps, void *func) - - -:: - - void - PyUFunc_d_d(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_f_f(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_g_g(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_F_F_As_D_D(char **args, npy_intp *dimensions, npy_intp - *steps, void *func) - - -:: - - void - PyUFunc_F_F(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_D_D(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_G_G(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_O_O(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_ff_f_As_dd_d(char **args, npy_intp *dimensions, npy_intp - *steps, void *func) - - -:: - - void - PyUFunc_ff_f(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_dd_d(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_gg_g(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_FF_F_As_DD_D(char **args, npy_intp *dimensions, npy_intp - *steps, void *func) - - -:: - - void - PyUFunc_DD_D(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_FF_F(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_GG_G(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_OO_O(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_O_O_method(char **args, npy_intp *dimensions, npy_intp - *steps, void *func) - - -:: - - void - PyUFunc_OO_O_method(char **args, npy_intp *dimensions, npy_intp - *steps, void *func) - - -:: - - void - PyUFunc_On_Om(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - int - PyUFunc_GetPyValues(char *name, int *bufsize, int *errmask, PyObject - **errobj) - - -On return, if errobj is populated with a non-NULL value, the caller -owns a new reference to errobj. - -:: - - int - PyUFunc_checkfperr(int errmask, PyObject *errobj, int *first) - - -:: - - void - PyUFunc_clearfperr() - - -:: - - int - PyUFunc_getfperr(void ) - - -:: - - int - PyUFunc_handlefperr(int errmask, PyObject *errobj, int retstatus, int - *first) - - -:: - - int - PyUFunc_ReplaceLoopBySignature(PyUFuncObject - *func, PyUFuncGenericFunction - newfunc, int - *signature, PyUFuncGenericFunction - *oldfunc) - - -:: - - PyObject * - PyUFunc_FromFuncAndDataAndSignature(PyUFuncGenericFunction *func, void - **data, char *types, int - ntypes, int nin, int nout, int - identity, char *name, char - *doc, int check_return, const char - *signature) - - -:: - - int - PyUFunc_SetUsesArraysAsData(void **data, size_t i) - - -:: - - void - PyUFunc_e_e(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_e_e_As_f_f(char **args, npy_intp *dimensions, npy_intp - *steps, void *func) - - -:: - - void - PyUFunc_e_e_As_d_d(char **args, npy_intp *dimensions, npy_intp - *steps, void *func) - - -:: - - void - PyUFunc_ee_e(char **args, npy_intp *dimensions, npy_intp *steps, void - *func) - - -:: - - void - PyUFunc_ee_e_As_ff_f(char **args, npy_intp *dimensions, npy_intp - *steps, void *func) - - -:: - - void - PyUFunc_ee_e_As_dd_d(char **args, npy_intp *dimensions, npy_intp - *steps, void *func) - - -:: - - int - PyUFunc_DefaultTypeResolver(PyUFuncObject *ufunc, NPY_CASTING - casting, PyArrayObject - **operands, PyObject - *type_tup, PyArray_Descr **out_dtypes) - - -This function applies the default type resolution rules -for the provided ufunc. - -Returns 0 on success, -1 on error. - -:: - - int - PyUFunc_ValidateCasting(PyUFuncObject *ufunc, NPY_CASTING - casting, PyArrayObject - **operands, PyArray_Descr **dtypes) - - -Validates that the input operands can be cast to -the input types, and the output types can be cast to -the output operands where provided. - -Returns 0 on success, -1 (with exception raised) on validation failure. - diff --git a/include/numpy/ufuncobject.h b/include/numpy/ufuncobject.h deleted file mode 100644 index 95afd5aa2..000000000 --- a/include/numpy/ufuncobject.h +++ /dev/null @@ -1,446 +0,0 @@ -#ifndef Py_UFUNCOBJECT_H -#define Py_UFUNCOBJECT_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The legacy generic inner loop for a standard element-wise or - * generalized ufunc. - */ -typedef void (*PyUFuncGenericFunction) - (char **args, - npy_intp *dimensions, - npy_intp *strides, - void *innerloopdata); - -/* - * The most generic one-dimensional inner loop for - * a standard element-wise ufunc. This typedef is also - * more consistent with the other NumPy function pointer typedefs - * than PyUFuncGenericFunction. - */ -typedef void (PyUFunc_StridedInnerLoopFunc)( - char **dataptrs, npy_intp *strides, - npy_intp count, - NpyAuxData *innerloopdata); - -/* - * The most generic one-dimensional inner loop for - * a masked standard element-wise ufunc. "Masked" here means that it skips - * doing calculations on any items for which the maskptr array has a true - * value. - */ -typedef void (PyUFunc_MaskedStridedInnerLoopFunc)( - char **dataptrs, npy_intp *strides, - char *maskptr, npy_intp mask_stride, - npy_intp count, - NpyAuxData *innerloopdata); - -/* Forward declaration for the type resolver and loop selector typedefs */ -struct _tagPyUFuncObject; - -/* - * Given the operands for calling a ufunc, should determine the - * calculation input and output data types and return an inner loop function. - * This function should validate that the casting rule is being followed, - * and fail if it is not. - * - * For backwards compatibility, the regular type resolution function does not - * support auxiliary data with object semantics. The type resolution call - * which returns a masked generic function returns a standard NpyAuxData - * object, for which the NPY_AUXDATA_FREE and NPY_AUXDATA_CLONE macros - * work. - * - * ufunc: The ufunc object. - * casting: The 'casting' parameter provided to the ufunc. - * operands: An array of length (ufunc->nin + ufunc->nout), - * with the output parameters possibly NULL. - * type_tup: Either NULL, or the type_tup passed to the ufunc. - * out_dtypes: An array which should be populated with new - * references to (ufunc->nin + ufunc->nout) new - * dtypes, one for each input and output. These - * dtypes should all be in native-endian format. - * - * Should return 0 on success, -1 on failure (with exception set), - * or -2 if Py_NotImplemented should be returned. - */ -typedef int (PyUFunc_TypeResolutionFunc)( - struct _tagPyUFuncObject *ufunc, - NPY_CASTING casting, - PyArrayObject **operands, - PyObject *type_tup, - PyArray_Descr **out_dtypes); - -/* - * Given an array of DTypes as returned by the PyUFunc_TypeResolutionFunc, - * and an array of fixed strides (the array will contain NPY_MAX_INTP for - * strides which are not necessarily fixed), returns an inner loop - * with associated auxiliary data. - * - * For backwards compatibility, there is a variant of the inner loop - * selection which returns an inner loop irrespective of the strides, - * and with a void* static auxiliary data instead of an NpyAuxData * - * dynamically allocatable auxiliary data. - * - * ufunc: The ufunc object. - * dtypes: An array which has been populated with dtypes, - * in most cases by the type resolution funciton - * for the same ufunc. - * fixed_strides: For each input/output, either the stride that - * will be used every time the function is called - * or NPY_MAX_INTP if the stride might change or - * is not known ahead of time. The loop selection - * function may use this stride to pick inner loops - * which are optimized for contiguous or 0-stride - * cases. - * out_innerloop: Should be populated with the correct ufunc inner - * loop for the given type. - * out_innerloopdata: Should be populated with the void* data to - * be passed into the out_innerloop function. - * out_needs_api: If the inner loop needs to use the Python API, - * should set the to 1, otherwise should leave - * this untouched. - */ -typedef int (PyUFunc_LegacyInnerLoopSelectionFunc)( - struct _tagPyUFuncObject *ufunc, - PyArray_Descr **dtypes, - PyUFuncGenericFunction *out_innerloop, - void **out_innerloopdata, - int *out_needs_api); -typedef int (PyUFunc_InnerLoopSelectionFunc)( - struct _tagPyUFuncObject *ufunc, - PyArray_Descr **dtypes, - npy_intp *fixed_strides, - PyUFunc_StridedInnerLoopFunc **out_innerloop, - NpyAuxData **out_innerloopdata, - int *out_needs_api); -typedef int (PyUFunc_MaskedInnerLoopSelectionFunc)( - struct _tagPyUFuncObject *ufunc, - PyArray_Descr **dtypes, - PyArray_Descr *mask_dtype, - npy_intp *fixed_strides, - npy_intp fixed_mask_stride, - PyUFunc_MaskedStridedInnerLoopFunc **out_innerloop, - NpyAuxData **out_innerloopdata, - int *out_needs_api); - -typedef struct _tagPyUFuncObject { - PyObject_HEAD - /* - * nin: Number of inputs - * nout: Number of outputs - * nargs: Always nin + nout (Why is it stored?) - */ - int nin, nout, nargs; - - /* Identity for reduction, either PyUFunc_One or PyUFunc_Zero */ - int identity; - - /* Array of one-dimensional core loops */ - PyUFuncGenericFunction *functions; - /* Array of funcdata that gets passed into the functions */ - void **data; - /* The number of elements in 'functions' and 'data' */ - int ntypes; - - /* Does not appear to be used */ - int check_return; - - /* The name of the ufunc */ - char *name; - - /* Array of type numbers, of size ('nargs' * 'ntypes') */ - char *types; - - /* Documentation string */ - char *doc; - - void *ptr; - PyObject *obj; - PyObject *userloops; - - /* generalized ufunc parameters */ - - /* 0 for scalar ufunc; 1 for generalized ufunc */ - int core_enabled; - /* number of distinct dimension names in signature */ - int core_num_dim_ix; - - /* - * dimension indices of input/output argument k are stored in - * core_dim_ixs[core_offsets[k]..core_offsets[k]+core_num_dims[k]-1] - */ - - /* numbers of core dimensions of each argument */ - int *core_num_dims; - /* - * dimension indices in a flatted form; indices - * are in the range of [0,core_num_dim_ix) - */ - int *core_dim_ixs; - /* - * positions of 1st core dimensions of each - * argument in core_dim_ixs - */ - int *core_offsets; - /* signature string for printing purpose */ - char *core_signature; - - /* - * A function which resolves the types and fills an array - * with the dtypes for the inputs and outputs. - */ - PyUFunc_TypeResolutionFunc *type_resolver; - /* - * A function which returns an inner loop written for - * NumPy 1.6 and earlier ufuncs. This is for backwards - * compatibility, and may be NULL if inner_loop_selector - * is specified. - */ - PyUFunc_LegacyInnerLoopSelectionFunc *legacy_inner_loop_selector; - /* - * A function which returns an inner loop for the new mechanism - * in NumPy 1.7 and later. If provided, this is used, otherwise - * if NULL the legacy_inner_loop_selector is used instead. - */ - PyUFunc_InnerLoopSelectionFunc *inner_loop_selector; - /* - * A function which returns a masked inner loop for the ufunc. - */ - PyUFunc_MaskedInnerLoopSelectionFunc *masked_inner_loop_selector; -} PyUFuncObject; - -#include "arrayobject.h" - -#define UFUNC_ERR_IGNORE 0 -#define UFUNC_ERR_WARN 1 -#define UFUNC_ERR_RAISE 2 -#define UFUNC_ERR_CALL 3 -#define UFUNC_ERR_PRINT 4 -#define UFUNC_ERR_LOG 5 - - /* Python side integer mask */ - -#define UFUNC_MASK_DIVIDEBYZERO 0x07 -#define UFUNC_MASK_OVERFLOW 0x3f -#define UFUNC_MASK_UNDERFLOW 0x1ff -#define UFUNC_MASK_INVALID 0xfff - -#define UFUNC_SHIFT_DIVIDEBYZERO 0 -#define UFUNC_SHIFT_OVERFLOW 3 -#define UFUNC_SHIFT_UNDERFLOW 6 -#define UFUNC_SHIFT_INVALID 9 - - -/* platform-dependent code translates floating point - status to an integer sum of these values -*/ -#define UFUNC_FPE_DIVIDEBYZERO 1 -#define UFUNC_FPE_OVERFLOW 2 -#define UFUNC_FPE_UNDERFLOW 4 -#define UFUNC_FPE_INVALID 8 - -/* Error mode that avoids look-up (no checking) */ -#define UFUNC_ERR_DEFAULT 0 - -#define UFUNC_OBJ_ISOBJECT 1 -#define UFUNC_OBJ_NEEDS_API 2 - - /* Default user error mode */ -#define UFUNC_ERR_DEFAULT2 \ - (UFUNC_ERR_WARN << UFUNC_SHIFT_DIVIDEBYZERO) + \ - (UFUNC_ERR_WARN << UFUNC_SHIFT_OVERFLOW) + \ - (UFUNC_ERR_WARN << UFUNC_SHIFT_INVALID) - -#if NPY_ALLOW_THREADS -#define NPY_LOOP_BEGIN_THREADS do {if (!(loop->obj & UFUNC_OBJ_NEEDS_API)) _save = PyEval_SaveThread();} while (0); -#define NPY_LOOP_END_THREADS do {if (!(loop->obj & UFUNC_OBJ_NEEDS_API)) PyEval_RestoreThread(_save);} while (0); -#else -#define NPY_LOOP_BEGIN_THREADS -#define NPY_LOOP_END_THREADS -#endif - -/* - * UFunc has unit of 1, and the order of operations can be reordered - * This case allows reduction with multiple axes at once. - */ -#define PyUFunc_One 1 -/* - * UFunc has unit of 0, and the order of operations can be reordered - * This case allows reduction with multiple axes at once. - */ -#define PyUFunc_Zero 0 -/* - * UFunc has no unit, and the order of operations cannot be reordered. - * This case does not allow reduction with multiple axes at once. - */ -#define PyUFunc_None -1 -/* - * UFunc has no unit, and the order of operations can be reordered - * This case allows reduction with multiple axes at once. - */ -#define PyUFunc_ReorderableNone -2 - -#define UFUNC_REDUCE 0 -#define UFUNC_ACCUMULATE 1 -#define UFUNC_REDUCEAT 2 -#define UFUNC_OUTER 3 - - -typedef struct { - int nin; - int nout; - PyObject *callable; -} PyUFunc_PyFuncData; - -/* A linked-list of function information for - user-defined 1-d loops. - */ -typedef struct _loop1d_info { - PyUFuncGenericFunction func; - void *data; - int *arg_types; - struct _loop1d_info *next; -} PyUFunc_Loop1d; - - -#include "__ufunc_api.h" - -#define UFUNC_PYVALS_NAME "UFUNC_PYVALS" - -#define UFUNC_CHECK_ERROR(arg) \ - do {if ((((arg)->obj & UFUNC_OBJ_NEEDS_API) && PyErr_Occurred()) || \ - ((arg)->errormask && \ - PyUFunc_checkfperr((arg)->errormask, \ - (arg)->errobj, \ - &(arg)->first))) \ - goto fail;} while (0) - -/* This code checks the IEEE status flags in a platform-dependent way */ -/* Adapted from Numarray */ - -#if (defined(__unix__) || defined(unix)) && !defined(USG) -#include -#endif - -/* OSF/Alpha (Tru64) ---------------------------------------------*/ -#if defined(__osf__) && defined(__alpha) - -#include - -#define UFUNC_CHECK_STATUS(ret) { \ - unsigned long fpstatus; \ - \ - fpstatus = ieee_get_fp_control(); \ - /* clear status bits as well as disable exception mode if on */ \ - ieee_set_fp_control( 0 ); \ - ret = ((IEEE_STATUS_DZE & fpstatus) ? UFUNC_FPE_DIVIDEBYZERO : 0) \ - | ((IEEE_STATUS_OVF & fpstatus) ? UFUNC_FPE_OVERFLOW : 0) \ - | ((IEEE_STATUS_UNF & fpstatus) ? UFUNC_FPE_UNDERFLOW : 0) \ - | ((IEEE_STATUS_INV & fpstatus) ? UFUNC_FPE_INVALID : 0); \ - } - -/* MS Windows -----------------------------------------------------*/ -#elif defined(_MSC_VER) - -#include - - /* Clear the floating point exception default of Borland C++ */ -#if defined(__BORLANDC__) -#define UFUNC_NOFPE _control87(MCW_EM, MCW_EM); -#endif - -#define UFUNC_CHECK_STATUS(ret) { \ - int fpstatus = (int) _clearfp(); \ - \ - ret = ((SW_ZERODIVIDE & fpstatus) ? UFUNC_FPE_DIVIDEBYZERO : 0) \ - | ((SW_OVERFLOW & fpstatus) ? UFUNC_FPE_OVERFLOW : 0) \ - | ((SW_UNDERFLOW & fpstatus) ? UFUNC_FPE_UNDERFLOW : 0) \ - | ((SW_INVALID & fpstatus) ? UFUNC_FPE_INVALID : 0); \ - } - -/* Solaris --------------------------------------------------------*/ -/* --------ignoring SunOS ieee_flags approach, someone else can -** deal with that! */ -#elif defined(sun) || defined(__BSD__) || defined(__OpenBSD__) || \ - (defined(__FreeBSD__) && (__FreeBSD_version < 502114)) || \ - defined(__NetBSD__) -#include - -#define UFUNC_CHECK_STATUS(ret) { \ - int fpstatus; \ - \ - fpstatus = (int) fpgetsticky(); \ - ret = ((FP_X_DZ & fpstatus) ? UFUNC_FPE_DIVIDEBYZERO : 0) \ - | ((FP_X_OFL & fpstatus) ? UFUNC_FPE_OVERFLOW : 0) \ - | ((FP_X_UFL & fpstatus) ? UFUNC_FPE_UNDERFLOW : 0) \ - | ((FP_X_INV & fpstatus) ? UFUNC_FPE_INVALID : 0); \ - (void) fpsetsticky(0); \ - } - -#elif defined(__GLIBC__) || defined(__APPLE__) || \ - defined(__CYGWIN__) || defined(__MINGW32__) || \ - (defined(__FreeBSD__) && (__FreeBSD_version >= 502114)) - -#if defined(__GLIBC__) || defined(__APPLE__) || \ - defined(__MINGW32__) || defined(__FreeBSD__) -#include -#endif - -#define UFUNC_CHECK_STATUS(ret) { \ - int fpstatus = (int) fetestexcept(FE_DIVBYZERO | FE_OVERFLOW | \ - FE_UNDERFLOW | FE_INVALID); \ - ret = ((FE_DIVBYZERO & fpstatus) ? UFUNC_FPE_DIVIDEBYZERO : 0) \ - | ((FE_OVERFLOW & fpstatus) ? UFUNC_FPE_OVERFLOW : 0) \ - | ((FE_UNDERFLOW & fpstatus) ? UFUNC_FPE_UNDERFLOW : 0) \ - | ((FE_INVALID & fpstatus) ? UFUNC_FPE_INVALID : 0); \ - (void) feclearexcept(FE_DIVBYZERO | FE_OVERFLOW | \ - FE_UNDERFLOW | FE_INVALID); \ -} - -#elif defined(_AIX) - -#include -#include - -#define UFUNC_CHECK_STATUS(ret) { \ - fpflag_t fpstatus; \ - \ - fpstatus = fp_read_flag(); \ - ret = ((FP_DIV_BY_ZERO & fpstatus) ? UFUNC_FPE_DIVIDEBYZERO : 0) \ - | ((FP_OVERFLOW & fpstatus) ? UFUNC_FPE_OVERFLOW : 0) \ - | ((FP_UNDERFLOW & fpstatus) ? UFUNC_FPE_UNDERFLOW : 0) \ - | ((FP_INVALID & fpstatus) ? UFUNC_FPE_INVALID : 0); \ - fp_swap_flag(0); \ -} - -#else - -#define NO_FLOATING_POINT_SUPPORT -#define UFUNC_CHECK_STATUS(ret) { \ - ret = 0; \ - } - -#endif - -/* - * THESE MACROS ARE DEPRECATED. - * Use npy_set_floatstatus_* in the npymath library. - */ -#define generate_divbyzero_error() npy_set_floatstatus_divbyzero() -#define generate_overflow_error() npy_set_floatstatus_overflow() - - /* Make sure it gets defined if it isn't already */ -#ifndef UFUNC_NOFPE -#define UFUNC_NOFPE -#endif - - -#ifdef __cplusplus -} -#endif -#endif /* !Py_UFUNCOBJECT_H */ diff --git a/include/numpy/utils.h b/include/numpy/utils.h deleted file mode 100644 index cc968a354..000000000 --- a/include/numpy/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __NUMPY_UTILS_HEADER__ -#define __NUMPY_UTILS_HEADER__ - -#ifndef __COMP_NPY_UNUSED - #if defined(__GNUC__) - #define __COMP_NPY_UNUSED __attribute__ ((__unused__)) - # elif defined(__ICC) - #define __COMP_NPY_UNUSED __attribute__ ((__unused__)) - #else - #define __COMP_NPY_UNUSED - #endif -#endif - -/* Use this to tag a variable as not used. It will remove unused variable - * warning on support platforms (see __COM_NPY_UNUSED) and mangle the variable - * to avoid accidental use */ -#define NPY_UNUSED(x) (__NPY_UNUSED_TAGGED ## x) __COMP_NPY_UNUSED - -#endif diff --git a/pyproject.toml b/pyproject.toml index c5cc5a06c..48e0e21c4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,5 +6,9 @@ requires = [ "preshed>=3.0.2,<3.1.0", "murmurhash>=0.28.0,<1.1.0", "thinc>=7.4.1,<7.5.0", + "numpy==1.15.0; python_version<='3.7'", + "numpy==1.17.3; python_version=='3.8'", + "numpy==1.19.3; python_version=='3.9'", + "numpy; python_version>='3.10'", ] build-backend = "setuptools.build_meta" diff --git a/setup.cfg b/setup.cfg index 8e40a7afd..4e8164d39 100644 --- a/setup.cfg +++ b/setup.cfg @@ -34,6 +34,7 @@ scripts = python_requires = >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.* setup_requires = cython>=0.25 + numpy>=1.15.0 # We also need our Cython packages here to compile against cymem>=2.0.2,<2.1.0 preshed>=3.0.2,<3.1.0 diff --git a/setup.py b/setup.py index f78781918..2327a0dea 100755 --- a/setup.py +++ b/setup.py @@ -5,6 +5,7 @@ import os import subprocess import sys import contextlib +import numpy from distutils.command.build_ext import build_ext from distutils.sysconfig import get_python_inc import distutils.util @@ -202,6 +203,7 @@ def setup_package(): exec(f.read(), about) include_dirs = [ + numpy.get_include(), get_python_inc(plat_specific=True), os.path.join(root, "include"), ] From 2af31a8c8dad61e1985949905e6419811dde22ac Mon Sep 17 00:00:00 2001 From: Sofie Van Landeghem Date: Mon, 23 Nov 2020 12:29:35 +0100 Subject: [PATCH 33/39] Bugfix textcat reproducibility on GPU (#6411) * add seed argument to ParametricAttention layer * bump thinc to 7.4.3 * set thinc version range Co-authored-by: Adriane Boyd --- spacy/_ml.py | 4 ++-- spacy/tests/regression/test_issue6177.py | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/spacy/_ml.py b/spacy/_ml.py index 3fc2c4718..711e27fca 100644 --- a/spacy/_ml.py +++ b/spacy/_ml.py @@ -646,7 +646,7 @@ def build_text_classifier(nr_class, width=64, **cfg): SpacyVectors >> flatten_add_lengths >> with_getitem(0, Affine(width, pretrained_dims)) - >> ParametricAttention(width) + >> ParametricAttention(width, seed=100) >> Pooling(sum_pool) >> Residual(ReLu(width, width)) ** 2 >> zero_init(Affine(nr_class, width, drop_factor=0.0)) @@ -688,7 +688,7 @@ def build_text_classifier(nr_class, width=64, **cfg): cnn_model = ( tok2vec >> flatten_add_lengths - >> ParametricAttention(width) + >> ParametricAttention(width, seed=99) >> Pooling(sum_pool) >> Residual(zero_init(Maxout(width, width))) >> zero_init(Affine(nr_class, width, drop_factor=0.0)) diff --git a/spacy/tests/regression/test_issue6177.py b/spacy/tests/regression/test_issue6177.py index c806011c3..cb33bc692 100644 --- a/spacy/tests/regression/test_issue6177.py +++ b/spacy/tests/regression/test_issue6177.py @@ -11,7 +11,6 @@ def test_issue6177(): # NOTE: no need to transform this code to v3 when 'master' is merged into 'develop'. # A similar test exists already for v3: test_issue5551 # This is just a backport - results = [] for i in range(3): fix_random_seed(0) @@ -24,12 +23,15 @@ def test_issue6177(): nlp.add_pipe(textcat) for label in set(example[1]["cats"]): textcat.add_label(label) - nlp.begin_training() + # Train + optimizer = nlp.begin_training() + text, annots = example + nlp.update([text], [annots], sgd=optimizer) # Store the result of each iteration - result = textcat.model.predict([nlp.make_doc(example[0])]) + result = textcat.model.predict([nlp.make_doc(text)]) results.append(list(result[0])) # All results should be the same because of the fixed seed assert len(results) == 3 assert results[0] == results[1] - assert results[0] == results[2] \ No newline at end of file + assert results[0] == results[2] From cd61d264ef4dbae642713169ade41404c24335df Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Mon, 23 Nov 2020 13:51:59 +0100 Subject: [PATCH 34/39] Set version to v2.3.3.dev0 --- spacy/about.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spacy/about.py b/spacy/about.py index 42c38cda5..efb8b56cd 100644 --- a/spacy/about.py +++ b/spacy/about.py @@ -1,6 +1,6 @@ # fmt: off __title__ = "spacy" -__version__ = "2.3.2" +__version__ = "2.3.3.dev0" __release__ = True __download_url__ = "https://github.com/explosion/spacy-models/releases/download" __compatibility__ = "https://raw.githubusercontent.com/explosion/spacy-models/master/compatibility.json" From ce18fc6588ff6f1a45e0e5aed4f1e23e2efa1bcb Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Tue, 24 Nov 2020 10:03:45 +0100 Subject: [PATCH 35/39] Set version to v2.3.3 --- spacy/about.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spacy/about.py b/spacy/about.py index efb8b56cd..c8e3a1cc8 100644 --- a/spacy/about.py +++ b/spacy/about.py @@ -1,6 +1,6 @@ # fmt: off __title__ = "spacy" -__version__ = "2.3.3.dev0" +__version__ = "2.3.3" __release__ = True __download_url__ = "https://github.com/explosion/spacy-models/releases/download" __compatibility__ = "https://raw.githubusercontent.com/explosion/spacy-models/master/compatibility.json" From 573f5c863fc075b698d2bedb63707050ca4e18b7 Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Tue, 24 Nov 2020 13:13:16 +0100 Subject: [PATCH 36/39] Fix tag map clobbering in spacy train (#6437) Fix bug from #5768 where the tag map is clobbered if a custom tag map isn't provided. --- spacy/cli/train.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/spacy/cli/train.py b/spacy/cli/train.py index 0a640d909..19880295a 100644 --- a/spacy/cli/train.py +++ b/spacy/cli/train.py @@ -137,9 +137,6 @@ def train( output_path.mkdir() msg.good("Created output directory: {}".format(output_path)) - tag_map = {} - if tag_map_path is not None: - tag_map = srsly.read_json(tag_map_path) # Take dropout and batch size as generators of values -- dropout # starts high and decays sharply, to force the optimizer to explore. # Batch size starts at 1 and grows, so that we make updates quickly @@ -250,8 +247,10 @@ def train( pipe_cfg = {} nlp.add_pipe(nlp.create_pipe(pipe, config=pipe_cfg)) - # Replace tag map with provided mapping - nlp.vocab.morphology.load_tag_map(tag_map) + if tag_map_path is not None: + tag_map = srsly.read_json(tag_map_path) + # Replace tag map with provided mapping + nlp.vocab.morphology.load_tag_map(tag_map) # Create empty extra lexeme tables so the data from spacy-lookups-data # isn't loaded if these features are accessed From afd744bc054a42bae3a16547e14386ce61068ed2 Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Tue, 24 Nov 2020 14:10:16 +0100 Subject: [PATCH 37/39] Update Travis CI pip install steps (#6440) --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index e3ce53024..7b6c4ffdd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,11 +8,11 @@ python: os: - linux install: - - "pip install -r requirements.txt" - - "python setup.py build_ext --inplace" - - "pip install -e ." + - "python -m pip install -U pip setuptools" + - "pip install -e . --prefer-binary" script: - "cat /proc/cpuinfo | grep flags | head -n 1" + - "pip install -r requirements.txt" - "python -m pytest --tb=native spacy" branches: except: From 992723dfacc19aaec9b53de1f7250569fe089065 Mon Sep 17 00:00:00 2001 From: Jacob Bortell Date: Tue, 24 Nov 2020 10:15:31 -0500 Subject: [PATCH 38/39] Add jabortell to the contributors (#6422) * Add jabortell to the contributors * Update jabortell.md Added tick to applicable statement --- .github/contributors/jabortell.md | 106 ++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 .github/contributors/jabortell.md diff --git a/.github/contributors/jabortell.md b/.github/contributors/jabortell.md new file mode 100644 index 000000000..4f878912f --- /dev/null +++ b/.github/contributors/jabortell.md @@ -0,0 +1,106 @@ +# spaCy contributor agreement + +This spaCy Contributor Agreement (**"SCA"**) is based on the +[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf). +The SCA applies to any contribution that you make to any product or project +managed by us (the **"project"**), and sets out the intellectual property rights +you grant to us in the contributed materials. The term **"us"** shall mean +[ExplosionAI GmbH](https://explosion.ai/legal). The term +**"you"** shall mean the person or entity identified below. + +If you agree to be bound by these terms, fill in the information requested +below and include the filled-in version with your first pull request, under the +folder [`.github/contributors/`](/.github/contributors/). The name of the file +should be your GitHub username, with the extension `.md`. For example, the user +example_user would create the file `.github/contributors/example_user.md`. + +Read this agreement carefully before signing. These terms and conditions +constitute a binding legal agreement. + +## Contributor Agreement + +1. The term "contribution" or "contributed materials" means any source code, +object code, patch, tool, sample, graphic, specification, manual, +documentation, or any other material posted or submitted by you to the project. + +2. With respect to any worldwide copyrights, or copyright applications and +registrations, in your contribution: + + * you hereby assign to us joint ownership, and to the extent that such + assignment is or becomes invalid, ineffective or unenforceable, you hereby + grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge, + royalty-free, unrestricted license to exercise all rights under those + copyrights. This includes, at our option, the right to sublicense these same + rights to third parties through multiple levels of sublicensees or other + licensing arrangements; + + * you agree that each of us can do all things in relation to your + contribution as if each of us were the sole owners, and if one of us makes + a derivative work of your contribution, the one who makes the derivative + work (or has it made will be the sole owner of that derivative work; + + * you agree that you will not assert any moral rights in your contribution + against us, our licensees or transferees; + + * you agree that we may register a copyright in your contribution and + exercise all ownership rights associated with it; and + + * you agree that neither of us has any duty to consult with, obtain the + consent of, pay or render an accounting to the other for any use or + distribution of your contribution. + +3. With respect to any patents you own, or that you can license without payment +to any third party, you hereby grant to us a perpetual, irrevocable, +non-exclusive, worldwide, no-charge, royalty-free license to: + + * make, have made, use, sell, offer to sell, import, and otherwise transfer + your contribution in whole or in part, alone or in combination with or + included in any product, work or materials arising out of the project to + which your contribution was submitted, and + + * at our option, to sublicense these same rights to third parties through + multiple levels of sublicensees or other licensing arrangements. + +4. Except as set out above, you keep all right, title, and interest in your +contribution. The rights that you grant to us under these terms are effective +on the date you first submitted a contribution to us, even if your submission +took place before the date you sign these terms. + +5. You covenant, represent, warrant and agree that: + + * Each contribution that you submit is and shall be an original work of + authorship and you can legally grant the rights set out in this SCA; + + * to the best of your knowledge, each contribution will not violate any + third party's copyrights, trademarks, patents, or other intellectual + property rights; and + + * each contribution shall be in compliance with U.S. export control laws and + other applicable export and import laws. You agree to notify us if you + become aware of any circumstance which would make any of the foregoing + representations inaccurate in any respect. We may publicly disclose your + participation in the project, including the fact that you have signed the SCA. + +6. This SCA is governed by the laws of the State of California and applicable +U.S. Federal law. Any choice of law rules will not apply. + +7. Please place an “x” on one of the applicable statement below. Please do NOT +mark both statements: + + * [x] I am signing on behalf of myself as an individual and no other person + or entity, including my employer, has or will have rights with respect to my + contributions. + + * [ ] I am signing on behalf of my employer or a legal entity and I have the + actual authority to contractually bind that entity. + +## Contributor Details + +| Field | Entry | +|------------------------------- | -------------------- | +| Name | Jacob Bortell | +| Company name (if applicable) | | +| Title or role (if applicable) | | +| Date | 2020-11-20 | +| GitHub username | jabortell | +| Website (optional) | | From fe9009911a07963e11b5469a17bcde5210fda207 Mon Sep 17 00:00:00 2001 From: Jacob Bortell Date: Tue, 24 Nov 2020 10:16:06 -0500 Subject: [PATCH 39/39] Update rule-based-matching.md (#6421) * Update rule-based-matching.md Clarified case-sensititivy of dictionary-referencing attributes (POS/TAG/DEP/etc). Clarified "Type" column header to "Value Type" * Update rule-based-matching.md Improved clarity of wording --- website/docs/usage/rule-based-matching.md | 28 +++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/website/docs/usage/rule-based-matching.md b/website/docs/usage/rule-based-matching.md index 7749dab59..7ad402df1 100644 --- a/website/docs/usage/rule-based-matching.md +++ b/website/docs/usage/rule-based-matching.md @@ -157,20 +157,20 @@ The available token pattern keys correspond to a number of [`Token` attributes](/api/token#attributes). The supported attributes for rule-based matching are: -| Attribute | Type |  Description | -| -------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------ | -| `ORTH` | unicode | The exact verbatim text of a token. | -| `TEXT` 2.1 | unicode | The exact verbatim text of a token. | -| `LOWER` | unicode | The lowercase form of the token text. | -|  `LENGTH` | int | The length of the token text. | -|  `IS_ALPHA`, `IS_ASCII`, `IS_DIGIT` | bool | Token text consists of alphabetic characters, ASCII characters, digits. | -|  `IS_LOWER`, `IS_UPPER`, `IS_TITLE` | bool | Token text is in lowercase, uppercase, titlecase. | -|  `IS_PUNCT`, `IS_SPACE`, `IS_STOP` | bool | Token is punctuation, whitespace, stop word. | -|  `IS_SENT_START` | bool | Token is start of sentence. | -|  `LIKE_NUM`, `LIKE_URL`, `LIKE_EMAIL` | bool | Token text resembles a number, URL, email. | -|  `POS`, `TAG`, `DEP`, `LEMMA`, `SHAPE` | unicode | The token's simple and extended part-of-speech tag, dependency label, lemma, shape. | -| `ENT_TYPE` | unicode | The token's entity label. | -| `_` 2.1 | dict | Properties in [custom extension attributes](/usage/processing-pipelines#custom-components-attributes). | +| Attribute | Value Type |  Description | +| -------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------ | +| `ORTH` | unicode | The exact verbatim text of a token. | +| `TEXT` 2.1 | unicode | The exact verbatim text of a token. | +| `LOWER` | unicode | The lowercase form of the token text. | +| `LENGTH` | int | The length of the token text. | +| `IS_ALPHA`, `IS_ASCII`, `IS_DIGIT` | bool | Token text consists of alphabetic characters, ASCII characters, digits. | +| `IS_LOWER`, `IS_UPPER`, `IS_TITLE` | bool | Token text is in lowercase, uppercase, titlecase. | +| `IS_PUNCT`, `IS_SPACE`, `IS_STOP` | bool | Token is punctuation, whitespace, stop word. | +| `IS_SENT_START` | bool | Token is start of sentence. | +| `LIKE_NUM`, `LIKE_URL`, `LIKE_EMAIL` | bool | Token text resembles a number, URL, email. | +| `POS`, `TAG`, `DEP`, `LEMMA`, `SHAPE` | unicode | The token's simple and extended part-of-speech tag, dependency label, lemma, shape. Note that the values of these attributes are case-sensitive. For a list of available part-of-speech tags and dependency labels, see the [Annotation Specifications](/api/annotation).| +| `ENT_TYPE` | unicode | The token's entity label. | +| `_` 2.1 | dict | Properties in [custom extension attributes](/usage/processing-pipelines#custom-components-attributes). |