compromise-paragraphs
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published
a plugin for compromise
v
npm install compromise-paragraphs
let str = `What's with these homies dissin' my girl? Why do they gotta front? 

What did we ever do to these guys that made them so violent?

Woo-hoo, but you know I'm yours.
Woo-hoo, and I know you're mine.
Woo-hoo, and that's for all time
`

let doc = nlp(str).paragraphs()

doc.length
// 3

doc.json(options)
/*[
  {text:'What's with these ...', sentences:[{},{}]}
  {text:'What did we ever ...', sentences:[{}]}
]*/

// get the second paragraph
doc.eq(1).text()
// 'What did we ever ...'

// get the first two sentences of the first paragraph
doc
  .first()
  .sentences()
  .slice(0, 2)

This is a tentative implementation of .paragraphs() and associated methods, for compromise.

This is tricky because a sentence is a top-level structure to compromise, (and english grammar!), and combining sentences together would have some consequences about grammatical tags.

Instead, this plugin is a (partially-complete) wrapper for sentence objects, so that you can call things like .text() and .json() on a paragraph, but then drop back down to .sentences() after, and work as normal.

The term objects passed into .paragraphs() are mutable, so they will actually change when you transform them:

let doc = nlp(str).paragraphs()

doc = doc.filter(p => {
  return p.has('#Determiner guys')
})
// What did we ever do to these guys that made them so violent?

Demo

API:

outputs:

  • .text()
  • .json()

matches:

  • .match()
  • .not()
  • .if()
  • .ifNo()
  • .has()

selectors:

  • .sentences()
  • .terms()

accessors:

  • .eq()
  • .first()
  • .last()

loops:

  • .forEach()
  • .map()
  • .filter()

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i compromise-paragraphs

Weekly Downloads

642

Version

0.1.0

License

MIT

Unpacked Size

13.4 kB

Total Files

7

Last publish

Collaborators

  • spencermountain