by
Spencer Kelly and
contributors
(formerly nlp_compromise)
inspect and play with english text.
focus on being handy, and not overly-fancy.
📯 Welcome to v7 📯
a lot
has changed!
let r = nlp('I look just like buddy holly.')
r.sentences().toPastTense()
r.out('text')
// "I looked just like buddy holly."
demos | quickStart | docs
no training, configuration, or prolog
the idea is, reach-in to a part of the text, and change it:
r = nlp('john is really nice. sara sings loudly.')
r.match('#Person').toUpperCase()
//JOHN is really nice. SARA sings loudly.
or pluck-out some parts,
r.remove('#Adverb')
// "JOHN is nice. SARA sings."
//replacements,
r.replace('is nice', 'is bad')
// "JOHN is bad. SARA sings."
or just be downright fancy
r.sentences().toNegative()
// "JOHN is not bad. SARA doesn't sing."
or grab specific parts, and analyze-the-heck out of them:
r = nlp(freshPrince)
r.places().sort('freq').unique().data()
/*[
{text: 'West Philadelphia'},
{text: 'Bel-Air'}
]*/
Part-of-Speech Tagging️ | Named-Entity Recognition️ | 🍾Verb Conjugation | ✨Inflection/Pluralization |
<script src="https://unpkg.com/compromise@latest/builds/compromise.min.js"></script>
<script>
var r = nlp('dinosaur').nouns().toPlural()
console.log(r.out('text'))
//dinosaurs
</script>
let r = nlp('she sells seashells by the seashore.')
r.sentences().toFutureTense().out('text')
//'she will sell seashells...'
r.verbs().conjugate()
// [{ PastTense: 'sold',
// Infinitive: 'sell',
// Gerund: 'selling', ...
// }]
r = nlp('a bottle of beer on the wall.')
r.nouns().first().toPlural()
r.out('text')
//'The bottles of beer on the wall.'
r = nlp('london is calling')
r.sentences().toNegative()
// 'london is not calling'
r = nlp('fifth of december')
r.values().toCardinal().out('text')
// 'five of december'
r.values().toNumber().out('text')
// '5 of december'
r = nlp("the guest-singer's björk at seven thirty.").normalize().out('text')
// 'The guest singer is Bjork at 7:30.'
r = nlp('the opera about richard nixon visiting china')
r.topics().data()
// [
// { text: 'richard nixon' },
// { text: 'china' }
// ]
r = nlp('Tony Hawk won').out('html')
/*
<span>
<span class="nl-Person nl-Noun nl-FirstName">Tony</span>
<span class="nl-Person nl-Noun nl-LastName">Hawk</span>
<span> </span>
<span class="nl-Verb nl-PastTense">won</span>
</span>
*/
and yes, ofcourse, there's a lot more stuff.
Join in! we're fun, we're using semver, and moving fast. get involved
Twitter
|
Slack group
|
Mailing-list
|
Pull-requests
|
- naturalNode - decidedly fancier, statistical nlp in javascript, too
- SuperScript - clever conversation engine in js
- NodeBox Linguistics - conjugation, inflection in javascript
- reText - very impressive text utilities in javascript
- jsPos - js-build of the time-tested Brill-tagger
- spaCy - speedy, multilingual tagger in C/python
For the former promise-library, see jnewman/compromise (Thanks Joshua!)