nlp_compromise does NLP in the browser.
nlp.sentence('She sells seashells').to_past().text()
// 'She sold seashells'
- <150k js file
- 86% on the Penn treebank
- keypress speed, constant-time.
- caniuse, uhuh. IE9+
- no dependencies, training, configuration, or prolog.
It's a handy, and not overly-fancy tool for understanding, changing, and playing with english.
npm install nlp_compromise
<script src="https://unpkg.com/nlp_compromise@latest/builds/nlp_compromise.min.js"></script>
let nlp = require('nlp_compromise'); // or nlp = window.nlp_compromise
nlp.noun('dinosaur').pluralize();
// 'dinosaurs'
nlp.verb('speak').conjugate();
// { past: 'spoke',
// infinitive: 'speak',
// gerund: 'speaking',
// actor: 'speaker',
// present: 'speaks',
// future: 'will speak',
// perfect: 'have spoken',
// pluperfect: 'had spoken',
// future_perfect: 'will have spoken'
// }
nlp.statement('She sells seashells').negate().text()
// 'She doesn't sell seashells'
nlp.sentence('I fed the dog').replace('the [Noun]', 'the cat').text()
// 'I fed the cat'
nlp.text('Tony Hawk did a kickflip').people();
// [ Person { text: 'Tony Hawk' ..} ]
nlp.noun('vacuum').article();
// 'a'
nlp.person('Tony Hawk').pronoun();
// 'he'
nlp.value('five hundred and sixty').number;
// 560
nlp.text(require('nlp-corpus').text.friends()).topics()//11 seasons of friends
// [ { count: 2523, text: 'ross' },
// { count: 1922, text: 'joey' },
// { count: 1876, text: 'god' },
// { count: 1411, text: 'rachel' },
// ....
#Plugin/Mixins we've also got a modest, though ambitious plugin ecosystem:
//US-UK localization
nlp.plugin(require('nlp-locale'))
nlp.term('favourite').toAmerican()
// 'favorite'
//syllable hyphenization
nlp.plugin(require('nlp-syllables'));
var t2 = nlp.term('houston texas');
t2.syllables()
//[ [ 'hous', 'ton' ], [ 'tex', 'as' ] ]
//semantic n-gram
nlp.plugin(require('nlp-ngram'));
var t4 = nlp.text(`Tony Hawk played Tony Hawk's pro skater`);
t4.ngram({min_count: 2});
// [{word:'tony hawk', count:2, size:1}]
//grammar links
nlp.plugin(require('nlp-links'));
var sen = nlp.sentence('I fed the dog').withLinks();
// Each term now has links to words they are grammatically connected to
sen.terms[1].links[1].target.word; // terms[1] is verb 'fed'
// 'dog'
Useful NLP is a problem only solved with many hands. Contributing in any form is valued.
Join our slack group (login from here) or our infrequent announcement email-list.
Or just pick up an open issue
#See also
- naturalNode - decidedly fancier statistical nlp in javascript
- SuperScript - clever conversation engine in javascript
- NodeBox Linguistics - conjugation, inflection, correction etc in javascript
- reText - very impressive text utilities in javascript
- jsPos - the time-tested Brill-tagger in js
- spaCy - speedy, multilingual tagger in Python/Cython
(don't forget NLTK, GATE, the Stanford Parser, and the Illinois toolkit )