compromise
Advanced tools
Comparing version 14.9.0 to 14.10.0
@@ -5,3 +5,4 @@ { | ||
"description": "modest natural language processing", | ||
"version": "14.9.0", | ||
"version": "14.10.0", | ||
"module": "./src/three.js", | ||
"main": "./src/three.js", | ||
@@ -67,3 +68,3 @@ "unpkg": "./builds/compromise.js", | ||
"test": "tape \"./tests/**/*.test.js\" | tap-dancer", | ||
"testb": "npm run test:smoke && TESTENV=prod npm run test", | ||
"testb": "npm run test:smoke && cross-env TESTENV=prod npm run test", | ||
"test:one": "tape \"./tests/one/**/*.test.js\" | tap-dancer", | ||
@@ -106,13 +107,14 @@ "test:two": "tape \"./tests/two/**/*.test.js\" | tap-dancer", | ||
"devDependencies": { | ||
"@rollup/plugin-node-resolve": "15.0.1", | ||
"@rollup/plugin-node-resolve": "15.1.0", | ||
"@rollup/plugin-terser": "0.4.3", | ||
"amble": "1.3.0", | ||
"eslint": "8.39.0", | ||
"eslint-plugin-regexp": "1.14.0", | ||
"cross-env": "^7.0.3", | ||
"eslint": "8.46.0", | ||
"eslint-plugin-regexp": "1.15.0", | ||
"nlp-corpus": "4.4.0", | ||
"rollup": "3.7.4", | ||
"rollup-plugin-filesize-check": "0.0.2", | ||
"rollup-plugin-terser": "7.0.2", | ||
"rollup": "3.28.0", | ||
"rollup-plugin-filesize-check": "^0.0.2", | ||
"shelljs": "0.8.5", | ||
"tap-dancer": "0.3.4", | ||
"tape": "5.6.3" | ||
"tape": "5.6.6" | ||
}, | ||
@@ -126,2 +128,2 @@ "eslintIgnore": [ | ||
"license": "MIT" | ||
} | ||
} |
@@ -662,3 +662,3 @@ <div align="center"> | ||
- **[.sentences().json()](https://observablehq.com/@spencermountain/compromise-sentences)** - overloaded output with sentence metadata | ||
- **[.sentences().subjects()](https://observablehq.com/@spencermountain/compromise-sentences)** - return the main noun of each sentence | ||
<!-- - **[.sentences().subjects()](https://observablehq.com/@spencermountain/compromise-sentences)** - return the main noun of each sentence --> | ||
- **[.sentences().toPastTense()](https://observablehq.com/@spencermountain/compromise-sentences)** - `he walks` -> `he walked` | ||
@@ -811,3 +811,3 @@ - **[.sentences().toPresentTense()](https://observablehq.com/@spencermountain/compromise-sentences)** - `he walked` -> `he walks` | ||
| [Internals](https://observablehq.com/@spencermountain/compromise-internals) | [Json](https://observablehq.com/@spencermountain/compromise-json) | [Html](https://observablehq.com/@spencermountain/compromise-html) | | ||
| [Justification](https://observablehq.com/@spencermountain/compromise-justification) | [Lists](https://observablehq.com/@spencermountain/compromise-lists) | [Keypress](https://observablehq.com/@spencermountain/compromise-keypress) | | ||
| [Justification](https://observablehq.com/@spencermountain/compromise-justification) | [Character Offsets](https://observablehq.com/@spencermountain/compromise-offsets) | [Keypress](https://observablehq.com/@spencermountain/compromise-keypress) | | ||
| [Lexicon](https://observablehq.com/@spencermountain/compromise-lexicon) | [Loops](https://observablehq.com/@spencermountain/compromise-loops) | [Ngrams](https://observablehq.com/@spencermountain/compromise-ngram) | | ||
@@ -825,3 +825,3 @@ | [Match-syntax](https://observablehq.com/@spencermountain/compromise-match-syntax) | [Match](https://observablehq.com/@spencermountain/compromise-match) | [Numbers](https://observablehq.com/@spencermountain/compromise-values) | | ||
| [Fuzzy-matching](https://observablehq.com/@spencermountain/compromise-fuzzy-matching) | [Typescript](https://observablehq.com/@spencermountain/compromise-typescript) | [Mutation](https://observablehq.com/@spencermountain/compromise-mutation) | | ||
| [Root-forms](https://observablehq.com/@spencermountain/compromise-root) | [Character Offsets](https://observablehq.com/@spencermountain/compromise-offsets) | | | ||
| [Root-forms](https://observablehq.com/@spencermountain/compromise-root) | | ||
@@ -828,0 +828,0 @@ |
@@ -1,1 +0,1 @@ | ||
export default '14.9.0' | ||
export default '14.10.0' |
@@ -55,3 +55,3 @@ import splice from './_splice.js' | ||
// look for before-match (l' -> [le, _]) | ||
else if (before !== null && before === o.before) { | ||
else if (before !== null && before === o.before && after && after.length > 2) { | ||
return o.out.concat(after) | ||
@@ -58,0 +58,0 @@ // return [o.out, after] //typeof o.out === 'string' ? [o.out, after] : o.out(terms, i) |
@@ -8,6 +8,3 @@ export default [ | ||
{ word: 'cannot', out: ['can', 'not'] }, | ||
{ word: 'cant', out: ['can', 'not'] }, | ||
{ word: 'dont', out: ['do', 'not'] }, | ||
{ word: 'dun', out: ['do', 'not'] }, | ||
{ word: 'wont', out: ['will', 'not'] }, | ||
{ word: "can't", out: ['can', 'not'] }, | ||
@@ -37,7 +34,2 @@ { word: "shan't", out: ['should', 'not'] }, | ||
{ word: `c'mon`, out: ['come', 'on'] }, | ||
// apostrophe d | ||
{ word: 'howd', out: ['how', 'did'] }, | ||
{ word: 'whatd', out: ['what', 'did'] }, | ||
{ word: 'whend', out: ['when', 'did'] }, | ||
{ word: 'whered', out: ['where', 'did'] }, | ||
// shoulda, coulda | ||
@@ -49,3 +41,2 @@ { word: 'shoulda', out: ['should', 'have'] }, | ||
// { after: `cause`, out: ['because'] }, | ||
{ word: "tis", out: ['it', 'is'] }, | ||
@@ -68,2 +59,18 @@ { word: "twas", out: ['it', 'was'] }, | ||
{ before: 't', out: ['tu'] }, // t'aime | ||
// missing apostrophes | ||
{ word: 'shouldnt', out: ['should', 'not'] }, | ||
{ word: 'couldnt', out: ['could', 'not'] }, | ||
{ word: 'wouldnt', out: ['would', 'not'] }, | ||
{ word: 'hasnt', out: ['has', 'not'] }, | ||
{ word: 'wasnt', out: ['was', 'not'] }, | ||
{ word: 'isnt', out: ['is', 'not'] }, | ||
{ word: 'cant', out: ['can', 'not'] }, | ||
{ word: 'dont', out: ['do', 'not'] }, | ||
{ word: 'wont', out: ['will', 'not'] }, | ||
// apostrophe d | ||
{ word: 'howd', out: ['how', 'did'] }, | ||
{ word: 'whatd', out: ['what', 'did'] }, | ||
{ word: 'whend', out: ['when', 'did'] }, | ||
{ word: 'whered', out: ['where', 'did'] }, | ||
] |
@@ -19,3 +19,2 @@ const prefix = /^(under|over|mis|re|un|dis|semi|pre|post)-?/ | ||
setTag([t], tag, world, false, '1-lexicon') | ||
// fastTag(t, tag, '1-lexicon') | ||
return true | ||
@@ -29,3 +28,2 @@ } | ||
setTag([t], tag, world, false, '1-lexicon-alias') | ||
// fastTag(t, tag, '1-lexicon-alias') | ||
return true | ||
@@ -42,3 +40,2 @@ } | ||
setTag([t], lexicon[stem], world, false, '1-lexicon-prefix') | ||
// fastTag(t, lexicon[stem], '1-lexicon-prefix') | ||
return true | ||
@@ -45,0 +42,0 @@ } |
@@ -34,14 +34,1 @@ export const relPointer = function (ptrs, parent) { | ||
export const isNet = val => val && isObject(val) && val.isNet === true | ||
// is the pointer the full sentence? | ||
// export const isFull = function (ptr, document) { | ||
// let [n, start, end] = ptr | ||
// if (start !== 0) { | ||
// return false | ||
// } | ||
// if (document[n] && document[n][end - 1] && !document[n][end]) { | ||
// return true | ||
// } | ||
// return false | ||
// } |
@@ -53,2 +53,15 @@ const combine = function (left, right) { | ||
let all = splitAll(this.fullPointer, splits) | ||
// repair matches to favor [match, after] | ||
// - instead of [before, match] | ||
for (let i = 0; i < all.length; i += 1) { | ||
// move a before to a preceding after | ||
if (!all[i].after && all[i + 1] && all[i + 1].before) { | ||
// ensure it's from the same original sentence | ||
if (all[i].match && all[i].match[0] === all[i + 1].before[0]) { | ||
all[i].after = all[i + 1].before | ||
delete all[i + 1].before | ||
} | ||
} | ||
} | ||
let res = [] | ||
@@ -58,8 +71,8 @@ all.forEach(o => { | ||
res.push(o.before) | ||
// a, [x, b] | ||
if (o.match && o.after) { | ||
// console.log(combine(o.match, o.after)) | ||
res.push(combine(o.match, o.after)) | ||
} else { | ||
// a, [x], b | ||
res.push(o.match) | ||
res.push(o.after) | ||
} | ||
@@ -66,0 +79,0 @@ }) |
@@ -48,2 +48,6 @@ const hasMinMax = /\{([0-9]+)?(, *[0-9]*)?\}/ | ||
} | ||
if (end(w) === '?') { | ||
obj.optional = true | ||
w = stripEnd(w) | ||
} | ||
//capture group (this one can span multiple-terms) | ||
@@ -78,6 +82,2 @@ if (start(w) === '[' || end(w) === ']') { | ||
} | ||
if (end(w) === '?') { | ||
obj.optional = true | ||
w = stripEnd(w) | ||
} | ||
if (start(w) === '!') { | ||
@@ -84,0 +84,0 @@ obj.negative = true |
@@ -81,3 +81,3 @@ const trimEnd = /[,:;)\]*.?~!\u0022\uFF02\u201D\u2019\u00BB\u203A\u2032\u2033\u2034\u301E\u00B4—-]+$/ | ||
} | ||
if (opts.keepPunct === false) { | ||
if (opts.keepEndPunct === false) { | ||
// don't remove ':)' etc | ||
@@ -87,2 +87,3 @@ if (!docs[0][0].tags.has('Emoticon')) { | ||
} | ||
// remove ending periods | ||
let last = docs[docs.length - 1] | ||
@@ -89,0 +90,0 @@ if (!last[last.length - 1].tags.has('Emoticon')) { |
@@ -17,11 +17,12 @@ import { textFromDoc } from './lib/_text.js' | ||
} | ||
if (opts.keepSpace === undefined && this.pointer) { | ||
// is it a full document? | ||
if (opts.keepSpace === undefined && !this.isFull()) { // | ||
opts.keepSpace = false | ||
} | ||
if (opts.keepPunct === undefined && this.pointer) { | ||
if (opts.keepEndPunct === undefined && this.pointer) { | ||
let ptr = this.pointer[0] | ||
if (ptr && ptr[1]) { | ||
opts.keepPunct = false | ||
opts.keepEndPunct = false | ||
} else { | ||
opts.keepPunct = true | ||
opts.keepEndPunct = true | ||
} | ||
@@ -28,0 +29,0 @@ } |
@@ -69,3 +69,2 @@ //all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation | ||
} | ||
str = chars.join('') | ||
@@ -72,0 +71,0 @@ //we went too far.. |
@@ -21,3 +21,3 @@ const titleCase = /^\p{Lu}[\p{Ll}'’]/u //upercase, then lowercase | ||
terms.forEach((t, i) => { | ||
t.text = t.implicit | ||
t.text = t.implicit || '' | ||
delete t.implicit | ||
@@ -24,0 +24,0 @@ //add whitespace |
@@ -50,3 +50,5 @@ // order matters | ||
{ match: 'guess who', tag: '#Infinitive #QuestionWord', reason: 'guess-who' }, | ||
// swear words | ||
{ match: '[fucking] !#Verb', group: 0, tag: '#Gerund', reason: 'f-as-gerund' }, | ||
] | ||
export default matches |
const adverbAdj = `(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)` | ||
const noLy = '(hard|fast|late|early|high|right|deep|close|direct)' | ||
export default [ | ||
@@ -11,2 +13,8 @@ // kinda sparkly | ||
{ match: `#Copula [still] (in|#Gerund|#Adjective)`, group: 0, tag: 'Adverb', reason: 'was-still-walking' }, | ||
// studies hard | ||
{ match: `#Plural ${noLy}`, tag: '#PresentTense #Adverb', reason: 'studies-hard' }, | ||
// shops direct | ||
{ match: `#Verb [${noLy}] !#Noun?`, group: 0, notIf: '(#Copula|get|got|getting|become|became|becoming|feel|feels|feeling)', tag: 'Adverb', reason: 'shops-direct' }, | ||
// studies a lot | ||
{ match: `[#Plural] a lot`, tag: 'PresentTense', reason: 'studies-a-lot' }, | ||
] |
// Gerund-Adjectives - 'amusing, annoying' | ||
export default [ | ||
//a staggering cost | ||
{ match: '(a|an) [#Gerund]', group: 0, tag: 'Adjective', reason: 'a|an' }, | ||
// { match: '(a|an) [#Gerund]', group: 0, tag: 'Adjective', reason: 'a|an' }, | ||
//as amusing as | ||
@@ -17,2 +17,10 @@ { match: 'as [#Gerund] as', group: 0, tag: 'Adjective', reason: 'as-gerund-as' }, | ||
{ match: '#Gerund [#Gerund]', group: 0, tag: 'Adjective', notIf: '(impersonating|practicing|considering|assuming)', reason: 'looking-annoying' }, | ||
// looked amazing | ||
{ match: '(looked|look|looks) #Adverb? [%Adj|Gerund%]', group: 0, tag: 'Adjective', notIf: '(impersonating|practicing|considering|assuming)', reason: 'looked-amazing' }, | ||
// were really amazing | ||
// { match: '(looked|look|looks) #Adverb [%Adj|Gerund%]', group: 0, tag: 'Adjective', notIf: '(impersonating|practicing|considering|assuming)', reason: 'looked-amazing' }, | ||
// developing a | ||
{ match: '[%Adj|Gerund%] #Determiner', group: 0, tag: 'Gerund', reason: 'developing-a' }, | ||
// world's leading manufacturer | ||
{ match: '#Possessive [%Adj|Gerund%] #Noun', group: 0, tag: 'Adjective', reason: 'leading-manufacturer' }, | ||
] |
@@ -46,3 +46,8 @@ export default [ | ||
{ match: 'or [#PastTense] #Noun', group: 0, tag: 'Adjective', notIf: '(#Copula|#Pronoun)', reason: 'or-heightened-emotion' }, | ||
// became involved | ||
{ match: '(become|became|becoming|becomes) [#Verb]', group: 0, tag: 'Adjective', reason: 'become-verb' }, | ||
// their declared intentions | ||
{ match: '#Possessive [#PastTense] #Noun', group: 0, tag: 'Adjective', reason: 'declared-intentions' }, | ||
// is he cool | ||
{ match: '#Copula #Pronoun [%Adj|Present%]', group: 0, tag: 'Adjective', reason: 'is-he-cool' }, | ||
] |
@@ -32,3 +32,3 @@ // const adverbAdj = '(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)' | ||
{ | ||
match: '#PresentTense [(hard|quick|long|bright|slow|fast|backwards|forwards)]', | ||
match: '#PresentTense [(hard|quick|bright|slow|fast|backwards|forwards)]', | ||
notIf: '#Copula', | ||
@@ -54,3 +54,3 @@ group: 0, | ||
//walking close | ||
{ match: '#Gerund #Adverb? [close]', group: 0, tag: 'Adverb', reason: 'being-close' }, | ||
{ match: '#Gerund #Adverb? [close]', group: 0, tag: 'Adverb', notIf: '(getting|becoming|feeling)', reason: 'being-close' }, | ||
// a blown motor | ||
@@ -64,2 +64,6 @@ { match: '(the|those|these|a|an) [#Participle] #Noun', group: 0, tag: 'Adjective', reason: 'blown-motor' }, | ||
{ match: '[later] #PresentTense', group: 0, tag: 'Adverb', reason: 'later-say' }, | ||
// the well | ||
{ match: '#Determiner [well] !#PastTense?', group: 0, tag: 'Noun', reason: 'the-well' }, | ||
// high enough | ||
{ match: '#Adjective [enough]', group: 0, tag: 'Adverb', reason: 'high-enough' }, | ||
] |
@@ -20,3 +20,3 @@ export default [ | ||
//this march | ||
{ match: `(this|next|last) (march|may) !#Infinitive`, tag: '#Date #Month', reason: 'this-month' }, | ||
{ match: `(this|next|last) (march|may) !#Infinitive?`, tag: '#Date #Month', reason: 'this-month' }, | ||
// march 5th | ||
@@ -23,0 +23,0 @@ { match: `(march|may) the? #Value`, tag: '#Month #Date #Date', reason: 'march-5th' }, |
@@ -73,3 +73,3 @@ const infNouns = | ||
// dance coach | ||
{ match: `#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman)`, tag: 'Actor', reason: 'dance-coach' }, | ||
{ match: `#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman|master)`, tag: 'Actor', reason: 'dance-coach' }, | ||
// chief design officer | ||
@@ -82,3 +82,2 @@ { match: `chief . officer`, tag: 'Actor', reason: 'chief-x-officer' }, | ||
// ==== Singular ==== | ||
@@ -131,3 +130,19 @@ //the sun | ||
{ match: '[#PresentTense] (music|class|lesson|night|party|festival|league|ceremony)', group: 0, tag: 'Noun', reason: 'dance-music' }, | ||
// wit it | ||
{ match: '[wit] (me|it)', group: 0, tag: 'Presposition', reason: 'wit-me' }, | ||
//left-her-boots, shoved her hand | ||
{ match: '#PastTense #Possessive [#Verb]', group: 0, tag: 'Noun', notIf: '(saw|made)', reason: 'left-her-boots' }, | ||
//35 signs | ||
{ match: '#Value [%Plural|Verb%]', group: 0, tag: 'Plural', notIf: '(one|1|a|an)', reason: '35-signs' }, | ||
//had time | ||
{ match: 'had [#PresentTense]', group: 0, tag: 'Noun', notIf: '(#Gerund|come|become)', reason: 'had-time' }, | ||
//instant access | ||
{ match: '%Adj|Noun% %Noun|Verb%', tag: '#Adjective #Noun', notIf: '#ProperNoun #Noun', reason: 'instant-access' }, | ||
// a representative to | ||
{ match: '#Determiner [%Adj|Noun%] #Conjunction', group: 0, tag: 'Noun', reason: 'a-rep-to' }, | ||
// near death experiences, ambitious sales targets | ||
{ match: '#Adjective #Noun [%Plural|Verb%]$', group: 0, tag: 'Plural', notIf: '#Pronoun', reason: 'near-death-experiences' }, | ||
// your guild colors | ||
{ match: '#Possessive #Noun [%Plural|Verb%]$', group: 0, tag: 'Plural', reason: 'your-guild-colors' }, | ||
] |
@@ -6,3 +6,6 @@ export default [ | ||
// maybe currencies | ||
{ match: '#Value (mark|rand|won|rub|ore)', tag: '#Money #Currency', reason: '4 mark' }, | ||
{ match: '#Value (mark|rand|won|rub|ore)', tag: '#Money #Currency', reason: '4-mark' }, | ||
// 3 pounds | ||
{ match: 'a pound', tag: '#Money #Unit', reason: 'a-pound' }, | ||
{ match: '#Value (pound|pounds)', tag: '#Money #Unit', reason: '4-pounds' }, | ||
] |
@@ -34,2 +34,4 @@ // this is really hard to do | ||
{ match: '^[(shut|close|open|start|stop|end|keep)] #Determiner #Noun', group: 0, tag: 'Imperative', reason: 'shut-the-door' }, | ||
// turn off the light | ||
{ match: '^[#PhrasalVerb #Particle] #Determiner #Noun', group: 0, tag: 'Imperative', reason: 'turn-off-the-light' }, | ||
// go to toronto | ||
@@ -70,3 +72,5 @@ { match: '^[go] to .', group: 0, tag: 'Imperative', reason: 'go-to-toronto' }, | ||
{ match: 'do not (forget|omit|neglect) to [#Infinitive]', group: 0, tag: 'Imperative', reason: 'do-not-forget' }, | ||
// pay attention | ||
{ match: '^[(ask|wear|pay|look|help|show|watch|act|fix|kill|stop|start|turn|try|win)] #Noun', group: 0, tag: 'Imperative', reason: 'pay-attention' }, | ||
] |
@@ -23,2 +23,4 @@ export default [ | ||
{ match: 'help [(stop|end|make|start)]', group: 0, tag: 'Infinitive', reason: 'help-stop' }, | ||
// work in the office | ||
{ match: '#PhrasalVerb (in && #Particle) #Determiner', tag: '#Verb #Preposition #Determiner', unTag: 'PhrasalVerb', reason: 'work-in-the' }, | ||
// start listening | ||
@@ -25,0 +27,0 @@ { match: '[(stop|start|finish|help)] #Gerund', group: 0, tag: 'Infinitive', reason: 'start-listening' }, |
@@ -21,3 +21,3 @@ export default [ | ||
//a close watch on | ||
{ match: '(a|an) #Adjective? #Noun [#Infinitive] (#Preposition|#Noun)', group: 0, tag: 'Noun', reason: 'a-noun-inf' }, | ||
{ match: '(a|an) #Adjective? #Noun [#Infinitive] (#Preposition|#Noun)', group: 0, notIf: 'from', tag: 'Noun', reason: 'a-noun-inf' }, | ||
//a tv show | ||
@@ -32,3 +32,3 @@ { match: '(a|an) #Noun [#Infinitive]$', group: 0, tag: 'Noun', reason: 'a-noun-inf2' }, | ||
// running to work | ||
{ match: '#Gerund #Adjective to [#Infinitive]', group: 0, tag: 'Noun', reason: 'running-to' }, | ||
// { match: '#Gerund #Adjective to [#Infinitive]', group: 0, tag: 'Noun', reason: 'running-to' }, | ||
// about love | ||
@@ -60,3 +60,7 @@ { match: 'about [#Infinitive]', group: 0, tag: 'Singular', reason: 'about-love' }, | ||
//this rocks | ||
{ match: '(this|that) [#Plural]', group: 0, tag: 'PresentTense', notIf: '#Preposition', reason: 'this-verbs' }, | ||
{ match: 'this [#Plural]', group: 0, tag: 'PresentTense', notIf: '(#Preposition|#Date)', reason: 'this-verbs' }, | ||
//voice that rocks | ||
{ match: '#Noun that [#Plural]', group: 0, tag: 'PresentTense', notIf: '(#Preposition|#Pronoun|way)', reason: 'voice-that-rocks' }, | ||
//that leads to | ||
{ match: 'that [#Plural] to', group: 0, tag: 'PresentTense', notIf: '#Preposition', reason: 'that-leads-to' }, | ||
//let him glue | ||
@@ -172,2 +176,6 @@ { | ||
{ match: 'to #Infinitive [#PresentTense]', group: 0, tag: 'Noun', notIf: '(#Gerund|#Copula|help)', reason: 'to-give-thanks' }, | ||
// kills me | ||
{ match: '[#Noun] me', group: 0, tag: 'Verb', reason: 'kills-me' }, | ||
// removes wrinkles | ||
{ match: '%Plural|Verb% %Plural|Verb%', tag: '#PresentTense #Plural', reason: 'removes-wrinkles' }, | ||
] |
@@ -57,4 +57,2 @@ export default [ | ||
{ match: `[(look|looks)] #Adjective`, group: 0, tag: 'PresentTense', reason: 'looks-good' }, | ||
// needs to learn | ||
{ match: `[(need|needs)] to #Infinitive`, group: 0, tag: 'PresentTense', reason: 'need-to-learn' }, | ||
// stops thinking | ||
@@ -89,3 +87,6 @@ { match: `[(start|starts|stop|stops|begin|begins)] #Gerund`, group: 0, tag: 'Verb', reason: 'starts-thinking' }, | ||
{ match: '[%Adj|Past%] and #PastTense', group: 0, tag: 'PastTense', reason: 'dressed-and-left' }, | ||
// is he stoked | ||
{ match: '#Copula #Pronoun [%Adj|Past%]', group: 0, tag: 'Adjective', reason: 'is-he-stoked' }, | ||
// to dream of | ||
{ match: 'to [%Noun|Verb%] #Preposition', group: 0, tag: 'Infinitive', reason: 'to-dream-of' }, | ||
] |
@@ -36,6 +36,6 @@ import colons from './1st-pass/01-colons.js' | ||
for (let i = 0; i < terms.length; i += 1) { | ||
// hard-nosed, faith-based | ||
// hyphens(terms, i, model, world) | ||
} | ||
// for (let i = 0; i < terms.length; i += 1) { | ||
// hard-nosed, faith-based | ||
// hyphens(terms, i, model, world) | ||
// } | ||
}) | ||
@@ -42,0 +42,0 @@ } |
@@ -27,7 +27,7 @@ // import { toPast, toPresent, toGerund, toParticiple } from '../../../../model/models/index.js' | ||
let found = { | ||
Infinitive: inf, | ||
Infinitive: str, | ||
PastTense: convert(str, toPast), | ||
PresentTense: convert(str, toPresent), | ||
Gerund: convert(str, toGerund), | ||
FutureTense: 'will ' + inf | ||
FutureTense: 'will ' + str | ||
} | ||
@@ -34,0 +34,0 @@ // add past-participle if it's interesting |
@@ -63,3 +63,5 @@ const jj = 'Adjective' | ||
or: jj, //insulting or | ||
enough: jj, //cool enough | ||
about: jj, //cool about | ||
}, | ||
} |
@@ -58,2 +58,3 @@ const g = 'Gerund' | ||
him: g, // | ||
his: g, // | ||
them: g, // | ||
@@ -67,3 +68,5 @@ their: g, // fighting their | ||
for: g, // paying for | ||
up: g, //speeding up | ||
down: g, // | ||
}, | ||
} |
@@ -81,2 +81,8 @@ const n = 'Singular' | ||
one: n,//one flood | ||
let: n,//let fear | ||
her: n,//her boots | ||
his: n,// | ||
their: n,// | ||
our: n,// | ||
us: n,//served us drinks | ||
}, | ||
@@ -100,5 +106,8 @@ afterWords: { | ||
is: n, | ||
did: n, | ||
do: n, | ||
can: n,//parents can | ||
wise: n,//service-wise | ||
// they: n,//snakes they | ||
}, | ||
} |
@@ -78,3 +78,5 @@ const v = 'Infinitive' | ||
her: v, // | ||
his: v, // | ||
them: v, // | ||
they: v, // | ||
it: v, //hope it | ||
@@ -120,3 +122,4 @@ himself: v, | ||
there: v,// | ||
away: v,//float away | ||
}, | ||
} |
@@ -11,2 +11,5 @@ import adj from './_adj.js' | ||
PhrasalVerb: 'Adjective'//starts out fine | ||
}, | ||
afterTags: { | ||
// Pronoun: 'Noun'//as an adult i | ||
} | ||
@@ -16,3 +19,3 @@ } | ||
beforeTags: Object.assign({}, adj.beforeTags, noun.beforeTags, misc.beforeTags), | ||
afterTags: Object.assign({}, adj.afterTags, noun.afterTags), | ||
afterTags: Object.assign({}, adj.afterTags, noun.afterTags, misc.afterTags), | ||
beforeWords: Object.assign({}, adj.beforeWords, noun.beforeWords, { | ||
@@ -19,0 +22,0 @@ // are representative |
@@ -57,2 +57,6 @@ import adj from './_adj.js' | ||
them: past,//charged us | ||
his: past,//shared his | ||
her: past,// | ||
their: past,// | ||
our: past,// | ||
me: past,// | ||
@@ -59,0 +63,0 @@ }, |
@@ -6,2 +6,3 @@ import person from './_person.js' | ||
const m = 'Month' | ||
const p = 'Person' | ||
const month = { | ||
@@ -33,2 +34,4 @@ beforeTags: { | ||
following: m, | ||
with: p, | ||
// for: p, | ||
}, | ||
@@ -35,0 +38,0 @@ afterWords: { |
@@ -10,6 +10,6 @@ // generated in ./lib/pairs | ||
"Gerund": { | ||
"fwd": "1:nning,tting,rring,pping,eing,mming,gging,dding,bbing,kking¦2:eking,oling,eling,eming¦3:velling,siting,uiting,fiting,loting,geting,ialing¦4:graming", | ||
"both": "1:iing,fing,xing,ying,oing,hing,wing¦2:tzing,rping,izzing,bting,mning,sping,wling,rling,wding,rbing,uping,lming,wning,mping,oning,lting,mbing,lking,fting,hting,sking,gning,pting,cking,ening,nking,iling,eping,ering,rting,rming,cting,lping,ssing,nting,nding,lding,sting,rning,rding,rking¦3:yaking,uaking,oaning,auling,valing,aiding,naping,euring,tolling,uzzing,ganing,haning,ualing,halling,iasing,auding,ieting,ceting,ouling,voring,ralling,ooding,garing,joring,ooping,oaking,roring,oaming,uelling,nelling,eaping,eeting,ooting,ooming,xiting,keting,ooking,ulling,airing,oaring,biting,outing,oiting,eeding,naling,eaming,oading,earing,delling,ouring,eaking,aiming,illing,oining,eaning,onging,ealing,aining,eading¦4:melling,aboring,ivoting,weating,dfilling,onoring,eriting,imiting,heating,tialling,rgining,otoring,linging,winging,lleting,louding,spelling,looring,mpelling,xcelling,feating,opelling,choring,welling,ymaking,ctoring,calling,peating,iloring,laiting,utoring,uditing,nmaking,mmaking,loating,iciting,waiting,mbating,voiding,otalling,nsoring,nselling,ocusing,itoring,eloping¦5:rselling,umpeting,atrolling,treating,tselling,rpreting,pringing,ummeting,ossoming,elmaking,eselling,rediting,defining,totyping,rfeiting,ntrolling¦5e:chmaking,orsaking,severing,erouting,ecreting,ephoning,uthoring,reathing,pediting,erfering,eotyping,fringing,entoring,ombining,ompeting¦4e:emaking,eething,dmiring,chuting,xciting,rseding,scoping,edoring,pinging,lunging,agining,craping,pleting,eleting,nciting,nfining,ncoding,tponing,ecoding,writing,esaling,gnoring,evoting,mpeding,dhering,mpiling,storing,nviting,ploring¦3e:tining,wining,nuring,ruling,haling,ceding,xuding,rining,nuting,caring,miling,riding,hoking,piring,lading,laking,curing,uading,noting,taping,futing,paring,raking,vening,loding,siring,guring,vading,voking,niting,laning,coring,caping,luting,muting,ruding,ciding,juring,laming,caling,hining,uoting,liding,ciling,duling,tuting,puting,cuting,laring,uiding,tiring,turing,siding,rading,enging,haping,buting,lining,taking,anging,haring,uiring,coming,mining,moting,suring,viding,luding¦2e:tring,zling,uging,oging,gling,iging,vring,fling,lging,iping,obing,psing,pling,ubing,cling,dling,wsing,iking,rsing,dging,kling,ysing,tling,rging,eging,nsing,uning,osing,uming,using,ibing,bling,aging,ising,asing,ating¦2ie:rlying¦1e:zing,uing,cing,ving", | ||
"rev": "ying:ie¦1ing:se,ke,te,we,ne,re,de,pe,me,le,c,he¦2ing:ll,ng,dd,ee,ye,oe,or,rg,us¦2ning:un¦2ging:og,ag,ug,ig,eg¦2ming:um¦2ping:ip¦2bing:ub,ab,eb,ob¦3ning:lan,can,hin,pin,win¦3ring:cur,lur,tir,tar,pur,car¦3ing:eat,dit,ool,eel,oat,eem,lel¦3ping:rop,rap,wap,hop,lap,cap¦3ming:tem,wim,rim,kim¦3ting:mat,cut,pot,lit,nit,hat,set,pit,rot¦3ding:hed,bed,bid,red¦3king:rek¦3bing:rib¦3ling:pel¦4ning:egin¦4ing:isit,ruit,ilot,nsit,dget,rkel,rcel¦4ring:efer,nfer¦4ling:abel,evel,ncil,ivel¦4ting:rmit,mmit,ysit,dmit,emit,bmit,tfit,gret,llot¦5ing:arget,posit,rofit¦5ring:nsfer¦5ting:nsmit,orget,cquit¦5ling:ancel,istil", | ||
"ex": "3:adding,eating,aiming,aiding,airing,outing,gassing,setting,getting,putting,cutting,winning,sitting,betting,mapping,tapping,letting,bidding,hitting,tanning,netting,popping,fitting,capping,lapping,barring,banning,vetting,topping,rotting,potting,wetting,pitting,budding,hemming,pinning,jetting,kidding,padding,podding,wedding,bedding,donning,warring,penning,gutting,cueing,wadding,petting,napping,matting,tinning¦4:selling,falling,calling,waiting,editing,telling,rolling,heating,boating,hanging,beating,coating,singing,mooring,tolling,felling,polling,discing,seating,voiding,gelling,yelling,seeking,stopping,spanning,stepping,emitting,quitting,dialing,omitting,plotting,clotting,shutting,skinning,slotting,abutting,cramming¦5:bringing,treating,labelling,spelling,stalling,trolling,expelling,wringing,deterring,singeing,befitting,refitting¦6:enrolling,cancelling,distilling,scrolling,strolling,caucusing,travelling¦7:installing,stencilling,recharging,overeating,benefiting,unraveling,programing¦9:reprogramming¦is:being¦2e:using,aging,owing¦3e:making,taking,coming,noting,hiring,filing,coding,citing,doping,baking,coping,hoping,lading,caring,naming,voting,riding,mining,curing,lining,ruling,typing,boring,dining,firing,hiding,piling,taping,waning,baling,boning,faring,honing,luring,timing,wading,fading,biting,zoning,daring,waking,gaming,raking,ceding,tiring,coking,wining,joking,paring,gaping,poking,pining,coring,liming,toting,roping,wiring,aching¦4e:writing,storing,eroding,framing,smoking,tasting,wasting,phoning,shaking,shading,abiding,pasting,priming,shoring,sloping,withing¦5e:defining,refining,enduring,renaming,swathing,fringing,reciting¦1ie:dying,tying,lying,vying¦7e:sunbathing¦10e:recordkeeping" | ||
"fwd": "1:nning,tting,rring,pping,eing,mming,gging,dding,bbing,kking¦2:eking,oling,eling,eming¦3:velling,siting,uiting,fiting,loting,geting,ialing,celling¦4:graming", | ||
"both": "1:aing,iing,fing,xing,ying,oing,hing,wing¦2:tzing,rping,izzing,bting,mning,sping,wling,rling,wding,rbing,uping,lming,wning,mping,oning,lting,mbing,lking,fting,hting,sking,gning,pting,cking,ening,nking,iling,eping,ering,rting,rming,cting,lping,ssing,nting,nding,lding,sting,rning,rding,rking¦3:belling,siping,toming,yaking,uaking,oaning,auling,ooping,aiding,naping,euring,tolling,uzzing,ganing,haning,ualing,halling,iasing,auding,ieting,ceting,ouling,voring,ralling,garing,joring,oaming,oaking,roring,nelling,ooring,uelling,eaming,ooding,eaping,eeting,ooting,ooming,xiting,keting,ooking,ulling,airing,oaring,biting,outing,oiting,earing,naling,oading,eeding,ouring,eaking,aiming,illing,oining,eaning,onging,ealing,aining,eading¦4:thoming,melling,aboring,ivoting,weating,dfilling,onoring,eriting,imiting,tialling,rgining,otoring,linging,winging,lleting,louding,spelling,mpelling,heating,feating,opelling,choring,welling,ymaking,ctoring,calling,peating,iloring,laiting,utoring,uditing,mmaking,loating,iciting,waiting,mbating,voiding,otalling,nsoring,nselling,ocusing,itoring,eloping¦5:rselling,umpeting,atrolling,treating,tselling,rpreting,pringing,ummeting,ossoming,elmaking,eselling,rediting,totyping,onmaking,rfeiting,ntrolling¦5e:chmaking,dkeeping,severing,erouting,ecreting,ephoning,uthoring,ravening,reathing,pediting,erfering,eotyping,fringing,entoring,ombining,ompeting¦4e:emaking,eething,twining,rruling,chuting,xciting,rseding,scoping,edoring,pinging,lunging,agining,craping,pleting,eleting,nciting,nfining,ncoding,tponing,ecoding,writing,esaling,nvening,gnoring,evoting,mpeding,rvening,dhering,mpiling,storing,nviting,ploring¦3e:tining,nuring,saking,miring,haling,ceding,xuding,rining,nuting,laring,caring,miling,riding,hoking,piring,lading,curing,uading,noting,taping,futing,paring,hading,loding,siring,guring,vading,voking,during,niting,laning,caping,luting,muting,ruding,ciding,juring,laming,caling,hining,uoting,liding,ciling,duling,tuting,puting,cuting,coring,uiding,tiring,turing,siding,rading,enging,haping,buting,lining,taking,anging,haring,uiring,coming,mining,moting,suring,viding,luding¦2e:tring,zling,uging,oging,gling,iging,vring,fling,lging,obing,psing,pling,ubing,cling,dling,wsing,iking,rsing,dging,kling,ysing,tling,rging,eging,nsing,uning,osing,uming,using,ibing,bling,aging,ising,asing,ating¦2ie:rlying¦1e:zing,uing,cing,ving", | ||
"rev": "ying:ie¦1ing:se,ke,te,we,ne,re,de,pe,me,le,c,he¦2ing:ll,ng,dd,ee,ye,oe,rg,us¦2ning:un¦2ging:og,ag,ug,ig,eg¦2ming:um¦2bing:ub,ab,eb,ob¦3ning:lan,can,hin,pin,win¦3ring:cur,lur,tir,tar,pur,car¦3ing:ait,del,eel,fin,eat,oat,eem,lel,ool,ein,uin¦3ping:rop,rap,top,uip,wap,hip,hop,lap,rip,cap¦3ming:tem,wim,rim,kim,lim¦3ting:mat,cut,pot,lit,lot,hat,set,pit,put¦3ding:hed,bed,bid¦3king:rek¦3ling:cil,pel¦3bing:rib¦4ning:egin¦4ing:isit,ruit,ilot,nsit,dget,rkel,ival,rcel¦4ring:efer,nfer¦4ting:rmit,mmit,ysit,dmit,emit,bmit,tfit,gret¦4ling:evel,xcel,ivel¦4ding:hred¦5ing:arget,posit,rofit¦5ring:nsfer¦5ting:nsmit,orget,cquit¦5ling:ancel,istil", | ||
"ex": "3:adding,eating,aiming,aiding,airing,outing,gassing,setting,getting,putting,cutting,winning,sitting,betting,mapping,tapping,letting,bidding,hitting,tanning,netting,popping,fitting,capping,lapping,barring,banning,vetting,topping,rotting,tipping,potting,wetting,pitting,dipping,budding,hemming,pinning,jetting,kidding,padding,podding,sipping,wedding,bedding,donning,warring,penning,gutting,cueing,wadding,petting,ripping,napping,matting,tinning,binning,dimming,hopping,mopping,nodding,panning,rapping,ridding,sinning¦4:selling,falling,calling,waiting,editing,telling,rolling,heating,boating,hanging,beating,coating,singing,tolling,felling,polling,discing,seating,voiding,gelling,yelling,baiting,reining,ruining,seeking,spanning,stepping,knitting,emitting,slipping,quitting,dialing,omitting,clipping,shutting,skinning,abutting,flipping,trotting,cramming,fretting,suiting¦5:bringing,treating,spelling,stalling,trolling,expelling,rivaling,wringing,deterring,singeing,befitting,refitting¦6:enrolling,distilling,scrolling,strolling,caucusing,travelling¦7:installing,redefining,stencilling,recharging,overeating,benefiting,unraveling,programing¦9:reprogramming¦is:being¦2e:using,aging,owing¦3e:making,taking,coming,noting,hiring,filing,coding,citing,doping,baking,coping,hoping,lading,caring,naming,voting,riding,mining,curing,lining,ruling,typing,boring,dining,firing,hiding,piling,taping,waning,baling,boning,faring,honing,wiping,luring,timing,wading,piping,fading,biting,zoning,daring,waking,gaming,raking,ceding,tiring,coking,wining,joking,paring,gaping,poking,pining,coring,liming,toting,roping,wiring,aching¦4e:writing,storing,eroding,framing,smoking,tasting,wasting,phoning,shaking,abiding,braking,flaking,pasting,priming,shoring,sloping,withing,hinging¦5e:defining,refining,renaming,swathing,fringing,reciting¦1ie:dying,tying,lying,vying¦7e:sunbathing" | ||
}, | ||
@@ -23,11 +23,11 @@ "Participle": { | ||
"PastTense": { | ||
"fwd": "1:tted,wed,gged,nned,een,rred,pped,yed,bbed,oed,dded,rd,s,wn,mmed¦2:eed,nded,et,hted,st,oled,ut,emed,eled,lded,ken,rt,nked,apt,ant,eped,eked¦3:eared,eat,eaded,nelled,ealt,eeded,ooted,eaked,eaned,eeted,mited,bid,uit,ead,uited,ealed,geted,velled¦4:ebuted,hined,taked,comed¦y:ied¦ome:ame¦ear:ore¦ind:ound¦ep:pt¦ink:ank,unk¦all:ell¦ee:aw¦ive:ave¦eeze:oze¦old:eld¦ave:ft¦ake:ook¦ing:ang¦ell:old¦ite:ote¦ide:ode¦ine:one¦in:un,on¦eal:ole¦im:am¦ie:ay¦and:ood¦1ise:rose¦1eak:roke¦1ing:rought,rung¦1ive:rove¦1id:bade¦1et:got¦1y:aid¦3e:lid¦3d:pent", | ||
"both": "1:fed,xed,hed¦2:rped,lked,kied,lmed,lped,uped,bted,rbed,rked,wned,rled,mped,fted,mned,mbed,zzed,ened,cked,gned,lted,sked,ued,zed,nted,ered,rted,rmed,ced,sted,rned,ssed,rded,pted,ved,cted¦3:oomed,iped,oided,eiled,yped,taled,moned,yled,lit,kled,oaked,gled,naled,fled,outed,uined,oared,valled,koned,soned,aided,obed,ibed,meted,nicked,rored,micked,keted,vred,ooped,oaded,rited,aired,auled,filled,ouled,ooded,ceted,tolled,oited,bited,tled,vored,dled,eamed,nsed,rsed,sited,owded,pled,sored,rged,osed,oured,psed,oated,loned,aimed,illed,eured,tred,ioned,celled,bled,wsed,ooked,oiled,itzed,iked,iased,onged,ased,ailed,uned,umed,ained,auded,nulled,ysed,eged,ised,aged,oined,ated,used,dged,doned¦4:honed,tuted,pited,naked,miled,helled,haped,cored,caled,tired,peated,futed,ciled,called,tined,moted,filed,sided,poned,iloted,uaded,lleted,huted,ruled,cured,named,preted,voked,vaded,sured,pired,haled,peded,gined,nited,uided,ramed,feited,laked,gured,ctored,unged,loded,xpelled,cuted,caped,eloped,ralled,rined,coded,icited,vided,spelled,voted,mined,sired,noted,lined,nselled,luted,vened,jured,fided,puted,piled,pared,olored,cided,hoked,enged,tured,geoned,cotted,lamed,uiled,waited,udited,anged,luded,mired,uired,raded¦5:umpeted,ailored,rseded,quared,treated,eduled,ecited,rammed,eceded,atrolled,nitored,basted,nvited,rfered,itialled,ncited,gnored,truded,xcited,nrolled,namelled,plored,clared,redited,nfined,pleted,ompelled,llided,ircled,lcined,eathed,nefited,ibuted,lloted,dhered,cceded¦2aw:drew¦2ot:hot¦2ke:made¦2ow:hrew,grew¦2ose:hose¦2d:ilt¦2in:egan¦1go:rwent¦1ink:hought¦1ick:tuck¦1ike:ruck¦1eak:poke,nuck¦1it:pat¦1o:did¦1ow:new¦1el:elt¦1ing:lung¦1ake:woke¦ig:ug", | ||
"rev": "3:rst,urt,set,ous,hed,hut,cut¦4:tbid¦5:dcast,eread,pread,erbid¦ought:uy,eek¦ung:ang¦1ied:ny,ly,dy,ry,fy,py,vy,by¦1pt:eep¦1ank:rink¦1ore:bear,wear¦1ave:give¦1oze:reeze¦1ound:rind¦1ook:take,hake¦1aw:see¦1old:sell¦1ote:rite¦1ole:teal¦1unk:tink¦1am:wim¦1ay:lie¦1ood:tand¦1eld:hold¦2d:he,ge,re,le,leed,ne,reed,be,ye,lee,pe¦2ed:dd,oy,or,ey,ho,gg,rr¦2ame:ecome,rcome¦2ped:ip¦2ged:ag,og,ug¦2bed:ub,ab,ib,ob¦2id:pay¦2ang:pring¦2ove:trive¦2med:um¦3ted:mit,hat,mat,lat,pot¦3ed:low,tow,und,ool,ond,eem,lay,dow,xit,eld,cus,ald,iew,bel,oan,del,uld,law,lel,eat,ray,ull,ank,fin,oam,oll,how,iek,tay,haw,ait¦3d:ste,ede,ode,ete,ree,ame,tee,oke,ote,ime¦3red:lur,cur,pur¦3ped:hop,rop,tep,top,rap¦3ded:bed,rod,kid¦3ade:orbid¦3led:uel¦3ned:lan,can,kin,pan,tun¦3med:rim¦4ted:quit,llot¦4ed:peal,cend,lend,rrow,rand,lean,mand,ceal,tend,fend,pear,anel,pand,reet,link,evel,imit,lead,mend,enew,cind,crew,head,pell,tall,well,rend,mell¦4led:nnel,qual¦4n:sake,trew¦4red:nfer,efer,sfer¦4ded:hred¦4ned:rpin¦5ed:ppend,light,epend,ndear,xceed,xpend,oceed,cruit,emind,cceed,spend,arget,hread,eight¦5led:ntrol,ravel¦5ped:erlap", | ||
"ex": "2:been,upped¦3:added,aged,aided,aimed,aired,bid,died,dyed,egged,erred,eyed,fit,gassed,hit,lied,owed,pent,pied,tied,used,vied,banned,barred,bet,canned,capped,cut,donned,ended,feed,inked,jarred,let,manned,mapped,mowed,napped,netted,padded,panned,pitted,popped,potted,put,set,sewn,sowed,tanned,tapped,topped,vowed,weed¦4:ached,baked,baled,boned,bored,called,caned,cared,ceded,cited,coded,cored,cubed,cured,dared,dined,edited,exited,faked,fared,filed,fined,fired,fuelled,gamed,gelled,hired,hoped,joked,lined,loaned,mined,named,noted,piled,poked,polled,pored,pulled,reaped,roamed,rolled,ruled,seated,shed,sided,taped,timed,tolled,toned,voted,waited,walled,waned,winged,wired,zoned,banded,beat,brewed,cast,cost,dealt,feared,folded,footed,handed,headed,heard,knitted,landed,leaked,leapt,linked,meant,minded,molded,neared,needed,peaked,plodded,plotted,quit,read,rooted,sealed,seeded,seeped,shunned,skimmed,slammed,sparred,stemmed,stirred,suited,tended,thinned,twinned¦5:basted,cheated,equalled,eroded,exiled,focused,opined,pleated,primed,quoted,shared,shored,sloped,smoked,spelled,stalled,stored,swelled,tasted,treated,wasted,smelled,breaded,cleared,debuted,deterred,freaked,rebutted,speeded,staked¦6:anchored,defeated,defined,endured,impaled,propelled,refined,revered,strolled,recast,regretted,revealed,thrust,unfolded¦7:authored,combined,competed,conceded,controlled,entwined,excreted,installed,redefined,restored,welcomed¦8:expedited,infringed¦9:persevered,copyrighted¦10:intertwined¦eat:ate¦is:was¦go:went¦are:were¦3d:bent,lent,rent,sent¦3e:bit,fled,hid,lost¦3ed:bled,bred¦2ow:blew,grew¦1uy:bought¦2tch:caught¦1o:did¦1ive:dove,gave¦2aw:drew¦2ed:fed¦2y:flew,laid,paid,said¦1ight:fought¦1et:got¦2ve:had¦1ang:hung¦2ad:led¦2ght:lit¦2ke:made¦2et:met¦1un:ran¦1ise:rose¦1it:sat¦1eek:sought¦1each:taught¦1ake:woke,took¦1eave:wove¦2ise:arose¦1ear:bore,tore,wore¦1ind:bound,found,wound¦2eak:broke¦2ing:brought,wrung¦1ome:came¦2ive:drove¦1all:fell¦4et:forgot¦1old:held¦2ave:left¦1ing:rang,sang¦1ide:rode¦1ink:sank¦1ee:saw¦2ine:shone¦4e:slid¦1ell:sold,told¦4d:spent¦2in:spun¦1in:won" | ||
"fwd": "1:tted,wed,gged,nned,een,rred,pped,yed,bbed,oed,dded,rd,wn,mmed¦2:eed,nded,et,hted,st,oled,ut,emed,eled,lded,ken,rt,nked,apt,ant,eped,eked¦3:eared,eat,eaded,nelled,ealt,eeded,ooted,eaked,eaned,eeted,mited,bid,uit,ead,uited,ealed,geted,velled,ialed,belled¦4:ebuted,hined,comed¦y:ied¦ome:ame¦ear:ore¦ind:ound¦ing:ung,ang¦ep:pt¦ink:ank,unk¦ig:ug¦all:ell¦ee:aw¦ive:ave¦eeze:oze¦old:eld¦ave:ft¦ake:ook¦ell:old¦ite:ote¦ide:ode¦ine:one¦in:un,on¦eal:ole¦im:am¦ie:ay¦and:ood¦1ise:rose¦1eak:roke¦1ing:rought¦1ive:rove¦1el:elt¦1id:bade¦1et:got¦1y:aid¦1it:sat¦3e:lid¦3d:pent", | ||
"both": "1:aed,fed,xed,hed¦2:sged,xted,wled,rped,lked,kied,lmed,lped,uped,bted,rbed,rked,wned,rled,mped,fted,mned,mbed,zzed,omed,ened,cked,gned,lted,sked,ued,zed,nted,ered,rted,rmed,ced,sted,rned,ssed,rded,pted,ved,cted¦3:cled,eined,siped,ooned,uked,ymed,jored,ouded,ioted,oaned,lged,asped,iged,mured,oided,eiled,yped,taled,moned,yled,lit,kled,oaked,gled,naled,fled,uined,oared,valled,koned,soned,aided,obed,ibed,meted,nicked,rored,micked,keted,vred,ooped,oaded,rited,aired,auled,filled,ouled,ooded,ceted,tolled,oited,bited,aped,tled,vored,dled,eamed,nsed,rsed,sited,owded,pled,sored,rged,osed,pelled,oured,psed,oated,loned,aimed,illed,eured,tred,ioned,celled,bled,wsed,ooked,oiled,itzed,iked,iased,onged,ased,ailed,uned,umed,ained,auded,nulled,ysed,eged,ised,aged,oined,ated,used,dged,doned¦4:ntied,efited,uaked,caded,fired,roped,halled,roked,himed,culed,tared,lared,tuted,uared,routed,pited,naked,miled,houted,helled,hared,cored,caled,tired,peated,futed,ciled,called,tined,moted,filed,sided,poned,iloted,honed,lleted,huted,ruled,cured,named,preted,vaded,sured,talled,haled,peded,gined,nited,uided,ramed,feited,laked,gured,ctored,unged,pired,cuted,voked,eloped,ralled,rined,coded,icited,vided,uaded,voted,mined,sired,noted,lined,nselled,luted,jured,fided,puted,piled,pared,olored,cided,hoked,enged,tured,geoned,cotted,lamed,uiled,waited,udited,anged,luded,mired,uired,raded¦5:modelled,izzled,eleted,umpeted,ailored,rseded,treated,eduled,ecited,rammed,eceded,atrolled,nitored,basted,twined,itialled,ncited,gnored,ploded,xcited,nrolled,namelled,plored,efeated,redited,ntrolled,nfined,pleted,llided,lcined,eathed,ibuted,lloted,dhered,cceded¦3ad:sled¦2aw:drew¦2ot:hot¦2ke:made¦2ow:hrew,grew¦2ose:hose¦2d:ilt¦2in:egan¦1un:ran¦1ink:hought¦1ick:tuck¦1ike:ruck¦1eak:poke,nuck¦1it:pat¦1o:did¦1ow:new¦1ake:woke¦go:went", | ||
"rev": "3:rst,hed,hut,cut,set¦4:tbid¦5:dcast,eread,pread,erbid¦ought:uy,eek¦1ied:ny,ly,dy,ry,fy,py,vy,by,ty,cy¦1ung:ling,ting,wing¦1pt:eep¦1ank:rink¦1ore:bear,wear¦1ave:give¦1oze:reeze¦1ound:rind,wind¦1ook:take,hake¦1aw:see¦1old:sell¦1ote:rite¦1ole:teal¦1unk:tink¦1am:wim¦1ay:lie¦1ood:tand¦1eld:hold¦2d:he,ge,re,le,leed,ne,reed,be,ye,lee,pe,we¦2ed:dd,oy,or,ey,gg,rr,us,ew,to¦2ame:ecome,rcome¦2ped:ap¦2ged:ag,og,ug,eg¦2bed:ub,ab,ib,ob¦2lt:neel¦2id:pay¦2ang:pring¦2ove:trive¦2med:um¦2ode:rride¦2at:ysit¦3ted:mit,hat,mat,lat,pot,rot,bat¦3ed:low,end,tow,und,ond,eem,lay,cho,dow,xit,eld,ald,uld,law,lel,eat,oll,ray,ank,fin,oam,out,how,iek,tay,haw,ait,vet,say,cay,bow¦3d:ste,ede,ode,ete,ree,ude,ame,oke,ote,ime,ute,ade¦3red:lur,cur,pur,car¦3ped:hop,rop,uip,rip,lip,tep,top¦3ded:bed,rod,kid¦3ade:orbid¦3led:uel¦3ned:lan,can,kin,pan,tun¦3med:rim,lim¦4ted:quit,llot¦4ed:pear,rrow,rand,lean,mand,anel,pand,reet,link,abel,evel,imit,ceed,ruit,mind,peal,veal,hool,head,pell,well,mell,uell,band,hear,weak¦4led:nnel,qual,ebel,ivel¦4red:nfer,efer,sfer¦4n:sake,trew¦4d:ntee¦4ded:hred¦4ned:rpin¦5ed:light,nceal,right,ndear,arget,hread,eight,rtial,eboot¦5d:edite,nvite¦5ted:egret¦5led:ravel", | ||
"ex": "2:been,upped¦3:added,aged,aided,aimed,aired,bid,died,dyed,egged,erred,eyed,fit,gassed,hit,lied,owed,pent,pied,tied,used,vied,oiled,outed,banned,barred,bet,canned,cut,dipped,donned,ended,feed,inked,jarred,let,manned,mowed,netted,padded,panned,pitted,popped,potted,put,set,sewn,sowed,tanned,tipped,topped,vowed,weed,bowed,jammed,binned,dimmed,hopped,mopped,nodded,pinned,rigged,sinned,towed,vetted¦4:ached,baked,baled,boned,bored,called,caned,cared,ceded,cited,coded,cored,cubed,cured,dared,dined,edited,exited,faked,fared,filed,fined,fired,fuelled,gamed,gelled,hired,hoped,joked,lined,mined,named,noted,piled,poked,polled,pored,pulled,reaped,roamed,rolled,ruled,seated,shed,sided,timed,tolled,toned,voted,waited,walled,waned,winged,wiped,wired,zoned,yelled,tamed,lubed,roped,faded,mired,caked,honed,banged,culled,heated,raked,welled,banded,beat,cast,cooled,cost,dealt,feared,folded,footed,handed,headed,heard,hurt,knitted,landed,leaked,leapt,linked,meant,minded,molded,neared,needed,peaked,plodded,plotted,pooled,quit,read,rooted,sealed,seeded,seeped,shipped,shunned,skimmed,slammed,sparred,stemmed,stirred,suited,thinned,twinned,swayed,winked,dialed,abutted,blotted,fretted,healed,heeded,peeled,reeled¦5:basted,cheated,equalled,eroded,exiled,focused,opined,pleated,primed,quoted,scouted,shored,sloped,smoked,sniped,spelled,spouted,routed,staked,stored,swelled,tasted,treated,wasted,smelled,dwelled,honored,prided,quelled,eloped,scared,coveted,sweated,breaded,cleared,debuted,deterred,freaked,modeled,pleaded,rebutted,speeded¦6:anchored,defined,endured,impaled,invited,refined,revered,strolled,cringed,recast,thrust,unfolded¦7:authored,combined,competed,conceded,convened,excreted,extruded,redefined,restored,secreted,rescinded,welcomed¦8:expedited,infringed¦9:interfered,intervened,persevered¦10:contravened¦eat:ate¦is:was¦go:went¦are:were¦3d:bent,lent,rent,sent¦3e:bit,fled,hid,lost¦3ed:bled,bred¦2ow:blew,grew¦1uy:bought¦2tch:caught¦1o:did¦1ive:dove,gave¦2aw:drew¦2ed:fed¦2y:flew,laid,paid,said¦1ight:fought¦1et:got¦2ve:had¦1ang:hung¦2ad:led¦2ght:lit¦2ke:made¦2et:met¦1un:ran¦1ise:rose¦1it:sat¦1eek:sought¦1each:taught¦1ake:woke,took¦1eave:wove¦2ise:arose¦1ear:bore,tore,wore¦1ind:bound,found,wound¦2eak:broke¦2ing:brought,wrung¦1ome:came¦2ive:drove¦1ig:dug¦1all:fell¦2el:felt¦4et:forgot¦1old:held¦2ave:left¦1ing:rang,sang¦1ide:rode¦1ink:sank¦1ee:saw¦2ine:shone¦4e:slid¦1ell:sold,told¦4d:spent¦2in:spun¦1in:won" | ||
}, | ||
"PresentTense": { | ||
"fwd": "1:oes¦1ve:as", | ||
"both": "1:xes¦2:zzes,ches,shes,sses¦2y:llies,plies¦1y:bies,ties,vies,nies,pies,dies,ries,fies¦:s", | ||
"rev": "1ies:ly¦2es:us,go¦2ses:as¦3es:cho", | ||
"both": "1:xes¦2:zzes,ches,shes,sses¦3:iases¦2y:llies,plies¦1y:cies,bies,ties,vies,nies,pies,dies,ries,fies¦:s", | ||
"rev": "1ies:ly¦2es:us,go,do¦3es:cho,eto", | ||
"ex": "2:does,goes¦3:gasses¦5:focuses¦is:are¦3y:relies¦2y:flies¦2ve:has" | ||
@@ -34,0 +34,0 @@ }, |
@@ -21,2 +21,3 @@ //prefixes give very-little away, in general. | ||
'un-': Verb, | ||
'ex-': Noun, | ||
}, | ||
@@ -23,0 +24,0 @@ { |
@@ -69,2 +69,3 @@ //just a foolish lookup of known suffixes | ||
ign: Inf, | ||
oze: Inf, | ||
ful: Adj, | ||
@@ -92,2 +93,3 @@ bal: Adj, | ||
ects: Pres, | ||
iend: Sing, | ||
ends: Vb, | ||
@@ -94,0 +96,0 @@ enko: Last, |
@@ -62,3 +62,3 @@ const anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord'] | ||
Acronym: { | ||
not: ['Plural', 'RomanNumeral'], | ||
not: ['Plural', 'RomanNumeral', 'Pronoun'], | ||
}, | ||
@@ -65,0 +65,0 @@ Negative: { |
@@ -17,3 +17,3 @@ export default { | ||
Imperative: { | ||
is: 'Infinitive', | ||
is: 'Verb', | ||
not: ['PastTense', 'Gerund', 'Copula'], | ||
@@ -20,0 +20,0 @@ }, |
@@ -21,20 +21,8 @@ const rules = [ | ||
// === Verb === | ||
// quickly run | ||
// { match: '#Adverb+ {Verb}', chunk: 'Verb' }, | ||
// quickly and suddenly run | ||
{ match: '#Adverb+ and #Adverb #Verb', chunk: 'Verb' }, | ||
// run quickly | ||
// { match: '{Verb} #Adverb+', chunk: 'Verb' }, | ||
// sitting near | ||
{ match: '#Gerund #Adjective', chunk: 'Verb' }, | ||
{ match: '#Gerund #Adjective$', chunk: 'Verb' }, | ||
// going to walk | ||
{ match: '#Gerund to #Verb', chunk: 'Verb' }, | ||
// is no | ||
// { match: '#Copula no', chunk: 'Verb' }, | ||
// had not | ||
// { match: '#Verb #Negative', chunk: 'Verb' }, | ||
// not seen | ||
// { match: '#Negative #Verb', chunk: 'Verb' }, | ||
// not really | ||
// { match: '#Negative #Adverb ', chunk: 'Verb' }, | ||
// come and have a drink | ||
@@ -49,3 +37,3 @@ { match: '#PresentTense and #PresentTense', chunk: 'Verb' }, | ||
// tell him the story | ||
{ match: '#PresentTense [#Pronoun] #Determiner', group: 0, chunk: 'Verb' }, | ||
// { match: '#PresentTense [#Pronoun] #Determiner', group: 0, chunk: 'Verb' }, | ||
// tries to walk | ||
@@ -52,0 +40,0 @@ { match: '#Verb [to] #Adverb? #Infinitive', group: 0, chunk: 'Verb' }, |
@@ -67,2 +67,5 @@ import find from '../find.js' | ||
let info = getGrammar(vb, parsed) | ||
if (info.isInfinitive) { | ||
return vb | ||
} | ||
return toPresent(vb, parsed, info.form) | ||
@@ -75,2 +78,5 @@ }) | ||
let info = getGrammar(vb, parsed) | ||
if (info.isInfinitive) { | ||
return vb | ||
} | ||
return toPast(vb, parsed, info.form) | ||
@@ -83,2 +89,5 @@ }) | ||
let info = getGrammar(vb, parsed) | ||
if (info.isInfinitive) { | ||
return vb | ||
} | ||
return toFuture(vb, parsed, info.form) | ||
@@ -91,2 +100,5 @@ }) | ||
let info = getGrammar(vb, parsed) | ||
if (info.isInfinitive) { | ||
return vb | ||
} | ||
return toGerund(vb, parsed, info.form) | ||
@@ -99,2 +111,5 @@ }) | ||
let info = getGrammar(vb, parsed) | ||
if (info.isInfinitive) { | ||
return vb | ||
} | ||
return toParticiple(vb, parsed, info.form) | ||
@@ -101,0 +116,0 @@ }) |
@@ -30,2 +30,13 @@ import forms from './forms.js' | ||
// 'learned [to code]' | ||
const isInfinitive = function (vb) { | ||
if (vb.has('#Infinitive')) { | ||
let m = vb.growLeft('to') | ||
if (m.has('^to #Infinitive')) { | ||
return true | ||
} | ||
} | ||
return false | ||
} | ||
const getGrammar = function (vb, res) { | ||
@@ -54,2 +65,4 @@ let grammar = {} | ||
grammar.copula = res.root.has('#Copula') | ||
// 'learn to code' | ||
grammar.isInfinitive = isInfinitive(vb) | ||
return grammar | ||
@@ -56,0 +69,0 @@ } |
const findVerbs = function (doc) { | ||
let m = doc.match('<Verb>') | ||
// want to see | ||
m = m.not('(#Conjunction && !to)') | ||
m = m.not('#Conjunction') | ||
// by walking | ||
@@ -30,5 +30,9 @@ m = m.not('#Preposition') | ||
m = m.splitBefore('(#PresentTense|#PastTense) [will be]$', 0) | ||
// directing had | ||
m = m.splitBefore('(#PresentTense|#PastTense) [(had|has)]', 0) | ||
// 'allow yourself' | ||
m = m.not('#Reflexive$') | ||
// sitting near | ||
m = m.not('#Adjective') | ||
@@ -52,3 +56,2 @@ // pastTense-pastTense | ||
// ensure it's not two verbs | ||
// held annually is called | ||
@@ -55,0 +58,0 @@ if (m.has('(#Verb && !#Auxiliary) #Adverb+? #Copula')) { |
@@ -120,15 +120,23 @@ const utils = { | ||
} | ||
let document = this.document | ||
for (let i = 0; i < ptrs.length; i += 1) { | ||
let [n, start, end] = ptrs[i] | ||
// it's not the start | ||
if (n !== i || start !== 0) { | ||
return false | ||
} | ||
// it's too short | ||
if (document[n].length > end) { | ||
return false | ||
} | ||
// must start at beginning | ||
if (ptrs.length === 0 || ptrs[0][0] !== 0) { | ||
return false | ||
} | ||
return true | ||
let wantTerms = 0 | ||
let haveTerms = 0 | ||
this.document.forEach(terms => wantTerms += terms.length) | ||
this.docs.forEach(terms => haveTerms += terms.length) | ||
return wantTerms === haveTerms | ||
// for (let i = 0; i < ptrs.length; i += 1) { | ||
// let [n, start, end] = ptrs[i] | ||
// // it's not the start | ||
// if (n !== i || start !== 0) { | ||
// return false | ||
// } | ||
// // it's too short | ||
// if (document[n].length > end) { | ||
// return false | ||
// } | ||
// } | ||
// return true | ||
}, | ||
@@ -135,0 +143,0 @@ |
@@ -98,2 +98,11 @@ import type { Document, Pointer, Groups, JsonProps, outMethods, matchOptions, Term, Net } from '../misc.d.ts' | ||
after: (match: string | View, group?: string | number, options?: matchOptions) => View | ||
/** alias of .before() */ | ||
lookBehind: (match: string | View, group?: string | number, options?: matchOptions) => View | ||
/** alias of .before() */ | ||
lookBefore: (match: string | View, group?: string | number, options?: matchOptions) => View | ||
/** alias of .after() */ | ||
lookAhead: (match: string | View, group?: string | number, options?: matchOptions) => View | ||
/** alias of .after() */ | ||
lookAfter: (match: string | View, group?: string | number, options?: matchOptions) => View | ||
/** add any immediately-preceding matches to the view*/ | ||
@@ -100,0 +109,0 @@ growLeft: (match: string | View, group?: string | number, options?: matchOptions) => View |
@@ -86,3 +86,3 @@ import type View from './two.d.ts' | ||
// Nouns class | ||
interface Nouns extends View { | ||
export interface Nouns extends View { | ||
/** grab the parsed noun-phrase */ | ||
@@ -100,3 +100,3 @@ parse: (n?: number) => object[] | ||
interface Numbers extends View { | ||
export interface Numbers extends View { | ||
/** grab the parsed number */ | ||
@@ -142,3 +142,3 @@ parse: (n?: number) => object[] | ||
interface Fractions extends View { | ||
export interface Fractions extends View { | ||
/** grab the parsed number */ | ||
@@ -161,3 +161,3 @@ parse: (n?: number) => object[] | ||
// Sentences class | ||
interface Sentences extends View { | ||
export interface Sentences extends View { | ||
/** grab the parsed sentence */ | ||
@@ -187,3 +187,3 @@ parse: (n?: number) => object[] | ||
interface People extends View { | ||
export interface People extends View { | ||
/** get first/last/middle names */ | ||
@@ -194,3 +194,3 @@ parse: () => object[] | ||
// Verbs class | ||
interface Verbs extends View { | ||
export interface Verbs extends View { | ||
/** grab the parsed verb-phrase */ | ||
@@ -232,3 +232,3 @@ parse: (n?: number) => object[] | ||
interface Acronyms extends View { | ||
export interface Acronyms extends View { | ||
/** 'F.B.I.' -> 'FBI' */ | ||
@@ -239,11 +239,11 @@ strip: () => View | ||
} | ||
interface Parentheses extends View { | ||
export interface Parentheses extends View { | ||
/** remove ( and ) punctuation */ | ||
strip: () => View | ||
} | ||
interface Possessives extends View { | ||
export interface Possessives extends View { | ||
/** "spencer's" -> "spencer" */ | ||
strip: () => View | ||
} | ||
interface Quotations extends View { | ||
export interface Quotations extends View { | ||
/** remove leading and trailing quotation marks */ | ||
@@ -253,3 +253,3 @@ strip: () => View | ||
interface Adjectives extends View { | ||
export interface Adjectives extends View { | ||
/** get the words describing this adjective */ | ||
@@ -270,4 +270,4 @@ adverbs: () => View | ||
// only overloads .json() | ||
interface Adverbs extends View { } | ||
export 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
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2460546
27473
12