Updated on February 23, 2024

In this post, we will talk about the best NLP libraries for Node.js and JavaScript that we have come across. Let’s start right away.

What is Natural Language Processing (NLP)?

Natural language refers to the way humans communicate with each other.

Natural Language Processing (NLP) is broadly defined as the electronic manipulation of natural language, like speech and text, by software.

NLP is important because we want to open up communication between machines and humans in a more natural way. NLP has various use cases such as running a search engine, sentimental analysis, entity-recognition, emotion recognition, voice-based apps, chatbots, and personal assistants.

The history of natural language processing (NLP) generally started in the 1950s. Alan Turing published the article “Computing Machinery and Intelligence,” a pioneer seminal paper on artificial intelligence.

NLP libraries Kommunicate - alan turing's paper
The introduction to Turing’s paper

Some of the notably successful NLP systems developed in the 1960s were SHRDLU and ELIZA. Up to the 1980s, most natural language processing systems were based on complex sets of hand-written rules. In the 1980s, the NLP started to pick up after the introduction of machine learning algorithms.

Now, decades later, the world is full of multiple NLP libraries and engines. Let’s look at some of them, especially for the newer languages, such as Node.js and JavaScript.

CTA

NLP Libraries for Node.js and JavaScript

Though there are many useful NLP libraries available such as Spacy, NLTK, and CoreNLP. However, most of these libraries are not available in JavaScript. We had a hard time finding some good NLP libraries in JavaScript. After a lot of research and testing, the following are the libraries we found to be useful:

#1 NLP.js

Github: https://github.com/axa-group/nlp.js

NLP.js is developed by the AXA group. It is an NLP library for building bots, with entity extraction, sentiment analysis, automatic language identify, and so more, supports 40 languages.

NLP.js is a perfect node.js library for building chatbots. Documentation is very clear, and usage is very easy.

Here is a basic code snippet to help you understand how easy it is to set it up.

const { NlpManager } = require('node-nlp');
const manager = new NlpManager({ languages: ['en'] });

// Adds the utterances and intents for the NLP
manager.addDocument('en', 'goodbye for now', 'greetings.bye');
manager.addDocument('en', 'bye bye take care', 'greetings.bye');

// Train also the NLG
manager.addAnswer('en', 'greetings.bye', 'Till next time');
manager.addAnswer('en', 'greetings.bye', 'see you soon!');

// Train and save the model.
(async() => {
    await manager.train();
    manager.save();
    const response = await manager.process('en', 'I should go now');
    console.log(response);
})();

#2 Natural

Github: https://github.com/NaturalNode/natural

Natural is another famous NLP library for Node.js. “Natural” is a general natural language facility for Node.js. It currently supports tokenizing, stemming, classification, phonetics, tf-idf, WordNet, string similarity, and some inflections.

var natural = require('natural');
var tokenizer = new natural.WordTokenizer();
console.log(tokenizer.tokenize("your dog has fleas."));
// [ 'your', 'dog', 'has', 'fleas' ]

console.log(natural.HammingDistance("karolin", "kathrin", false));
console.log(natural.HammingDistance("karolin", "kerstin", false));
// If strings differ in length -1 is returned

#3 Compromise.cool

Github: https://github.com/spencermountain/compromise/

Compromise.cool is indeed a cool and lightweight library and very easy to use. It can be used to run NLP on your browser.

Please note that, Compromise works with the English language only.

let doc = nlp(entireNovel)

doc.if('the #Adjective of times').text()
// "it was the blurst of times??"
if (doc.has('simon says #Verb')) {
  return true
}

#4 Wink.js

Github: https://github.com/winkjs/wink-nlp-utils

Wink provides NLP functions for amplifying negations, managing elisions, creating ngrams, stems, phonetic codes to tokens, and more.

// Load wink-nlp-utils
var nlp = require( 'wink-nlp-utils' );

// Extract person's name from a string:
var name = nlp.string.extractPersonsName( 'Dr. Sarah Connor M. Tech., PhD. - AI' );
console.log( name );

// Tokenize a sentence.
var s = 'For details on wink, check out http://winkjs.org/ URL!';
console.log( nlp.string.tokenize( s, true ) );
// -> [ { value: 'For', tag: 'word' },
//      { value: 'details', tag: 'word' },
//      { value: 'on', tag: 'word' },
//      { value: 'wink', tag: 'word' },
//      { value: ',', tag: 'punctuation' },
//      { value: 'check', tag: 'word' },
//      { value: 'out', tag: 'word' },
//      { value: 'http://winkjs.org/', tag: 'url' },
//      { value: 'URL', tag: 'word' },
//      { value: '!', tag: 'punctuation' } ]
  

5. Compromise

Compromise is an NLP Javascript library that can transform and help use text in an uncomplicated manner. The NLP Library’s website describes compromise as a “crowbar for words.” Compromise makes the best effort to turn text into data.

Check out this tokenizer for words:

import nlp from ‘compromise/one’

let doc = nlp(“Wayne’s World, party time”)

let data = doc.json()

/* [{ 

  normal:”wayne’s world party time”,

    terms:[{ text: “Wayne’s”, normal: “wayne” }, 

      …

      ] 

  }]

*/

6. Franc

Franc is an NLP library for Node.JS, which is used to detect the language of a given text. In this era of increasing UGC (User Generated Content), which can be in the form of comments or chat messages, detecting the language of such UGC becomes key to improving the user experience. Franc uses statistical methods to identify from a list of more than 300 languages, and is really easy to implement.

import {franc, francAll} from ‘franc’

franc(‘Alle menslike wesens word vry’) //=> ‘afr’

franc(‘এটি একটি ভাষা একক IBM স্ক্রিপ্ট’) //=> ‘ben’

franc(‘Alle menneske er fødde til fridom’) //=> ‘nno’

franc(”) //=> ‘und’ (language code that stands for undetermined)

// You can change what’s too short (default: 10):

franc(‘the’) //=> ‘und’

franc(‘the’, {minLength: 3}) //=> ‘sco’

We have also compiled a video for the same as well:

Suggested Read: How to Integrate Chatbot in React Js

Conclusion

Choosing a library depends finally on the use case and the tech stack you are using. If you are looking for an NLP library for building chatbots, then I would recommend NLP.js.

References: https://machinelearningmastery.com/natural-language-processing/


At Kommunicate, we are envisioning a world-beating customer support solution to empower the new era of customer support. We would love to have you on board to have a first-hand experience of Kommunicate. You can signup here and start delighting your customers right away.

Write A Comment

Close

Devashish Mamgain

I hope you enjoyed reading this blog post.

If you want the Kommunicate team to help you automate your customer support, just book a demo.

Book a Demo

You’ve unlocked 30 days for $0
Kommunicate Offer

Upcoming Webinar: Conversational AI in Fintech with Srinivas Reddy, Co-founder & CTO of TaxBuddy.

X