Skip to content

Releases: spencermountain/compromise

14.2.0

01 Jun 19:04
536c4e8
Compare
Choose a tag to compare
  • [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

14.1.2

27 Apr 20:56
7f25708
Compare
Choose a tag to compare
  • [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

14.1.1

15 Apr 22:46
87b364b
Compare
Choose a tag to compare
  • [fix] - main property in package.json #911

14.1.0

12 Apr 21:29
0b4bf94
Compare
Choose a tag to compare
  • [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

22 Mar 22:07
52fb03e
Compare
Choose a tag to compare

Compromise is a javascript library that can do natural-language-processing tasks in the browser.

v14 is a big release, a proud re-write. It took a lot of work. Thank you to the many individuals that have helped create it.

Speed:

v14 is much faster. Usually 2x faster. You should be able to parse twice as many documents, in the same time.

Size:

v14 has been split into 3 libraries, so you can choose how-much of the library you'd like to use.
this is possible by switching to esmodules.

import nlp from 'compromise/one' // 68kb
import nlp from 'compromise/two' // 225kb
import nlp from 'compromise/three' // 275kb

in v14, we are dropping support for IE11 and node <12.

Self-repairing pointers:

we've finally found a quick way to support dynamic pointers to changing word data:

let doc = nlp('the dog is nice')
let sub = doc.match('is')
doc.match('doc').insertBefore('brown')
console.log(sub.text())
// 'is'

This works by using a fast-mode index lookup, with id-based error-correction.

Included plugins:

compromise-penn-tags compromise-plugin-scan and compromise-plugin-typeahead are now included in /one by default, which is great news.

compromise-plugin-numbers and compromise-plugin-adjectives is included by default in /three

New languages:

We now support early-versions of french, spanish, and german

Measured tagging suggestion:

a user-given lexicon is less coercive - so adding your own words is less-dangerous:

nlp('Dan Brown', { brown: 'Color' }).has('#Color') //false

Replace wildcards:

let doc = nlp('i am george and i live in France.')
doc.replace('i am [#Person+] and i live in [.]', '$0 is from $1')
doc.text()
// 'george is from France'

Root-replace:

.swap() is a way to replace via a root-word - where declinations are automatically handled:

let doc = nlp('i strolled downtown').compute('root')
doc.swap('stroll', 'walk')
// 'i walked downtown'

New plugin scheme:

We finally have a .plugin() scheme strong-enough to use internally. v14 is completely constructed via .plugin().
See the plugin documentation for details.

New plugins

see:

as well as our existing compromise-speech and compromise-dates functionality


Changelog

  • [breaking] - remove .parent() and .parents() chain - (use .all() instead)
  • [breaking] - remove @titleCase alias (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-longer 0.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

13.11.4

20 Sep 13:52
00a5594
Compare
Choose a tag to compare

hotfix for #876

13.11.3

21 Jun 20:48
f94dff6
Compare
Choose a tag to compare
  • [fix] - regex backtracing issue #847 (thanks @srubin !)
  • misc tagging fixes
    update deps

13.11.2

05 May 19:07
e979ec2
Compare
Choose a tag to compare
  • [fix] - verbphrase conjugation fixes
  • [fix] - verbphrase tagger fixes
  • [fix] - url tagging regex improvements (thanks Axay!)
    update deps
    plugin-releases: dates

13.11.1

18 Apr 18:42
49024fc
Compare
Choose a tag to compare
  • [fix] - obscure runtime error in capture-groups
    update deps
    plugin-releases: typeahead

13.11.0

15 Apr 19:07
2ce0f78
Compare
Choose a tag to compare
  • [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