Add helper support for spaCy upos and msd
Change-Id: Ieb41cb398426347f90294e615de7c47749511c45
diff --git a/dev/js/src/hint/foundries/spacy.js b/dev/js/src/hint/foundries/spacy.js
index 5eabc71..519d858 100644
--- a/dev/js/src/hint/foundries/spacy.js
+++ b/dev/js/src/hint/foundries/spacy.js
@@ -1,13 +1,45 @@
-define(["hint/foundries", "hint/foundries/upos"], function (ah, uposArray) {
+define(["hint/foundries", "hint/foundries/stts", "hint/foundries/upos", "hint/foundries/umorpho"], function (ah, sttsArray, uposArray, morpho) {
ah["-"].push(
- ["spaCy", "spacy/", "Lemma, Part-of-Speech"]
+ ["spaCy", "spacy/", "Lemma, Morphology, Part-of-Speech, UPOS"]
);
ah["spacy/"] = [
["Lemma", "l="],
- ["Part-of-Speech", "p="]
+ ["Morphology", "m="],
+ ["Part-of-Speech", "p="],
+ ["UPOS", "u="]
];
- ah["spacy/p="] = uposArray;
+ ah["spacy/p="] = sttsArray;
+ ah["spacy/u="] = uposArray;
+ // Use shared morphological features
+ ah["spacy/m="] = morpho.categories;
+
+ ah["spacy/m=abbr:"] = morpho.abbr;
+ ah["spacy/m=adptype:"] = morpho.adptype;
+ ah["spacy/m=animacy:"] = morpho.animacy;
+ ah["spacy/m=aspect:"] = morpho.aspect;
+ ah["spacy/m=case:"] = morpho.case;
+ ah["spacy/m=conjtype:"] = morpho.conjtype;
+ ah["spacy/m=definite:"] = morpho.definite;
+ ah["spacy/m=degree:"] = morpho.degree;
+ ah["spacy/m=foreign:"] = morpho.foreign;
+ ah["spacy/m=gender:"] = morpho.gender;
+ ah["spacy/m=hyph:"] = morpho.hyph;
+ ah["spacy/m=mood:"] = morpho.mood;
+ ah["spacy/m=number:"] = morpho.number;
+ ah["spacy/m=numtype:"] = morpho.numtype;
+ ah["spacy/m=parttype:"] = morpho.parttype;
+ ah["spacy/m=person:"] = morpho.person;
+ ah["spacy/m=polarity:"] = morpho.polarity;
+ ah["spacy/m=poss:"] = morpho.poss;
+ ah["spacy/m=prontype:"] = morpho.prontype;
+ ah["spacy/m=puncttype:"] = morpho.puncttype;
+ ah["spacy/m=reflex:"] = morpho.reflex;
+ ah["spacy/m=tense:"] = morpho.tense;
+ ah["spacy/m=typo:"] = morpho.typo;
+ ah["spacy/m=variant:"] = morpho.variant;
+ ah["spacy/m=verbform:"] = morpho.verbform;
+ ah["spacy/m=verbtype:"] = morpho.verbtype;
});
diff --git a/dev/js/src/hint/foundries/ud.js b/dev/js/src/hint/foundries/ud.js
index 13374ce..94ef868 100644
--- a/dev/js/src/hint/foundries/ud.js
+++ b/dev/js/src/hint/foundries/ud.js
@@ -1,4 +1,4 @@
-define(["hint/foundries", "hint/foundries/upos"], function (ah, uposArray) {
+define(["hint/foundries", "hint/foundries/upos", "hint/foundries/umorpho"], function (ah, uposArray, morpho) {
ah["-"].push(
["UDPipe", "ud/", "Morphology, Part-of-Speech"]
);
@@ -10,273 +10,33 @@
ah["ud/p="] = uposArray;
- ah["ud/m="] = [
- ["abbreviation","abbr:"],
- ["adposition type","adptype:"],
- ["animacy","animacy:"],
- ["aspect","aspect:"],
- ["case","case:"],
- ["conjunction type","conjtype:"],
- ["definiteness or state","definite:"],
- ["degree","degree:"],
- ["foreign word","foreign:"],
- ["gender","gender:"],
- ["hyphenated compound or part of it","hyph:"],
- ["mood","mood:"],
- ["number","number:"],
- ["numeral type","numtype:"],
- ["particle type","parttype:"],
- ["person","person:"],
- ["polarity","polarity:"],
- ["possessive","poss:"],
- ["pronominal type","prontype:"],
- ["punctuation type","puncttype:"],
- ["reflexive","reflex:"],
- ["tense","tense:"],
- ["misspelled word","typo:"],
- ["alternative form of word","variant:"],
- ["form of verb or deverbative","verbform:"],
- ["verb type","verbtype:"]
- ];
+ // Use shared morphological features
+ ah["ud/m="] = morpho.categories;
- ah["ud/m=abbr:"] = [
- ["yes","yes ","yes"]
- ];
-
- ah["ud/m=adptype:"] = [
- ["circ","circ ","circumposition"],
- ["post","post ","postposition"],
- ["prep","prep ","preposition"],
- ["voc","voc ","vocalized preposition"]
- ];
-
- ah["ud/m=animacy:"] = [
- ["anim","anim ","animate"],
- ["hum","hum ","human"],
- ["inan","inan ","inanimate"],
- ["nhum","nhum ","non-human"]
- ];
-
- ah["ud/m=aspect:"] = [
- ["hab","hab ","habitual"],
- ["imp","imp ","imperfect"],
- ["iter","iter ","iterative / frequentative"],
- ["perf","perf ","perfect"],
- ["prog","prog ","progressive"],
- ["prosp","prosp ","prospective"]
- ];
-
- ah["ud/m=case:"] = [
- ["abe","abe ","abessive / caritative / privative"],
- ["abl","abl ","ablative / adelative"],
- ["abs","abs ","absolutive"],
- ["acc","acc ","accusative / oblique"],
- ["add","add ","additive"],
- ["ade","ade ","adessive"],
- ["all","all ","allative / adlative"],
- ["ben","ben ","benefactive / destinative"],
- ["cau","cau ","causative / motivative / purposive"],
- ["cmp","cmp ","comparative"],
- ["cns","cns ","considerative"],
- ["com","com ","comitative / associative"],
- ["dat","dat ","dative"],
- ["del","del ","delative / superelative"],
- ["dis","dis ","distributive"],
- ["ela","ela ","elative / inelative"],
- ["equ","equ ","equative"],
- ["erg","erg ","ergative"],
- ["ess","ess ","essive / prolative"],
- ["gen","gen ","genitive"],
- ["ill","ill ","illative / inlative"],
- ["ine","ine ","inessive"],
- ["ins","ins ","instrumental / instructive"],
- ["lat","lat ","lative / directional allative"],
- ["loc","loc ","locative"],
- ["nom","nom ","nominative / direct"],
- ["par","par ","partitive"],
- ["per","per ","perlative"],
- ["sbe","sbe ","subelative"],
- ["sbl","sbl ","sublative"],
- ["spl","spl ","superlative"],
- ["sub","sub ","subessive"],
- ["sup","sup ","superessive"],
- ["tem","tem ","temporal"],
- ["ter","ter ","terminative / terminal allative"],
- ["tra","tra ","translative / factive"],
- ["voc","voc ","vocative"]
- ];
-
- ah["ud/m=conjtype:"] = [
- ["comp","comp ","comparing conjunction"],
- ["oper","oper ","mathematical operator"],
- ["pred","pred ","subordinating conjunction introducing a secondary predicate"]
- ];
-
- ah["ud/m=definite:"] = [
- ["com","com ","complex"],
- ["cons","cons ","construct state / reduced definiteness"],
- ["def","def ","definite"],
- ["ind","ind ","indefinite"],
- ["spec","spec ","specific indefinite"]
- ];
-
- ah["ud/m=degree:"] = [
- ["abs","abs ","absolute superlative"],
- ["aug","aug ","augmentative"],
- ["cmp","cmp ","comparative, second degree"],
- ["dim","dim ","diminutive"],
- ["equ","equ ","equative"],
- ["pos","pos ","positive, first degree"],
- ["sup","sup ","superlative, third degree"]
- ];
-
- ah["ud/m=foreign:"] = [
- ["yes","yes ","yes"]
- ];
-
- ah["ud/m=gender:"] = [
- ["com","com ","common"],
- ["fem","fem ","feminine",],
- ["masc","masc ","masculine"],
- ["neut","neut ","neuter"]
- ];
-
- ah["ud/m=hyph:"] = [
- ["yes","yes ","yes"]
- ];
-
- ah["ud/m=mood:"] = [
- ["adm","adm ","admirative"],
- ["cnd","cnd ","conditional"],
- ["des","des ","desiderative"],
- ["imp","imp ","imperative"],
- ["ind","ind ","indicative or realis"],
- ["int","int ","interrogative"],
- ["irr","irr ","irrealis"],
- ["jus","jus ","jussive / injunctive"],
- ["nec","nec ","necessitative"],
- ["opt","opt ","optative"],
- ["pot","pot ","potential"],
- ["prp","prp ","purposive"],
- ["qot","qot ","quotative"],
- ["sub","sub ","subjunctive / conjunctive"]
- ];
-
- ah["ud/m=number:"] = [
- ["coll","coll ","collective / mass / singulare tantum"],
- ["count","count ","count plural"],
- ["dual","dual ","dual"],
- ["grpa","grpa ","greater paucal"],
- ["grpl","grpl ","greater plural"],
- ["inv","inv ","inverse"],
- ["pauc","pauc ","paucal"],
- ["plur","plur ","plural"],
- ["ptan","ptan ","plurale tantum"],
- ["sing","sing ","singular"],
- ["tri","tri ","trial"]
- ];
-
- ah["ud/m=numtype:"] = [
- ["card","card ","cardinal number or corresponding interrogative / relative / indefinite / demonstrative word"],
- ["dist","dist ","distributive numeral"],
- ["frac","frac ","fraction"],
- ["mult","mult ","multiplicative numeral or corresponding interrogative / relative / indefinite / demonstrative word"],
- ["ord","ord ","ordinal number or corresponding interrogative / relative / indefinite / demonstrative word"],
- ["range","range ","range of values"],
- ["sets","sets ","number of sets of things; collective numeral"]
- ];
-
- ah["ud/m=parttype:"] = [
- ["emp","emp ","particle of emphasis"],
- ["inf","inf ","infinitive marker"],
- ["int","int ","question particle"],
- ["mod","mod ","modal particle"],
- ["neg","neg ","negation particle"],
- ["res","res ","response particle"],
- ["vbp","vbp ","separated verb prefix in german"]
- ];
-
- ah["ud/m=person:"] = [
- ["0","0 ","zero person"],
- ["1","1 ","first person"],
- ["2","2 ","second person"],
- ["3","3 ","third person"],
- ["4","4 ","fourth person"]
- ];
-
- ah["ud/m=polarity:"] = [
- ["neg","neg ","negative"],
- ["pos","pos ","positive, affirmative"]
- ];
-
- ah["ud/m=poss:"] = [
- ["yes","yes ","yes"]
- ];
-
- ah["ud/m=prontype:"] = [
- ["art","art ","article"],
- ["dem","dem ","demonstrative pronoun, determiner, numeral or adverb"],
- ["emp","emp ","emphatic determiner"],
- ["exc","exc ","exclamative determiner"],
- ["ind","ind ","indefinite pronoun, determiner, numeral or adverb"],
- ["int","int ","interrogative pronoun, determiner, numeral or adverb"],
- ["neg","neg ","negative pronoun, determiner or adverb"],
- ["prs","prs ","personal or possessive personal pronoun or determiner"],
- ["rcp","rcp ","reciprocal pronoun"],
- ["rel","rel ","relative pronoun, determiner, numeral or adverb"],
- ["tot","tot ","total (collective) pronoun, determiner or adverb"]
- ];
-
- ah["ud/m=puncttype:"] = [
- ["brck","brck ","bracket"],
- ["colo","colo ","colon"],
- ["comm","comm ","comma"],
- ["dash","dash ","dash, hyphen"],
- ["elip","elip ","ellipsis"],
- ["excl","excl ","exclamation mark"],
- ["peri","peri ","period at the end of sentence or clause"],
- ["qest","qest ","question mark"],
- ["quot","quot ","quotation marks"],
- ["semi","semi ","semicolon"],
- ["slsh","slsh ","slash or backslash"]
- ];
-
- ah["ud/m=reflex:"] = [
- ["yes","yes ","yes"]
- ];
-
- ah["ud/m=tense:"] = [
- ["fut","fut ","future tense"],
- ["imp","imp ","imperfect"],
- ["past","past ","past tense / preterite / aorist"],
- ["pqp","pqp ","pluperfect"],
- ["pres","pres ","present / non-past tense / aorist"]
- ];
-
- ah["ud/m=typo:"] = [
- ["yes","yes ","yes"]
- ];
-
- ah["ud/m=variant:"] = [
- ["short","short ","short form of adjectives"]
- ];
-
- ah["ud/m=verbform:"] = [
- ["conv","conv ","converb, transgressive, adverbial participle, verbal adverb"],
- ["fin","fin ","finite verb"],
- ["gdv","gdv ","gerundive"],
- ["ger","ger ","gerund"],
- ["inf","inf ","infinitive"],
- ["part","part ","participle, verbal adjective"],
- ["sup","sup ","supine"],
- ["vnoun","vnoun ","verbal noun, masdar"]
- ];
-
- ah["ud/m=verbtype:"] = [
- ["aux","aux ","auxiliary verb"],
- ["cop","cop ","copula verb"],
- ["light","light ","light (support) verb"],
- ["mod","mod ","modal verb"],
- ["quasi","quasi ","quasi-verb"]
- ];
+ ah["ud/m=abbr:"] = morpho.abbr;
+ ah["ud/m=adptype:"] = morpho.adptype;
+ ah["ud/m=animacy:"] = morpho.animacy;
+ ah["ud/m=aspect:"] = morpho.aspect;
+ ah["ud/m=case:"] = morpho.case;
+ ah["ud/m=conjtype:"] = morpho.conjtype;
+ ah["ud/m=definite:"] = morpho.definite;
+ ah["ud/m=degree:"] = morpho.degree;
+ ah["ud/m=foreign:"] = morpho.foreign;
+ ah["ud/m=gender:"] = morpho.gender;
+ ah["ud/m=hyph:"] = morpho.hyph;
+ ah["ud/m=mood:"] = morpho.mood;
+ ah["ud/m=number:"] = morpho.number;
+ ah["ud/m=numtype:"] = morpho.numtype;
+ ah["ud/m=parttype:"] = morpho.parttype;
+ ah["ud/m=person:"] = morpho.person;
+ ah["ud/m=polarity:"] = morpho.polarity;
+ ah["ud/m=poss:"] = morpho.poss;
+ ah["ud/m=prontype:"] = morpho.prontype;
+ ah["ud/m=puncttype:"] = morpho.puncttype;
+ ah["ud/m=reflex:"] = morpho.reflex;
+ ah["ud/m=tense:"] = morpho.tense;
+ ah["ud/m=typo:"] = morpho.typo;
+ ah["ud/m=variant:"] = morpho.variant;
+ ah["ud/m=verbform:"] = morpho.verbform;
+ ah["ud/m=verbtype:"] = morpho.verbtype;
});
diff --git a/dev/js/src/hint/foundries/umorpho.js b/dev/js/src/hint/foundries/umorpho.js
new file mode 100644
index 0000000..53ea777
--- /dev/null
+++ b/dev/js/src/hint/foundries/umorpho.js
@@ -0,0 +1,280 @@
+/**
+ * Shared morphological features configuration
+ * Based on Universal Dependencies morphological features
+ * Can be reused across different foundries (ud, spacy, etc.)
+ */
+define(function () {
+ return {
+ // Main morphological feature categories
+ categories: [
+ ["abbr","abbr:","abbreviation"],
+ ["adptype","adptype:","adposition type"],
+ ["animacy","animacy:","animacy"],
+ ["aspect","aspect:","aspect"],
+ ["case","case:","case"],
+ ["conjtype","conjtype:","conjunction type"],
+ ["definite","definite:","definiteness or state"],
+ ["degree","degree:","degree"],
+ ["foreign","foreign:","foreign word"],
+ ["gender","gender:","gender"],
+ ["hyph","hyph:","hyphenated compound or part of it"],
+ ["mood","mood:","mood"],
+ ["number","number:","number"],
+ ["numtype","numtype:","numeral type"],
+ ["parttype","parttype:","particle type"],
+ ["person","person:","person"],
+ ["polarity","polarity:","polarity"],
+ ["poss","poss:","possessive"],
+ ["prontype","prontype:","pronominal type"],
+ ["puncttype","puncttype:","punctuation type"],
+ ["reflex","reflex:","reflexive"],
+ ["tense","tense:","tense"],
+ ["typo","typo:","misspelled word"],
+ ["variant","variant:","alternative form of word"],
+ ["verbform","verbform:","form of verb or deverbative"],
+ ["verbtype","verbtype:","verb type"]
+ ],
+
+ // Feature values for each category
+ abbr: [
+ ["yes","yes ","yes"]
+ ],
+
+ adptype: [
+ ["circ","circ ","circumposition"],
+ ["post","post ","postposition"],
+ ["prep","prep ","preposition"],
+ ["voc","voc ","vocalized preposition"]
+ ],
+
+ animacy: [
+ ["anim","anim ","animate"],
+ ["hum","hum ","human"],
+ ["inan","inan ","inanimate"],
+ ["nhum","nhum ","non-human"]
+ ],
+
+ aspect: [
+ ["hab","hab ","habitual"],
+ ["imp","imp ","imperfect"],
+ ["iter","iter ","iterative / frequentative"],
+ ["perf","perf ","perfect"],
+ ["prog","prog ","progressive"],
+ ["prosp","prosp ","prospective"]
+ ],
+
+ "case": [
+ ["abe","abe ","abessive / caritative / privative"],
+ ["abl","abl ","ablative / adelative"],
+ ["abs","abs ","absolutive"],
+ ["acc","acc ","accusative / oblique"],
+ ["add","add ","additive"],
+ ["ade","ade ","adessive"],
+ ["all","all ","allative / adlative"],
+ ["ben","ben ","benefactive / destinative"],
+ ["cau","cau ","causative / motivative / purposive"],
+ ["cmp","cmp ","comparative"],
+ ["cns","cns ","considerative"],
+ ["com","com ","comitative / associative"],
+ ["dat","dat ","dative"],
+ ["del","del ","delative / superelative"],
+ ["dis","dis ","distributive"],
+ ["ela","ela ","elative / inelative"],
+ ["equ","equ ","equative"],
+ ["erg","erg ","ergative"],
+ ["ess","ess ","essive / prolative"],
+ ["gen","gen ","genitive"],
+ ["ill","ill ","illative / inlative"],
+ ["ine","ine ","inessive"],
+ ["ins","ins ","instrumental / instructive"],
+ ["lat","lat ","lative / directional allative"],
+ ["loc","loc ","locative"],
+ ["nom","nom ","nominative / direct"],
+ ["par","par ","partitive"],
+ ["per","per ","perlative"],
+ ["sbe","sbe ","subelative"],
+ ["sbl","sbl ","sublative"],
+ ["spl","spl ","superlative"],
+ ["sub","sub ","subessive"],
+ ["sup","sup ","superessive"],
+ ["tem","tem ","temporal"],
+ ["ter","ter ","terminative / terminal allative"],
+ ["tra","tra ","translative / factive"],
+ ["voc","voc ","vocative"]
+ ],
+
+ conjtype: [
+ ["comp","comp ","comparing conjunction"],
+ ["oper","oper ","mathematical operator"],
+ ["pred","pred ","subordinating conjunction introducing a secondary predicate"]
+ ],
+
+ definite: [
+ ["com","com ","complex"],
+ ["cons","cons ","construct state / reduced definiteness"],
+ ["def","def ","definite"],
+ ["ind","ind ","indefinite"],
+ ["spec","spec ","specific indefinite"]
+ ],
+
+ degree: [
+ ["abs","abs ","absolute superlative"],
+ ["aug","aug ","augmentative"],
+ ["cmp","cmp ","comparative, second degree"],
+ ["dim","dim ","diminutive"],
+ ["equ","equ ","equative"],
+ ["pos","pos ","positive, first degree"],
+ ["sup","sup ","superlative, third degree"]
+ ],
+
+ foreign: [
+ ["yes","yes ","yes"]
+ ],
+
+ gender: [
+ ["com","com ","common"],
+ ["fem","fem ","feminine",],
+ ["masc","masc ","masculine"],
+ ["neut","neut ","neuter"]
+ ],
+
+ hyph: [
+ ["yes","yes ","yes"]
+ ],
+
+ mood: [
+ ["adm","adm ","admirative"],
+ ["cnd","cnd ","conditional"],
+ ["des","des ","desiderative"],
+ ["imp","imp ","imperative"],
+ ["ind","ind ","indicative or realis"],
+ ["int","int ","interrogative"],
+ ["irr","irr ","irrealis"],
+ ["jus","jus ","jussive / injunctive"],
+ ["nec","nec ","necessitative"],
+ ["opt","opt ","optative"],
+ ["pot","pot ","potential"],
+ ["prp","prp ","purposive"],
+ ["qot","qot ","quotative"],
+ ["sub","sub ","subjunctive / conjunctive"]
+ ],
+
+ number: [
+ ["coll","coll ","collective / mass / singulare tantum"],
+ ["count","count ","count plural"],
+ ["dual","dual ","dual"],
+ ["grpa","grpa ","greater paucal"],
+ ["grpl","grpl ","greater plural"],
+ ["inv","inv ","inverse"],
+ ["pauc","pauc ","paucal"],
+ ["plur","plur ","plural"],
+ ["ptan","ptan ","plurale tantum"],
+ ["sing","sing ","singular"],
+ ["tri","tri ","trial"]
+ ],
+
+ numtype: [
+ ["card","card ","cardinal number or corresponding interrogative / relative / indefinite / demonstrative word"],
+ ["dist","dist ","distributive numeral"],
+ ["frac","frac ","fraction"],
+ ["mult","mult ","multiplicative numeral or corresponding interrogative / relative / indefinite / demonstrative word"],
+ ["ord","ord ","ordinal number or corresponding interrogative / relative / indefinite / demonstrative word"],
+ ["range","range ","range of values"],
+ ["sets","sets ","number of sets of things; collective numeral"]
+ ],
+
+ parttype: [
+ ["emp","emp ","particle of emphasis"],
+ ["inf","inf ","infinitive marker"],
+ ["int","int ","question particle"],
+ ["mod","mod ","modal particle"],
+ ["neg","neg ","negation particle"],
+ ["res","res ","response particle"],
+ ["vbp","vbp ","separated verb prefix in german"]
+ ],
+
+ person: [
+ ["0","0 ","zero person"],
+ ["1","1 ","first person"],
+ ["2","2 ","second person"],
+ ["3","3 ","third person"],
+ ["4","4 ","fourth person"]
+ ],
+
+ polarity: [
+ ["neg","neg ","negative"],
+ ["pos","pos ","positive, affirmative"]
+ ],
+
+ poss: [
+ ["yes","yes ","yes"]
+ ],
+
+ prontype: [
+ ["art","art ","article"],
+ ["dem","dem ","demonstrative pronoun, determiner, numeral or adverb"],
+ ["emp","emp ","emphatic determiner"],
+ ["exc","exc ","exclamative determiner"],
+ ["ind","ind ","indefinite pronoun, determiner, numeral or adverb"],
+ ["int","int ","interrogative pronoun, determiner, numeral or adverb"],
+ ["neg","neg ","negative pronoun, determiner or adverb"],
+ ["prs","prs ","personal or possessive personal pronoun or determiner"],
+ ["rcp","rcp ","reciprocal pronoun"],
+ ["rel","rel ","relative pronoun, determiner, numeral or adverb"],
+ ["tot","tot ","total (collective) pronoun, determiner or adverb"]
+ ],
+
+ puncttype: [
+ ["brck","brck ","bracket"],
+ ["colo","colo ","colon"],
+ ["comm","comm ","comma"],
+ ["dash","dash ","dash, hyphen"],
+ ["elip","elip ","ellipsis"],
+ ["excl","excl ","exclamation mark"],
+ ["peri","peri ","period at the end of sentence or clause"],
+ ["qest","qest ","question mark"],
+ ["quot","quot ","quotation marks"],
+ ["semi","semi ","semicolon"],
+ ["slsh","slsh ","slash or backslash"]
+ ],
+
+ reflex: [
+ ["yes","yes ","yes"]
+ ],
+
+ tense: [
+ ["fut","fut ","future tense"],
+ ["imp","imp ","imperfect"],
+ ["past","past ","past tense / preterite / aorist"],
+ ["pqp","pqp ","pluperfect"],
+ ["pres","pres ","present / non-past tense / aorist"]
+ ],
+
+ typo: [
+ ["yes","yes ","yes"]
+ ],
+
+ variant: [
+ ["short","short ","short form of adjectives"]
+ ],
+
+ verbform: [
+ ["conv","conv ","converb, transgressive, adverbial participle, verbal adverb"],
+ ["fin","fin ","finite verb"],
+ ["gdv","gdv ","gerundive"],
+ ["ger","ger ","gerund"],
+ ["inf","inf ","infinitive"],
+ ["part","part ","participle, verbal adjective"],
+ ["sup","sup ","supine"],
+ ["vnoun","vnoun ","verbal noun, masdar"]
+ ],
+
+ verbtype: [
+ ["aux","aux ","auxiliary verb"],
+ ["cop","cop ","copula verb"],
+ ["light","light ","light (support) verb"],
+ ["mod","mod ","modal verb"],
+ ["quasi","quasi ","quasi-verb"]
+ ]
+ };
+});