Socket
Socket
Sign inDemoInstall

compromise

Package Overview
Dependencies
Maintainers
3
Versions
169
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

compromise - npm Package Compare versions

Comparing version 14.0.0 to 14.1.0

src/2-two/preTagger/model/lexicon/emoticons.js

8

changelog.md

@@ -15,3 +15,9 @@ compromise uses semver, and pushes to npm frequently

### 14.0.0   :postal_horn: [March 2022]
#### 14.1.0 [March 2021]
- **[fix]** - client-side export format for plugins
- **[new]** - more adjective transformation methods
- **[new]** - emoji + emoticon tagger
- **[new]** - case-sensitive match option - `{caseSensitive:true}`
### 🚨 14.0.0 🚨   [March 2022]
Major release - see [Release Notes](https://github.com/spencermountain/compromise/releases/tag/14.0.0) for full details

@@ -18,0 +24,0 @@

8

package.json

@@ -5,3 +5,3 @@ {

"description": "modest natural language processing",
"version": "14.0.0",
"version": "14.1.0",
"main": "./src/index.js",

@@ -100,6 +100,6 @@ "unpkg": "./builds/compromise.js",

"@rollup/plugin-alias": "3.1.9",
"@rollup/plugin-node-resolve": "13.1.3",
"@rollup/plugin-node-resolve": "13.2.0",
"amble": "1.3.0",
"codecov": "3.8.3",
"eslint": "8.11.0",
"eslint": "8.13.0",
"eslint-plugin-regexp": "1.6.0",

@@ -112,3 +112,3 @@ "nlp-corpus": "^4.2.0",

"tap-dancer": "0.3.4",
"tape": "5.5.2"
"tape": "5.5.3"
},

@@ -115,0 +115,0 @@ "eslintIgnore": [

@@ -284,3 +284,3 @@ <div align="center">

<a href="https://observablehq.com/@spencermountain/compromise-performance">
<img width="600" src="https://user-images.githubusercontent.com/399657/68234798-0abdc480-ffd0-11e9-9ac5-8875d185a631.png"/>
<img width="600" src="https://user-images.githubusercontent.com/399657/159795115-ed62440a-be41-424c-baa4-8dd15c48377d.png"/>
</a>

@@ -347,3 +347,3 @@ </div>

<div align="right">
You can also paralellize, or stream text to it with <a href="https://github.com/spencermountain/compromise/tree/master/plugins/speed">compromise-speed</a>.
You can also parallelize, or stream text to it with <a href="https://github.com/spencermountain/compromise/tree/master/plugins/speed">compromise-speed</a>.
</div>

@@ -521,3 +521,3 @@

- **[.lookup([])](https://observablehq.com/@spencermountain/compromise-match)** - quick find for an array of string matches
- **[.autofill()](https://observablehq.com/@spencermountain/compromise-typeahead)** - create type-ahead assumptions on the document
- **[.autoFill()](https://observablehq.com/@spencermountain/compromise-typeahead)** - create type-ahead assumptions on the document

@@ -688,2 +688,11 @@ ##### Tag

##### Adjectives
- **[.adjectives()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'quick'`
- **[.adjectives().json()](https://observablehq.com/@spencermountain/compromise-selections)** - get adjective metadata
- **[.adjectives().adverbs()](https://observablehq.com/@spencermountain/compromise-selections)** - get adverbs describing this adjective
- **[.adjectives().toComparative()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quicker'
- **[.adjectives().toSuperlative()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quickest'
- **[.adjectives().toAdverb()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quickly'
- **[.adjectives().toNoun()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quickness'
##### Misc selections

@@ -711,4 +720,2 @@

- **[.topics()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - `people()` + `places()` + `organizations()`
- **[.adjectives()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'quickly'`
- **[.adjectives().json()](https://observablehq.com/@spencermountain/compromise-selections)** - get adjective metadata
- **[.adverbs()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'quickly'`

@@ -825,3 +832,3 @@ - **[.adverbs().json()](https://observablehq.com/@spencermountain/compromise-selections)** - get adverb metadata

| [World data](https://observablehq.com/@spencermountain/compromise-world) | [Normalization](https://observablehq.com/@spencermountain/compromise-normalization) | |
| [Fuzzy-matching](https://observablehq.com/@spencermountain/compromise-fuzzy-matching) | [Typescript](https://observablehq.com/@spencermountain/compromise-typescript) | |
| [Fuzzy-matching](https://observablehq.com/@spencermountain/compromise-fuzzy-matching) | [Typescript](https://observablehq.com/@spencermountain/compromise-typescript) | [Mutation](https://observablehq.com/@spencermountain/compromise-mutation) |

@@ -828,0 +835,0 @@

@@ -1,1 +0,1 @@

export default '14.0.0'
export default '14.1.0'

@@ -18,2 +18,4 @@ export default [

{ word: 'gotta', out: ['have', 'got', 'to'] }, //hmm
{ word: 'gimme', out: ['give', 'me'] },
{ word: 'tryna', out: ['trying', 'to'] },
{ word: 'gtg', out: ['got', 'to', 'go'] },

@@ -28,2 +30,4 @@ { word: 'im', out: ['i', 'am'] },

{ word: 'wanna', out: ['want', 'to'] },
{ word: `c'mere`, out: ['come', 'here'] },
{ word: `c'mon`, out: ['come', 'on'] },
// apostrophe d

@@ -36,8 +40,7 @@ { word: 'howd', out: ['how', 'did'] },

// { after: `cause`, out: ['because'] },
{ word: "'tis", out: ['it', 'is'] },
{ word: "'twas", out: ['it', 'was'] },
{ word: 'twas', out: ['it', 'was'] },
{ word: 'y\'know', out: ['you', 'know'] },
{ word: "tis", out: ['it', 'is'] },
{ word: "twas", out: ['it', 'was'] },
{ word: `y'know`, out: ['you', 'know'] },
{ word: "ne'er", out: ['never'] },
{ word: "o'er ", out: ['over'] },
{ word: "o'er", out: ['over'] },
// contraction-part mappings

@@ -55,8 +58,2 @@ { after: 'll', out: ['will'] },

{ before: 't', out: ['tu'] }, // t'aime
// more-complex ones
// { after: 's', out: apostropheS }, //spencer's
// { after: 'd', out: apostropheD }, //i'd
// { after: 't', out: apostropheT }, //isn't
// { before: 'l', out: preL }, // l'amour
// { before: 'd', out: preD }, // d'amerique
]
const before = function (regs, group) {
const before = function (regs, group, opts) {
const { indexN } = this.methods.one.pointer

@@ -17,6 +17,6 @@ let pre = []

}
return preWords.match(regs, group)
return preWords.match(regs, group, opts)
}
const after = function (regs, group) {
const after = function (regs, group, opts) {
const { indexN } = this.methods.one.pointer

@@ -38,3 +38,3 @@ let post = []

}
return postWords.match(regs, group)
return postWords.match(regs, group, opts)
}

@@ -72,6 +72,6 @@

const grow = function (regs, group) {
return this.growRight(regs, group).growLeft(regs, group)
const grow = function (regs, group, opts) {
return this.growRight(regs, group, opts).growLeft(regs, group, opts)
}
export default { before, after, growLeft, growRight, grow }

@@ -10,2 +10,5 @@ const combine = function (left, right) {

}
if (!m) {
return view.none()
}
return m

@@ -12,0 +15,0 @@ }

@@ -5,3 +5,3 @@ import { greedyTo, doOrBlock, getGroup, doAndBlock, isEndGreedy, getGreedy } from './03-match-logic.js'

// const log = msg => {
// const env = typeof process === 'undefined' ? self.env || {} : process.env
// const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env
// if (env.DEBUG_MATCH === true) {

@@ -8,0 +8,0 @@ // console.log(`\n \x1b[32m ${msg} \x1b[0m`) // eslint-disable-line

import doesMatch from './04-doesMatch.js'
const env = typeof process === 'undefined' ? self.env || {} : process.env
const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env
const log = msg => {

@@ -5,0 +5,0 @@ if (env.DEBUG_MATCH) {

@@ -22,2 +22,6 @@ import fuzzy from './_fuzzy.js'

if (reg.word !== undefined) {
// check case-sensitivity, etc
if (reg.use) {
return reg.word === term[reg.use]
}
//match contractions, machine-form

@@ -68,3 +72,7 @@ if (term.machine !== null && term.machine === reg.word) {

if (reg.regex !== undefined) {
return reg.regex.test(term.normal)
let str = term.normal
if (reg.use) {
str = term[reg.use]
}
return reg.regex.test(str)
}

@@ -71,0 +79,0 @@ //support <chunk>

@@ -131,2 +131,5 @@ const hasMinMax = /\{([0-9]+)(, *[0-9]*)?\}/

w = stripBoth(w)
if (opts.caseSensitive) {
obj.use = 'text'
}
obj.regex = new RegExp(w) //potential vuln - security/detect-non-literal-regexp

@@ -207,3 +210,8 @@ return obj

w = w.replace('\\.', '.')
obj.word = w.toLowerCase()
if (opts.caseSensitive) {
obj.use = 'text'
} else {
w = w.toLowerCase()
}
obj.word = w
}

@@ -210,0 +218,0 @@ return obj

@@ -43,2 +43,3 @@ // these methods are called with '@hasComma' in the match syntax

isTitleCase: term => /^[A-Z][a-z'\u00C0-\u00FF]/.test(term.text), //|| /^[A-Z]$/.test(term.text)
isUpperCase: term => /^[A-Z]+$/.test(term.text),
}

@@ -45,0 +46,0 @@ // aliases

@@ -11,3 +11,3 @@ const trimEnd = /[,:;)\]*.?~!\u0022\uFF02\u201D\u2019\u00BB\u203A\u2032\u2033\u2034\u301E\u00B4—-]+$/

let txt = ''
terms.forEach(t => {
terms.forEach((t, i) => {
let pre = t.pre || ''

@@ -28,2 +28,6 @@ let post = t.post || ''

post = post.replace(/\.{2,}/, '')
// kill abbreviation periods
if (t.tags.has('Abbreviation') && terms[i + 1]) {
post = post.replace(/\./, '')
}
}

@@ -69,2 +73,5 @@ if (opts.whitespace === 'some') {

let text = ''
if (!docs || !docs[0] || !docs[0][0]) {
return text
}
for (let i = 0; i < docs.length; i += 1) {

@@ -78,4 +85,10 @@ // middle

if (opts.keepPunct === false) {
text = text.replace(trimStart, '')
text = text.replace(trimEnd, '')
// don't remove ':)' etc
if (!docs[0][0].tags.has('Emoticon')) {
text = text.replace(trimStart, '')
}
let last = docs[docs.length - 1]
if (!last[last.length - 1].tags.has('Emoticon')) {
text = text.replace(trimEnd, '')
}
}

@@ -82,0 +95,0 @@ if (opts.cleanWhitespace === true) {

@@ -86,3 +86,3 @@ const isMulti = / /

// some logging for debugging
let env = typeof process === 'undefined' ? self.env || {} : process.env
const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env
if (env && env.DEBUG_TAGS) {

@@ -89,0 +89,0 @@ log(terms[0], tag, reason)

@@ -5,3 +5,5 @@ const aliases = {

'%': 'percent',
'plz': 'please',
'bein': 'being',
}
export default aliases

@@ -10,3 +10,3 @@ import logger from './_logger.js'

// some logging for debugging
let env = typeof process === 'undefined' ? self.env || {} : process.env
const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env
if (env.DEBUG_TAGS) {

@@ -13,0 +13,0 @@ console.log(`\n \x1b[32m→ ${list.length} corrections:\x1b[0m`) //eslint-disable-line

@@ -16,3 +16,3 @@ // order matters

// well..
{ match: '^(well|so|okay)', tag: 'Expression', reason: 'well-' },
{ match: '^(well|so|okay|now)', tag: 'Expression', reason: 'well-' },
// some sort of

@@ -19,0 +19,0 @@ { match: 'some sort of', tag: 'Adjective Noun Conjunction', reason: 'some-sort-of' },

@@ -7,3 +7,3 @@ export default [

//his fine
{ match: '(his|its) [#Adjective]', group: 0, tag: 'Noun', reason: 'his-fine' },
{ match: '(his|its) [%Adj|Noun%]', group: 0, tag: 'Noun', reason: 'his-fine' },
//is all

@@ -10,0 +10,0 @@ { match: '#Copula #Adverb? [all]', group: 0, tag: 'Noun', reason: 'is-all' },

@@ -27,5 +27,12 @@ export default [

{ match: '@hasComma [which] (#Pronoun|#Verb)', group: 0, tag: 'Preposition', reason: 'which-copula' },
{ match: '#Copula just [like]', group: 0, tag: 'Preposition', reason: 'like-preposition' },
//folks like her
{ match: '#Noun [like] #Noun', group: 0, tag: 'Preposition', reason: 'noun-like' },
//like the time
{ match: '^[like] #Determiner', group: 0, tag: 'Preposition', reason: 'like-the' },
// really like
{ match: '#Adverb [like]', group: 0, tag: 'Verb', reason: 'really-like' },
// nothing like
{ match: '(not|nothing|never) [like]', group: 0, tag: 'Preposition', reason: 'nothing-like' },
// treat them like
{ match: '#Verb #Pronoun [like]', group: 0, tag: 'Preposition', reason: 'treat-them-like' },

@@ -32,0 +39,0 @@

@@ -71,17 +71,5 @@ export default [

// john keith jones
{
match: '#Person [#ProperNoun #ProperNoun]',
group: 0,
tag: 'Person',
reason: 'three-name-person',
safe: true,
},
{ match: '#Person [#ProperNoun #ProperNoun]', group: 0, tag: 'Person', ifNo: '#Possessive', reason: 'three-name-person', safe: true },
//John Foo
{
match: '#FirstName #Acronym? [#ProperNoun]',
group: 0,
tag: 'LastName',
reason: 'firstname-titlecase',
// safe: true,
},
{ match: '#FirstName #Acronym? [#ProperNoun]', group: 0, tag: 'LastName', ifNo: '#Possessive', reason: 'firstname-titlecase' },
// john stewart

@@ -96,3 +84,3 @@ { match: '#FirstName [#FirstName]', group: 0, tag: 'LastName', reason: 'firstname-firstname' },

// dr john foobar
{ match: '#Honorific #FirstName [#Singular]', group: 0, tag: 'LastName', reason: 'dr-john-foo', safe: true },
{ match: '#Honorific #FirstName [#Singular]', group: 0, tag: 'LastName', ifNo: '#Possessive', reason: 'dr-john-foo', safe: true },
//his-excellency

@@ -99,0 +87,0 @@ {

@@ -21,3 +21,3 @@ // this is really hard to do

// eat my shorts
{ match: '^[#Infinitive] (your|my|the|some|a|an)', group: 0, tag: 'Imperative', reason: 'eat-my-shorts' },
{ match: '^[#Infinitive] (your|my|the|some|a|an)', group: 0, ifNo: 'like', tag: 'Imperative', reason: 'eat-my-shorts' },
// tell him the story

@@ -24,0 +24,0 @@ { match: '^[#Infinitive] (him|her|it|us|me)', group: 0, tag: 'Imperative', reason: 'tell-him' },

@@ -13,2 +13,6 @@ const toRoot = {

},
// ''
'Copula': () => {
return 'is'
},
// 'walked' -> 'walk'

@@ -27,2 +31,5 @@ 'PastTense': (term, world) => {

let str = term.machine || term.normal || term.text
if (term.tags.has('Infinitive')) {
return str
}
return world.methods.two.transform.verbToInfinitive(str, world.model, 'PresentTense')

@@ -29,0 +36,0 @@ },

@@ -19,3 +19,3 @@ // verbose-mode tagger debuging

// some logging for debugging
let env = typeof process === 'undefined' ? self.env || {} : process.env
const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env
if (env && env.DEBUG_TAGS) {

@@ -22,0 +22,0 @@ log(term, tag, reason)

@@ -1,2 +0,1 @@

import fastTag from '../_fastTag.js'
const hasApostrophe = /['‘’‛‵′`´]/

@@ -27,3 +26,4 @@

const checkRegex = function (terms, i, model) {
const checkRegex = function (terms, i, model, world) {
const setTag = world.methods.one.setTag
let { regexText, regexNormal, regexNumbers, endsWith } = model.two

@@ -47,3 +47,3 @@ let term = terms[i]

if (arr) {
fastTag(term, arr[1], `2-regex- '${arr[2] || arr[0]}'`)
setTag([term], arr[1], world, null, `2-regex-'${arr[2] || arr[0]}'`)
term.confidence = 0.6

@@ -50,0 +50,0 @@ return true

@@ -8,5 +8,5 @@

}
const isAloneVerb = (terms, i) => {
const isAloneVerb = (terms, i, tag) => {
if (i === 0 && !terms[1]) {// 'Help'
return 'Verb'
return tag
}

@@ -33,6 +33,6 @@ return null

'Noun|Verb': (terms, i) => {
return isCapital(terms, i) || isAloneVerb(terms, i)
return isCapital(terms, i) || isAloneVerb(terms, i, 'Infinitive')
},
'Plural|Verb': (terms, i) => {
return isCapital(terms, i) || isAloneVerb(terms, i)
return isCapital(terms, i) || isAloneVerb(terms, i, 'PresentTense')
},

@@ -39,0 +39,0 @@ 'Person|Noun': (terms, i) => {

@@ -1,2 +0,2 @@

const env = typeof process === 'undefined' ? self.env || {} : process.env // eslint-disable-line
const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env // eslint-disable-line
import adhoc from './_adhoc.js'

@@ -3,0 +3,0 @@ const prefix = /^(under|over|mis|re|un|dis|semi)-?/

@@ -37,3 +37,3 @@

// these methods don't care about word-neighbours
const secondPass = function (terms, model) {
const secondPass = function (terms, model, world) {
for (let i = 0; i < terms.length; i += 1) {

@@ -47,3 +47,3 @@ // mark Noun|Verb on term metadata

// try look-like rules
second.checkRegex(terms, i, model)
second.checkRegex(terms, i, model, world)
// check for recognized prefix, like 'micro-'

@@ -88,3 +88,3 @@ second.checkPrefix(terms, i, model)

// guess by the letters
secondPass(terms, model)
secondPass(terms, model, world)
// guess by the neighbours

@@ -91,0 +91,0 @@ thirdPass(terms, model, world)

@@ -5,4 +5,7 @@ // transformations to make on our lexicon

Singular: (word, lex, methods, model) => {
let already = model.one.lexicon
let plural = methods.two.transform.nounToPlural(word, model)
lex[plural] = lex[plural] || 'Plural'
if (!already[plural]) {
lex[plural] = lex[plural] || 'Plural'
}
},

@@ -12,8 +15,13 @@

Comparable: (word, lex, methods, model) => {
let already = model.one.lexicon
// fast -> fastest
let superlative = methods.two.transform.adjToSuperlative(word, model)
lex[superlative] = lex[superlative] || 'Superlative'
let sup = methods.two.transform.adjToSuperlative(word, model)
if (!already[sup]) {
lex[sup] = lex[sup] || 'Superlative'
}
// fast -> faster
let comparative = methods.two.transform.adjToComparative(word, model)
lex[comparative] = lex[comparative] || 'Comparative'
let comp = methods.two.transform.adjToComparative(word, model)
if (!already[comp]) {
lex[comp] = lex[comp] || 'Comparative'
}
// overwrite

@@ -23,3 +31,3 @@ lex[word] = 'Adjective'

// 'german' -> 'germains'
// 'german' -> 'germans'
Demonym: (word, lex, methods, model) => {

@@ -32,5 +40,8 @@ let plural = methods.two.transform.nounToPlural(word, model)

Infinitive: (word, lex, methods, model) => {
let already = model.one.lexicon
let all = methods.two.transform.verbConjugate(word, model)
Object.entries(all).forEach(a => {
lex[a[1]] = lex[a[1]] || a[0]
if (!already[a[1]] && !lex[a[1]]) {
lex[a[1]] = a[0]
}
})

@@ -37,0 +48,0 @@ },

@@ -26,2 +26,3 @@ import doRules from './lib.js'

const exceptions = {
cool: 'cooly',
whole: 'wholly',

@@ -28,0 +29,0 @@ full: 'fully',

export default [
[/([^v])ies$/i, '$1y'],
[/ises$/i, 'isis'],
[/(ise)s$/i, '$1'],//promises
[/(kn|[^o]l|w)ives$/i, '$1ife'],

@@ -10,8 +10,13 @@ [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'],

[/(buffal|tomat|tornad)(oes)$/i, '$1o'],
// [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'],
[/(eas)es$/i, '$1e'],
[/(..[aeiou]s)es$/i, '$1'],
[/(ause)s$/i, '$1'],//causes
[/(ease)s$/i, '$1'],//diseases
[/(ious)es$/i, '$1'],//geniouses
[/(ouse)s$/i, '$1'],//houses
[/(ose)s$/i, '$1'],//roses
[/(..[aeiu]s)es$/i, '$1'],
[/(vert|ind|cort)(ices)$/i, '$1ex'],
[/(matr|append)(ices)$/i, '$1ix'],
[/([xzo]|ch|ss|sh)es$/i, '$1'],
[/([xo]|ch|ss|sh)es$/i, '$1'],
[/men$/i, 'man'],

@@ -23,8 +28,7 @@ [/(n)ews$/i, '$1ews'],

[/(m)ovies$/i, '$1ovie'],
[/([m|l])ice$/i, '$1ouse'],
[/(cris|ax|test)es$/i, '$1is'],
[/(alias|status)es$/i, '$1'],
[/(ss)$/i, '$1'],
[/(ics)$/i, '$1'],
[/(ic)s$/i, '$1'],
[/s$/i, ''],
]

@@ -19,2 +19,3 @@ import rules from './_rules.js'

if (rules[i][0].test(str) === true) {
// console.log(rules[i])
str = str.replace(rules[i][0], rules[i][1])

@@ -21,0 +22,0 @@ return str

@@ -23,7 +23,20 @@ import { convert } from 'suffix-thumb'

const pluralCopula = new Set(['are', 'were', 'been'])
const singCopula = new Set(['is', 'am', 'was', 'be', 'being'])
// dunno about these..
const copulaMap = {
are: 'be',
were: 'be',
been: 'be',
is: 'be',
am: 'be',
was: 'be',
be: 'be',
being: 'be',
}
const toInfinitive = function (str, model, tense) {
const { fromPast, fromPresent, fromGerund, fromParticiple } = model.two.models
// if (str.length < 3) {
// return str
// }
let { prefix, verb, particle } = toParts(str, model)

@@ -34,6 +47,4 @@ let inf = ''

}
if (pluralCopula.has(str)) {
inf = 'be'
} else if (singCopula.has(str)) {
inf = 'be'
if (copulaMap.hasOwnProperty(str)) {
inf = copulaMap[str]
} else if (tense === 'Participle') {

@@ -40,0 +51,0 @@ inf = convert(verb, fromParticiple)

@@ -5,2 +5,3 @@ import methods from '../../methods/index.js'

import conjugate from '../../methods/transform/verbs/conjugate/index.js'
import { adjToSuperlative, adjToComparative } from '../../methods/transform/adjectives/index.js'
import toInfinitive from '../../methods/transform/verbs/toInfinitive/index.js'

@@ -53,3 +54,3 @@ import models from '../models/index.js'

model.two.uncountable[k] = true
words[k] = 'Noun'
words[k] = 'Uncountable'
}

@@ -70,2 +71,9 @@ })

const expandAdjective = function (str, words, model) {
let sup = adjToSuperlative(str, model)
words[sup] = words[sup] || 'Superlative'
let comp = adjToComparative(str, model)
words[comp] = words[comp] || 'Comparative'
}
// harvest ambiguous words for any conjugations

@@ -80,7 +88,8 @@ const expandVariable = function (switchWords, model) {

// conjugate some verbs
if (name === 'Noun|Verb') {
if (name === 'Noun|Verb' || name === 'Person|Verb') {
expandVerb(w, lex, false)
}
if (name === 'Adj|Present' || name === 'Person|Verb') {
if (name === 'Adj|Present') {
expandVerb(w, lex, true)
expandAdjective(w, lex, model)
}

@@ -87,0 +96,0 @@ if (name === 'Adj|Gerund' || name === 'Noun|Gerund') {

@@ -5,76 +5,110 @@ //nouns with irregular plural/singular forms

export default {
// -a
addendum: 'addenda',
corpus: 'corpora',
criterion: 'criteria',
curriculum: 'curricula',
genus: 'genera',
memorandum: 'memoranda',
opus: 'opera',
ovum: 'ova',
phenomenon: 'phenomena',
referendum: 'referenda',
// -ae
alga: 'algae',
alumna: 'alumnae',
alumnus: 'alumni',
antenna: 'antennae',
formula: 'formulae',
larva: 'larvae',
nebula: 'nebulae',
vertebra: 'vertebrae',
// -is
analysis: 'analyses',
antenna: 'antennae',
axis: 'axes',
diagnosis: 'diagnoses',
parenthesis: 'parentheses',
prognosis: 'prognoses',
synopsis: 'synopses',
thesis: 'theses',
neurosis: 'neuroses',
// -x
appendix: 'appendices',
avocado: 'avocados',
axis: 'axes',
index: 'indices',
matrix: 'matrices',
ox: 'oxen',
sex: 'sexes',
// -i
alumnus: 'alumni',
bacillus: 'bacilli',
barracks: 'barracks',
cactus: 'cacti',
fungus: 'fungi',
hippopotamus: 'hippopotami',
libretto: 'libretti',
modulus: 'moduli',
nucleus: 'nuclei',
octopus: 'octopi',
radius: 'radii',
stimulus: 'stimuli',
syllabus: 'syllabi',
// -ie
cookie: 'cookies',
calorie: 'calories',
auntie: 'aunties',
movie: 'movies',
pie: 'pies',
rookie: 'rookies',
tie: 'ties',
zombie: 'zombies',
// -f
leaf: 'leaves',
loaf: 'loaves',
thief: 'thieves',
// ee-
foot: 'feet',
goose: 'geese',
tooth: 'teeth',
// -eaux
beau: 'beaux',
chateau: 'chateaux',
tableau: 'tableaux',
// -ses
bus: 'buses',
gas: 'gases',
cactus: 'cacti',
chateau: 'chateaux',
circus: 'circuses',
crisis: 'crises',
virus: 'viruses',
database: 'databases',
excuse: 'excuses',
abuse: 'abuses',
avocado: 'avocados',
barracks: 'barracks',
child: 'children',
circus: 'circuses',
clothes: 'clothes',
corpus: 'corpora',
criterion: 'criteria',
curriculum: 'curricula',
database: 'databases',
deer: 'deer',
diagnosis: 'diagnoses',
echo: 'echoes',
embargo: 'embargoes',
epoch: 'epochs',
foot: 'feet',
formula: 'formulae',
fungus: 'fungi',
genus: 'genera',
goose: 'geese',
deer: 'deer',
halo: 'halos',
hippopotamus: 'hippopotami',
index: 'indices',
larva: 'larvae',
leaf: 'leaves',
libretto: 'libretti',
loaf: 'loaves',
man: 'men',
matrix: 'matrices',
memorandum: 'memoranda',
modulus: 'moduli',
woman: 'women',
mosquito: 'mosquitoes',
mouse: 'mice',
nebula: 'nebulae',
nucleus: 'nuclei',
octopus: 'octopi',
opus: 'opera',
ovum: 'ova',
ox: 'oxen',
parenthesis: 'parentheses',
person: 'people',
phenomenon: 'phenomena',
prognosis: 'prognoses',
quiz: 'quizzes',
radius: 'radii',
referendum: 'referenda',
rodeo: 'rodeos',
sex: 'sexes',
shoe: 'shoes',
sombrero: 'sombreros',
stimulus: 'stimuli',
stomach: 'stomachs',
syllabus: 'syllabi',
synopsis: 'synopses',
tableau: 'tableaux',
thesis: 'theses',
thief: 'thieves',
tooth: 'teeth',
tornado: 'tornados',
tuxedo: 'tuxedos',
vertebra: 'vertebrae',
}

@@ -13,3 +13,3 @@ // generated in ./lib/lexicon

"Reflexive": "true¦h4my5o1the0your2;ir1m1;ne3ur0;sel0;f,ves;er0im0;self",
"Uncountable": "true¦0:2J;1:1M;2:1Z;a28b1Zc1Rd1Je1Bf15g0Yh0Ri0Lj0Kk0Jl0Fm05n03o02pWrRsGt8vi7w3;a5i4oo3;d,l;ldlife,ne;rm7t2;neg1Ool0Ktae;e9h8oothpas1Hr4un3yranny;a,gst1O;affZea14ou4ue nor3;th;ble3sers,t;!shoot1R;ermod25und2;a,nnis;aBcene0Geri1hAil9ki8o7p6t4u3weepstak1;g1Enshi0Z;ati24e3;am,el;ace1Xeci1;ap,cc2;n,ttl1;k,v2;eep,ingl1;d0Mfe1Ql3nd,t0A;m1Gt;a6e4ic3;e,ke0U;c3laxa0Rsearch;ogni0Qrea0Q;bi1in;aUe7hys0lastDo5re3;amble,mis1s3ten1F;en1Esu0B;l3rk;it0yC;a1Jtr05;bstetr0vercrowd12xyg0V;a3ews;il polVtional securi1B;aAe8o5u3;mps,s3;ic;n3o14;ey,o3;gamy;a3chan0rchandi11tallurgy;sl1t;chine3themat0; learn0Qry;aught2e5i4ogi17u3;ck,g0S;ce,ghtn0Nngui15teraR;ath2isuRss;indergart0Enowled0Q;azz,ewelCusti10;ce,gnor7mp4n3tself;formaYternet;a3ort5;ti3;en0V;an0U;a6eIisto5o3;ckey,mework,ne3rserad7spitali0N;s0My;ry;ir,libXppiGs3;h3te;ish;ene6l5o4r3um,ymna0O;aDeed;lf,re;utWyce0A; 3t0;edit01po3;ol;icFlour,o5urni3;tu3;re;od,rgive3uri2wl;ne3;ss;conom0duca9lectr8n6quip7th0very4xper3;ti00;body,o3thR;ne;joy3tertain3;ment;iciYon0;tiO;e8i4ope,raugh3ynasW;ts;abet1s3;honSrepu3;te;es;b3miN;ut;a9elci8h5iv0lass0o3urrency;al,ld w3nfusiEttEusco7;ar;aos,e4ick3;en;eGw8;us;d,rI;a8eef,i6lood,owls,read,u3;nt4tt2;er;ing;lliarDs3;on;g3ss;ga3;ge;cDdviCeroAir9m5ni4ppeal court,spi3thlet0;rin;se;en5n3;es3;ty;ds;craft;b0d3naut0;ynam0;ce;id,ou3;st0;ics",
"Uncountable": "true¦0:2O;1:1W;2:24;a2Db24c1Ud1Le1Df17g10h0Ti0Nj0Mk0Ll0Hm06n04o03pXrSsHt8vi7w3;a5i4oo3;d,l;ldlife,ne;rm7t2;neg1Rol0Mtae;eAh9oothpas1Lr4un3yranny;a,gst1T;aff00ea16o4ue nor3;th;oZu3;ble3se1Dt;!shoot1V;ermod29und2;a,nnis;aBcene0Heri1hAil9ki8o7p6t4u3weepstak1;g1Gnshi10;ati28e3;am,el;ace21eci1;ap,cc2;n,ttl1;k,v2;eep,ingl1;d0Nfe1Ul3nd,t0B;m1Kt;a6e4ic3;e,ke0V;c3laxa0Ssearch;ogni0Rrea0R;bi1in;aVe7hys0lastDo5re3;amble,mis1s3ten1J;en1Isu0C;l3rk;it0yD;a1Ntr06;bstetr0vercrowd16xyg0Z;a3ews;il polWtional securi1F;aBe9o6u3;m4s3;ic;ps;n3o17;ey,o3;gamy;a3chan0rchandi14tallurgy;sl1t;chine3themat0; learn0Try;aught2e5i4ogi1Au3;ck,g0V;ce,ghtn0Qngui18teraR;ath2isuRss;indergart0Hnowled0T;azz,ewelCusti13;ce,gnor7mp4n3tself;formaYternet;a3ort5;ti3;en0Y;an0X;a6eIisto5o3;ckey,mework,ne3rserad7spitali0Q;s0Py;ry;ir,libYppiGs3;h3te;ish;ene6l5o4r3um,ymna0R;aDeed;lf,re;utZyce0D; 3t0;edit04po3;ol;icFlour,o5urni3;tu3;re;od,rgive3uri2wl;ne3;ss;conom0duca9lectr8n6quip7th0very4xper3;ti03;body,o3thU;ne;joy3tertain3;ment;ici01on0;tiR;e9i6o4raugh3ynasZ;ts;pe,wnstai3;rs;abet1s3;honTrepu3;te;b3miP;ut;aBelciAh7iv0l5o3urrency;al,ld w3nfusiGttGusco9;ar;ass0oth1;es;aos,e4ick3;en;eGw8;us;d,rI;a8eef,i6lood,read,u3;nt4tt2;er;ing;lliarDs3;on;g3ss;ga3;ge;cDdviCeroAir9m5ni4ppeal court,spi3thlet0;rin;se;en5n3;es3;ty;ds;craft;b0d3naut0;ynam0;ce;id,ou3;st0;ics",
"Plural": "true¦ones,records",

@@ -23,7 +23,7 @@ "Value": "true¦a few",

"Possessive": "true¦any2its,my,no4o0somet3their1yo0;ur0;!s;o1t0;hing;ne",
"Noun|Verb": "true¦0:7O;1:6H;2:7K;3:7U;4:7X;5:7T;6:6T;7:7E;8:71;9:6P;a7Gb6Sc5Rd56e4Yf4Ag41h3Ti3Nj3Lk3Jl39m30n2Wo2Sp20ques7Ir1Cs07tTuRvMwCyBzA;ip,o6A;awn,e1Vie4Q;aHeaGhEiCoAre7I;nd0rA;k,ry;mp,nApe,re,sh,tne7Z;!d,g;e6EiA;p,st6;r,th0;it,rAs5t2ve,x;ehou1ra7Y;aDiCoA;iAlunte0te,w;ce,d;be,ew,s8;cuum,l37;pAsh0;da5gra4V;aLeKhrJiIoHrDuBwiAy4K;n,st;nArn;e,n5Z;aCeBiAu7;bu5ck,gg0m,p;at,nd;ck,de,in,nsf0p,v5V;ll,ne,r3Oss,t72u2;ck,e,me,p,re;e1Kow,u7;ar,e,st;g,lArg5Zs5;k,ly;a4Lc09e06h01iZkXlVmUnTou68pPtFuBwA;ear,it2;b1Vit,m,ppBrAspe4;ge,pri1vey;lAo58;e55y;aHeGiFoDrBuAy6;dy,ff,mb6;a68eAi4B;am,ss,t2;p,rA;e,m;ck,t2;m,p;ck,in,ke,ll,mp,nd,rAte,y;!e,t;aCeed,iBla4Hons6IrAy;ay,e0Zink6u3;n,r6Ete;n,rk;ee1Cow;e0Ei6o3Y;eep,iA;ce,p,t;ateboa5ViA;!p;de,gnAze;!al;aDeCiBoA;ck,p,w;ft,p,v0;d,i2Z;pe,re;aBed,nAr5Wt;se,t1V;l,r2t;aDhedu6oCrA;at2eA;en,w;re,ut;le,n,r0G;aVeEiDoCuA;b,in,le,n,sA;h,t;a7ck,ll,ot;de,ng,p,s1A;as5BcOdo,el,fMgLje4lKmInHo0TpFque7sCturn,vAwa59;eAi1H;al,r1;er5GoBt,uA;lt,me;l5Ert;air,eaAly,o3W;l,t;dezvo23t;aAedy;ke,rk;ea1i3C;a4Xist0r4B;act5Borm,uA;nd,se;aAo4Uru8;ll;ck,i1ke,l45nAtT;ge,k;aYeVhTiQlLoIrBuA;mp,n2rcha1sh;ai1eEi3oAu3I;be,ceCdu3grAje4mi1te7;amAe5A;!me;ed,ss;sAy;er4Ss;iBlAol,p,re,s2Qw0;i3l;nt,s4H;aCeBuA;g,n9;ad;ce,nAy;!t;ck,lBnApe,t,vot;!e;e,ot;a1oA;ne,tograph;ak,eBn,rAt;fu3Tm8;!l;cka9iBn,rtAss,t2u1;!y;nt,r;bCff0il,oBrAutli2S;d0ie4Q;ze;je4;a3KeCoA;d,tA;e,i3;ed,gle4rd,t;aFeDiCoBuA;rd0;d2Tnit43p,ve;lk,n2Xrr42x;asu11n3NrAss;ge,it;il,nBp,rk2YsAt2;h,k;da5oeuv0X;aGeDiCoAump;aAbby,ck,g,ok,ve;d,n;cen1ft,m8nEst;aBc0CvA;el,y;ch,d,p,se;bBcAnd,t2un2;e,k;el,o24;e2CiAno3B;ck,ll,ss;am,o15uA;d9i3;mpEnBr35ssA;ue;cr18dex,fluBha6k,se1UterviAvoi3;ew;en3;a4le1P;aEeCiBoAu3Q;ld,no1Sok,pe,r1st,u1;ghlight,ke,re,t;aAlp;d,t;ndBrAte;bo2Zm,ne3Fve7;!le;aHeek,lo3DoGrCuA;arAe3Ci0Ln;antee,d;aCiBoAumb6;om,u2A;nd,p;de,sp;of,ssip;in,me,ng,s,ze;aWeSiNlJoGrCuA;el,nAzz;c2Fd;aBoAy;st,wn;cAme;tuP;cBg,ol,rA;ce,e1Om;us;aCe0Kip,oAy;at,od,wA;!er;g,re,sh,vo0Z;eDgClBnAre,sh,t,x;an3i0F;e,m,t0;ht,uE;ld;aBeAn3;d,l;r,tuA;re;ce,il,ll,rm,vo21;cho,nGsExAye;cCerci1hib8pAtra4;eriAo0J;en3me2I;el,han9;caAtima5;pe;count0d,gine0vy;aSeLiFoErBuAye;b,mp;aBeam,iA;ft,nk,ve;ft,in;cu06d9ubt;p,sCvA;e,iAor3;de;char9liBpA;at2lay;ke;al,ba5cEfeDlCma0Xpos8siBtaA;il;gn,re;ay,ega5;at,ct;liXrA;ea1;ma9n3rAte;e,t;a07ent06hZlWoGrCuA;be,rAt;e,l;aft,eCoBuAy;sh;p,ss,wd;d8ep;de,in,lNmHnCok,py,re,st,uAv0;gh,nAp6;sVt;ceCdu4glomeDstru4tAveI;a4rA;a7ol;ntArn;ra5;biEfoDmCpA;leAou08romi1;me1B;a06e1Au5;rt;ne;lap1oA;r,ur;aBiA;ck,p;im,w;aBeAip;at,ck,er;iDllen9mpi09nBrAse,uffe0F;ge,m,t;ge,nA;el;n,r;er,re;ke,ll,mp,p,rBsh,t2u1ve;se;d,e;aTeQiPlMoIrDuAypa0M;bb6ck6dgBff0lArn,st,zz;ly;et;anDeaCid9oadA;ca7;ge;ch,k;ch,d;aCmb,ne,oBss,tt6x,ycott;le;k,st,t;rd,st;aBeAitz,oP;nd;me;as,d,ke,te;aBnef8t;it;r,t;il,lan3nCrgaBsA;e,h;in;!d,g,k;c00dTffilSge,iRlt0nOppLrHssFttDucBwaA;rd;tiA;on;aAempt;ck;i7ocM;st;chBmoA;ur;!iA;ve;eBroa2;ch;al;chAsw0;or;er;d,m,r;ia5;dDvA;an3oca5;te;ce;i4reA;ss;ct;cAhe,t;eCoA;rd,uA;nt;nt,ss",
"Noun|Verb": "true¦0:7O;1:6H;2:7U;3:7K;4:7X;5:7T;6:6T;7:7E;8:71;9:6P;a7Gb6Sc5Rd57e4Zf4Bg42h3Ui3Oj3Mk3Kl3Am31n2Xo2Tp21ques7Ir1Ds07tTuRvMwCyBzA;ip,o6A;awn,e1Wie4R;aHeaGhEiCoAre7I;nd0rA;k,ry;mp,nApe,re,sh,tne7Z;!d,g;e6EiA;p,st6;r,th0;it,rAs5t3ve,x;ehou1ra7Y;aDiCoA;iAlunte0te,w;ce,d;be,ew,s8;cuum,l38;pAsh0;da5gra4W;aLeKhrJiIoHrDuBwiAy4L;n,st;nArn;e,n5Z;aCeBiAu7;bu5ck,gg0m,p;at,nd;ck,de,in,nsf0p,v5V;ll,ne,r3Pss,t72u3;ck,e,me,p,re;e1Low,u7;ar,e,st;g,lArg5Zs5;k,ly;a0Ec09e06h01iZkXlVmUnTou68pPtFuBwA;ear,it3;b1Wit,m,ppBrAspe4;ge,pri1vey;lAo58;e55y;aHeGiFoDrBuAy6;dy,ff,mb6;a68eAi4C;am,ss,t3;p,rA;e,m;ck,t3;m,p;ck,in,ke,ll,mp,nd,rAte,y;!e,t;aCeed,iBla4Hons6IrAy;ay,e10ink6u2;n,r6Ete;n,rk;ee1Dow;e0Fi6o3Z;eep,iA;ce,p,t;ateboa5ViA;!p;de,gnAze;!al;aDeCiBoA;ck,p,w;ft,p,v0;d,i30;pe,re;aBed,nArv14t;se,t1W;l,r3t;aDhedu6oCrA;at3eA;en,w;re,ut;le,n,r0H;crifi2il;aVeEiDoCuA;b,in,le,n,sA;h,t;a7ck,ll,ot;de,ng,p,s1A;as5AcOdo,el,fMgLje4lKmInHo0TpFque7sCturn,vAwa58;eAi1H;al,r1;er5FoBt,uA;lt,me;l5Drt;air,eaAly,o3V;l,t;dezvo23t;aAedy;ke,rk;ea1i3B;a4Wist0r4A;act5Aorm,uA;nd,se;aAo4Tru8;ll;ck,i1ke,l44nAtT;ge,k;aYeVhTiQlLoIrBuA;mp,n3rcha1sh;ai1eEi2oAu3H;be,ceCdu2grAje4mi1te7;amAe59;!me;ed,ss;sAy;er4Rs;iBlAol,p,re,s2Pw0;i2l;nt,s4G;aCeBuA;g,n9;ad;ce,nAy;!t;ck,lBnApe,t,vot;!e;e,ot;a1oA;ne,tograph;ak,eBn,rAt;fu3Sm8;!l;cka9iBn,rtAss,t3u1;!y;nt,r;bCff0il,oBrAutli2R;d0ie4P;ze;je4;a3JeCoA;d,tA;e,i2;ed,gle4rd,t;aFeDiCoBuA;rd0;d2Snit42p,ve;lk,n2Wrr41x;asu11n3MrAss;ge,it;il,nBp,rk2XsAt3;h,k;da5oeuv0X;aGeDiCoAump;aAbby,ck,g,ok,ve;d,n;cen1ft,m8nEst;aBc0CvA;el,y;ch,d,p,se;bBcAnd,t3un3;e,k;el,o23;e2BiAno3A;ck,ll,ss;am,o15uA;d9i2;mpEnBr34ssA;ue;cr17dex,fluBha6k,se1TterviAvoi2;ew;en2;a4le1O;aEeCiBoAu3P;ld,no1Rok,pe,r1st,u1;ghlight,ke,re,t;aAlp;d,t;ndBrAte;bo2Ym,ne3Eve7;!le;aHeek,lo3CoGrCuA;arAe3Bi0Ln;antee,d;aCiBoAumb6;om,u29;nd,p;de,sp;of,ssip;in,me,ng,s,ze;aWeSiNlJoGrCuA;el,nAzz;c2Ed;aBoAy;st,wn;cAme;tuP;cBg,ol,rA;ce,e1Nm;us;aCe0Jip,oAy;at,od,wA;!er;g,re,sh,vo0Y;eDgClBnAre,sh,t,x;an2i0E;e,m,t0;ht,uE;ld;aBeAn2;d,l;r,tuA;re;ce,il,ll,rm,vo20;cho,nGsExAye;cCerci1hib8pAtra4;eriAo0I;en2me2H;el,han9;caAtima5;pe;count0d,gine0vy;aReLiFoErBuAye;b,mp;aBeam,iA;ft,nk,ve;ft,in;cu05d9ubt;p,sCvA;e,iAor2;de;char9liBpA;at3lay;ke;al,ba5cDfeClBma0Wpos8siAtail;gn,re;ay,ega5;at,ct;liXrA;ea1;ma9n2rAte;e,t;a07ent06hZlWoGrCuA;be,rAt;e,l;aft,eCoBuAy;sh;p,ss,wd;d8ep;de,in,lNmHnCok,py,re,st,uAv0;gh,nAp6;sVt;ceCdu4glomeDstru4tAveI;a4rA;a7ol;ntArn;ra5;biEfoDmCpA;leAou08romi1;me1B;a06e1Au5;rt;ne;lap1oA;r,ur;aBiA;ck,p;im,w;aBeAip;at,ck,er;iDllen9mpi09nBrAse,uffe0F;ge,m,t;ge,nA;el;n,r;er,re;ke,ll,mp,p,rBsh,t3u1ve;se;d,e;aTeQiPlMoIrDuAypa0M;bb6ck6dgBff0lArn,st,zz;ly;et;anDeaCid9oadA;ca7;ge;ch,k;ch,d;aCmb,ne,oBss,tt6x,ycott;le;k,st,t;rd,st;aBeAitz,oP;nd;me;as,d,ke,te;aBnef8t;it;r,t;il,lan2nCrgaBsA;e,h;in;!d,g,k;c00dTffilSge,iRlt0nOppLrHssFttDucBwaA;rd;tiA;on;aAempt;ck;i7ocM;st;chBmoA;ur;!iA;ve;eBroa3;ch;al;chAsw0;or;er;d,m,r;ia5;dDvA;an2oca5;te;ce;i4reA;ss;ct;cAhe,t;eCoA;rd,uA;nt;nt,ss",
"Actor": "true¦aJbGcFdCfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt",
"Honorific": "true¦aNbrigadiMcGdFexcellency,fiAliCma9officMp5queen,r2s0taoiseach,vice4;e0ultI;cond liArgeaB;abbi,e0;ar0verend; adJ;astFr0;eside6i0ofessE;me ministEnce0;!ss;gistrate,r4yB;eld mar3rst l0;ady,i0;eutena0;nt;shA;oct5utchess;aptain,hance3o0;lonel,mmand4ngress0unci2;m0wom0;an;ll0;or;er;d0yatullah;mir0;al",
"Pronoun": "true¦'em,elle,h3i2me,she4th0us,we,you;e0ou;m,y;!l,t;e0im;!'s",
"Singular": "true¦0:49;1:4S;2:4T;3:4I;4:4G;5:3H;6:4F;7:4A;a4Ib3Wc32d2Ne2Ff27g1Wh1Kin1Ijel3k1Gl1Dm16n14o10p0Kqu0Jr0AsRtIuFvBw8;a8ha34om23;f0i4At0By8;! arou45;arn45e9o8;cabu04l4P;gHr8;di6t1C;nc2Xp2Ir9s 8;doll3Is4P;bani1in2; rex,aFeEhDiBoAr9u8v show;m2An5rntHto10;agedy,ibe,o3S;p5rq37;c,de,m8;etD;ere,i7;am,mp32;ct5le4x return;aPcNeMhLi1kJoItDuAy8;ll8n1Zst4A;ab2J;b9nri13per bowl,r8;f0roga1;st35tot2;aBepAipe3Ir9udent8;! lo1D;ang0i7;fa18mo18;ff0t2T;loi3Hme0Z;elet0Wi8;er,ll,rm3C;ack,or3W;ab0Ncurity gu27;e4ho8;l2Qol;la2T;av0PeBhetor5i9o8;de4om;te,v8;erb0G;bBcAf8publ5r0Hspi1;er8orm0;e4r2;it2ord label;a1u3M;estion mark,ot21;aKeJhIiGlEr9u8yram13;ddi7ppy,rpo0C;eBie2Xo8;bl3Fs8;pe6t8;a1itu1;diction,mi07roga1Ess relea07;a8ebisci1;q20te,y0;cn5e8g;!r;armaci2OotocoF;dest2ncil,rcen35t2;n9te8;!nt;el2Jop3;bjec14c9pia1rde2thers,ve8;n,rview;cu8e09;pi0;an23it1Xot8umb0;a1Xhi7;aCed5ili0Vo9u8é0A;m0Mr2;m9nopo3pLrni7sq1Kt8u0Z;h0i0W;!my;mm2nd10te8yf3;ri2;aurea1i9u8;ddi1nch;ght bulb,p08;ey8ittJ;!no1;cide4dices,se6te4vert8;eb1I;aIeaEighCo8uman right,ygie0Z;le,me9tb8;ed;! r8;un; scho11ri8;se;d9v8;en; start,ph8;one;m,ndful,ze;aGeEirl1IlaOoDr9u8;l3y;an8enadi0id;a13d8; slam,fa8mo8;th0;d,lf0;lat0Dntlem8;an;df3r8;l5n1A;aEella,iClBol3r8;ee market,i9on8;ti0;e15ga1;ame,u1;nan8ref3;ci0;br5mi3n0Tth0;conoEffDgg,lecto0MnCs1Qth5venBx9yel8;id;ampVe8te4;cuMmpl0G;i7t;er1F;e6i1E;my;adLeFiCo9r8u0N;agonf3i0;c9g1Ai3or,ssi0wn8;si0K;to0AumenA;ale6gni9nn0s8vide0N;conte4incenBtri6;ta08;aCc2fBni2te8;c8rre4;ti8;ve;ault 02err2;th;!dy;aXeUhMiLlJoCr8;edit cAit5uc8;ib8;le;ard;efficDlBmmuniqLnApi0rr2t0Uu8yo1;ri0s8;in;ne6suH;ic,um8;ni07;ie4;er8ie4;gy,ic;ty,vil wI;aCeqBocoAr8;istmas car8ysanthemum;ol;la1;ue;ndeli0racter8;ist5;ic;ili7ll9r8;e2tifica1;ar;hi0naApit2r8shi0ucus;bohyd8ri0;ra1;ry;aPeOiLlemKoHrCu8;ddhiMnAr8tterf3;glar8i2;!y;ny;eakAi9o8;!th0;de;faFthro8;ugh;dy,g,y8;!frie8;nd;ish;cyc8oH;li8;st;an,l3;nki7r8;!ri0;er;ng;cLdIllGnDppeti1rray,sAthle1u8;nt,to8;psy;ce4pe6;ct;nt;ec9oma3ti9;ly;do1;er8y;gy; homin9van8;tage;em;cru2e9qui8;tt2;ta1;te;al",
"Singular": "true¦0:49;1:4U;2:4V;3:4K;4:4I;5:3I;6:4H;a4Hb3Wc32d2Ne2Ff27g1Wh1Kin1Ijel3k1Gl1Dm15n13o0Zp0Jqu0Ir09sQtHuEvAw7;a7ha34om23;f0i4Jt0Ay7;! arou45;arn45e8o7;cabu03l4Q;gGr7;di6t1C;nc2Xp2Ir8s 7;doll3Is4Q;bani1in2; rex,aEeDhCiAo9r8u7v show;m2An5rntGto10;agedy,ibe,o3S;p5rq37;c,de,er,m7;etC;ere,i3Z;am,mp32;ct5le4x return;aOcMeLhKi1kIoHtCu9y7;ll7n1Zst4B;ab2J;b8nri13per bowl,r7;f0roga1;st35tot2;aAep9ipe3Ir8udent7;! lo1D;ang0i3O;fa18mo18;ff0t2T;loi3Qme0Z;elet0Wi7;er,ll,rm3C;ack,or3X;ab0Ncurity gu27;e4ho7;l2Qol;la2T;av0PeAhetor5i8o7;de4om;te,v7;erb0G;bAc9f7publ5r0Hspi1;er7orm0;e4r2;it2ord label;a1u3N;estion mark,ot21;aJeIhHiFlDr8u7yram13;ddi32ppy,rpo0C;eAie36o7;bl3Gs7;pe6t7;a1itu1;diction,mi07roga1Ess relea07;a7ebisci1;q20te,y0;cn5e7g;!r;armaci2XotocoE;dest2ncil,rcen36t2;n8te7;!nt;el2Jop3;bjec14c8pia1rde2thers,ve7wn0;n,rview;cu7e09;pi0;an23it1Xot7umb0;a1Xhi2I;aCeBili0Vo8u7é0A;m0Mr2;m8nopo3pLrni2Fsq1Kt7u0Z;h0i0W;!my;d5nu;mm2nd0Zte7yf3;ri2;aurea1i8u7;ddi1nch;ght bulb,p07;ey7ittI;!no1;cide4dices,se6te4vert7;eb1H;aHeaDighBo7uman right,ygie0Y;le,me8tb7;ed;! r7;un; scho10ri7;se;d8v7;en; start,ph7;one;m,ndful,ze;aFeDirl1HlaNoCr8u7;l3y;an7enadi0id;a12d7; slam,fa7mo7;th0;d,lf0;lat0Cntlem7;an;df3r7;l5n19;aDella,iBlAol3r7;ee market,i8on7;ti0;e14ga1;ame,u1;nan7ref3;ci0;br5mi3n0Sth0;conoDffCgg,lecto0LnBs1Qth5venAx8yel7;id;ampUe7te4;cuLmpl0F;i13t;er1F;e6i1E;my;adKeEiBo8r7u0M;agonf3i0;c8g1Ai3or,ssi0wn7;si0J;to09umen9;ale6gni8nn0s7vide0M;conte4incenAtri6;ta07;aBc2fAni2te7;c7rre4;ti7;ve;ault 01err2;th;!dy;aWeThLiKlIoBr7;edit c9it5uc7;ib7;le;ard;efficClAmmuniqKn9pi0rr2t0Uu7yo1;ri0s7;in;ne6suG;ic,um7;ni0F;ie4;er7ie4;gy,ic;ty,vil wH;aBeqAoco9r7;istmas car7ysanthemum;ol;la1;ue;ndeli0racter7;ist5;ic;iliXll8r7;e2tifica1;ar;hi0na9pit2r7shi0ucus;bohyd7ri0;ra1;ry;aNeMiKlemJoGrBu7;ddhiUn9r7tterf3;glar7i2;!y;ny;eak9i8o7;!th0;de;faNthro7;ugh;dy,g,wl,y7;!frie7;nd;ish;cyc7oF;liG;an,l3;nki9r7;!ri0;er;ng;cMdJllHnEppeti1rray,sBth9u7;nt,to7;psy;ie7le1;st;ce4pe6;ct;nt;ec8oma3ti8;ly;do1;er7y;gy; homin8van7;tage;em;cru2e8qui7;tt2;ta1;te;al",
"Preposition": "true¦'o,-,aLbIcHdGexcept,fFinEmid,notwithstandiRoCpSqua,sBt7u4v2w0;/o,hereNith0;!in,oR;ersus,i0;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut",

@@ -34,3 +34,3 @@ "SportsTeam": "true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls",

"Unit": "true¦0:0W;a0Rb0Pc0Bd0Aex09f06g03he01in0Kjoule0kUlSmInHoGpDquart0square 9t5volts,w4y2ze3°1µs;c,f,n;a0Cd0Iears old,o1;tt06;att0b;able3e2on1;!ne0;a1r02;spoX;c09d08f3i06kilo0Am1ya05;e0Dil1;e0li08;eet0o04;ascals,e2i1ou0H;c0Ent0;rcent,tU;hms,uR;an0BewtO;/s,e6i1m²,²,³;/h,cro4l1;e1li02;! pEs 1²;anEpD;g01s06;gLter1;! 2s1;! 1;per second;iVu1;men0x;elvins,ilo2m1nM;/h,²;byUgSmeter1;! p2s1;! p1;er1; hour;ct1rtz0;aTogM;all2ig6ra1;in0m0;on0;a2emtMluid ou1tE;nce0;hrenheit,rad0;abyH;eciCmA;arat0eAm9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;²,³;lsius,nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s",
"Adj|Noun": "true¦0:0N;a0Mb0Hc08de07e02fWgold,homel04iUjuveniZlTmOnNoMpLrIsBt7u4va2w1;atershed,elcome;gabo4nilla,ria1;bWnt;ndergr1pstairs;adua0Eou1;nd;a3e1oken;en,r1;min0ror06;boo,n;e5istVo3qua2tandard,u1;bordina07per5;re,t;cial01l1;e,v0B;cret,n1ri0;ior;e1outine;ar,lRnt0p1;resentQublican;ati05eriodic0otenti0rincip0;ffiUpposiXv0;agging,ovel;aBe3in2o1;biAdernQ;iature,or;di1tr00;an,um;attDiber0;de0mpressionLn1;cumbVdividu0nocV;a4e1luid;llow,m1;a1inH;le;t,vo1;riIuriI;l3x1;c1pL;ess;d1iE;er;mographKriv3;hiCo1rude;m3n2oper1;ative;cre8stituFtemporary;m2p1;anion,lex;er2un1;ist;ci0;lank,o4r1;i2u1;te;ef;ttom,urgeois;cadem5d3l2nim0rab;al;ert;olesc1ult;ent;ic",
"Adj|Noun": "true¦0:0P;a0Ob0Jc0Ade09e04fXgWhomel06iUjuveni01lTmOnNoMpLrIsBt7u4va2w1;atershed,elcome;gabo4nilla,ria1;bYnt;ndergr1pstairs;adua0Gou1;nd;a3e1oken;en,r1;min0ror08;boo,n;e5istXo3qua2tandard,u1;bordina09per5;re,t;cial03l1;e,v0D;cret,n1ri0;ior;e1outiG;ar,lTnt0p1;resentSublican;ati07eriodic0otenti0rincip0;ffiWpposiZv0;agging,ovel;aDe3in2o1;biCdernS;iature,or;di1tr02;an,um;attFiber0;de0mpressionNn1;cumbXdividu0nocX;enious,old;a5e2i1luid;ne;llow,m1;a1inH;le;t,vo1;riIuriI;l3x1;c1pL;ess;d1iE;er;mographKriv3;hiCo1rude;m3n2oper1;ative;cre8stituFtemporary;m2p1;anion,lex;er2un1;ist;ci0;lank,o4r1;i2u1;te;ef;ttom,urgeois;cadem5d3l2nim0rab;al;ert;olesc1ult;ent;ic",
"ProperNoun": "true¦barbie,c4diego,e3f2kirby,m0nis,riel;ercedes,i0;ckey,ssy;inn,ranco;lmo,uro;atalina,hristi",

@@ -53,3 +53,3 @@ "Ordinal": "true¦eBf7nin5s3t0zeroE;enDhir1we0;lfCn7;d,t3;e0ixt8;cond,vent7;et0th;e6ie7;i2o0;r0urt3;tie4;ft1rst;ight0lev1;e0h,ie1;en0;th",

"Person": "true¦ashton kutchUbTcOdMeKgastPhIinez,jHkGleFmDnettLoCpAr5s4t2va1w0;arrDoode;lentino rossi,n go4;a0heresa may,iger woods,yra banks;tum,ylor;addam hussain,carlett johanssKlobodan milosevic;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essia0itt romnEubarek;en;bron james,e;anye west,endall,iefer sutherland,obe bryant;aime,effers7k rowling;a0itlBulk hogan;lle berry,rris5;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er",
"Adjective": "true¦0:92;1:80;2:7X;3:8T;4:8N;5:6E;6:81;7:86;8:8D;9:5W;A:8S;a7Mb76c6Pd67e5Pf57g4Zh4Oi3Tjuni46k3Rl3Fm33n2Uo2Fp1Wquart63r1Ls0Rt0JuMvIwBye1J;ast53eFholeEiDoB;man5oBrthwhi6u0F;d7Gzy;despr8Fs6E;!sa6;ather13eBll o5Iste32;!k5;aDeCiBola5C;b92ce versa,gi2Q;ng4Ursa5A;ca0lu53;lt06nHpDrCsBttermo8U;ef74u4;b67ge0; Db2BpCsBti36;ca6et,ide dO;er,i4K;f3Vto da3;aWbecom2cVdPeOfNiMknLmKpJrGsCtoFus1wB;a06iel4D;e6Yi2FoDpCuB;pervis1spect2;e0ok6W;ld;eBu5;cognQgul0LlBsolv1;at1ent2;a8recedeY;arri1et;own;que,vers4;air,orese6N;mploy1nd2xpect1;eBue;cid1rB;!a6Rcov9ly2sDwB;aBei2K;t9y;iz1to42;heck1onvinc2;ppeal2ssum2tteCuthorB;iz1;nd1;i2Gra;aGeDhough59ip 1PoCrB;anspa6Yi3;geth9le80rp8;ena6FmpCrB;r3Etia6P;e7Ko6N;leBst3P;nt1;a03c01eZhYiWkiVmug,nobb3YoPpMqueam3YtGuBymb70;bDi generis,pBr5;erBre1O;! dup9b,viX;du1sBurb50;eq72tanda7M;atu69eFi0VrByl3S;aBin4D;ightBy; fBfB;or5X;adfa7Eri6;arCeBirit1lend8ot on;c2Xe33;k5se; caGlub6mb9phisticFrEuCvB;erei5Hiet;ndBth0Y;pro6F;d8ry;at1;ll1;g1ZnB;ce57g6;am2Ze9;co1Jem5lf39nBre7;so5V;ath2holBient2J;ar5;cr1me,tisfac5M;aJeEheumato8iCoB;bu6Utt57y4;ghtBv4;-w2f53;bZcEdu6LlDsBtard1;is3CoB;lu3na0;e1Duc3A;e0ondi3;b8ciB;al,st;aOeMicayu7laLopuli6KrCuB;bl5Vnjabi;eGiEoB;!b2PfCmi3BpBv4U;er,ort4B;a7u60;maBor,sti7va3;!ry;ci5Xexist2mBpa8;a1QiB;er,um;c8id;ac26rBti3;feAma31ti31v5R;i26rCsB;s40t;allCtB;-ti04i4;el;bMffKkJld InGrFth9utEverB;!aCni0Fseas,t,wB;ei0Erou0E;ll;do0Xer,si4J;d2Tg1K; bBbBgo2li7;oa5W;fashion1school;!ay; gua5TbBli7si4D;eat;eCsB;ce7er0Do0S;dia0se;aIeHiGoBuanc1;nCrthBt1T;!eM;chaCdescri5Iprof28sB;top;la0;ght5;arby,cessa4Bighbor5xt;k1usiat2;aIeHinGoCuB;d13ltip6;deDl12nBot,st;ochroBth5;me;rn;dblTi;nac2re;cDgenta,in,j05keshift,mmCnBscu4E;da3Uy;ali2Ioth;ab37ho;aLeHiEoCuB;mber2sh;ngBut18;stand2term;ghtweiCteraB;l,te;ght;ft-w2gBss9th4;al,eCitiB;ma3;nda3N;ngu8ps1st;aput,ind5nB;ow2;gno4Sll03mVnDpso 23rB;a3releB;va0; QaPcoMdJe28fIhibi3AiWnHsDtBvalu0S;aAeB;n43rdep1S;a7iColBubordi3O;ub6ve0;de,gB;nifica0;a3er;eriCluenOreq3U;eCiEoB;or;fini3p1Jtermi3G;mpCrB;reA;le3;ccu3Xdeq3Sppr34;fBsitu,vitro;ro0;mFpB;arDeCl0PoBrop9;li3r0M;nd2rfeA;ti4;aCeBi0R;d2Wn3H;tu20;eg4iB;c0Ite3L;aIelHiFoCumB;a7dr3G;me ma2CnCrrBs04ur5;if31;e3Oo2J;ghfalut1LspB;an2Y;lUpf1W;lCnBrdZtI;dy;f,low1;aiHener2Tiga26lob4oGraDuB;ilBng ho;ty;cCtB;ef1Ois;ef1N;od;nf1L;aPeMinLlJoErB;aCeBoz1L;q2Ptf1I;gi6nt2I;olErB; keeps,eBge0Gm9tu2Bwa36;go2i1BseeB;ab6;ish;ag35uB;e0oresce0;al,i3;dCmini7rB;ti6; up;bl1i0l2Fmiliar,r Bux;oBreach2;ff;aPfficie0lNmKnIqu4reAthere4veHxB;aAem2PplEquisi3traDuB;be2UlB;ta0;!va1H;icB;it;n,ryday; Bti0O;rou3sui3;erCiB;ne0;ge0;dBe18;er5;g9sB;t,ygo2;er;aQeHiCoBrea15ue;mina0ne,rma0ubK;dact1Jfficult,m,sCverB;ge0se;creCeJjoi0pa1XtB;a0inA;et,te; IadpHceGfiFgene1UliDpCreliAspe1UvoB;id,ut;ende0;ca3ghB;tf09;a0ni3;as1;an;facto;i5ngeroX;ly;arQertaPivil,oErCuB;nn2stoma0M;aBu0Iystal0Y;v01z1;erKgniza0loJmHnCr01veB;rt;cEduIgr13jDsCtraB;dic0Ary;eq11ta0;oi0ug4;a0Wi12;mensu18passB;io0M;ni4ss4;ci0S;in;diac,efM;aMeGizarFliKoDrBuck nak1;and new,isk,oB;kLn1C;gBldface,na fiT;us;re;autifFhiEloDnBst,yoE;eViBt;gn;v1w;nd;ul;ckDnkCrrB;en;ru0V;!wards; priori,b0Nc0Kd0Df0Ag08h07l00mp6ntiquXpRrLsleep,ttracti09uHvEwB;aCkB;wa0U;ke,re;ant garCeraB;ge;de;diDtB;heBoimmu7;ntX;toG;bitEchiv4roDtiB;fiB;ci4;ga0;raB;ry;pBt;aEetiz2rB;oprB;ia3;ing;re0;at1e;ed;le;cohFiJkaDl,oCterB;na3;of;li7;ne;olB;ic;ead;ainWed,gressiB;ve;flCra8;id;ue0; FeDvB;erB;se;pt,qB;ua3;hoc,infinitB;um;cuCtu4u3;al;ra3;erMlKoIrFsCuB;nda0;e0olu3traA;ct;te;eaCuB;pt;st;aBve;rd;aBe;ze;ra0;nt",
"Adjective": "true¦0:93;1:81;2:7Y;3:8U;4:8O;5:6F;6:82;7:87;8:8E;9:5X;A:8T;a7Nb77c6Qd68e5Qf58g50h4Pi3Ujuni47k3Sl3Gm34n2Uo2Fp1Wquart64r1Ls0Rt0JuMvIwBye1J;ast54eFholeEiDoB;man5oBrthwhi6u0F;d7Hzy;despr8Gs6F;!sa6;ather13eBll o5Jste2R;!k5;aDeCiBola5D;b93ce versa,gi2R;ng4Vrsa5B;ca0lu54;lt06nHpDrCsBttermo8V;ef75u4;b68ge0; Db2BpCsBti37;ca6et,ide dO;er,i4L;f3Wto da3;aWbecom2cVdPeOfNiMknLmKpJrGsCtoFus1wB;a06iel4E;e6Zi2GoDpCuB;pervis1spect2;e0ok6X;ld;eBu5;cognQgul0LlBsolv1;at1ent2;a8recedeY;arri1et;own;que,vers4;air,orese6O;mploy1nd2xpect1;eBue;cid1rB;!a6Scov9ly2sDwB;aBei2L;t9y;iz1to43;heck1onvinc2;ppeal2ssum2tteCuthorB;iz1;nd1;i2Hra;aGeDhough5Aip 1QoCrB;anspa6Zi3;geth9le81rp8;ena6GmpCrB;r3Ftia6Q;e7Lo6O;leBst3Q;nt1;a03c01eZhYiWkiVmug,nobb3ZoPpMqueam3ZtGuBymb71;bDi generis,pBr5;erBre1P;! dup9b,viX;du1sBurb51;eq73tanda7N;atu6AeFi0VrByl3T;aBin4E;ightBy; fBfB;or5Y;adfa7Fri6;arCeBirit1lend8ot on;c2Ye34;k5se; caGlub6mb9phisticFrEuCvB;erei5Iiet;ndBth0Y;pro6G;d8ry;at1;ll1;g20nB;ce58g6;am30e9;at1co1Kem5lf3AnBre7;so5W;ath2holBient2K;ar5;cr1me,tisfac5N;aJeEheumato8iCoB;bu6Vtt58y4;ghtBv4;-w2f54;bZcEdu6MlDsBtard1;is3DoB;lu3na0;e1Euc3B;e0ondi3;b8ciB;al,st;aOeMicayu7laLopuli6LrCuB;bl5Wnjabi;eGiEoB;!b2QfCmi3CpBv4V;er,ort4C;a7u61;maBor,sti7va3;!ry;ci5Yexist2mBpa8;a1RiB;er,um;c8id;ac27rBti3;feAma32ti32v5S;i27rCsB;s41t;allCtB;-ti05i4;el;bMffKkJld InGrFth9utEverB;!aCni0Gseas,t,wB;ei0Frou0F;ll;do0Yer,si4K;d2Ug1L; bBbBgo2li7;oa5X;fashion1school;!ay; gua5UbBli7si4E;eat;eCsB;ce7er0Eo0T;dia0se;aJeIiHoBuanc1;nDrthBt1U;!eB;rn;chaCdescri5Iprof28sB;top;la0;ght5;arby,cessa4Bighbor5xt;k1usiat2;aIeHinGoCuB;d13ltip6;deDl12nBot,st;ochroBth5;me;rn,st;dblTi;nac2re;cDgenta,in,j05keshift,mmCnBscu4E;da3Uy;ali2Ioth;ab37ho;aLeHiEoCuB;mber2sh;ngBut18;stand2term;ghtweiCteraB;l,te;ght;ft-w2gBss9th4;al,eCitiB;ma3;nda3N;ngu8ps1st;aput,ind5nB;ow2;gno4Sll03mVnDpso 23rB;a3releB;va0; QaPcoMdJe28fIhibi3AiWnHsDtBvalu0S;aAeB;n43rdep1S;a7iColBubordi3O;ub6ve0;de,gB;nifica0;a3er;eriCluenOreq3U;eCiEoB;or;fini3p1Jtermi3G;mpCrB;reA;le3;ccu3Xdeq3Sppr34;fBsitu,vitro;ro0;mFpB;arDeCl0PoBrop9;li3r0M;nd2rfeA;ti4;aCeBi0R;d2Wn3H;tu20;eg4iB;c0Ite3L;aIelHiFoCumB;a7dr3G;me ma2CnCrrBs04ur5;if31;e3Oo2J;ghfalut1LspB;an2Y;lUpf1W;lCnBrdZtI;dy;f,low1;aiHener2Tiga26lob4oGraDuB;ilBng ho;ty;cCtB;ef1Ois;ef1N;od;nf1L;aPeMinLlJoErB;aCeBoz1L;q2Ptf1I;gi6nt2I;olErB; keeps,eBge0Gm9tu2Bwa36;go2i1BseeB;ab6;ish;ag35uB;e0oresce0;al,i3;dCmini7rB;ti6; up;bl1i0l2Fmiliar,r Bux;oBreach2;ff;aPfficie0lNmKnIqu4reAthere4veHxB;aAem2PplEquisi3traDuB;be2UlB;ta0;!va1H;icB;it;n,ryday; Bti0O;rou3sui3;erCiB;ne0;ge0;dBe18;er5;g9sB;t,ygo2;er;aQeHiCoBrea15ue;mina0ne,rma0ubK;dact1Jfficult,m,sCverB;ge0se;creCeJjoi0pa1XtB;a0inA;et,te; IadpHceGfiFgene1UliDpCreliAspe1UvoB;id,ut;ende0;ca3ghB;tf09;a0ni3;as1;an;facto;i5ngeroX;ly;arQertaPivil,oErCuB;nn2stoma0M;aBu0Iystal0Y;v01z1;erKgniza0loJmHnCr01veB;rt;cEduIgr13jDsCtraB;dic0Ary;eq11ta0;oi0ug4;a0Wi12;mensu18passB;io0M;ni4ss4;ci0S;in;diac,efM;aMeGizarFliKoDrBuck nak1;and new,isk,oB;kLn1C;gBldface,na fiT;us;re;autifFhiEloDnBst,yoE;eViBt;gn;v1w;nd;ul;ckDnkCrrB;en;ru0V;!wards; priori,b0Nc0Kd0Df0Ag08h07l00mp6ntiquXpRrLsleep,ttracti09uHvEwB;aCkB;wa0U;ke,re;ant garCeraB;ge;de;diDtB;heBoimmu7;ntX;toG;bitEchiv4roDtiB;fiB;ci4;ga0;raB;ry;pBt;aEetiz2rB;oprB;ia3;ing;re0;at1e;ed;le;cohFiJkaDl,oCterB;na3;of;li7;ne;olB;ic;ead;ainWed,gressiB;ve;flCra8;id;ue0; FeDvB;erB;se;pt,qB;ua3;hoc,infinitB;um;cuCtu4u3;al;ra3;erMlKoIrFsCuB;nda0;e0olu3traA;ct;te;eaCuB;pt;st;aBve;rd;aBe;ze;ra0;nt",
"Determiner": "true¦aBboth,d9e6few,l4mu8neiDplenty,s3th2various,wh0;at0ich0;evC;at,e4is,ose;everal,ome;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er",

@@ -60,3 +60,3 @@ "Adverb": "true¦a09b05d01eXfRhPinOjustNkinda,mLnIoDpBquite,r8s4t1up0very,well; to,wards5;h1iny bit,o0wiO;o,t6w05;en,us;eldom,o0uch;!me1rt0; of;hZtimes,w0B;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag04moY; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboW;deed,steX;en0;ce;or2u0;lArther0;!moL; 0ev3;examp0good,suJ;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;juAtrop;ackw2y 0;far,n0;ow;ard; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori",

"Adj|Present": "true¦a00bluZcRdMeKfHhollGidNlEmCnarrGoBp9qua8r7s4t2utt3w0;aIet,ound,ro0;ng,ug01;end0hin,op;er;e1l0mooth,our,pa8u8;i2ow;cu6daVlNpaJ;eplicaUigV;ck;aDr0;eseOime,ompt;bscu1pen,wn;atu0eLodeD;re;ay,eJi0;gNve;ow;i1r0;ee,inge;rm;l0mpty,xpress;abo4ic7;amp,e2i1oub0ry;le;ffu8r5;fu7libe0;raB;l4o0;mple9n2ol,rr1unterfe0;it;ect;juga6sum5;e1o0;se;an;nt;lig2pproxi0;ma0;te;ht",
"Comparable": "true¦0:3D;1:3H;2:3S;3:2F;a3Wb3Ec32d2Se2Lf28g1Wh1Mi1Fj1Ek1Bl14m0Yn0To0Sp0Jqu0Hr08sJtEuDvBw5y4za0R;el11ou3C;a8e6hi1Hi4ry;ck0Dde,l4n2ry,se;d,y;a4i3V;k,ry;nti36ry;a4erda1ulgar;gue,in,st;g0pcomi33;a7en2Vhi6i5ough,r4;anqu2Aen2ue;dy,g38me0ny,r03;ck,rs26;ll,me,rt,wd3K;aRcarQePhNiMkin0BlImGoEpDt7u5w4;eet,ift;b4dd0Vperfi1Yrre26;sta24t3;a8e7iff,r5u4;pUr2;a4ict,o2R;ig2Yn0N;a2ep,rn;le,rk;e1Qi2Yright0;ci1Xft,l4on,re;emn,id;a4el0;ll,rt;e6i4y;g2Pm4;!y;ek,nd2V;ck,l0mp3;a4iRort,rill,y;dy,l01rp;ve0Jxy;ce,y;d,fe,int0l1Gv0V;a9e7i6o4ude;mantic,o17sy,u4;gh,nd;ch,pe,tzy;a4d,mo0A;dy,l;gg5ndom,p4re,w;id;ed;ai1i4;ck,et;hoBi1ElAo9r6u4;ny,r4;e,p3;egna1ic5o4;fouSud;ey,k0;liXor;ain,easa1;ny;dd,i0ld,ranL;aive,e6i5o4;b3isy,rm0Xsy;ce,mb3;a4w;r,t;ad,e6ild,o5u4;nda10te;ist,o2;a5ek,l4;low;s0ty;a8ewd,i7o4ucky;f0In5o14u4ve0w0Yy0M;d,sy;e0g;ke0tt3ve0;me,r4te;ge;e5i4;nd;en;ol0ui1D;cy,ll,n4;s7t4;e4ima5;llege1rmedia4;te;ecu4ta1;re;aBe8i7o6u4;ge,m4ng1F;b3id;me0t;gh,l0;a4fWsita1;dy,v4;en0y;nd16ppy,r4;d,sh;aEenDhBiAl9oofy,r4;a7e6is0o4ue13;o4ss;vy;at,en,y;nd,y;ad,ib,ooE;a1d2;a4o4;st0;t3uiT;u2y;aEeeb3i9lat,o7r6u4;ll,n4r0T;!ny;aEesh,iend0;a4rmFul;my;erce6n4;an4e;ciB;! ;le;ir,ke,n08r,st,ul4;ty;a7erie,sse5v4xtre0G;il;nti4;al;r5s4;tern,y;ly,th0;aCe9i6ru5u4;ll,mb;nk;r5vi4;ne;e,ty;a4ep,nB;d4f,r;!ly;ppVrk;aDhAl8o6r5u4;dd0r0te;isp,uel;ar4ld,mmon,st0ward0zy;se;e4ou2;ar,vO;e4il0;ap,e4;sy;gey,lm,ri4;ng;aJiHlEoCr6u4;r0sy;ly;a8i5o4;ad,wn;g5llia1;nt;ht;sh,ve;ld,un4;cy;a5o4ue;nd,o2;ck,nd;g,tt4;er;d,ld,w2;dy;bsu7ng6we4;so4;me;ry;rd",
"Comparable": "true¦0:3C;1:3G;2:3R;3:2E;a3Vb3Dc31d2Re2Kf28g1Wh1Mi1Fj1Ek1Bl14m0Yn0To0Sp0Jqu0Hr08sJtEuDvBw5y4za0R;el11ou3B;a8e6hi1Hi4ry;ck0Dde,l4n2ry,se;d,y;a4i3U;k,ry;nti35ry;a4erda1ulgar;gue,in,st;g0pcomi32;a7en2Uhi6i5ough,r4;anqu29en2ue;dy,g37me0ny,r03;ck,rs25;ll,me,rt,wd3J;aRcarQePhNiMkin0BlImGoEpDt7u5w4;eet,ift;b4dd0Vperfi1Xrre25;sta23t3;a8e7iff,r5u4;pUr2;a4ict,o2Q;ig2Xn0N;a2ep,rn;le,rk;e1Pi2Xright0;ci1Wft,l4on,re;emn,id;a4el0;ll,rt;e6i4y;g2Om4;!y;ek,nd2U;ck,l0mp3;a4iRort,rill,y;dy,l01rp;ve0Jxy;ce,y;d,fe,int0l1Fv0V;a9e7i6o4ude;mantic,o17sy,u4;gh,nd;ch,pe,tzy;a4d,mo0A;dy,l;gg5ndom,p4re,w;id;ed;ai1i4;ck,et;hoBi1DlAo9r6u4;ny,r4;e,p3;egna1ic5o4;fouSud;ey,k0;liXor;ain,easa1;ny;dd,i0ld,ranL;aive,e6i5o4;b3isy,rm0Wsy;ce,mb3;a4w;r,t;ad,e6ild,o5u4;nda0Zte;ist,o2;a5ek,l4;low;s0ty;a8ewd,i7o4ucky;f0Hn5o13u4ve0w0Xy0L;d,sy;e0g;ke0tt3ve0;me,r4te;ge;e5i4;nd;en;ol0ui1C;cy,ll,n4;s7t4;e4ima5;llege1rmedia4;te;ecu4ta1;re;aBe8i7o6u4;ge,m4ng1E;b3id;me0t;gh,l0;a4fVsita1;dy,v4;en0y;nd15ppy,r4;d,sh;aEenDhBiAl9oofy,r4;a7e6is0o4ue12;o4ss;vy;at,en,y;nd,y;ad,ib,ooE;a1d2;a4o4;st0;t3uiS;u2y;aDeeb3i9lat,o7r6u4;ll,n4r0S;!ny;aDesh,iend0;a4rmEul;my;erce5nan4;ciB;! ;le;ir,ke,n08r,st,ul4;ty;a7erie,sse5v4xtre0G;il;nti4;al;r5s4;tern,y;ly,th0;aCe9i6ru5u4;ll,mb;nk;r5vi4;ne;e,ty;a4ep,nB;d4f,r;!ly;ppVrk;aDhAl8o6r5u4;dd0r0te;isp,uel;ar4ld,mmon,st0ward0zy;se;e4ou2;ar,vO;e4il0;ap,e4;sy;gey,lm,ri4;ng;aJiHlEoCr6u4;r0sy;ly;a8i5o4;ad,wn;g5llia1;nt;ht;sh,ve;ld,un4;cy;a5o4ue;nd,o2;ck,nd;g,tt4;er;d,ld,w2;dy;bsu7ng6we4;so4;me;ry;rd",
"Infinitive": "true¦0:8T;1:8G;2:9B;3:8Z;4:80;5:7N;6:97;7:82;8:90;9:9F;A:9E;B:8V;C:7U;D:7Q;E:7K;F:87;a80b7Ec6Od5Fe4Df43g3Zh3Vi3Bj38k35l2Wm2Pnou3Uo2Kp23qu22r18s08tWuRvPwG;aMeLiJrG;eHiG;ng,te;ak,st4;d5e7CthG;draw,er;a2d,ep;i2ke,nGrn;d0t;aGie;li9Ary;nGplift;cov0dHear7HlGplug,tie,ve83;eaAo3J;erGo;go,sta9Cval92whelm;aPeNhKoJrG;aGemb4;ffi3Emp4nsG;aCpi7;pp4ugh5;aHiHrGwaD;eat5i2;nk;aGll,m8Y;ch,se;ck4ilor,keGmp0r7L;! paD;a0Ec0De0Bh07i05l03m02n01oZpUqua45tNuIwG;all6Ze2DiG;m,ng;bIccumb,ffHggeBmm8Zp2ErG;mouFvi2;er,i3;li7Ymer8siGveD;de,st;aKe7RiIrG;ang4eGi2;ng1Zw;fGnV;f5le;gg0rGte ch5F;t4ve;awn,eJiIlHoGri6B;il,of;ay,it;ll,t;ak,nd;lGot6Lw;icEve;eak,i0K;aAugg4;aGi9;m,y;ft,nGt;g,k;aIi5FoHriGun;nk,v5R;ot,rt5;ke,rp5tt0ve;eGll,nd,que7Iv0w;!k,m;aven8ul7W;dd5tis17y;att4eHip5oG;am,ut;a05b03c01d00fXgroup,heaWiVlTmSnRpPq30sLtJvG;amp,eHiGo2P;sEve;l,rt;i7rG;ie2ofE;eFiItGurfa3;aDo1VrG;a5TiCuctu7;de,gn,st;el,hra1lGreseF;a3e66;d0ew,o02;a5Oe2Vo2;a6eFiGoad,y;e2nq3Fve;mbur1nf2O;r1t;inHleCocus,reAuG;el,rbiA;an3e;aCu3;ei2k7Ela3IoGyc4;gni58nci4up,v0;oot,uG;ff;ct,d,liG;se,ze;aAen5Nit,o6;aUerSiRlumm0UoQrIuG;b3Jke,niArGt;poDs6S;eKoG;cId,fe33hibEnoHpo1sp0tru9vG;e,i9o4S;un3;la34u7;a5Ec1NdHf0ocSsup0EvG;a5JeF;etermi42iC;a5Brt4T;er3npoiF;cei2fo3BiAmea6plex,sGva9;eve7iB;mp0n13rGtrol,ve,y;a5Pt5L;bser2cJpIutHverGwe;lap,s15tu65u1;gr4Mnu1Wpa3;era6i3Spo1;cupy;aLe08iHoGultiply;leBu60;micInHsG;pla3s;ce,g4us;!k;im,ke,na8;aNeJiGo1u35;e,ke,ng0quGv5;eGi62;fy;aInG;d,gG;th5;rn,ve;ng20u19;eHnG;e3Mow;ep;o43uG;gg4xtaG;po1;gno7mUnG;cSdQfPgeBhOitia6ju7q0YsMtIun5OvG;eGo0N;nt,st;erHimi5LoxiOrG;odu3u9;aCn,prGru5L;et;iBpi7tGu7;il,ruC;abEibE;eBo25u1;iGul8;ca6;i6lu9;b57mer1pG;aDer44ly,oHrG;is5Io2;rt,se,veG;riA;aIear,iGoiBuD;de,jaGnd0;ck;mp0ng,pp5ve;ath0et,i2le1PoIrG;aGow;b,pp4ze;!ve4O;ast5er3Ji54lOorJrHuG;lf3Rr3N;ee30olG;ic;b3CeIfeEgGs4A;eGi2;!t;clo1go,sGwa4G;had2X;ee,i2M;a0FdEl0Dm08nQquip,rPsOt3CvMxG;cKeDha4iJpHtG;ing0Pol;eGi7loEo1un8;ct,di6;st,t;lu9;alua6oG;ke,l2;chew,pou1tab11;a1u4F;aWcTdRfQgOhan3joy,lNqMrLsuKtIvG;e0TisG;a8i4K;er,i3rG;a2Jen2XuB;e,re;i2Vol;ui7;ar8iB;a8eGra2ulf;nd0;or3;ang0oGu7;r1w;lo1ou0ArHuG;mb0;oa2Ly3Y;b4ct;bHer8pG;hasi1Yow0;a0Tody,rG;a3oiG;d0l;ap1eCuG;ci3Ode;rGt;ma0Nn;a0Ne01iIo,rGwind4;aw,ed8oG;p,wn;agno1e,ff0g,mi29sJvG;eGul8;rGst;ge,t;ab4bTcNlod8mant4pLru3GsKtG;iGoDu2W;lHngG;uiA;!l;ol2ua9;eGla3o1ro2;n1r1;a18e2WlJoHuG;ss;uGv0;ra8;aGo1;im;a37ur1;af5bXcRduCep5fPliOmLnJpIra1Uta1OvG;eGol2;lop;aDiCoD;oGy;te,un3;eHoG;liA;an;mEv0;a3i04oGraud,y;rm;ei2iKoIrG;ee,yG;!pt;de,mGup4;missi2Tpo1;de,ma6ph0;aIrHuG;g,nk;ief;rk;mp5rk5uF;a03ea1h01i00lZoHrGurta17;a2ea6ipp4;ales3eWhabEinci9llVmTnGrro9;cQdNfLju7no6qu0sJtIvG;eGin3;ne,r8;a0Hin23ribu6;er2iGoli25pi7titu6ult;d0st;iGroFu1;de,gu7rm;eHoG;ne;mn,n1;eGlu9;al,i2;buBe,men3pG;e6ly;eCi9u9;r3xiB;ean1iQ;rcumveFte;eGoo1;riAw;ncGre5t0ulk;el;aYeSi1TlPoNrJuG;iHrGy;st,y;ld;aIeHiGoad5;ng;astfeKed;ke;il,l10mbaGrrMth0;rd;aHeGow;ed;ze;!come,gKha2liJnd,queaIstHtGwild0;ray;ow;th;e2tt4;in;bysEckfi7ff4tG;he;it;b13c0Rd0Iffix,gr0Hl0Dm09n03ppZrXsQttNuLvIwaG;it,k5;en;eDoG;id;rt;gGto06;meF;aHeBraC;ct;ch;pi7sHtoG;niA;aIeGi03u7;mb4rt;le;il;re;g0Fi1ou1rG;an8i2;eaIly,oiFrG;ai1o2;nt;r,se;aKiOnHtG;icipa6;eHoGul;un3y;al;ly1;aHu1;se;lgaGze;ma6;iIlG;e8oGu9;t,w;gn;ee;aZjLmiIoHsoG;rb;pt,rn;niGt;st0;er;ouHuB;st;rn;cJhie2knowled8quiGtiva6;es3re;ce;ge;eMomIrHusG;e,tom;ue;moHpG;any,liA;da6;te;pt;andMet,i9oIsG;coIol2;ve;liArt,uG;nd;sh;de;on",

@@ -63,0 +63,0 @@ "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ight,ust;an,o0;uld",

import lexData from './_data.js'
import { unpack } from 'efrt'
import misc from './misc.js'
import emoticons from './emoticons.js'
import toPlural from '../../methods/transform/nouns/toPlural/index.js'
import irregularPlurals from '../irregulars/plurals.js'
// unpack our lexicon of words

@@ -37,2 +39,5 @@ // (found in ./lexicon/)

})
// add ':)'
emoticons.forEach(str => lexicon[str] = 'Emoticon')
// misc cleanup

@@ -39,0 +44,0 @@ delete lexicon['']

@@ -19,5 +19,5 @@ // generated in ./lib/pairs

"PastTense": {
"rules": "een|1,egan|2in,on|in,pun|1in,wn|1,ave|ive,poke|1eak,hose|2ose,roke|1eak,roze|1eeze,ode|ide,orbade|3id,hone|1ine,tole|1eal,rose|1ise,woke|1ake,wrote|2ite,made|2ke,came|1ome,ove|ive,ore|ear,elped|3,elcomed|6,hared|4,nvited|5,eclared|6,eard|3,avelled|4,ombined|6,uided|4,etired|5,choed|3,ncelled|4,epeated|5,moked|4,entred|5,dhered|5,esired|5,ompeted|6,erseded|6,ramed|4,qualled|4,iloted|4,stponed|6,uelled|3,opelled|4,gnored|5,xtruded|6,caled|4,ndured|5,lamed|4,quared|5,mpeded|5,rouped|4,efeated|5,robed|4,lid|3e,magined|6,nselled|4,uthored|6,ebuted|4,shrined|6,tialled|4,erfered|6,eaped|3,yped|3,laked|4,tirred|3,ooted|3,leated|4,ncited|5,oubted|4,mpelled|4,nnulled|4,pined|4,ircled|5,ecited|5,reathed|6,nvaded|5,onfided|6,pedited|6,alcined|6,ycotted|5,dmired|5,xcreted|6,ubed|3,taked|4,onfined|6,heated|4,rimed|4,amelled|4,achined|6,litzed|4,xcited|5,xpelled|4,xtolled|4,ouled|3,imicked|4,ivalled|4,eeped|3,naked|4,tyled|4,iased|3,nhaled|5,oeuvred|6,grammed|6,kied|2,miled|4,pited|4,lodded|3,eterred|4,hoked|4,kidded|3,pleted|5,cided|4,plored|5,stored|5,longed|4,filed|4,rbed|2,suaded|5,ciled|4,edded|2,tined|4,phoned|5,fled|3,nited|4,iped|3,hauled|4,treated|5,nnelled|4,basted|5,njured|5,twined|5,uzzed|3,did|1o,vided|4,old|ell,pared|4,mbed|2,stood|2and,pired|4,held|1old,vened|4,cored|4,read|4,piled|4,aped|3,gled|3,named|4,arred|2,oated|3,kled|3,ooled|3,uned|3,figured|6,bid|3,ound|ind,oped|2,ibed|3,quired|5,uled|3,oded|3,mmed|1,ceded|4,cured|4,sided|4,voked|4,rled|2,outed|3,mined|4,urred|2,ighted|4,umed|3,sured|4,iked|3,pled|3,fed|1,bbed|1,eled|2,luded|4,aid|1y,ferred|3,tled|3,dled|3,raded|4,oted|3,eed|2,aled|2,lined|4,mped|2,fted|2,lted|2,gged|1,eted|2,xed|1,bled|3,pted|2,tured|4,uted|3,nned|1,ued|2,iled|2,yed|1,rted|2,pped|1,tted|1,wed|1,lled|2,ited|2,med|1,sted|2,ssed|2,ged|2,ved|2,nted|2,ked|1,cted|2,ced|2,ied|y,hed|1,sed|2,ded|1,zed|2,ned|1,red|1,ated|3,ell|all,rought|1ing,hought|1ink,eft|1ave,eant|3,ealt|3,eat|3,hot|2ot,urt|3,eapt|3,elt|1el,went|go,built|4d,at|it,got|1et,ut|2,it|2,et|2,ent|2d,ept|1ep,st|2,truck|2ike,nuck|1eak,tunk|1ink,ank|ink,ook|ake,lew|1y,drew|2aw,saw|1ee,ew|ow,ug|ig,ang|ing,ung|ing,nderlay|5ie,dezvous|7",
"exceptions": "was|is,were|are,had|2ve,led|2ad,met|2et,cited|4,focused|5,sought|1eek,lost|3e,defined|6,died|3,hired|4,bought|1uy,ran|1un,controlled|7,taught|1each,hoped|4,shed|4,refined|6,caught|2tch,owed|3,fought|1ight,fired|4,fed|2ed,pied|3,fared|4,tied|3,fled|3e,cared|4,ate|eat,dyed|3,lit|2ght,winged|4,bred|3ed,pent|3,wired|4,persevered|9,baked|4,dined|4,fined|4,shored|5,hid|3e,padded|3,waned|4,wove|1eave,lied|3,wasted|5,sloped|5,joked|4,ached|4,baled|4,bit|3e,bled|3ed,boned|4,caned|4,dispelled|6,egged|3,hung|1ang,patrolled|6,tasted|5,faked|4,bored|4,eyed|3,gamed|4,gassed|3,pored|4,timed|4,toned|4,zoned|4,poked|4,been|2,said|2y,found|1ind,took|1ake,came|1ome,gave|1ive,fell|1all,brought|2ing,rose|1ise,grew|2ow,put|3,sent|3d,spent|4d,spoke|2eak,left|2ave,won|1in,told|1ell,meant|4,heard|4,got|1et,arose|2ise,read|4,let|3,hit|3,cost|4,dealt|4,laid|2y,drove|2ive,sat|1it,cast|4,beat|4,flew|2y,lent|3d,sang|1ing,banned|3,jarred|3,wound|1ind,omitted|4,quit|4,rang|1ing,fit|3,rent|3d,bet|3,sank|1ink,reaped|4,manned|3,rode|1ide,rebutted|5,bound|1ind,barred|3,recast|6,netted|3,tanned|3,plotted|4,tore|1ear,spun|2in,pitted|3,shone|2ine,donned|3,dove|1ive,spat|2it,bent|3d,blown|4,leapt|4,seeped|4,sewn|3,twinned|4,wrung|2ing,deterred|5",
"rev": "egin|2an,lan|3ned,nderpin|7ned,kin|3ned,tun|3ned,hin|3ned,pan|3ned,can|3ned,n|1ed,ecome|2ame,hoose|2se,trike|2uck,lee|2d,trive|2ove,vercome|4ame,lide|3,reeze|1oze,hake|1ook,nderlie|5ay,istake|3ook,etake|2ook,wake|1oke,write|2ote,make|2de,rtake|2ook,see|1aw,e|1d,elp|3ed,roup|4ed,oop|3ed,velop|5ed,eep|1pt,mp|2ed,p|1ped,hink|1ought,eek|ought,reak|1oke,neak|1uck,tink|1unk,rink|1ank,k|1ed,ommit|5ted,ermit|5ted,oadcast|7,dmit|4ted,hoot|2t,plit|4,hut|3,llot|4ted,nit|3ted,orget|3ot,egret|5ted,hrust|5,ormat|5ted,hat|3ted,lat|3ted,urt|3,cquit|5ted,urst|4,ransmit|7ted,emit|4ted,pot|3ted,cut|3,submit|6ted,set|3,t|1ed,now|1ew,trew|4n,draw|2ew,throw|3ew,w|1ed,uy|ought,ey|2ed,pay|2id,oy|2ed,ay|2ed,y|ied,ravel|5led,ancel|5led,qual|4led,uel|3led,ounsel|6led,nitial|6led,nnul|4led,namel|5led,xtol|4led,ival|4led,teal|1ole,eel|1lt,trol|4led,sell|1old,nnel|4led,pel|3led,l|1ed,ransfer|7red,pur|3red,lur|3red,tir|3red,par|3red,nfer|4red,wear|1ore,bear|1ore,efer|4red,cur|3red,r|1ed,pread|5,hed|3,rind|1ound,mbed|4ded,reed|2d,hred|4ded,eread|5,orbid|3ade,leed|2d,lod|3ded,kid|3ded,build|4t,stand|2ood,hold|1eld,bid|3,d|1ed,cho|3ed,go|went,do|1id,tem|3med,um|2med,rim|3med,kim|3med,m|1ed,lug|3ged,ig|ug,pring|2ang,gg|2ed,ang|ung,long|4ed,og|2ged,ling|1ung,ag|2ged,ub|2bed,ib|2bed,ob|2bed,rb|2ed,ab|2bed,mb|2ed,imic|4ked,dezvous|7,s|1ed,ki|2ed,z|1ed,f|1ed,x|1ed,h|1ed"
"rules": "een|1,egan|2in,on|in,pun|1in,wn|1,ave|ive,poke|1eak,hose|2ose,roke|1eak,roze|1eeze,ode|ide,orbade|3id,hone|1ine,tole|1eal,rose|1ise,woke|1ake,wrote|2ite,made|2ke,came|1ome,ove|ive,ore|ear,elped|3,elcomed|6,hared|4,nvited|5,eclared|6,eard|3,avelled|4,ombined|6,uided|4,etired|5,choed|3,ncelled|4,epeated|5,moked|4,entred|5,dhered|5,esired|5,ompeted|6,erseded|6,ramed|4,qualled|4,iloted|4,stponed|6,uelled|3,opelled|4,gnored|5,xtruded|6,caled|4,ndured|5,lamed|4,quared|5,mpeded|5,rouped|4,efeated|5,robed|4,lid|3e,magined|6,nselled|4,uthored|6,ebuted|4,shrined|6,tialled|4,erfered|6,eaped|3,yped|3,laked|4,tirred|3,ooted|3,leated|4,ncited|5,oubted|4,mpelled|4,nnulled|4,pined|4,ircled|5,ecited|5,reathed|6,nvaded|5,onfided|6,pedited|6,alcined|6,ycotted|5,dmired|5,xcreted|6,ubed|3,taked|4,onfined|6,heated|4,rimed|4,amelled|4,achined|6,litzed|4,xcited|5,xpelled|4,xtolled|4,ouled|3,imicked|4,ivalled|4,eeped|3,naked|4,tyled|4,iased|3,nhaled|5,oeuvred|6,grammed|6,kied|2,miled|4,pited|4,lodded|3,eterred|4,hoked|4,kidded|3,pleted|5,cided|4,plored|5,stored|5,longed|4,filed|4,rbed|2,suaded|5,ciled|4,edded|2,tined|4,phoned|5,fled|3,nited|4,iped|3,hauled|4,treated|5,nnelled|4,basted|5,njured|5,twined|5,uzzed|3,did|1o,vided|4,old|ell,pared|4,mbed|2,stood|2and,pired|4,held|1old,vened|4,cored|4,read|4,piled|4,aped|3,gled|3,named|4,arred|2,oated|3,kled|3,ooled|3,uned|3,figured|6,bid|3,ound|ind,oped|2,ibed|3,quired|5,uled|3,oded|3,mmed|1,ceded|4,cured|4,sided|4,voked|4,rled|2,outed|3,mined|4,urred|2,ighted|4,umed|3,sured|4,iked|3,pled|3,fed|1,bbed|1,eled|2,luded|4,aid|1y,ferred|3,tled|3,dled|3,raded|4,oted|3,eed|2,aled|2,lined|4,mped|2,fted|2,lted|2,gged|1,eted|2,xed|1,bled|3,pted|2,tured|4,uted|3,nned|1,ued|2,iled|2,yed|1,rted|2,pped|1,tted|1,wed|1,lled|2,ited|2,med|1,sted|2,ssed|2,ged|2,ved|2,nted|2,ked|1,cted|2,ced|2,ied|y,hed|1,sed|2,ded|1,zed|2,ned|1,red|1,ated|3,ell|all,rought|1ing,hought|1ink,eft|1ave,eant|3,ealt|3,eat|3,hot|2ot,urt|3,eapt|3,elt|1el,went|go,built|4d,at|it,got|1et,ut|2,it|2,et|2,ent|2d,ept|1ep,st|2,truck|2ike,nuck|1eak,tunk|1ink,ank|ink,ook|ake,lew|1y,drew|2aw,saw|1ee,ew|ow,ug|ig,ang|ing,ung|ing,nderlay|5ie,dezvous|7,wam|1im",
"exceptions": "was|is,were|are,had|2ve,led|2ad,met|2et,cited|4,focused|5,sought|1eek,lost|3e,defined|6,died|3,hired|4,bought|1uy,ran|1un,controlled|7,taught|1each,hoped|4,shed|4,refined|6,caught|2tch,owed|3,fought|1ight,fired|4,fed|2ed,pied|3,fared|4,tied|3,fled|3e,cared|4,ate|eat,dyed|3,lit|2ght,winged|4,bred|3ed,pent|3,wired|4,persevered|9,baked|4,dined|4,fined|4,shored|5,hid|3e,padded|3,waned|4,wove|1eave,lied|3,wasted|5,sloped|5,joked|4,ached|4,baled|4,bit|3e,bled|3ed,boned|4,caned|4,dispelled|6,egged|3,hung|1ang,patrolled|6,tasted|5,faked|4,bored|4,eyed|3,gamed|4,gassed|3,pored|4,timed|4,toned|4,zoned|4,poked|4,dared|4,been|2,said|2y,found|1ind,took|1ake,came|1ome,gave|1ive,fell|1all,brought|2ing,rose|1ise,grew|2ow,put|3,sent|3d,spent|4d,spoke|2eak,left|2ave,won|1in,told|1ell,meant|4,heard|4,got|1et,arose|2ise,read|4,let|3,hit|3,cost|4,dealt|4,laid|2y,drove|2ive,sat|1it,cast|4,beat|4,flew|2y,lent|3d,sang|1ing,banned|3,jarred|3,wound|1ind,omitted|4,quit|4,rang|1ing,fit|3,rent|3d,bet|3,sank|1ink,reaped|4,manned|3,rode|1ide,rebutted|5,bound|1ind,barred|3,recast|6,netted|3,tanned|3,plotted|4,tore|1ear,spun|2in,pitted|3,shone|2ine,donned|3,dove|1ive,spat|2it,bent|3d,blown|4,leapt|4,seeped|4,sewn|3,twinned|4,wrung|2ing,deterred|5",
"rev": "egin|2an,lan|3ned,nderpin|7ned,kin|3ned,tun|3ned,hin|3ned,pan|3ned,can|3ned,n|1ed,ecome|2ame,hoose|2se,trike|2uck,lee|2d,trive|2ove,vercome|4ame,lide|3,reeze|1oze,hake|1ook,nderlie|5ay,istake|3ook,etake|2ook,wake|1oke,write|2ote,make|2de,rtake|2ook,see|1aw,e|1d,elp|3ed,roup|4ed,oop|3ed,velop|5ed,eep|1pt,mp|2ed,p|1ped,hink|1ought,eek|ought,reak|1oke,neak|1uck,tink|1unk,rink|1ank,k|1ed,ommit|5ted,ermit|5ted,oadcast|7,dmit|4ted,hoot|2t,plit|4,hut|3,llot|4ted,nit|3ted,orget|3ot,egret|5ted,hrust|5,ormat|5ted,hat|3ted,lat|3ted,urt|3,cquit|5ted,urst|4,ransmit|7ted,emit|4ted,pot|3ted,cut|3,submit|6ted,set|3,t|1ed,now|1ew,trew|4n,draw|2ew,throw|3ew,w|1ed,uy|ought,ey|2ed,pay|2id,oy|2ed,ay|2ed,y|ied,ravel|5led,ancel|5led,qual|4led,uel|3led,ounsel|6led,nitial|6led,nnul|4led,namel|5led,xtol|4led,ival|4led,teal|1ole,eel|1lt,trol|4led,sell|1old,nnel|4led,pel|3led,l|1ed,ransfer|7red,pur|3red,lur|3red,tir|3red,par|3red,nfer|4red,wear|1ore,bear|1ore,efer|4red,cur|3red,r|1ed,pread|5,hed|3,rind|1ound,mbed|4ded,reed|2d,hred|4ded,eread|5,orbid|3ade,leed|2d,lod|3ded,kid|3ded,build|4t,stand|2ood,hold|1eld,bid|3,d|1ed,cho|3ed,go|went,do|1id,tem|3med,um|2med,rim|3med,kim|3med,wim|1am,m|1ed,lug|3ged,ig|ug,pring|2ang,gg|2ed,ang|ung,long|4ed,og|2ged,ling|1ung,ag|2ged,ub|2bed,ib|2bed,ob|2bed,rb|2ed,ab|2bed,mb|2ed,imic|4ked,dezvous|7,s|1ed,ki|2ed,z|1ed,f|1ed,x|1ed,h|1ed"
},

@@ -31,5 +31,5 @@ "PresentTense": {

"rules": "east|4,uthwest|7,ot|2test,it|2test,lat|3test,weet|4test,t|1est,ig|2gest,ng|2est,hin|3nest,n|1est,nner|4most,uter|4most,r|1est,rey|3est,ricey|3iest,y|iest,ross|4est,f|1est,b|1est,m|1est,p|1est,h|1est,w|1est,k|1est,l|1est,d|1est,e|1st",
"exceptions": "good|best,bad|worst,wet|3test,far|1urthest,gay|3est,neat|4test,shy|3est,fat|3test,late|4st,wide|4st,fine|4st,severe|6st,fake|4st,pale|4st,rare|4st,rude|4st,sore|4st",
"rev": "east|4,argest|4,iggest|2,implest|5,afest|3,uthwest|7,hinnest|3,ncerest|5,urthest|ar,ravest|4,utest|3,eriest|4,rossest|4,dsomest|5,ugest|3,riciest|3ey,emotest|5,quarest|5,rangest|5,ipest|3,hitest|4,urest|3,cest|2,ermost|2,fest|1,best|1,amest|3,ngest|2,uest|2,yest|1,tlest|3,mest|1,blest|3,sest|2,pest|1,hest|1,ttest|1,west|1,rest|1,kest|1,nest|1,lest|1,test|1,dest|1,iest|y"
"exceptions": "good|best,bad|worst,wet|3test,far|1urthest,gay|3est,neat|4test,shy|3est,fat|3test,late|4st,wide|4st,fine|4st,severe|6st,fake|4st,pale|4st,rare|4st,rude|4st,sore|4st,dire|4st",
"rev": "east|4,argest|4,iggest|2,implest|5,afest|3,uthwest|7,hinnest|3,ncerest|5,urthest|ar,ravest|4,utest|3,eriest|4,rossest|4,dsomest|5,ugest|3,riciest|3ey,emotest|5,quarest|5,rangest|5,ipest|3,urest|3,cest|2,ermost|2,fest|1,best|1,amest|3,itest|3,ngest|2,uest|2,yest|1,tlest|3,mest|1,blest|3,sest|2,pest|1,hest|1,ttest|1,west|1,rest|1,kest|1,nest|1,lest|1,test|1,dest|1,iest|y"
}
}

@@ -91,2 +91,3 @@ //just a foolish lookup of known suffixes

ette: Sing,
wner: Sing,//owner
fies: Pres,

@@ -93,0 +94,0 @@ fore: Avb,

@@ -14,2 +14,5 @@ export default [

[/.{4}s['‘’‛‵′`´]$/, 'Possessive', "flanders'"],
//from https://www.regextester.com/106421
[/^([\u00a9\u00ae\u2319-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/, 'Emoji', 'emoji-range']
]

@@ -9,3 +9,3 @@ const entity = ['Person', 'Place', 'Organization']

is: 'Noun',
not: ['Plural'],
not: ['Plural', 'Uncountable'],
},

@@ -78,3 +78,3 @@ // 'Canada'

is: 'Noun',
not: ['Singular'],
not: ['Singular', 'Uncountable'],
},

@@ -81,0 +81,0 @@ // 'gravity'

const chunks = function () {
let carry = []
let roll = null
let same = null
let ptr = null
let current = null
this.docs.forEach(terms => {
terms.forEach(term => {
// start a new chunk
if (term.chunk !== same) {
if (roll) {
roll[2] = term.index[1]
carry.push(roll)
if (term.chunk !== current) {
if (ptr) {
ptr[2] = term.index[1]
carry.push(ptr)
}
same = term.chunk
roll = [term.index[0], term.index[1]]
current = term.chunk
ptr = [term.index[0], term.index[1]]
}
})
})
if (roll) {
carry.push(roll)
if (ptr) {
carry.push(ptr)
}
return this.update(carry)
let parts = this.update(carry)
// split up verb-phrases, and noun-phrases
parts = parts.map(c => {
if (c.has('<Noun>')) {
return c.nouns()
}
// if (c.has('<Verb>')) {
// if (c.verbs().length > 1) {
// console.log(c.text())
// }
// }
return c
})
return parts
}
export default chunks

@@ -72,3 +72,3 @@ const rules = [

let terms = getDoc([todo.pointer], document)[0]
const env = typeof process === 'undefined' ? self.env || {} : process.env
const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env
terms.forEach(term => {

@@ -75,0 +75,0 @@ if (term.chunk === todo.chunk) {

const setChunk = function (term, chunk) {
const env = typeof process === 'undefined' ? self.env || {} : process.env
const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env
if (env.DEBUG_CHUNKS) {

@@ -4,0 +4,0 @@ let str = (term.normal + "'").padEnd(8)

// return the nth elem of a doc
export const getNth = (doc, n) => (typeof n === 'number' ? doc.eq(n) : doc)
// guard against superlative+comparative forms
const toRoot = function (adj) {
const { adjFromComparative, adjFromSuperlative } = adj.methods.two.transform
let str = adj.text('normal')
if (adj.has('#Comparative')) {
return adjFromComparative(str, adj.model)
}
if (adj.has('#Superlative')) {
return adjFromSuperlative(str, adj.model)
}
return str
}
const api = function (View) {

@@ -9,12 +22,15 @@

super(document, pointer, groups)
this.viewType = 'adjectives'
this.viewType = 'Adjectives'
}
json(opts = {}) {
const { adjToAdverb, adjToNoun } = this.methods.two.transform
const { adjToAdverb, adjToNoun, adjToSuperlative, adjToComparative } = this.methods.two.transform
opts.normal = true
return this.map(m => {
let json = m.toView().json(opts)[0] || {}
let str = toRoot(m)
json.adjective = {
adverb: adjToAdverb(json.normal),
noun: adjToNoun(json.normal),
adverb: adjToAdverb(str),
noun: adjToNoun(str),
superlative: adjToSuperlative(str, this.model),
comparative: adjToComparative(str, this.model),
}

@@ -24,2 +40,38 @@ return json

}
adverbs() {
return this.before('#Adverb+$').concat(this.after('^#Adverb+'))
}
toComparative(n) {
const { adjToComparative } = this.methods.two.transform
return getNth(this, n).map(adj => {
let root = toRoot(adj)
let str = adjToComparative(root, this.model)
return adj.replaceWith(str)
})
}
toSuperlative(n) {
const { adjToSuperlative } = this.methods.two.transform
return getNth(this, n).map(adj => {
let root = toRoot(adj)
let str = adjToSuperlative(root, this.model)
return adj.replaceWith(str)
})
}
toAdverb(n) {
const { adjToAdverb } = this.methods.two.transform
return getNth(this, n).map(adj => {
let root = toRoot(adj)
let str = adjToAdverb(root, this.model)
return adj.replaceWith(str)
})
}
toNoun(n) {
const { adjToNoun } = this.methods.two.transform
return getNth(this, n).map(adj => {
let root = toRoot(adj)
let str = adjToNoun(root, this.model)
return adj.replaceWith(str)
})
}
}

@@ -32,3 +84,13 @@

}
View.prototype.superlatives = function (n) {
let m = this.match('#Superlative')
m = getNth(m, n)
return new Adjectives(m.document, m.pointer)
}
View.prototype.comparatives = function (n) {
let m = this.match('#Comparative')
m = getNth(m, n)
return new Adjectives(m.document, m.pointer)
}
}
export default api

@@ -6,2 +6,3 @@ import addPossessives from './possessives/index.js'

import addAdverbs from './adverbs/index.js'
import addAdjectives from './adjectives/index.js'
import addSelections from './selections/index.js'

@@ -15,2 +16,3 @@

addQuotations(View)
addAdjectives(View)
addAdverbs(View)

@@ -17,0 +19,0 @@ addAcronyms(View)

@@ -15,3 +15,2 @@ // return the nth elem of a doc

['hyphenated', '@hasHyphen .'],
['adjectives', '#Adjective'],
['hashTags', '#HashTag'],

@@ -18,0 +17,0 @@ ['emails', '#Email'],

@@ -27,3 +27,3 @@ import methods from './methods.js'

Object.keys(opts).forEach(fn => {
if (opts[fn]) {
if (methods.hasOwnProperty(fn)) {
methods[fn](this, opts[fn])

@@ -30,0 +30,0 @@ }

@@ -48,4 +48,6 @@ const termLoop = function (view, cb) {

let terms = docs[docs.length - 1]
let lastTerm = terms[terms.length - 1]
lastTerm.post = lastTerm.post.replace(/ /g, '')
if (terms && terms.length > 0) {
let lastTerm = terms[terms.length - 1]
lastTerm.post = lastTerm.post.replace(/ /g, '')
}
},

@@ -82,3 +84,3 @@

'honorifics': (doc) => {
doc.honorifics().remove()
doc.match('#Honorific+ #Person').honorifics().remove()
},

@@ -98,4 +100,7 @@ // remove needless adverbs

},
// turn "fifty" into "50"
'numbers': (doc) => {
doc.numbers().toNumber()
},
}

@@ -9,5 +9,5 @@ import isSubordinate from './isSubordinate.js'

// team's captain
if (tmp.has('#Possessive .? #Noun')) {
tmp = tmp.remove('#Possessive')
}
// if (tmp.has('#Possessive .? #Noun')) {
tmp = tmp.not('#Possessive')
// }
return tmp.first()

@@ -14,0 +14,0 @@ }

const keep = { tags: true }
const hasPlural = function (parsed) {
let { root } = parsed
if (root.has('(#Uncountable|#Possessive|#ProperNoun|#Place|#Pronoun)')) {
return false
}
return true
}
const toPlural = function (m, parsed) {

@@ -8,2 +16,6 @@ // already plural?

}
// is a plural appropriate?
if (!hasPlural(parsed)) {
return m
}
const { methods, model } = m.world

@@ -14,4 +26,3 @@ const { nounToPlural } = methods.two.transform

let plural = nounToPlural(str, model)
m.replace(parsed.root, plural, keep).tag('Plural', 'toPlural')
m.match(parsed.root).replaceWith(plural, keep).tag('Plural', 'toPlural')
// should we change the determiner/article?

@@ -18,0 +29,0 @@ if (parsed.determiner.has('(a|an)')) {

@@ -14,7 +14,6 @@ const keep = { tags: true }

m.replace(parsed.root, single, keep).tag('Singular', 'toPlural')
// should we change the determiner/article?
// m.debug()
return m
}
export default toSingular

@@ -23,2 +23,6 @@ const findNouns = function (doc) {

m = m.splitOn('[#Noun] (here|there)', 0)
// its great purposes
// m = m.splitAfter('#Possessive')
// his excuses
// m = m.splitAfter('(his|hers|yours|ours|theirs)')
//ensure there's actually a noun

@@ -25,0 +29,0 @@ m = m.if('#Noun')

@@ -25,3 +25,3 @@ import find from './find.js'

return getNth(this, n).map(p => {
let json = p.toView().json()[0]
let json = p.toView().json(n)[0]
let parsed = parse(p)

@@ -28,0 +28,0 @@ json.fraction = parsed

@@ -24,3 +24,3 @@ import find from './find.js'

return doc.map(p => {
let json = p.toView().json()[0]
let json = p.toView().json(n)[0]
let parsed = parse(p)

@@ -27,0 +27,0 @@ json.number = {

@@ -12,14 +12,33 @@ const toFuture = function (s) {

verbs = verbs.slice(1)
// remove any sorta infinitive - 'to engage'
verbs = verbs.filter((v) => !v.lookBehind('to$').found)
// verbs.debug()
// otherwise, I guess so?
if (verbs.found) {
verbs.verbs().toInfinitive()
// which following-verbs should we also change?
let toChange = verbs.filter((vb) => {
// remove any sorta infinitive - 'to engage'
if (vb.lookBehind('to$').found) {
return false
}
// is watching
if (vb.has('#Copula #Gerund')) {
return true
}
// keep -ing verbs
if (vb.has('#Gerund')) {
return false
}
// he is green and he is friendly
if (vb.has('#Copula')) {
return true
}
// 'he will see when he watches'
if (vb.has('#PresentTense') && s.has('(when|as|how)')) {
return false
}
return true
})
// otherwise, change em too
if (toChange.found) {
toChange.toInfinitive()
}
}
// s = s.fullSentence()
// s.compute('chunks')
return s
}
export default toFuture

@@ -23,3 +23,3 @@ import find from './find.js'

return doc.map(p => {
let json = p.toView().json()[0]
let json = p.toView().json(n)[0]
let parsed = parse(p)

@@ -26,0 +26,0 @@ json.person = {

@@ -11,3 +11,3 @@ import { doDoes, getTense } from '../lib.js'

if (str) {
vb.replace(root, str, keep)
vb.replace(root, str, keep).tag('Verb').firstTerm().tag('Infinitive')
}

@@ -14,0 +14,0 @@ // remove any auxiliary terms

@@ -54,2 +54,5 @@ import getSubject from './parse/getSubject.js'

const getTense = function (m) {
if (m.has('#Infinitive')) {
return 'Infinitive'
}
if (m.has('#Participle')) {

@@ -56,0 +59,0 @@ return 'Participle'

/** log the decision-making to console */
const verbose = function (set) {
let env = typeof process === 'undefined' ? self.env || {} : process.env //use window, in browser
const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env //use window, in browser
env.DEBUG_TAGS = set === 'tagger' || set === true ? true : ''

@@ -6,0 +6,0 @@ env.DEBUG_MATCH = set === 'match' || set === true ? true : ''

@@ -74,1 +74,6 @@ export type Document = Term[][]

}
export interface matchOptions {
fuzzy?: number,
caseSensitive?: boolean,
}

@@ -1,2 +0,2 @@

import { Lexicon, Plugin } from './misc'
import { Lexicon, Plugin, matchOptions } from './misc'
import View from './view/one'

@@ -14,3 +14,3 @@

/** turn a match-string into json */
export function parseMatch(): object[]
export function parseMatch(match: string, opts?: matchOptions): object[]
/** grab library internals */

@@ -25,3 +25,3 @@ export function world(): object

/** log our decision-making for debugging */
export function verbose(bool?: boolean): any
export function verbose(toLog?: boolean | string): any
/** current semver version of the library */

@@ -28,0 +28,0 @@ export const version: string

@@ -1,2 +0,2 @@

import { Lexicon, Plugin } from './misc'
import { Lexicon, Plugin, matchOptions } from './misc'
import View from './view/three'

@@ -14,3 +14,3 @@

/** turn a match-string into json */
export function parseMatch(): object[]
export function parseMatch(match: string, opts?: matchOptions): object[]
/** grab library internals */

@@ -25,3 +25,3 @@ export function world(): object

/** log our decision-making for debugging */
export function verbose(bool?: boolean): any
export function verbose(toLog?: boolean | string): any
/** current semver version of the library */

@@ -28,0 +28,0 @@ export const version: string

@@ -1,2 +0,2 @@

import { Lexicon, Plugin } from './misc'
import { Lexicon, Plugin, matchOptions } from './misc'
import View from './view/two'

@@ -14,3 +14,3 @@

/** turn a match-string into json */
export function parseMatch(): object[]
export function parseMatch(match: string, opts?: matchOptions): object[]
/** grab library internals */

@@ -25,3 +25,3 @@ export function world(): object

/** log our decision-making for debugging */
export function verbose(bool?: boolean): any
export function verbose(toLog?: boolean | string): any
/** current semver version of the library */

@@ -28,0 +28,0 @@ export const version: string

@@ -1,2 +0,2 @@

import { Document, Pointer, Groups, JsonProps, outMethods } from '../misc'
import { Document, Pointer, Groups, JsonProps, outMethods, matchOptions } from '../misc'

@@ -44,3 +44,3 @@ class View {

/** run each phrase through a function, and create a new document */
map: (fn: (m: View) => any) => View | any
map: (fn: (m: View) => any, emptyResult?: any) => View | any
/** return only the phrases that return true */

@@ -85,29 +85,29 @@ filter: (fn: (m: View) => boolean) => View

/** return matching patterns in this doc */
match: (match: string | View, options?: any, group?: string | number) => View
match: (match: string | View, group?: string | number, options?: matchOptions) => View
/** return only the first match */
matchOne: (match: string | View, options?: any) => View
matchOne: (match: string | View, group?: string | number, options?: matchOptions) => View
/** Return a boolean if this match exists */
has: (match: string | View, options?: any) => boolean
has: (match: string | View, group?: string | number, options?: matchOptions) => boolean
/** return each current phrase, only if it contains this match */
if: (match: string | View, options?: any) => View
if: (match: string | View, group?: string | number, options?: matchOptions) => View
/** Filter-out any current phrases that have this match */
ifNo: (match: string | View, options?: any) => View
ifNo: (match: string | View, group?: string | number, options?: matchOptions) => View
/** return the terms before each match */
before: (match: string | View, options?: any) => View
before: (match: string | View, group?: string | number, options?: matchOptions) => View
/** return the terms after each match */
after: (match: string | View, options?: any) => View
after: (match: string | View, group?: string | number, options?: matchOptions) => View
/** add any immediately-preceding matches to the view*/
growLeft: (match: string | View, options?: any) => View
growLeft: (match: string | View, group?: string | number, options?: matchOptions) => View
/** add any immediately-following matches to the view*/
growRight: (match: string | View, options?: any) => View
growRight: (match: string | View, group?: string | number, options?: matchOptions) => View
/** expand the view with any left-or-right matches*/
grow: (match: string | View, options?: any) => View
grow: (match: string | View, group?: string | number, options?: matchOptions) => View
/** .split() [alias] */
splitOn: (match?: string) => View
splitOn: (match?: string, group?: string | number) => View
/** separate everything after the match as a new phrase */
splitBefore: (match?: string) => View
splitBefore: (match?: string, group?: string | number) => View
/** separate everything before the word, as a new phrase */
splitAfter: (match?: string) => View
splitAfter: (match?: string, group?: string | number) => View

@@ -134,5 +134,5 @@ // Case

/** search and replace match with new content */
replace: (match: string | View, text?: string | Function, keepTags?: boolean | object, keepCase?: boolean) => View
replace: (from: string | View, to?: string | Function, keep?: object) => View
/** substitute-in new content */
replaceWith: (text: string | Function, keepTags?: boolean | object, keepCase?: boolean) => View
replaceWith: (to: string | Function, keep?: object) => View

@@ -208,3 +208,3 @@ /** remove any duplicate matches */

/** quick find for an array of string matches */
lookup: (trie: object | string[]) => View
lookup: (trie: object | string[], opts?: object) => View
/** assume any type-ahead prefixes */

@@ -211,0 +211,0 @@ autoFill: () => View

@@ -245,7 +245,18 @@ import View from './two'

interface Adjectives extends View {
/** get the words describing this adjective */
adverbs: () => View
/** 'quick' -> 'quicker' */
toComparative: (n?: number) => View
/** 'quick' -> 'quickest' */
toSuperlative: (n?: number) => View
/** 'quick' -> 'quickly' */
toAdverb: (n?: number) => View
/** 'quick' -> 'quickness' */
toNoun: (n?: number) => View
}
// only overloads .json()
interface Adjectives extends View { }
// only overloads .json()
interface Adverbs extends View { }
export default Three

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc