compromise uses semver, and pushes to npm and github frequently
- Major is a breaking api change - method or response changes that can cause runtime errors.
- Minor is a behaviour change - Tagging or grammar changes.
- Patch is an obvious, non-controversial bugfix.
While all Major releases should be reviewed, our only large releases are v6 in 2016 v12 in 2019 and v14 in 2022. Others have been mostly incremental.
- [update] - support for Typescript 7 #1198
- [update] - dependencies
- [fix] - update types #1181
- [update] - add nelissa and gert #1180
- [fix] - sentence tokenization issues #1194 and #1193
- [update] - prefer const to let
- [new] - experimental cmd-k plugin
- [update] - dependencies
- [fix] - TypeScript & esm resolution #1165
- [fix] - another runtime error in punctuation replace #1150
- [update] - dependencies
- [fix] - runtime error in punctuation replace #1150
- [update] - compromise-dates 3.7.0
- [fix] - runtime error in number parser #1145
- [update] - dependencies
- [new] - .slashes() and .slashes().split() methods #1100
- [fix] - multiple contraction issue #1128
- [fix] - toNumbers() return values #1113
- [fix] - (plugins/wikipedia) - fix hard-coded path for #1116
- [fix] - (plugins/dates) - limit values in
mm/ddformat - [fix] - (plugins/dates) params mutation #1109
- [change] - split people names by commas #1111
- [change] - typescript export update #1104
- [update] - eslint config format
- [update] - github actions
- [update] - dependencies
- [new] - .compute('freeze')
- [new] - .debug('freeze')
- [change] - allow 3-slashes in a word
- [new] - .payload() plugin
- [new] -
.numbers().isUnit()method #1089 - [change] - update github workflow (thanks FDawgs!)
- [fix] - README issues (thanks track0x1!)
- [fix] - .has() inconsistency
- [new] - support adding debug methods via plugins
- [change] - remove deprecated .debug(object) support
- [fix] - parentheses() match issue
- [fix] - tokenization issue #1085
- [new] -
dates().isBefore(),dates().isBefore()methods - [new] -
.debug('dates')method - [fix] - lazy join() issue
- [update] - dependencies
- [new] - support for frozen lex in plugin object #1080
- [fix] - toggling options in .json()
- [new] - .join() and .joinIf() methods
- [new] - support freeze in sweep
- [change] - internal typescript improvements
- [fix] - tagging issues
- [change] - @hasEllipses must be following the word
- [update] - dependencies
- [fix] - missing words in html output (thanks ryan!)
- [change] - better #Possessive tagging for #1074
- [change] - improved is/has contraction classifier #1074
- [change] - fixes to subordinate clause identification #1072
- [update] - dependencies
- [new] - tagging
.freeze()and.unfreeze()feature - [change] - stronger deferal to internal lexicon
- [change] - support any-length phrases in lexicon
- [fix] - prevent missed overlapping lexicon phrases
- [update] - dependencies
- [fix] - abbreviation checks for sentence-tokenizer #1061
- [change] - improve person tagger #1059
- [change] - add #FutureTense tag
- [fix] - .out() runtime error #1056
- [fix] - punctuation loss in .not() #1022
- [update] - dependencies
- [fix] - verb conjugation fixes
- [fix] - tagger fixes
- [change] - align package.json with ESM module #1023
- [fix] - .splitBefore() bugfix
- [fix] - typescript+docs fixes #1023
- [fix] - subtle changes to .text() and .isFull()
- [update] - dependencies
- [new] - .verbs().toPastParticiple() method
- [new] -
.normalize({ debullet: true })#1004 - [change] - typescript path changes (thanks @rotemdan !)
- [fix] - suffix tagging issues
- [fix] - match syntax issue #997
- [change] - keep possessive in replace #1011
- [change] - major improvements to adj.toNoun() conjugator
- [fix] - parsematch bug #997
- [fix] - "there's been" contraction
- [new] - .conjugate() methods on Noun/Adverb/Adjective classes
- [new] - add Gerund and PastParticiple to .verbs().conjugate() results
- [new] - option to keep possessives in .replace() #1011
- [fix] - tagger fix #998
- [update] - dependencies
- [change] - #Actor tagging - in advance of #565
- [change] - .noun() lumping changes - in advance of #565
- [new] - support japanese full-stop
- [fix] - number tagging #992
- [update] - dependencies
- [fix] - tagging fixes
- [change] - allow #Plural acronyms
- [fix] - allow root matches in fastOr
- [fix] - more flexible PhrasalVerb tagging
- [fix] - tagging fixes
- [new] - add Person .presumedMale(), .presumedFemale() methods
- [new] - add Pronoun class, .refersTo()
- [new] - add Noun.references()
- [new] - .nouns('spencer') shorthand as an if-match
- [change] - "[do] you .." etc now #QuestionWord
- [new] - add #Hyphenated tag
- [fix] - improved Auxiliary verb tagging
- [update] - dependencies
- [fix] - concat fix
- [change] - tagging fixes
- [change] -
{word/tag/sense}sense-match syntax
- [new] - match term id
- [change] - tag text by default on .concat('')
- [change] - allow modifying term prePunctuation
- [new] - .wrap() method
- [new] - .isFull() method
- [new] - support full
notIfmatches on sweep - [fix] - text params for #953
- [fix] - nouns().isSingular() missing
- [change] - one-character w/ dash tokenization #977
- [change] - allow setting
model.one.prePunctuation+postPunctuation - [fix] - compromise-paragraphs plugin
- [change] - move internal conjugation methods
- [update] - github scripts
- [change] - fixes to .clauses() parser
- [change] - an astrix is not a word
- [new] - @hasColon method
- [new] - @hasDash supports two dashes
- [new] -
#Passiveverb tag - [new] - existential
#Theretag - [new] - add tense info to sentence json
- [fix] - verb tokenization issues
- [fix] - .replace() issues
- [update] - dependencies
- [fix] - runtime error #965
- [fix] - misc possessive tagging issues
- [update] - dependencies
- [fix] - .remove() fixes
- [change] - support « angle quotes »
- [update] - dependencies
- [fix] - possible runtime error in setTag method
- [change] - make #Honorific always a #Person #951
- [new] - manually change conjugations/inflections from plugin #949
- [new] -
.adjectives().conjugate()method - [update] - dependencies
- [fix] - fix logic for greedy-negative matches - #936
- [fix] - fix tagging for 3-digit year iso dates - #868
- [update] - dependencies
- [fix] - support {root} matches without compromise/two
- [fix] - guard for toRoot methods in root match
- [update] - compromise-stats
- [fix] - hotfix for sentence tokenization issue #935
- [change] - improvements to negative-optional match logic -
!foo? - [change] - support short sentences embedded in quotes+parentheses
- [change] - faster sentence tokenizer
- [change] - ° symbol is not punctuation
- [new] - implement .swap() for comparative/superlative adjectives
- [fix] - sentence.toFuture() conjugation rules
- [update] - dependencies
- [change] - support root matches like '{walk}' work without doing .compute('root')
- [change] - split numbers+units '12km' as contraction - #919
- [new] -
.lazy(txt, match)fast-scan method 1 - [fix] - support apostrophes in lexicon #932
- [fix] - support unTag property in sweep
- [change] - keep sentence caches, when still valid
- [change] - alias nlp.compile() to .buildTrie()
- [fix] - tagging fixes
- [update] - dependencies plugin-releases: dates, speed, de-compromise
- [fix] - missed caches in .sweep()
- [new] - .out('hash') and
.json({hash:true})
- [fix] - unwanted logging in compromise/one
- [fix] - dependency export path for react-native builds #928
- [change] - split hyphenated words in match syntax 'foo-bar'
- [change] - support 4-digit number-ranges (when not a phone number) plugin-releases: dates
- [fix] - double-contraction issue #925
- [fix] - .not() memleak #926
- [fix] - speed improvements
- [fix] - bug with fast-or possessive matches
- [fix] - bug with slow-or end-matches
- [change] - no-longer attempt 's contractions in compromise/one
- [new] - flag novel tags in world.one.tagSet
- [new] - .sweep() and nlp.buildNet() methods
- [new] - some typescript support in plugins #918
- [fix] - better unicode support with Unicode property escapes
- [fix] - problems matching on cached documents
- [fix] - typescript fixes
- [fix] - suffix tagging issues
- [fix] - uncached matches missing in .sweep()
- [fix] - non-empty results when pointer is first repaired
- [fix] - nouns().toPlural() fix for #921
- [fix] - drop deprecated .subst() method internally
- [new] - some support for .numbers().units() again #919
- [new] - add .harden() .soften() undocumented methods
- [fix] - support pre-parsed matches in .has() .if() and .not()
- [fix] - contraction OR match issue
- [fix] - match-syntax min-max issue
- [fix] - normalized printout of abbreviations
- [update] - date plugin release
- [update] - dependencies
- [fix] - main property in package.json #911
- [fix] - client-side export format for plugins
- [new] - more adjective transformation methods
- [new] - emoji + emoticon tagger
- [new] - case-sensitive match option -
{caseSensitive:true}
Major release - see Release Notes for full details
- [breaking] - remove
.parent()and.parents()chain - (use.all()instead) - [breaking] - remove
@titleCasealias (use @isTitleCase) - [breaking] - remove '.get()' alias - use '.eq()'
- [breaking] - remove
.json(0)shorthand - use.json()[0] - [breaking] - remove
.tagger()- use .compute('tagger') - [breaking] - remove
.export()-> .load() - use .json() -> nlp(json) - [breaking] - remove
nlp.clone() - [breaking] - remove
.join()deprecated - [breaking] - remove
.lists()deprecated - [breaking] - remove
.segment()deprecated - [breaking] - remove
.sententences().toParticiple()&.verbs().toParticiple() - [breaking] - remove
.nouns().toPossessive()&.nouns().hasPlural() - [breaking] - remove array support in match methods - (use
.match().match()instead) - [breaking] - refactor
.out('freq')output format - (uses.compute('freq').terms().unique().json()instead) - [breaking] - change
.json()result format for subsets - [change] merge re-used capture-group names in one match
- [change] drop support for undocumented empty '.split()' methods - which used to split the parent
- [change] subtle changes to
.text('fmt')formats - [change] @hasContraction is no-longer secretly-greedy. use
@hasContraction{2} - [change]
.and()now does a set 'union' operation of results (no overlaps) - [change] bestTag is now
.compute('tagRank') - [change]
.sort()is no longer in-place (its now immutable) - [change] drop undocumented options param to
.replaceWith()method - [change] add match-group as 2nd param to split methods
- [change] remove #FutureTense tag - which is not really a thing in english
- [change]
.unique()no-longer mutates parent - [change]
.normalize()inputs cleanup - [change] drop agreement parameters in .numbers() methods
- [change] - less-magical money parsing -
nlp('50 cents').money().get()is no-longer0.5 - [change] - .find() does not return undefined on an empty result anymore
- [change] - fuzzy matches must now be wrapped in tildes, like
~this~ - [new]
.union(), .intersection(), .difference() and .complement() methods - [new]
.confidence()method - approximate tagging confidence score for arbitrary selections - [new]
.settle()- remove overlaps in matches - [new]
.isDoc()- helper-method for comparing two views - [new]
.none()- helper-method for returning an empty view of the document - [new]
.toView()method - drop back to a normal Class instance - [new]
.grow().growLeft()and.growRight()methods - [new] add punctuation match support via pre/post params
- [new] add ambiguous empty .map() state as 2nd param
- [fix] - regex backtracing issue #847 (thanks @srubin)
- misc tagging fixes update deps
- [fix] - verbphrase conjugation fixes
- [fix] - verbphrase tagger fixes
- [fix] - url tagging regex improvements (thanks Axay!) update deps plugin-releases: dates
- [fix] - obscure runtime error in capture-groups update deps plugin-releases: typeahead
- [change] - use babel default build target (drop ie11 polyfill)
- [change] - dont compile esm build w/ babel anymore
- [fix] - sentence conjugation fixes
- [fix] - improvements to phrasal verbs
- [change] - keep tokenization for some more dashed suffixes like 'snail-like' plugin-releases: dates, numbers, sentences
- [change] - tokenize '2 - 5' as NumerRange, like '2-5' is
- [fix] - edge-cases for URLs with numbers
- [fix] - some sentences.toPastTense() fixes
- [fix] - 'n weekends from now' math in plugin-date plugin-releases: dates, sentences
- [fix] - support more time-ranges plugin-releases: dates@2.0.2
- [new] - support Time-range like '3pm-4pm'
- [change] - cleanup some unicode regexes plugin-releases: dates
- [fix] - match syntax tokenization fix
- [change] - improved performance monitoring
- [fix] - support complicated regular-expressions in match syntax
- improved performance testing
- [fix] - support matching implicit terms in (or|blocks)
- [change] - add #Timezone tag (from date-plugin)
- [change] - add many more cities and regions
- [change] - #Date terms can still be a #Conjunction
- [new] - #Imperative tag and
.verbs().isImperative()method - [fix] - some tagger issues
- update deps plugin-releases: dates
- [new] - #Fraction tag and improved fraction support (thanks Jakeii!)
- [fix] - edge-case match issues with
!syntax - [change] - update deps
- updates for
compromise-dates@1.4.0,compromise-numbers@1.2.0
- [fix] - fix weird ordering issue with named exports #815
- [fix] - typescript issue
- [fix] - matches over a contraction
- [new] - add 'implicit' text output
- [new] - World.addConjugations() method
- [new] - World.addPlurals() method
- [new] - start compromise-penn-tags plugin
- [new] - add fuzzy option to match commands
- [new] - support multiple-word matches in OR matches (a|b|foo bar|c)
- [change] (internal) - rename 'oneOf' match syntax to 'fastOr'
- [change] - use new export maps format
- [fix] - conjugations fixes #800
- [fix] - tokenization fixes #801
- [change] improved support for fractions in numbers-plugin #793
- [change] remove zero-width characters in normalized output #759
- [change] improved Person tagging with particles #794
- [change] improved i18n Person names
- [change] tagger+tokenization fixes
- [change] remove empty results from .out('array') #795
- [change]
.tokenize()runs any postProcess() scripts from plugins - [change] improved support for lowercase acronyms
- [change] - support years like '97
- [change] - change tokenizer for '20-aug'
- [change] - update deps of all plugins
- [fix] - NumberRange tagging issue #795
- [fix] - improved support for ordinal number ranges
- [fix] - improved regex support in match-syntax
- [fix] - improved support for
softmatch syntax #797 - [fix] - better handling of
{0,n}match syntax - [new] - new plugin
strict-match - [new] - set NounPhrase, VerbPhrase tags in nlp-sentences plugin
- [new] -
.phrases()method in nlp-sentences plugin - [new] - support
.apppend(doc)and.prepend(doc) - [new] -
values.normalize()method
- [change] many misc tagging fixes
- 'if' is now a #Preposition
- possessive pronouns are #Pronoun and #Possessive
- more phrasal verbs
- make #Participle tag #PastTense
- favor #PastTense over #Participle interpretation in tagger
- [change]
@hasHyphenreturns false for sentence dashes - a lot more testing
- [new] first-attempt at
verbs().subject()method - [change] avoid conjugating imperative tense - 'please close the door'
- [change] misc tagging fixes #786
- [change] .nouns() results split on quotations #783
- [change] NumberRange must be < 4 digits #735
- [change] reduction in #Person tag false-positives
- [new] add
.parseMatch()method for pre-parsing match statements
- [change] stop including adverbs and some auxiliaries in
.conjugate()results - [change] .append() and .prepend() on an empty doc now creates a new doc
- [new] add
verbs().toParticiple()method (add to observables/verb) - [new] add
sentences().toParticiple()method (add to observables/verb) - [fix] some verb-tagging issues
- [fix] contractions issue in
.clone() - [fix] try harder to retain modal-verbs in conjugation - 'i should drive' no-longer becomes 'i will drive'
- fix for offset issue #771
- fix for
{min,max}syntax #767 - typescript fixes
- update deps
-support unicode spaces for #759
- major improvements to
compromise-plugin-dates(1.0.0)
- bugfixes (conjugation and tagging) 752, 737, 725, 751, 743 748, 755, 758, 706, 761
- support tokenized array as input
- update deps
- bugfix updates to
plugin-sentences, andplugin-dates
- deprecate
.money()and favour overloaded method in compromise-numbers plugin - add
.percentages()and.fractions()to compromise-numbers plugin - add
.hasAfter()and.hasBefore()methods - change handling of slashes
- add
.world()method to constructor - add more abbreviations
- fix regex backtracking #739
- tokenize build:
-
- remove conjugation and inflection data
-
- remove conjugation and inflection functions
- remove sourcemap from build process (too big)
- improvements to
.numbers().units() - fix for linked-list runtime error #744 with contractions
- fix
verbs.json()runtime-error - improve empty
.lists()methods - allow custom tag colors
- test new github action workflow
- significant (~30%) speed up of parsing
- change sensitivity of input in
.lookup()for major speed improvements. - improved typescript types
- subtle changes to internal caching
- adds 'oneOf' match syntax param
- fixes
[word?]syntax parsing
major changes to .export() and [capture] group match-syntax.
- [breaking] move .export() and .load() methods to plugin (compromise-export)
-
- change .export() format - this hasn't worked properly since v12. (mis-parsed contractions) see #669
- [breaking] split
compromise-outputintocompromise-htmlandcompromise-hashplugins - [breaking]
.match('foo [bar]')no-longer returns 'bar'. (use.match('foo [bar]', 0)) - [breaking] capture groups are no longer merged.
.match('[foo] [bar]')returns two groups accessible with the new.groups()function - [breaking] change
.sentences()method to return only full-sentences of matches (use.all()instead)
modifications:
- [fix] - nlp.clone() - hasn't worked properly, since v12. (@Drache93)
- [fix] - issues with greedy capture [*] and [.+] -(@Drache93) 💛
- add whitespace properties (pre+post) to default json output (suppress with
.json({ whitespace: false })) .lookup({ key: val })with an object now returns an object back ({val: Doc})- add nlp constructor as a third param to
.extend() - support lexicon object param in tokenize -
.tokenize('my word', { word: 'tag' }) - clean-up of scripts and tooling
- improved typescript types
- add support for some french contractions like
j'aime -> je aime - allow null results in
.map()function - better typescript support
- allow longer acronyms
- [fix] - offset length issue
- [new] - add new named-match syntax, with .groups() method (@Drache93)
- [new] - add
nlp.fromJSON()method - [new] - add a new
compromise-tokenize.jsbuild, without the tagger, or data included.
- prefer
@titleCaseinstead of#TitleCasetag - update dependencies
- fix case-sensitive paths
- fix greedy-start match condition regression #651
- fix single period sentence runtime error
- fix potentially-unsafe regexes
- improved tagging for '-ed' verbs (#616)
- improve support for auxilary-pastTense ('was lifted') verb-phrases
- more robust number-tagging regexes
- setup typescript types for plugins #661 (thanks @Drache93!)
- verb conjugation and tagger bugfixes
- disambiguate between acronyms & yelling
- fix 'aint' contraction
- make Doc.world writable
- update deps
- more tests
- fix shared period with acronym at end of sentence
- fix some mis-classification of contraction
- fix over-active emoji regex
- tag 'cookin', 'hootin' as
Gerund - support unicode single-quote symbols in contractions
- improved splitting in .nouns()
- add
.nouns().adjectives()method - add
concatparam to.pre()and.post() - allow ellipses at start of term "....so" in
@hasEllipses - fix matches with optional-end
foo?$match syntax - add typescript types for subsets
- add 'sideEffect:false' flag to build
- considerable speedup (20%) in tagger
- ensure trimming of whitespace for root/clean/reduced text formats
- fix client-side logging
- more flexible params to
replace()andreplaceWith()
- see Release Notes
- support singular units in
.value()
.quotations()no-longer return repeated results for nested quotes- simplify quotation tagset
.out('normal')no longer includes quotes or trailing-possessives- improve
.debug()on client-side
- better honorific support, add
honorificsfeature to .normalize() - elipses bugfixes
- replace unicode chars in
.normalize()now by default acronyms().stripPeriods()andacronyms().addPeriods()
- tag professions as
#Actor - add more behaviours to
.normalize() - support match-results as inputs to .match() and .not()
- support some us-state abbreviations like 'Phoeniz AZ'
- add
nouns().toPossessive() - ngrams now remove empty-terms in contractions - fixes counting issue #476
- expose internal
sentences().isQuestion()method .join()as an alias for.flatten()- slightly different behavior for wildcards in capture-groups pull/472
.possessives()subset +#Possessivetagging fixes- hide massive
worldoutput for console.log of a term
- improve quotations() method
- add .parentheses() method
- add 'nickname' support to .people()
- 'will be #Adjective' now tagged as Copula
- include adverbs in verb conjugation (more) consistently
sentences().toContinuous()andverbs().toGerund()- some more aliases for jquery-like methods api
- move
getPunctuation,setPunctuationfrom .sentence to main Text method - rename internal
endPunctuationtogetPunctuation - more consistent
cardinal/ordinaltagging for values
- add #Abbreviation tag
- add #ProperNoun tag
- fixes for noun inflection
- include old ending punctuation in a
.replace()cmd
- almost-double the support for first-names
- changes to bestTag method
- rolls-back some aggressive JustesonKatz stuff
- better support for emdash numberRange
- 'can't' contraction bugfix
- fix for dates().toShortForm()
- add
#MultipleValues tag, and changes to how invalid numbers like 'sixty fifteen hundred' are understood - better em-dash/en-dash support
- better conjugate implicit verbs inside contractions - "i'm", "we've"
- nouns().articles() method
- neighborhoods as #Place
- support more complex noun-phrases with JustesonKatz in
.nouns()
- support for persistent lexicon/tagset changes
addTags, addWords, addRegs, addPlurals, addConjugationsmethods to extend native data-
.plugin()method to wrap all of these into one
-
- (removal of
.packWords()method)
- (removal of
- more
.organizations()matches - regex-support in .match() -
nlp('it is waaaay cool').match('/aaa/').out()//'waaaay' - improved apostrophe-s disambiguation
- support whitespace before sentence boundary
- improved QuestionWord tagging, some
.questions()without a question-mark - phrasalVerb conjugation
- new #Activity tag for Gerunds as nouns 'walking is fun'
- change ngram params to an object
{size:int, max:int} - implement '[]' capture-group syntax in .match()
- bring-back
map, filter, foreach and reducemethods - set
.words()as alias for .terms() people().firstNames(),people().lastNames()- split-out comma-separated adverbs
- fix for '.watch' reserved word in efrt
- improved
places()parsing - improved
{min,max}match syntax - new
.out('match')method - quiet addition of .pack() and .unpack() for owen
- move internal lexicon around, to support new format in v11
- added states & provinces as #Region
- added #Comparable tag for adjectives that conjugate
- add increment/decrement/add/subtract methods to .values()
- add units(), noUnits() methods to .values()
- 'uncountable' nouns are no longer assumed to be singular
- money tag is no longer always a value
- improved tagging of
VerbPhraseandCondition - fixes to contractions in sentence-changes - "i'm going -> i went"
- several verb conjugation fixes
- accept Terms & Result objects in .match() and .replace()
- new
Percenttag - lump more units in with
.values()
- .trim() method,
- adjective tagging fixes
- some new .out() methods
- fix return format of .isPlural(), so it acts like a match filter
- less-greedy date tagging & ambiguous month fixes
- cleanup & rename some
.value()methods - change lumping behaviour of lexicon terms with multiple words
- keep more former tags after a term replace method
- new
.random()method - new
.lessThan(),.greaterThan(),.equalTo()methods - new prefix/suffix/infix matches with
_ffixsyntax tag()supports a sequence of tags for a sequence of terms- .match 'range' queries now use a real match -
#Adverb{2,4} - new
.before()and.after()match methods - removes
.lexicon()method for many-lexicons concept - changes params of
.replaceWith()method to a 'keyTags' boolean - improved .debug() and logging on client-side
- pretty-real filesize reduction by swapping es6 classes for es5 inheritance
- rename
Term.tagobject toTerm.tagsso the.tag()method can work throughout more-consistently - fix 'Auxillary' tag typo to 'Auxiliary'
- optimisation of .match(), and tagset - significant speedup!
- adds
.tagger()method and cleanup extra params - adds
wordStartandwordEndoffsets to.out('offset')for whitespace+punctuation - new
.has()method for faster lookups
- add
nlp.out('index')method, 12 bugs
- add
nlp.tokenize()method for disabling pos-tagging of input
- less-ambitious date-parsing of nl-date forms
- filesize reduction using efrt data structure (254k -> 214k)
- fix for IE9
- weee! big change! npm package rename
- builds now using browserify + derequire()
- re-written term-lumper logic
- new nlp.lexicon({word:'POS'}) flow
- be consistent with
text.normal(),term.all_forms(),text.word_count().text.normal()includes sentence-terminators, like periods etc.
- airport codes support, helper methods for specific POS
- newlines split sentences
- Text methods now return this, instead of array of sentences
- more-sensible responses for invalid, non-string inputs
- 14 PRs, with fixes for currencies, pluralization, conjugation
- Value.to_text() new method, fix "Posessive" POS typo
- return of the text.spot() method (Re:#107)
- more aggressive lumping of dates, like 'last week of february'
- whitespace reproduction in .text() methods
- move negate from sentence to verb & statement
- rename 'implicit' to 'expansion' for smarter contractions
- added readable-compression to adj, verbs (121kb -> 117kb)
- hyphenated words are normalized into spaces
- grammar-aware match & replace functions
- Statement & Question classes
- split ngram, locale, and syllables into plugins in seperate repo
- es6 classes, babel building
- better test coverage
- ngram uses term tokenization, so that 'Tony Hawk' us one term, and not two
- more organized pos rules
- Pos tagging is done implicitly now once nlp.Text is run
- Entity spotting is split into .people(), .place(), .organisations()
- unicode normalisation is killed
- opaque two-letter tags are gone
- plugin support
- passive tense detection
- lexicon can be augmented third-party
- date parsing results are different
- smarter handling of ambiguous contractions ("he's" -> ["he is", "he has"])
- added name genders and beginning of co-reference resolution ('Tony' -> 'he') API.
- small breaking change on
Noun.is_pluralandNoun.is_entity, affording significant pos() speedup. Bumped Major version for these changes.
- Phrasal verbs ('step up'), firstnames and .people()
- Major file-size reduction through refactoring
- New NER choosing algorithm, better capitalisation logic, consolidated tests
- Sentence class methods, client-side demos